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

 

Свободный офис

LibreOffice — самый масштабный форк последнего времени. Вообще, предпосылки к его появлению возникли еще в то время, когда развитием OpenOffice занималась Sun. Многие разработчики были недовольны процессом разработки: отсутствием реальных лидеров в проекте, жестким руководством, недостаточной прозрачностью, необходимостью подписывать с Sun соглашение о передаче авторских прав на код для включения его в upstream.

Все эти проблемы привели к тому, что количество активных разработчиков со временем только уменьшалось. Некоторые из них (при поддержке, в основном, Novell) поддерживали набор патчей для актуальной версии OOo, существенно расширяющих функциональность. Эта сборка даже носила отдельно имя — Go-OO и могла похвастаться поддержкой VBA-макросов, улучшенной поддержкой бинарных форматов Microsoft и OOXML, оптимизацией производительности и многим другим. До недавнего времени большинство дистрибутивов (SUSE, Debian, Ubuntu и другие) включали в свой состав именно сборку Go-OO. Надо отметить, что Go-OO — это не полноценный форк, а просто набор патчей — то есть, его релизы жестко завязаны на релизы ванильного OpenOffice.

Время шло, а подход к разработке OpenOffice в Sun не менялся.

Но вот стало известно, что Oracle покупает Sun. В связи с этим некоторые надежды возлагались на то, что после сделки разработка станет более открытой. Но Oracle не оправдал надежд сообщества, поэтому группа ведущих разработчиков решилась сделать форк, создав для этого некоммерческую организацию Document Foundation. Ключевыми особенностями нового процесса разработки стали полная независимость от какой-либо одной организации и открытость для всех желающих (больше не нужно передавать авторские права на код). К Document Foundation быстро присоединились такие компании и организации, как FSF, OASIS, GNOME Foundation, Google, Novell, Red Hat, Canonical (полный список на май 2011 года включает 39 членов — goo.gl/UqGHN). Oracle тоже было отправлено предложение о вступлении, а заодно — просьба передать новой организации права на торговую марку OpenOffice.org.

Oracle отказалась, более того — попросила участников Document Foundation покинуть совет OpenOffice.org.

Четыре человека покинули совет, а для нового офисного пакета была выбрана торговая марка LibreOffice. Дальше события развивались стремительно. Сразу после объявления о создании Document Foundation (28 сентября 2010 года) вышла первая бета-версия LibreOffice 3.3.0 (нумерация версий была позаимствована у OOo), которая, по сути, представляла собой Go-OO. Участники приступили к созданию инфраструктуры: wiki, IRC, списков рассылок (на 13 языках мира, в том числе и русском). В течение первой недели бета-версию скачали более 80000 раз. Количество зеркал проекта выросло до 45 (в 25 странах). В среднем, на IRC-канале разработчиков постоянно находилось около 100 человек, а количество сообщений составило 14000. Две тысячи человек подписались на почтовую рассылку с анонсами, триста человек — на рассылку с дискуссией. В Twitter количество фолловеров выросло до шестисот. Примерно через месяц с момента основания проекта количество коммиттеров перевалило за сотню, 20 из них fulltime (Red Hat, Novell, Canonical).

Первый стабильный релиз вышел 5 января 2011 года и был скачан больше 1,3 миллиона раз. После выхода релиза 3.3 Document Foundation организовала сбор средств, необходимых для официальной регистрации организации в Германии. Нужную сумму (50000 евро) набрали за 8 дней!

LibreOffice 3.3 перенял все улучшения OpenOffice.org 3.3 (переработанный диалог печати, поле для поиска на панели инструментов, возможность задать пароль на редактирование документа, число строк в таблицах Calc увеличено с 65000 до 1 миллиона и многое другое), а также получил ряд уникальных функций:

  • Возможность импорта и редактирования SVGизображений;
  • Мастер для облегчения создания титульных страниц (Writer);
  • Был серьезно доработан инструмент «Навигатор» (тот, который по умолчанию забинден на <F5>), в частности, все заголовки теперь могут отображаться древовидно;
  • Возможность импорта документов MS Works и Lotus Word Pro, сильно улучшен импорт файлов WordPerfect;
  • Добавлен режим, включающий некоторые экспериментальные функции (например, интерактивное редактирование формул в документе), стабильная работа которых не гарантируется. Функция активируется в «Сервисs„ Параметры „~ LibreOffice ~„ Включить экспериментальные (нестабильные) возможности»;
  • Поддержка трех разных синтаксисов определения формул: Calc A1, Excel A1 и Excel R1C1;
  • Ускорение импорта ODS, Excel и DBF; улучшена совместимость с Excel, добавлена поддержка импорта диаграмм в формате pptx.

