Fork You Want

December 10, 2022

Читая форумы PaleMoon я случайно наткнулся на статью за 2009 год озаглавленную “Forking Protocol: Why, When, and How to Fork an Open Source Project”. Более того, на эту статью ссылается JustOff (автор плагинов для PaleMoon), утверждая, что его работы нельзя форкать, потому что это “воровство”.

В этой статье полно воды, но я выделю главные моменты:

Just because you don’t like, or don’t trust, the core developers or custodians of the project is not a good reason to fork the project.

Нет, как раз это повод. Если разработчик начинает внедрять в свой софт всю телеметрию мира, то появляются такие проекты как Ungoogled Chromium и PaleMoon.

Being worried that the core developers or custodians, at some time in the future, will do something you don’t like, is not a good reason to fork a project.

Частично согласен. Но если разработчик начинает наглеть - устраивают “революцию” и о разработчике быстренько забывают. Например, в сообществе KDE на полном серьёзе обсуждали возможность форка Qt, потому что Qt Project решили давать LTS билды за деньги. Чем не повод?

Any preemptive fork of Java or MySQL, purely because of Oracle’s acquisition of Sun, is bad. Until Oracle does something bad and repeatedly fails to make it right (despite rationally-communicated requests from the community) there is no need for a fork of Java or MySQL.

Автор противоречит сам(а) себе. Если сообщество уже давно что-то просило, но Oracle этого не делало, то повод задуматься, что Oracle плевать на пользователей, ей важно заработать деньги. Oracle, преджде всего, это частная конторка по продаже туалетной бумаги никому уже не нужных серверных решений. Вот поэтому они и перестали быть нужны, потому что они начали наглеть. Доля Oracle в мире на период 2022 года значительно снизилась, давно о них ничего не слышал.

По поводу MySQL, форк был необходим, потому что Oracle решили закрыть свободную версию и сделать её платной. Исходники есть, но поставляются под EULA. EULA - не свободный софт. Поэтому появилась MariaDB.

Форк Java был необходим, потому что Oracle продавала некоторые расширения за деньги. А ещё, скажите это Google, который “украл” Oracle JVM и “переименовал” его в Dart, после чего получил повестку в суд от Oracle. Суд длился долгих семь лет, за это время Google успешно внедрила Kotlin и выпустила десяток версий Android. А Oracle, в результате, проиграла.

