пʼятницю, 31 січня 2014 р.

Инфраструктура разработки PC-BSD

Доброго времени суток!
У меня таки появилось некоторое время на блог. Пост писался несколько дней урывками. Заранее извиняюсь за возможную несвязность и ошибки.  Но, надеюсь, будет интересно.

Практически ни один более или менее крупный IT проект не обходится без инфраструктуры разработки, в которую обычно входит система контроля версий, багтрекер и некоторые другие вещи. Сегодня я как раз хочу рассказать о такой инфраструктуре проекта PC-BSD.
Если кто- то хочет внести свой вклад в разработку, возможно, он найдет здесь полезную для себя информацию.

GitHub - система контроля версий

В прошлом году было принято решение о переезде PC-BSD с внутреннего subversion сервера на git. В качестве площадки был выбран github. На данный момент используется несколько репозитариев. Их список можно посмотреть здесь: https://github.com/pcbsd

Основной репозитарий

Основной репозитарий находится здесь: https://github.com/pcbsd/pcbsd Тут ведется основная разработка утилит и скриптов PC-BSD а также содержатся почти все файлы настроек.

PBI

Каждый пакет PBI собирается на основании файла pbi.conf. Конфигурационные файлы для сборки всех присутствующих  в AppCafe PBI хранятся здесь: https://github.com/pcbsd/pbi

Дерево портов

Как многие уже знают в релиз 10.0 были добавлены окружения рабочего стола Gnome 3, Mafte и Cinnamon. В основном рапозитарии традиционно присутствовал каталог ports-overlay. В этом каталоге размещался оверлей, содержащий порты и патчи отсутствующие в официальном дереве портов FreeBSD. Однако, после того как к делу подключился Joe Maloney с портами для Mate Cinnamon и Gnome 3 количество портов в оверлее ощутимо возросло. Плюс, ко всему, учитывая довольно активные коммиты от Joe, стало проще просто выделить порты в отдельный репозитарий. Этот репозитарий периодически синхронизируется с деревом портов FreeBSD, но, также, содержит довольно много портов и патчей пока что отсутствующих в последнем. Репозитарий находится тут: https://github.com/pcbsd/freebsd-ports
Содержимое именно этого репозитария появится у Вас после нажатия кнопки "Fetch ports tree" в System manager

Система сборки

До осени прошлого года система сборки PC-BSD не была опубликована. Основной репозитарий проекта всегда содержал исчерпывающую информацию о том каким образом собирается PC-BSD (наборы пакетов, оверлеи, патчи, списки ссылок файловой системы). В принципе имея все это вполне можно было бы собрать PC-BSD самостоятельно (при должном упорстве даже обеспечить совпадение бинарников). Но, тем не менее, сами оригинальные сборочные скрипты до недавнего времени были недоступны широким массам. 
Итак, если Вы хотите самолично собирать PC-BSD Вам сюда: https://github.com/pcbsd/pcbsd-build


Исходные тексты базовой системы

Начиная с версии 10.0 PC-BSD кроме собственного репозитария дерева портов обзавелась собственным git репозитарием исходных текстов базовой системы. Этот репозитарий синхронизируется с FreeBSD subversion, но также содержит пока что не включенные в него патчи. До создания отдельного репозитария на исходный код FreeBSD накладывались src-patches. 
Исходные коды базовой системы PC-BSD находятся тут: https://github.com/pcbsd/freebsd
Содержимое именно этого репозитария появится у Вас после нажатия кнопки "Fetch system sources" в System manager.

Проекты PC-BSD

Репозитарий содержит исходный код некоторых новых утилит, не достигших должной степени готовности для включения их в основной репозитарий. В основном здесь хозяйничает Кен. Коммиты бывают время от времени. Репозитарий интересен прежде всего тем что можно подсмотреть что нового Кен нам готовит. Тут в свое время начиналась разработка текстового инсталятора, EasyPBI. Сейчас тут создается утилита EasyPort. URL репозитария:  https://github.com/pcbsd/pcbsd-projects

Небольшое лирическое отступление...

