ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] именование пакетов
@ 2020-02-13 20:34 Скрылевъ Малъ
  2020-02-14  0:00 ` Vitaly Lipatov
  2020-02-18 12:42 ` Dmitry V. Levin
  0 siblings, 2 replies; 6+ messages in thread
From: Скрылевъ Малъ @ 2020-02-13 20:34 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Приветствую всех,

Тут уже какой раз встаёт вопрос о именовании пакетов, на что я решил написать коротное разыскание. И оно выразилось в следующей таблице.

Номера и толкование столбцов и саму таблицу я привожу ниже:

1. имя хранилища пакетов
2. количество пакеток на сегодня
3. употребляемый язык программирования для написания библиотек для хранилища
4. наименование системы разработки, движка, или облака для этого хранилища
5. предлагаемый префикс

1                  2                                 3             4          5

npmjs         1,302,589            js             node/pure   npmjs-
atom             12,904               js             atom        atom-
bower            69,684              js             pure        bower-
atmospherejs     13,410           js             meteor      atmospherejs-
crates           37,102                rust           cargo       crate-
carthage          3,945               swift/c/objc   cocoa       carthage-
cocoapods        68,857           swift/c/objc   cocoa       cpod-
swiftpm           4,207                swift          swiftpm     swiftpm-
clojars          24,295                clojure        clojars     clojar-
cran             16,880                 r              r           cran-
conda             1,935               python/r       anaconda    conda-
pypi            237,491               python         pypi        pypi-
metacpan         37,628           perl           metacpan    metacpan-
cpan            185,296              perl           cpan        cpan-
dub               1,920                d              dub         dub-
elm               1,505                  elm            elm         elm-
go            1,818,640                go             go          go-
hackage          14,585             haskell        hackage     hackage-
haxe              1,436                  haxe           haxelib     haxe-
hex               9,578                 erlang/elixir  hex         hex-
julia             3,048                  julia          julia       julia-
maven           185,034          pom            java        maven-
nuget           201,136           c#/vb/ps       .net/mono   nuget-
packagist       317,896           php            packagist   packagist-
pub              10,657              dart           flutter     pub-
shards               33              crystal        shards      shard-
gems            162,413           ruby           rubygems    gem-
puppetforge       6,396         ruby           puppet      puppet-
ansiblegalaxy    23,850         ruby           ansible     ansible-



Заметки к этой таблице таковы, как из неё видно, во-первых для некоторых языков программирования используются несколько разных хранилищ, так для ruby есть три разных хранилища основное rubygems, и специфические puppet и ansible, для python это pypi и conda, для r это cran и тот же conda, для perl это cpan и metacpan, для swift это родной swiftpm и дополнительные carthage, cocoapods, ну и чемпион js, у которого налюдается настоящий бардак: например для системы node как правилно используется хранилище npmjs, но пакеты его так устроены, что могут быть написаны на чистом js, и ноды и не требовать, это явно прописывается в требованиях движка, пакеты хранилища atom переиспользуют npmjs, но оно длявляется для него второстепенным и к ним он добавляет свои зависимости, хранилище bower вообше не использует какой либо конкретный движок, и часто его паеты написаны на чистом js, а ещё это движок meteor со своим atmospherejs. 

Во-вторых для написания пакетов для некоторых хранилищ используются несколько языков программирования, например: для carthage и cocoapods это три языка: swift, c и objc, для conda это python и r, для nuget это все мелкомягкие языки (те что в mono) , а для hex это elixir и erlang. 

Для стороннего разработчика же как пользователя нажего репозитория важно понимать именно к какому хранилищу пакет относится, а не на каком языке он написан, это второстепенно, если скажем я программирую на elixir-е, то вполне под именованием пакета как hex- ожидаю встретить по зависимостям пакет на erlang, потому что так принято в том сообществе.

