GPL предоставляет получателям компьютерных программ следующие права, или «свободы»:
- свободу запуска программы, с любой целью;
- свободу изучения того, как программа работает, и её модификации (предварительным условием для этого является доступ к исходному коду);
- свободу распространения копий;
- свободу улучшения программы, и выпуска улучшений в публичный доступ (предварительным условием для этого является доступ к исходному коду).
Есть ли хоть один дистрибутив Linux (или другой ОС) в котором все эти свободы действительно бы были, а не только декларировались?
Первая и третья, понятно, есть везде. А вот с остальными двумя всё сложнее.
Предположим, я внезапно захотел изучить, как работает firefox и сделать, чтобы сайты с сертификатом Letsencrypt отмечались как потенциально опасные (подобно нешифрованным сайтам).
Практически в любом дистрибутиве мне для этого надо отдельно скачать пакет с исходниками, наложить патчи от производителя дистрибутива, скачать зависимости для компиляции. Затем удалить установленный firefox, собрать из исходников, исправить исходники до нужного мне состояния, сделать из исходников пакет и установить собранный пакет.
Потом, чтобы при обновлении моя доработка сохранилась, мне надо снова получить неизменённые мною исходники, сделать из разницы своих и неизменённых исходников патч, а затем после каждого обновления системы повторять часть с скачиванием исходников, наложением патча, сбором пакета и установкой пакета.
То есть свобода как бы есть, но её реализация напоминает право быть избранным.
Действительную реализацию этих свобод я видел в Emacs (код на Emacs lisp доступен сразу, изменения часто можно сделать просто отдельным файлом, который перекроет нужную функцию), в программах, являющимися локальными сайтами (типа webmin) и в 1С (все типовые программы поставляются в исходниках в предположении, что конечный пользователь будет их допиливать под себя).
Есть ли какой-нибудь дистрибутив, в котором пакеты были бы представлены текущими исходниками + исходниками от поставщика. И при обновлении исходников от поставщика автоматически обновлялись бы текущие исходники как это сделано в git или kdiff3 (а при невозможности автоматического объединения, запускался бы тот самый kdiff3) и автоматически собиралась новая версия бинарника?
В Debian даже файлы в /etc при обновлении не объединяются:
Configuration file `/etc/bash.bashrc'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] ?