Многие дистрибутивы включили LibreOffice 3.3 вместо OpenOffice в поставку по умолчанию: Ubuntu 11.04, Fedora 15, openSUSE 11.4, Mandriva 2011. LibreOffice будет участвовать в Google Summer of Code 2011 с несколькими проектами (самый интересный из них, на мой взгляд, — возможность импорта Visio-файлов).

 

Мультимедиа войны

Реальность мира OpenSource такова, что любой болееменее большой проект с более-менее долгой историей периодически форкают. Причем, нередки случаи, что форк поддерживается одним разработчиком. До того момента, пока ему не надоест. Этой же участи не удалось избежать и mplayer (которому, кстати, в конце прошлого года исполнилось 10 лет). Довольно известен форк под названием mplayerxp, использующий многопотоковое ядро (к слову, ванильный mplayer тоже с недавних пор умеет декодировать видео в несколько потоков).

Менее известен форк mplayerww — Windows-only, многопоточный, с поддержкой воспроизведения формата PMP (PlayStation Portable), поддержкой DSP-плагинов winamp и множеством других мелких изменений. Совсем недавно появился новый форк — ни много ни мало — mplayer2. Причины создания форка до конца не ясны, а список основных отличий содержит следующие пункты:

  • улучшенная обработка пауз. В ванильном mplayer выполнение любой команды снимает паузу. В mplayer2 такое поведение исправлено;
  • улучшение поддержки формата Matroska;
  • автоматическая поддержка многопоточности без необходимости отдельного конфигурирования;
  • улучшенная поддержка технологии Nvidia VDPAU, позволяющей перекладывать декодирование видеопотока на GPU;
  • убрана зависимость от встроенной версии FFmpeg, переход на использование стандартного FFmpeg API;
  • удалили mencoder (мотивировав это тем, что у него ужасный код, который нереально поддерживать). Обещают в следующих версиях предложить какое-нибудь свое решение, в частности, некоторые функции перекодирования планируется возложить на сам mplayer2;
  • удален штатный GUI-интерфейс.

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

GUI к mplayer форкают еще чаще. Встречайте новичка — UMPlayer, форк SMPlayer. Недавно вышла версия 1.0, хотя, судя по количеству багов в багтрекере и отзывам, зря его уже назвали релизом. В отличие от прародителя, форк доступен не только под Windows и Linux, но и под Mac OS X. Другие его особенности:

  • скины написаны на CSS. В комплект поставки уже включено несколько скинов;
  • умеет искать, воспроизводить и сохранять ролики с Youtube;
  • умеет проигрывать SHOUTcast-потоки;
  • поиск субтитров на opensubtitles.org.

Обычно форк — достаточно мирное мероприятие. Максимум — часть разработчиков уходит, громко хлопнув дверью и сказав чтонибудь нелицеприятное напоследок. Но случаются и исключения.

Например, с FFmpeg — в начале года группа разработчиков попыталась совершить «государственный переворот». Причем, ни у кого из этой группы не было права записи изменений в gitрепозиторий, поэтому они просто его склонировали и поменяли ссылку на сайте на новый, заодно максимально урезав права остальным членам сообщества. Мотивами такого поступка послужили многочисленные проблемы в процессе разработки, которые не решаются годами, снижение темпа развития проекта, а также то, что проект, фактически, находится в руках одного мейнтейнера. В общем, со стороны ситуация выглядит очень некрасиво. После продолжающихся несколько месяцев переговоров и метаний группа «революционеров» все же решила, что сделать форк — правильнее. Назвали форк Libav. Одна из основных технических целей форка — устранение фрагментации проекта на большое количество вспомогательных библиотек.

 

Битвы титанов