Моё предложением такое ориентироваться по крайней мере в именованиях новых пакетов именно на имя хранилища, предлагаемые префиксы для которых я поместил в соответствующем столбце таблицы.
Мне всыказывались мнения, что было бы хоро понимать также несведущим в хранилищах к какому языку относится пакет, это моно решить указываем его явно в каком либо свободном формате в автоматическом provide.
Имена пакетов со старых подходом  в принципе можно и не  особо менять.



-- 

Малъ Скрылевъ
about.me/majioa

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] именование пакетов
  2020-02-13 20:34 [devel] именование пакетов Скрылевъ Малъ
@ 2020-02-14  0:00 ` Vitaly Lipatov
  2020-02-17 14:19   ` Vladimir D. Seleznev
  2020-02-18 12:42 ` Dmitry V. Levin
  1 sibling, 1 reply; 6+ messages in thread
From: Vitaly Lipatov @ 2020-02-14  0:00 UTC (permalink / raw)
  To: ALT Linux Team development discussions
  Cc: Скрылевъ
	Малъ

Скрылевъ Малъ писал 13.2.20 23:34:
...
> Заметки к этой таблице таковы, как из неё видно, во-первых для
> некоторых языков программирования используются несколько разных
> хранилищ, так для ruby есть три разных хранилища основное rubygems, и
> специфические puppet и ansible, для python это pypi и conda, для r это
> cran и тот же conda, для perl это cpan и metacpan, для swift это
> родной swiftpm и дополнительные carthage, cocoapods, ну и чемпион js,
> у которого налюдается настоящий бардак: например для системы node как
> правилно используется хранилище npmjs, но пакеты его так устроены, что
> могут быть написаны на чистом js, и ноды и не требовать, это явно
> прописывается в требованиях движка, пакеты хранилища atom
conda это такой облачный rpm, там нет ничего уникального, как я понял, 
поэтому странно было бы на него ориентироваться.
Пакеты npmjs паковать в rpm было бы неправильно, потому что они уже 
упакованы. А вот пакеты для nodejs, использующие нативные библиотеки, 
паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной 
части такого пакета.

Но префикс rpm-пакета должен определяться не хранилищем, а местом, куда 
он будет положен в файловой системе (местом поиска — откуда будут взяты 
его файлы, если угодно). И ассоциироваться такой префекс должен не с 
хранилищем (то есть с сайтом, который и поменяться может), а с названием 
экосистемы для пакетов, среды их исполнения.
Например, так сделано для ruby, python, perl, php. Возможно, кому-то 
показалось, что это названия языков. Но зачастую такие модули написаны 
на C, а не на php :)

Потому что программа восстановления зависимостей (nuget restore, npm 
install, pip install, composer и т.п.) будет (должна) в первую очередь 
смотреть в определённое место в системе, установлен ли пакет, а потом 
уже идти в какое-то хранилище.

> переиспользуют npmjs, но оно длявляется для него второстепенным и к
> ним он добавляет свои зависимости, хранилище bower вообше не
> использует какой либо конкретный движок, и часто его паеты написаны на
> чистом js, а ещё это движок meteor со своим atmospherejs.
Пакеты bower не нужно паковать в rpm. Они не для этого.

> Моё предложением такое ориентироваться по крайней мере в именованиях
> новых пакетов именно на имя хранилища, предлагаемые префиксы для
> которых я поместил в соответствующем столбце таблицы.
Также добавлю о nuget. Это хранилище предлагает пакеты nuget, содержащие 
сборки под все .NET-платформы (от .NET Framework до Xamarin и .NET Core) 
и все архитектуры процессоров (если код не управляемый (т.е. бинарный)).
Например, https://www.nuget.org/packages/NLog
Опять же, никто nuget-пакеты паковать не будет. Будут запакованы 
результаты сборки исходного пакета (в данном случае 
https://github.com/NLog/NLog), причём сборка для mono будет иметь 
префикс mono-, а сборка для dotnet — префикс dotnet-.

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

Мне вот понятно, что паковать что-то из хранилищ, содержащих миллионы 
пакетов, достаточно бессмысленно. Более того, если экосистема удобна для 
того, чтобы внести в пакет с программой все необходимые модули, это и 
нужно делать, пока необходимость компиляции не потребует обратного. Это 
хорошо работает в случае с npm, возможно, но не очень принято для 
python, вроде как неплохо проходит для go.
Главным критерием должно быть отсутствие необходимости вручную повторять 
действия, для автоматизации которых разработана та или иная система 
управления пакетами для языка (платформы).
Я вот, собирая программы, использующие модули python, переношу вручную в 
спек конкретные зависимости с версиями, но это несколько смешно.

-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] именование пакетов
  2020-02-14  0:00 ` Vitaly Lipatov
