[devel] именование пакетов
Скрылевъ Малъ
majioa на yandex.ru
Чт Фев 13 23:34:58 MSK 2020
Приветствую всех,
Тут уже какой раз встаёт вопрос о именовании пакетов, на что я решил написать коротное разыскание. И оно выразилось в следующей таблице.
Номера и толкование столбцов и саму таблицу я привожу ниже:
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
Подробная информация о списке рассылки Devel