Довольно часто бывает, что разработчики не мелочатся и делают форк целых дистрибутивов/ОС. Последнее время дела у Mandriva шли совсем неважно — компания потеряла около 30 миллионов евро и вынуждена была уволить большое количество своих сотрудников. Чтобы спасти дистрибутив, бывшие сотрудники и члены сообщества сделали форк — Mageia, управляемый независимой некоммерческой организацией. Первый релиз нового дистрибутива с точки зрения пользователя практически ничем не отличается от Mandriva 2010.1: лишь ребрендинг, новые версии пакетов и замена OpenOffice на LibreOffice.

С точки зрения сообщества, наоборот, была проделана огромная работа — с нуля создана вся инфраструктура: система для сборки пакетов (с помощью которой собрано больше 10000 пакетов), сайт (блог, wiki), багтрекер, списки рассылок, форумы, IRC-каналы и многое другое. В общем, первая версия — это проба сил сообщества и инфраструктуры. Касательно грядущих версий четких планов пока нет. Тем временем, Mandriva тоже готовится к следующему релизу — Mandriva 2011, который запланирован на середину июня. Время покажет, который из дистрибутивов-близнецов окажется жизнеспособнее.

Гораздо более интересен в плане перспектив форк Android под названием IcedRobot, который пока развивают всего два разработчика. Цель форка — заменить Dalvik Virtual Machine (реализация Java, которая используется в Android) на OpenJDK (реализация Java, распространяющаяся под GPL), при этом не потеряв совместимости с уже написанными приложениями. Для этого планируется сначала модифицировать Dalvik так, чтобы он не зависел от используемого в Android ядра. Затем нужно будет создать прослойку, преобразующую байткод Dalvik в байткод OpenJDK. Плюсов от такого перехода два:

  • возможность запускать Android-приложения везде, где работает OpenJDK;
  • к OpenJDK нет никаких претензий по поводу нарушенных патентов (по крайней мере, у основных игроков рынка в настоящее время).

Иногда история форков ОС принимает причудливые формы. Жил-был себе Debian, и однажды на его основе сделали форк — Ubuntu, который по популярности на десктопах в разы обошел своего прародителя.

Через некоторое время уже на основе Ubuntu сделали еще один дистрибутив для десктопа — Linux Mint, который по популярности догоняет Ubuntu (по крайней мере, на distrowatch.com он уже давно и уверенно держится на втором месте). Кстати, недавно вышел релиз за номером 11 (кодовое имя Katya), который от Ubuntu 11.04 отличается отсутствием Unity (вместо него — старый добрый ламповый Gnome 2.32), наличием кодеков (а также flashplayer, unrar) из коробки (только в DVD-редакции), фирменным оформлением в зеленых тонах и несколькими собственными утилитами:

  • mintMenu — замена стандартного меню GNOME;
  • mintInstall — менеджер приложений, по функциональности схожий с Центром приложений в Ubuntu;
  • mintUpdate — менеджер для гибкой установки обновлений;
  • mintBackup — очень простая тулза для бэкапов.

В отличие от ОС, DE — одна из тех областей, где форки появляются очень редко. Думаю, тут все дело в их большом разнообразии и трудоемкости поддержки.
Но изредка такое случается. Один из самых свежих примеров — форк KDE 3.5. С выходом KDE4 разработчики KDE объявили эту ветку устаревшей и забросили. Но так как не все были готовы расстаться с 3.5, получился форк — Trinity Desktop Environment. Для проекта, заброшенного основной массой создателей, разработка идет довольно бодро: выпущено несколько релизов с мелкими улучшениями, имеются грандиозные планы по переписыванию на Qt4 и смене HAL на udev. На сайте (www.trinitydesktop.org) можно скачать пакеты для свежих Debian/Ubuntu, RPM-пакеты для RedHat/Fedora и OpenSUSE ожидаются в ближайшем будущем.

 

To fork or not to fork

Обычно форк приводит к «распылению» сил разработчиков. Но, бывает, что это единственный выход, и после этого проект обретает вторую жизнь. Так случилось, например, с X.Org, который в 2004 году откололся от XFree86 из-за разногласий по поводу новой лицензии.

В результате форк сейчас гораздо популярнее своего прародителя. Еще один удачный пример — GCC. В 1997 году был создан форк EGCS, который включил в себя ряд экспериментальных возможностей. Впоследствии проекты объединились, основой «нового GCC» стал EGCS.

 