@ 2020-02-17 14:19   ` Vladimir D. Seleznev
  2020-02-17 17:55     ` Ivan Zakharyaschev
  0 siblings, 1 reply; 6+ messages in thread
From: Vladimir D. Seleznev @ 2020-02-17 14:19 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Fri, Feb 14, 2020 at 03:00:24AM +0300, Vitaly Lipatov wrote:
> Скрылевъ Малъ писал 13.2.20 23:34:
> ...
> > Заметки к этой таблице таковы, как из неё видно, во-первых для
> > некоторых языков программирования используются несколько разных
> > хранилищ, так для ruby есть три разных хранилища основное rubygems, и
> > специфические puppet и ansible, для python это pypi и conda, для r это
> > cran и тот же conda, для perl это cpan и metacpan, для swift это
> > родной swiftpm и дополнительные carthage, cocoapods, ну и чемпион js,
> > у которого налюдается настоящий бардак: например для системы node как
> > правилно используется хранилище npmjs, но пакеты его так устроены, что
> > могут быть написаны на чистом js, и ноды и не требовать, это явно
> > прописывается в требованиях движка, пакеты хранилища atom
> conda это такой облачный rpm, там нет ничего уникального, как я понял, 
> поэтому странно было бы на него ориентироваться.
> Пакеты npmjs паковать в rpm было бы неправильно, потому что они уже 
> упакованы. А вот пакеты для nodejs, использующие нативные библиотеки, 
> паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной 
> части такого пакета.
> 
> Но префикс rpm-пакета должен определяться не хранилищем, а местом, куда 
> он будет положен в файловой системе (местом поиска — откуда будут взяты 
> его файлы, если угодно). И ассоциироваться такой префекс должен не с 
> хранилищем (то есть с сайтом, который и поменяться может), а с названием 
> экосистемы для пакетов, среды их исполнения.
> Например, так сделано для ruby, python, perl, php. Возможно, кому-то 
> показалось, что это названия языков. Но зачастую такие модули написаны 
> на C, а не на php :)

Именно! Префикс имени пакета для языковых систем показывает, расширение
какого языка поставляет этот пакет. И совершенно не важно, из какого
хранилища приехал этот пакет.

-- 
   С уважением,
   Владимир Селезнев


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] именование пакетов
  2020-02-17 14:19   ` Vladimir D. Seleznev
@ 2020-02-17 17:55     ` Ivan Zakharyaschev
  0 siblings, 0 replies; 6+ messages in thread
From: Ivan Zakharyaschev @ 2020-02-17 17:55 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 4079 bytes --]


On Mon, 17 Feb 2020, Vladimir D. Seleznev wrote:

> On Fri, Feb 14, 2020 at 03:00:24AM +0300, Vitaly Lipatov wrote:
> > Скрылевъ Малъ писал 13.2.20 23:34:
> > ...
> > > Заметки к этой таблице таковы, как из неё видно, во-первых для
> > > некоторых языков программирования используются несколько разных
> > > хранилищ, так для ruby есть три разных хранилища основное rubygems, и
> > > специфические puppet и ansible, для python это pypi и conda, для r это
> > > cran и тот же conda, для perl это cpan и metacpan, для swift это
> > > родной swiftpm и дополнительные carthage, cocoapods, ну и чемпион js,
> > > у которого налюдается настоящий бардак: например для системы node как
> > > правилно используется хранилище npmjs, но пакеты его так устроены, что
> > > могут быть написаны на чистом js, и ноды и не требовать, это явно
> > > прописывается в требованиях движка, пакеты хранилища atom
> > conda это такой облачный rpm, там нет ничего уникального, как я понял, 
> > поэтому странно было бы на него ориентироваться.
> > Пакеты npmjs паковать в rpm было бы неправильно, потому что они уже 
> > упакованы. А вот пакеты для nodejs, использующие нативные библиотеки, 
> > паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной 
> > части такого пакета.
> > 
> > Но префикс rpm-пакета должен определяться не хранилищем, а местом, куда 
> > он будет положен в файловой системе (местом поиска — откуда будут взяты 
> > его файлы, если угодно). И ассоциироваться такой префекс должен не с 
> > хранилищем (то есть с сайтом, который и поменяться может), а с названием 
> > экосистемы для пакетов, среды их исполнения.
> > Например, так сделано для ruby, python, perl, php. Возможно, кому-то 
> > показалось, что это названия языков. Но зачастую такие модули написаны 
> > на C, а не на php :)
> 
> Именно! Префикс имени пакета для языковых систем показывает, расширение
> какого языка поставляет этот пакет. И совершенно не важно, из какого
> хранилища приехал этот пакет.

Ну бывают такие язык-специфичные системы управления пакетами, которые 
видят, что уже стоит из пакетов из дистрибутива в системе, и при 
необходимости сам доставляют ещё какие-то.

Тогда может иметь смысл как-то отмечать, что наш пакет будет этой системой 
понят.

Не уверен, что название яхык-специфичной системы управления пакетами всё 
же совпадёт с названием репозитория. Например, есть hackage, stackage (на 
Haskell), а пакетный менеджер, наверное, в основе один и тот же...