Так же нельзя забывать, что был некогда такой проект Solaris, базировавшийся на BSD. Это коммерческий проект, который Oracle похоронила, потому что он никому не был нужен. После чего его форкнуло сообщество и продолжило развивать под другим именем. Спустя четыре года Oracle неожиданно [вспомнило про Solaris](https://en.wikipedia.org/wiki/Oracle_Solaris#Post-Sun_closed_source_(March_2010_to_present), что несколько подозрительно, потому что к тому времени форк набрал популярность.

There are things that you, as a project owner, can do to reduce the potential of a fork. First and foremost is to listen to, and interact with, your community.

Когда разработчик бросает проект и говорит “Ну, возможно я вернусь, возможно нет”, что остаётся сообществу? Когда разработчик удаляет проект, не замораживает его (у GitHub есть такая функция), а удаляет, что остаётся делать сообществу? Таких примеров полно.

Есть и обратная проблема: мы настолько полагаемся на корпорации, что растеряли весь здравый смысл и чувство самосохранения. Как пример, полное удаление аккаунта GitHub из-за одного репозитория.

Support plug-ins. Plug-ins make it easy for developers to add features to the software. By using a plug-in architecture developers can create new features by writing only what is necessary for the functionality they need. The core software will automatically recognize the plug-in and make the feature available to the end user.

Я с этим согласен, но лишь отчасти. Плагины хороши, когда у них есть доступ ко всем внутреннастям программы. То есть, когда можно изменить само ядро поведения, а не какие-то поверхностные вещи, такие как темы. Наверное, хорошие примеры таких программ: Audacious, Deadbeef, RetroArch, Intellej IDEA, Atom, GIMP, Blender. Допустим, Firefox, хотя это не совсем правда, и плагинами многое не сделать, например не отключить телеметрию. К тому же современный Firefox это такой аналог Google Chrome - вроде плагины есть, но им запрещено лазить в кишки браузера, потому что “безопасность”.

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

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

Inversion of control uses object factories or injection to provide software that is being executed with the objects that it needs. The objects used by the system can now be defined in configuration files instead of being fixed in code.

<...>

For example in the Pentaho BI platform we use a combination of Spring xml files (injection) and object factories to enable all of the main platform objects to be defined in configuration.

Автор! Вы используете! 99% софта - нет! Пожалуй, кроме уже вышеназванных мной программ (в Opensource) я не могу больше ничего назвать.

When To Fork?

Answer – When you have exhausted all other options.

Учитывая всё вышеперечисленное - всегда, дабы не потерять доступ к софту. Учитывая нынешнюю ситуацию, я начал делать локальные копии репозиториев иностранного софта на своём компьютере. Почему? Да потому что отрезать доступ в интернет любой стране сейчас плёвое дело. Интернет не децентрализован, мечты о Web 3.0 останутся мечтами. А если конфликт на Украине перерастёт в глобальный, то глобального интернета уже не будет а евросоюз разваливается по сценарию СССР и мы все знаем, кто за этим стоит.

* Find out how other community members feel. If no-one else agrees with you, there is a good chance your frustrations are misplaced.

* Describe what you feel would be the bast-case outcome, and how it would be a good result for everyone (not just you).

* Do not threaten to fork the project at this point.

* Give the core developers/custodians 2 to 4 weeks to react.

Да, люди подверженны мнению толпы, увы. Может случится и такое, что с вами никто не согласится, это правда. Но это не повод делать или не делать чего-то, только из-за того, что толпа с вами не согласна. Естественно я не говорю про морально-этические нормы общества, это отдельный разговор. Если толпа говорит, что ваш софт никому не нужен, но он нужен ВАМ, то плюйте в лицо толпе.

Есть как положительные так и негативные примеры. Небезызвестные члены сообщества, ратующие за морализацию, решили форкнуть GIMP. Более того, многие люди их поддержали! Весь сыр-бор был из-за того, что в некоторых кругах GIMP имеет название общества БДСМ, о котором даже никто не знал до этого скандала. Всё закончилось тем, что форк не смогли поддерживать силами маленького сообщества и успокоились. Но реакция разработчиков GIMP была бесценна, они пожелали форку удачи и отправили катиться колобком. Больше всего кричали те, кто форкал, а не разработчики. Разработчикам было вообще плевать на всю эту движуху и они только крутили пальцем у виска.

Другой пример: форк Blender с “лучшим управлением и интерфейсом”, которым даже я пытался пользоваться. Скандалов никаких не было, но буквально через 2-3 версии в Blender случилась переработка интерфейса и управления, и он стал подозрительно похож на тот самый форк. До этого о переработке говорили несколько лет.

Here is a bad case: In July 2007 someone tried to fork Pentaho Data Integration. The project was called ‘No Pentaho Pentaho Data Integration’. The reasoning given for this fork was:

*No Pentaho Pentaho Data Integration is intended to take an early version 3.x of Pentaho Data Integration, remove most of the features Pentaho added and as such starting a new more stable version of PDI.*

The apparent motivation for this attempted fork was that the trunk code for the next major release was, at the time, unstable. This was due to a significant re-write of the core engine, and the fork happened at a time then the instability was expected. None of the core developers or active community members supported the fork. To date this project has produced no downloads and has one anonymous developer.

В таком случае “плохим” форком можно назвать TES3MP, который и по сей день является единственным мультиплеером для OpenMW, и OpenMW, скорее всего не получит его никогда, даже после выхода 1.0 версии. Изначально OpenMW и TES3MP договорились о мердже, но потом случился конфликт с разработчиками OpenMW по поводу кодовой базы и теперь будущее мультиплеера только в руках сообщества.

С другой стороны небезызвестный в кругах TES3MP товарищ Малзеф, от которого часто слышали ультра-правые идеи внутри сообщества, форкнул TES3MP и назвал его единственным мультиплеером, потому что оригинальный TES3MP “умер”. Спустя несколько месяцев была выпущена новая версия TES3MP, а форк Малзефа забыт навсегда. Морали не будет.

Выводы

От статьи явно попахивает популизмом и попыткой перенести капиталистические идеи в мир Opensorce, который изначально был более демократичным и социалистическим. Типичный разговор капиталистов: всё принадлежит мне, вы всё арендуете (привет, стим, гог и другой софт). Попытка стать единоличником программного обеспечения, которое ты выпускаешь под открытой лицензией не окончится ничем хорошим, потому что теряется сама идея движения Opensorce. К тому же это прямое нарушение многих лицензий: GPL, LGPL, BSD, MIT, Apache, где прямым текстом написано, что любой может использовать, модифицировать, изучать, передавать это программное обеспечение и модификации на его основе.

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