Могу догадаться о реакции части общественности на информацию о том что в PC-BSD появились свои репозитарии для base system sources и ports tree. Могу предположить мысли PC-BSD уже не FreeBSD!!! ( На уровне Ubuntu != Linux). Я попытался объяснить это выше, но, думаю, все равно стоит написать предметно.
За все время пока я пристально смотрю на PC-BSD (как минимум с 7.0) на чистые исходники FreeBSD при сборке накладывались патчи. Это были патчи для поддержки оборудования, фиксы досадных багов. По мере того как эти патчи коммитились в основное дерево исходных кодов они удалялись из списка патчей. То же с портами. Именно благодаря тестированию внутри PC-BSD Gnome 3, который появится в портах будет более стабилен. Благодаря тестированию патчей на ядро / freebsd install их версия во FreeBSD в конечном итоге будет работать лучше.
PC-BSD в большей степени десктопная ОС. Темпы ее разработки, скажем так, более высокие. Требования по стабильности, местами, более мягкие. Практически все патчи закоммиченые в git репозитарии PC-BSD так или иначе попадают в FreeBSD subversion. Создание отдельных репозитариев, как я понимаю, просто сильно упрощает работу. Можете считать сложившуюся ситуацию отдаленно похожей на пару Fedora/RHEL.

Полезные ссылки

Это быстрые ссылки, которые я использую почти каждый день



Trac - багтрекер


Багтрекер PC-BSD расположен по адресу http://trac.pcbsd.org/
 Где- то в конце 2013го года в багтрекере навели таки "красоту и икебану". На данный момент именно это место наиболее предпочтительно для сообщения об ошибках. Естественно, форумы и списки рассылки никто не отменял. Но разработчикам намного удобнее пользоваться именно баг трекером. Сообщение в списке рассылки может потеряться, забыться. Пост на форуме тем более. 
Важное примечание: Пожалуйста, не поленитесь зарегистрироваться и создать запись в баг трекере. Так ваш отчет о проблеме не потеряется. При создании тикета пожалуйста не забудте указать версию системы и проблемный компонент.
Второе (очень!) важное примечание: Если у Вас возникла проблема- пишите баг репорт! У всех нас разные компьютеры. Далеко не факт что проблема существует на компьютере разработчика. У всех нас разные потребности и модели использования. Не факт что разработчик использует систему точно также как и Вы, или может вообще чем- то не пользоваться (в т.ч. и некоторыми функциями своих же приложений). Порой из- за этого в своих же утилитах находятся просто феерические баги! Основная идея- пока о проблеме (даже идиотской) никто не сообщит- о ней, часто, никто и не знает. Нет репорта- нет проблемы. Это open source. Для того чтобы все работало как Вам нужно, нужно сначала хотя бы сказать что Вы хотите.

Полезные ссылки

Pootle - система переводов

