[devel] Языковые экосистемы

Yury A. Romanov damned на altlinux.ru
Сб Мар 10 00:16:00 MSK 2018


On 06.03.2018 12:43, Paul Wolneykien wrote:
> 05.03.2018 20:12, Eugene Prokopiev пишет:
>> Апстримы рекомендуют maven/gradle, npm/yarn,
>> rubygems, cpan и прочие pip/virtualenv для библиотек, а еще
>> sdkman/nvm/rvm и т.д. для выбора рантайма
>> ...
>> У этого способа есть критически важное преимущество - он работает.
>> ...
>> java/ruby/ocaml/nodejs/texlive с высокой вероятностью вылетают в
>> дополнительные компоненты
> 
>    Лично я всеми конечностями за хороший преинсталл для TeXLive, NodeJS,
> Go и т.д. То-есть за удобный способ установки пакетов из апстрима. Это
> действительно удобно, пока ты пользователь _апстрима_.
> 
>    Но ситуация меняется, как только ты из пользователя апстрима
> превращаешься в писателя пакетов для Сизифа на этом языке. Сразу же
> хочется, чтобы написанная тобой программа, будучи установленной из
> Сизифа, работала бы. А значит, были установлены все нужные ей библиотеки.
> 
>    И тут я вижу два пути. Первый — паковать всё в Сизиф (как мы сейчас и
> делаем). И второй: написать плагины для apt, которые бы работали с
> апстримными, _не RPM_ репозиториями. Чтобы в спеке можно было написать
> что-то вроде:
> 
Есть ещё третий путь -- бутстрапить зависимости в приложение.
0. Самое ценное для репозитория дистрибутива в этих языках это 
приложения, на них написанные. К примеру, docker,vault, consul на go, 
redmine на RoR, какая-нибудь очередная ERP на Java
1. Приложений на языках с собственными экосистемами пишется много, но 
реально нужны из них единицы, все остальные приложения либо являются по 
факту узкоспециальными решениями, зачастую не совсем опенсорсными, либо 
либами, которые отдельно от приложений мало кому полезны.
2. Либы для языка, раскладывающиеся из пакетов это хорошо, но 
бесполезно, поскольку чаще всего современные "языки с экосистемами" 
генерят бинарники, не имеющие внешних зависимостей (не считая таковых 
уровня "нужна любая JRE версии 8" или "нужен glibc>=N" для приложений на 
go), то есть в рантайме им практически ничего не надо. Разработчикам 
приложений на сизифе (или любом другом дистро) эти либы тоже не особо 
нужны, поскольку это сразу же делает vendor-lock-in на сизиф, что было 
бы странно.

Поэтому наверное наиболее годным вариантом было бы паковать вместе с 
исходником пакета кэш сборочной системы, из которой его можно было бы 
собрать без внешних зависимостей.


>    Requires: nmp::my-favorite-lib
> 
>    **IMHO** Первый путь — тупиковый, ибо в пределе Сизиф становится
> [мёртвой] копией всех пакетов в мире. Второй путь — перспективный, ибо в
> нём Сизиф (apt) устанавливает *живой* контакт с другими репозиториями,
> пакетными базами — становится узловой точкой, соединяющий дистрибутивы.
> _______________________________________________
> Devel mailing list
> Devel на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
> 



Подробная информация о списке рассылки Devel