-- 
Best regards,
Ivan

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] именование пакетов
  2020-02-13 20:34 [devel] именование пакетов Скрылевъ Малъ
  2020-02-14  0:00 ` Vitaly Lipatov
@ 2020-02-18 12:42 ` Dmitry V. Levin
  2020-02-18 13:32   ` Anton Farygin
  1 sibling, 1 reply; 6+ messages in thread
From: Dmitry V. Levin @ 2020-02-18 12:42 UTC (permalink / raw)
  To: ALT Devel discussion list

On Thu, Feb 13, 2020 at 11:34:58PM +0300, Скрылевъ Малъ wrote:
> Приветствую всех,
> 
> Тут уже какой раз встаёт вопрос о именовании пакетов, на что я решил написать коротное разыскание. И оно выразилось в следующей таблице.
> 
> Номера и толкование столбцов и саму таблицу я привожу ниже:
> 
> 1. имя хранилища пакетов
> 2. количество пакеток на сегодня
> 3. употребляемый язык программирования для написания библиотек для хранилища
> 4. наименование системы разработки, движка, или облака для этого хранилища
> 5. предлагаемый префикс
> 
> 1                  2                                 3             4          5
> 
> npmjs         1,302,589            js             node/pure   npmjs-
> atom             12,904               js             atom        atom-
> bower            69,684              js             pure        bower-
> atmospherejs     13,410           js             meteor      atmospherejs-
> crates           37,102                rust           cargo       crate-
> carthage          3,945               swift/c/objc   cocoa       carthage-
> cocoapods        68,857           swift/c/objc   cocoa       cpod-
> swiftpm           4,207                swift          swiftpm     swiftpm-
> clojars          24,295                clojure        clojars     clojar-
> cran             16,880                 r              r           cran-
> conda             1,935               python/r       anaconda    conda-
> pypi            237,491               python         pypi        pypi-
> metacpan         37,628           perl           metacpan    metacpan-
> cpan            185,296              perl           cpan        cpan-
> dub               1,920                d              dub         dub-
> elm               1,505                  elm            elm         elm-
> go            1,818,640                go             go          go-
> hackage          14,585             haskell        hackage     hackage-
> haxe              1,436                  haxe           haxelib     haxe-
> hex               9,578                 erlang/elixir  hex         hex-
> julia             3,048                  julia          julia       julia-
> maven           185,034          pom            java        maven-
> nuget           201,136           c#/vb/ps       .net/mono   nuget-
> packagist       317,896           php            packagist   packagist-
> pub              10,657              dart           flutter     pub-
> shards               33              crystal        shards      shard-
> gems            162,413           ruby           rubygems    gem-
> puppetforge       6,396         ruby           puppet      puppet-
> ansiblegalaxy    23,850         ruby           ansible     ansible-
> 
> 
> 
> Заметки к этой таблице таковы, как из неё видно, во-первых для некоторых языков программирования используются несколько разных хранилищ, так для ruby есть три разных хранилища основное rubygems, и специфические puppet и ansible, для python это pypi и conda, для r это cran и тот же conda, для perl это cpan и metacpan, для swift это родной swiftpm и дополнительные carthage, cocoapods, ну и чемпион js, у которого налюдается настоящий бардак: например для системы node как правилно используется хранилище npmjs, но пакеты его так устроены, что могут быть написаны на чистом js, и ноды и не требовать, это явно прописывается в требованиях движка, пакеты хранилища atom переиспользуют npmjs, но оно длявляется для него второстепенным и к ним он добавляет свои зависимости, хранилище bower вообше не использует какой либо конкретный движок, и часто его паеты написаны на чистом js, а ещё это движок meteor со своим atmospherejs. 
> 
> Во-вторых для написания пакетов для некоторых хранилищ используются несколько языков программирования, например: для carthage и cocoapods это три языка: swift, c и objc, для conda это python и r, для nuget это все мелкомягкие языки (те что в mono) , а для hex это elixir и erlang. 
> 
> Для стороннего разработчика же как пользователя нажего репозитория важно понимать именно к какому хранилищу пакет относится, а не на каком языке он написан, это второстепенно, если скажем я программирую на elixir-е, то вполне под именованием пакета как hex- ожидаю встретить по зависимостям пакет на erlang, потому что так принято в том сообществе.
> 
> Моё предложением такое ориентироваться по крайней мере в именованиях новых пакетов именно на имя хранилища, предлагаемые префиксы для которых я поместил в соответствующем столбце таблицы.
> Мне всыказывались мнения, что было бы хоро понимать также несведущим в хранилищах к какому языку относится пакет, это моно решить указываем его явно в каком либо свободном формате в автоматическом provide.
> Имена пакетов со старых подходом  в принципе можно и не  особо менять.

Надеюсь, никто не воспримет это предложение иначе как шутку.


-- 
ldv


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] именование пакетов
  2020-02-18 12:42 ` Dmitry V. Levin
@ 2020-02-18 13:32   ` Anton Farygin
  0 siblings, 0 replies; 6+ messages in thread
From: Anton Farygin @ 2020-02-18 13:32 UTC (permalink / raw)
  To: devel

On 18.02.2020 15:42, Dmitry V. Levin wrote:
>> Моё предложением такое ориентироваться по крайней мере в именованиях новых пакетов именно на имя хранилища, предлагаемые префиксы для которых я поместил в соответствующем столбце таблицы.
>> Мне всыказывались мнения, что было бы хоро понимать также несведущим в хранилищах к какому языку относится пакет, это моно решить указываем его явно в каком либо свободном формате в автоматическом provide.
>> Имена пакетов со старых подходом  в принципе можно и не  особо менять.
> Надеюсь, никто не воспримет это предложение иначе как шутку.

Автор точно не считает это шуткой:
http://git.altlinux.org/tasks/245637/




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-02-18 13:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-13 20:34 [devel] именование пакетов Скрылевъ Малъ
2020-02-14  0:00 ` Vitaly Lipatov
2020-02-17 14:19   ` Vladimir D. Seleznev
2020-02-17 17:55     ` Ivan Zakharyaschev
2020-02-18 12:42 ` Dmitry V. Levin
2020-02-18 13:32   ` Anton Farygin

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git