ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Скрылевъ Малъ" <majioa@yandex.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] Policy по упаковке модулей Node.js
Date: Fri, 28 Feb 2020 11:33:13 +0300
Message-ID: <7804951582878793@iva8-03ad76494624.qloud-c.yandex.net> (raw)
In-Reply-To: <75145edc1555c8ad22e7412ecd28a63a@altlinux.ru>



28.02.2020, 00:28, "Vitaly Lipatov" <lav@altlinux.ru>:
> Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
> https://www.altlinux.org/Node.js_Policy
>

>    Важно учитывать, что модулей для node (npm-пакетов) многие тысячи, и никакого смысла собирать в репозиторий в виде rpm-пакетов их нет, тем более невозможно учесть разницу в версиях.
>    Необходимо собирать в пакеты только те модули, которые требуют компиляции (с системными библиотеками), а также модули, которые являются программами в /usr/bin (например, npm, yarn, sass, node-gyp и подобное).``

Думаю тут не нужно впрадать в крайности, типа есть модулей тычячи то и собирать их не надо. Я считаю, что каждый модуль должен быть форомблен в качестве пакет, по двум причинам: 
* переиспользование модуля приложениями, и другими модулями, потому что кроме того, что есть несколько приложений, которые за собою тащат много повторяющихся модулей, но и модули этих приложений также тащат уже повторные копии тех же самых модулей, что приводит к тому,что в одном пакете приложения, я насчитаю несколько единиц копий одного и того же модуля, а для модулей нижнего уровня этот счёт по видимости может составлять десятки.
* разрешение путаницы как для наших так и для сторонних разработчиков, путаницы такой что будут обязательно вопрос почему это  такой-то модуль собран отдельно а такой-то нет. А где вопросы там и смущение....

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

> Программа на nodejs не является модулем для nodejs, поэтому указывать префикс, как у модуля, не требуется.
Что тут понимается под понятием программа?

Я тут бы разделил, на 2 понятие - приложение и утилита:
* приложение это любое приложение на node, зависимости запуска и работу которого определяются в том числе файлом описания проекта package.json, но при этом, оно не опубликовано на npmjs (не nodejs, такого понятия в мире node нету %) )
* утилита - собственно в некотором роде тоже программа, как правило оформленная в виде запускаемого файла, в котором в качестве интерпретатора указано node.

Ну и правила оформления такие: 
для приложения это srpm имеет имя без nodejs/npmjs, целевые rpm также
для утилиты srpm может иметь префикс nodejs/npmjs, если этот фай находится в репозитории npmjs, а целевые rpm делятся на библиотеку с темже префиктом, и утилиту - без префикса, ну по типу деления в обычных компилируемых модулях, напр: soft/libsoft, дада тут префикс имеет смысл именно как в этом паре. 

>Название пакета с модулем для node: nodejs-<имя>.

Я сторонник npmjs, как более понятного для внешнего разработчика знакомого с фреймворком node.

> И ассоциироваться такой префикс должен не с хранилищем (то есть с сайтом, который и поменяться может), а с названием экосистемы для пакетов, среды их исполнения. 

Название хранилище может поменяться ровно в тойже степени как и само название node, так что это не очень довод. На моей памяти менялось и то и другое, причём переименование языка влечет более тяжкие последствия.

> Традиционно принято в качестве префикса использовать название языка. Так в репозитории Сизиф есть пакеты erlang-*, python-*, perl-*, ruby-*, php-* java-*. Возможно кому-то показалось, что это названия языков, на которых написаны модули. Нет, зачастую такие модули написаны на C, а не на php. И префикс имени пакета для языковых систем показывает, расширение какого языка поставляет этот пакет.

Я уже написал, что для ruby/python/erlang это недействительно 


--
> С уважением,
> Виталий Липатов,
> ALT Linux Team
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel



-- 

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



  parent reply	other threads:[~2020-02-28  8:33 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-27 21:27 Vitaly Lipatov
2020-02-28  3:46 ` Anton Farygin
2020-02-28  7:15   ` Ivan A. Melnikov
2020-02-28  8:33 ` Скрылевъ Малъ [this message]
2020-03-03 17:01 ` Alexey Shabalin
2020-03-03 17:37   ` Vitaly Lipatov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7804951582878793@iva8-03ad76494624.qloud-c.yandex.net \
    --to=majioa@yandex.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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