Форки всех времен и народов

Кроме описанных в статье, можно выделить следующие проектыфорки, затмившие свои оригиналы:

  • Firefox — браузер №2 по популярности в мире. Родился как форк Mozilla Application Suite путем отсечения всего лишнего;
  • X.Org — форк XFree86, возникший, в основном, из-за разногласий по поводу лицензии;
  • Ubuntu — форк Debian, дистрибутив №1 на десктопах с жестким циклом релизов;
  • OpenBSD — самый секурный вариант BSD. Мало кто помнит, что это форк NetBSD, возникший в 1995 году из-за конфликта среди разработчиков;
  • Joomla — одна из самых популярных CMS, начала свое развитие как форк когда-то популярной CMS Mambo.
 

Форки не для всех

Нередкое явление и форки узкоспециализированных проектов. Вот несколько недавних.

От проекта Gosa откололся форк FusionDirectory. Gosa — специализированная веб-морда к LDAP для управления учетными записями пользователей, рабочих станций, группами, правами и многим другим. Причина форка: разработкой Gosa занимается, в основном, немецкая компания GONICUS GmbH, и внесение изменений (особенно, в ядро) сторонними разработчиками затруднено.

Система управления проектами Redmine была форкнута небольшим количеством старых разработчиков. Форк получил название ChiliProject, а произошло это в феврале 2011 года. Мотивы форка — сделать процесс разработки (в особенности, принятия новых патчей в upstream) более прозрачным, улучшить взаимодействие ChiliProject с другими проектами и community. Цели достойные, но пока форк развивается существенно медленнее оригинала.

Система непрерывной интеграции Hudson — довольно известный в узких кругах проект Sun, который ныне принадлежит Oracle.

В ноябре 2010 года на хостинге проекта (java.net) были без предупреждения заблокированы списки рассылки и репозитории (как потом выяснилось — в связи с обновлением). Разработчикам это не понравилось, и они перенесли код на github, заодно переименовав проект в Jenkins (так как Oracle отказалась передать сообществу имя Hudson). Правда, некоторое время спустя у Oracle появилось желание передать Hudson под управление сообщества, а конкретно — организации Eclipse Foundation.

Программ для мониторинга сети Enterprise-уровня с OpenSourceлицензией очень мало. Относительно недавно одна из них, Nagios, обзавелась форком под названием Icinga. Форк был реакцией на чрезмерное «закручивание гаек» компанией Nagios Enterprises.

Сегодня Icinga развивается гораздо быстрее своего «прародителя» и уже имеет множество собственных фишек, среди которых:

  • Переработан классический веб-интерфейс на C и написан новый, альтернативный на PHP и Ajax;
  • Данные мониторинга можно хранить в БД. Пользователей системы тоже можно хранить в БД (или в LDAP);
  • Полная поддержка IPv6, а также возможность мониторинга смешанных IPv6/IPv4-сетей;
  • Наличие API (XML, JSON, SOAP);
  • Возможность конфигурирования из веб-интерфейса.

При этом Icinga пытается сохранить максимальную совместимость с Nagios.

Игры тоже форкают. Недавний тому пример — довольно популярный FPS Nexuiz. Один из основателей проекта (Lee Vermeulen), который уже очень долгое время в проекте не участвовал, передал права на код и название молодой игровой компании Illfonic. Компания закрывает код (который ранее распространялся только под лицензией GPL) и разрабатывает версию для игровых консолей. Сообщество ответило на эти действия созданием форка под названием Xonotic. Планируется в дальнейшем избежать ситуаций, в которых весь код будет принадлежать только одному человеку.

 

Links

  • goo.gl/AWH2p — блог Document Foundation
  • goo.gl/DT6z8 — полный changelog LibreOffice 3.3
  • goo.gl/9RhuB — список проектов LibreOffice на Google Summer of Code 2011
  • goo.gl/8Gkft — сравнение Icinga и Nagios

Оставить мнение

Check Also

Жесткая закалка Linux. Подбираем инструменты для комплексного аудита безопасности

В этом материале мы познакомимся с основными утилитами для Linux hardening. На русском язы…