Любой желающий может принять участие в переводе утилит PC-BSD на свой родной язык.Для этого есть вполне удобная система переводов pootle, расположенная по адресу http://pootle.pcbsd.org/ После несложной регистрации Вы можете заполнить пробелы в переводе или исправить в нем неточности.
Перевод охватывает все графические утилиты PC-BSD (Инсталятор, AppCafe, панель управления и др), а также элементы панели управления и системного меню.
Строки для перевода периодически обновляются из основного git репозитария. Результаты перевода периодически туда же коммитятся. При этом сервер понимает Qt translations и поля *.desktop файлов. Все это делается на сервере какими- то самописными скриптами которые, хоть и достаточно редко, но подглюкивают. Так что может случится что переведенная, казалось бы, утилита после автоматического коммита в PC-BSD git или при неудачном расположении луны опять становится 'untranslated' :(
По состоянию на сейчас (30 января) украинский перевод, которым занимаюсь я, более или менее готов (осталось перевести только половину строк из Life Preserver и ZFS manager полностью). Беспокойство вызывает перевод русский...  Не смотря на то что последнее изменение было не так давно (12 января) состояние русского перевода далеко до идеального. Переводом занимается человек с ником s0t. Скорее всего у него сейчас просто не хватает времени. Боюсь, что если никто ситуацию не поправит то релиз 10.0 в русской локализации будет выглядеть плохо. Если Вы хотите исправить ситуацию- милости просим. Но очень желательно выйти на контакт с переводчиком s0t (можно попробовать pcbsd-translations@) или хотя бы внимательно посмотреть как он переводил. Сейчас объясню почему. Дело в том что в каждом переводе существуют разного рода соглашения (Например Cancel - "Отмена" или "Отменить", специфический перевод терминов, любимые синонимы и т.д. Так, например в украинском переводе я перевожу "Progress" - "Поступ" и Currently - "Наразі". Так уже было до меня. Да и достаточно близко к переводу KDE. Но этот "Поступ" мне до сих пор иногда глаз режет.


Wiki

Официальная Wiki находится тут: http://wiki.pcbsd.org/index.php/Main_Page
Dru поддерживает Wiki в неплохом состоянии. Информация там попадается вполне себе нужная, но основной интерес представляет руководство пользователя - PC-BSD Handbook - http://wiki.pcbsd.org/index.php/PC-BSD%C2%AE_Users_Handbook/10.0
С недавнего времени официальный хендбук делается именно на основе Wiki. Более того, используя все тот же вики движок хендбук можно переводить! У меня для украинского языка духу пока не хватает взяться. Русским переводчикам и так много работы. Но мне бы очень хотелось чтобы нашелся человек, осиливший перевод хендбука. Поверте, он очень неплох.
В любом случае как минимум просмотрите хендбук. Там действительно много всего интересного и нужного.

Списки рассылки

Основная тусовка проходит именно в списках рассылки. Полный перечень списков рассылки PC-BSD можно посмотреть тут: http://lists.pcbsd.org/mailman/listinfo
Среди них достаточно много полумертвых. Основные списки рассылки:

testing@

Тут собирается основная тусовка. До недавнего времени (до доведения до нормального состояния багтрекера) было самым предпочтительным местом для репорта багов.
Я придерживаюсь часто такого алгоритма действий:

  • Если баг тривиальный - просто пишу в баг трекер
  • Если я в чем- то не уверен, нужно что- то спросить, обсудить и т.д. то все равно в баг трекер но еще и письмо в testing@ со ссылкой на trac

dev@

Тут обсуждаются вопросы связанные с разработкой. 

translations@

Тут изредка общаются переводчики.

Полезные списки рассылки (информационные)





Что не доделано в PC-BSD 10.0-RELEASE

Доброго времени суток!

Прежде всего, хочу поздравить всех неравнодушных  с выходом PC-BSD 10.0-RELEASE!
Описывать основные новшества релиза я не буду. Смотрите хотя бы новость на opennet: http://www.opennet.ru/opennews/art.shtml?num=38964 Я хотел бы написать об известных мне проблемах этого релиза и их причинах.

Итак. С начала о проблеме которая появилась благодаря мне лично. Из- за некоторых событий (см. пост to be continued 2..., например) я не мог уделять достаточно времени подготовке релиза. Соответственно, имеем несколько проблем.

Панель управления и MATE/Gnome 3/Cinnamon

Первая- элементы панели управления для новых окружений рабочего стола (В баг трекере: https://trac.pcbsd.org/ticket/958#ticket). Эти элементы я был закоммитил. Но, честно говоря, сделал это по большей части "абы было". Нормальный набор элементов я рассчитывал добавить до релиза, но, как видите, не успел...
Не то чтобы их вообще не было, но некоторые не работают, некоторые стоило бы добавить. Короче, не хорошо.
Вторая проблема- определение текущего рабочего стола. С переходом на PCDM нужно было поправить некоторые вещи для определения текущего рабочего стола (ну и добавить определение новых рабочих столов). В принципе коммит я сделал (https://github.com/pcbsd/pcbsd/commit/04d2faff3d90467fee1641d8ed9467e886c4a0c6) но не уверен что он успел попасть в релиз.

Центр обновлений

По тем же причинам что я писал выше центр обновлений в релизе все еще не готов :( Более того, с переходом на pkg-ng 1.2 (в каком- то из RC) отломалась обработка прогресса загрузки пакетов. Это все нужно чинить, доделывать. Думаю до следующего крупного обновления production пакетов это будет все доделываться и потом (месяца через 3), надеюсь, таки заменит старые обновлялки. До того времени будет существовать параллельно и понемногу допиливаться.

Теперь о других известных мне проблемах

Локализация

Ребята, русская локализация выглядит, мягко говоря, не очень. Украинская, которой я занимаюсь, тоже не на 100% готова, но, тем не менее выглядит поживее. (Не переведен только ZFS manager и половина LifePreserver). Русским переводом занимается человек с ником s0t. Если есть возможность помочь, попробуйте связаться с ним (хотя бы попспрашивать его в translations@pcbsd.org - http://lists.pcbsd.org/mailman/listinfo/translations). Скорее всего у него нет времени или возможности сейчас делать перевод. В принципе, переводить может любой желающий. Заходим на http://pootle.pcbsd.org/ и переводим. Но лучше (хоть и не обязательно), предварительно, пообщаться с основным переводчиком. Он, по крайней мере обьяснит некоторые ньюансы русского перевода (например, какие синонимы, падежи он обычно использует, как в его переводе называется LifePreserver и др.).
Главное, следует помнить что если что- то не сделаете Вы сами, возможно этого не сделает никто.

Теперь о проблемах о которых я подозреваю

Переключение раскладки

На opennet многие жалуются на поломанную настройку раскладки клавиатуры. Перед релизом я видел один любопытный коммит связанный с PCDM. что- то насчет жесткой завязки системной локали на переключалку из PCDM. Я могу ошибатся, т.к. коммит детально не смотрел. Более того, у меня, вроде, все пока что работает. Возможно и будет работать у тех кто ставил RC. Может поставлю с нуля релиз и проверю. Если у Вас есть эта проблема пожалуйста сделайте более менее подробный баг репорт тут http://trac.pcbsd.org/
Нужно иметь в виду одну вещь. Основные разработчики - американцы. Им просто по жизни не нужна локаль отличная от en-US и переключение раскладок. Я сейчас ни в коем случае не хочу сказать что они на это забивают. Наоборот, многое для локализации делается. Но многие вещи для них не очевидны. Что -то они просто не видят т.к. этим не пользуются. 

Edge пакеты

Набор пакетов Edge начал формироваться только после выпуска релиза. Соответственно, пока что его просто нету. Выбор этого набора пакетов пока что лишь приведет к ошибке.Нужно совсем немного подождать.
Для тех кто не в курсе. Начиная с 10.0 есть два типа наборов пакетов - production (стабильные релизные пакеты. С обновлением приходят только багфиксы. Раз в три месяца- большое обновление на основе набора пакетов Edge). Набор пакетов Edge - rolling набор пакетов. Частые переодические обновления на основе текущего состояния git'а. Раз в три месяца Edge стабилизируется и становиться production

Вместо послесловия

Нет, таки в отдельном после напишу. Есть все- таки проблемы с подготовкой релизов. Нужно будет поднять эту тему в списках рассылки. А то что- то code freeze и даже feature freeze в последнее время отсутствуют как факт. 
Конечно, проблемы 10.0 будут довольно скоро решены обновлениями. Но осадок то может остаться...





середу, 22 січня 2014 р.

to be continued 2...

Доброго времени суток!
Пержде всего хочу поздравить всех с выходом 10.0-RELEASE.
К моему глубокому сожалению я сейчас не могу писать новые посты. У меня банально нету времени и сил на это. Думаю, ни для кого не секрет что сейчас происходит в моем городе. 
Я не буду писать никаких комментариев по этому поводу (а хочется). Смотрите интернет (онлайн стримы, например) и делайте свои выводы сами. Разработка FreeBSD не должна касаться любой политики. Инженерия отдельно, политика, соответственно- отдельно. Но бывает так что политика перестает быть абстрактной и разворачивается вполне себе конкретно практически у тебя под окнами. Посему прошу меня понять. Я бы очень хотел написать статью о новшествах PC-BSD 10.0 и о многих других вещах. Я, в конце концов, очень хочу доделать центр обновления! И я это обязательно сделаю. Но не сейчас.
Еще раз прошу меня понять.