[#]
итоговый черновик, из кусков:
51t(lenina,1) — All
2014-07-21 08:57:19
g2k14: World of KDE4, Vadim Zhukov (zhuk@)
По горячим следам успешного хакафона, Вадим Жуков (zhuk@) отчитался о своих успехах:
Я прибыл на хакафон с коротким, но суровым списком задач:
1. Закончить KDE 4.13.2 и приготовить 4.13.3 (официальный анонс (чего?) - 15 июля)
2. Наконец-то портировать несколько приложений из openbsd-wip в официальный cvs?
3. Исправить давнюю проблему с усиленным поеданием процессора в kded4
4. Продолжить работу над Samba 4.x
5. Исправить проблему с отсутствием ext2fs в установщике для amd64 (RAMDISK_CD)
6. Некоторые вещи, которые я разбабатывал последние месяцы для ports/infrastructure, занести в CVS
7. Занести в CVS порт man-pages-posix
Но, по факту, хакафон для вас начинается со знакомства с людьми, с которыми вы не были прежде знакомы. Учитывая, что до этого единственным мероприятием по openbsd, где я был, было EuroBSDCon 2013, было много новых лиц. Я боюсь, что я не запомнил их всех, но не потому, что я не уважаю их илиих работа, это просто мой недостаток :)
Итак, хакафон начался. Мы с kirby@ - другим портером OpenBSD из России - сели друг напротив друга. И это нам очень помогло - он помог мне тестить сборку ядра с ext2fs и дал мне идею насчёт libinotify (см. ниже), а я помог ему обновить порт rawtherapee.
Мой первый коммит на этом хакафоне был импортированием books/man-pages-posix. Это полезная вещь для разработчиков, и я получил положительные отзывы ещё до того, как начал импортирование [мне не нравится вообще слово импортирование, надо как-то заменить в обоих случаях].
Но это не моя работа - неоценимый вклад внёс schwarze@ и другие. Я узнал много нового о mandoc, groff и pkg_create [узнал много нового о магии mandoc, groff и pkg_create, или только о pkg_create? ох уж этот английский язык] во время работы над этим портом. Но, опять же, это было только для начала.
Большую часть времени я сидел и делал четыре вещи: запускал make, твикал патчи, пушил их в апстрим и спамил landry@ о новых портах. Я благодарен ему за терпение. Благодаря его замечаниям, у нас теперь есть следующие приложения из KDE4: Calligra suite, Digikam, K3b, Kdenlive, KDevelop, KMyMoney, KTorrent, Tellico и Yakuake (вместе с зависимостями, типа Eigen 3.x и другими).
Из kde4 в openbsd-wip осталась только audio/cantata: она имеет несколько кривую интеграцию с KDE4, так что мне быстро это надоело - плееров, в том числе для kde4, и так хватает. Надеюсь, что Рафаэль Садовский, который постоянно мне помогал, не обидится. :)
Обновление KDE 4.13.2 скучно и неинтересно. Есть 200 + портов, 200+ раз написать "make configure update-plist port-lib-depends-check package clean", запушить несколько патчей в апстрим, закончили упражнение. Вот и все. Реально всё. Проблемой было создание порта и задача совместного существования kde3 и kde4, а сама поддержка порта kde4 не так сложна.
И вот пришло время для действительно интересненького. kded4. Если вы не в курсе подробностей: kded4 (что означает "KDE 4 Daemon") обычно запускается с kdeinit... то есть, либо в самом начале сессии kde, либо когда вы запускаете первое приложение KDE. Этот демон hosts[содержит???] так называемые модули KDE - Если вы видели services.exe по Windows, то вы понимаете, о чём я, это почти то же самое. Другая задача kded4 - мониторить файлы конфигурации, особенно MIME .desktop файлы. При установке/настройке/удалении приложения, .destkop-файлы могут изменяться, как системные (в /usr/local), так и ваши личные (в $KDEHOME). Многие программы, особенно различные виджеты рабочего стола (читай: KDE-меню и подобное), заинтересованы в уведомлениях о таких изменениях. Таким образом, kded4 контролирует некоторые директории на предмет добавления/изменения/удаления .desktop-файлов.
В OpenBSD этот процесс очень неэффективен. А причина в том, что kded4 внутри использует KDirWatch, который по умолчанию ориентирован на inotify в Linux в QFSWatch в других системах. Он также поддерживает FAM, но я уже пытался его использовать, и мне не понравилось. Я уже начал было думать о реализации бэкэнда kqueue, и тут я вспомнил, что kirby@ работает над libinofity. Это то, что нужно - inotify API на базе kqueue. Так что я написал FindInotify.cmake который должен работать и в Linux и вне Linux, сделал несколько #ifdef в коде, пересобрал kdelibs ... и вот оно! Теперь kded4 проверяет файлы при запуске, и дальше живёт абсолютно не напрягаясь!
Ещё после этого akonadi_maildir_resource перестал жрать ресурсы: похоже, он страдал той же проблемой. Две проблемы по цене одной! Покупайте наши libinotify!
Кроме того, в этом хакафоне я успел доделать:
* новую утилиту portbump(1), в связке с sqlports это поможет сэкономить много времени на масштабных обновлениях
* добавил переменные TEST_ENV и ALL_TEST_ENV в bsd.port.mk: одного TEST_FLAGS было явно недостаточно, поскольку некоторые порты, на CMake (читай: использующие Ninja) не понимают TEST_FLAGS вообще
* документацию для devel/cmake и x11/kde4. Не имею намерения документировать x11/kde, потому что больше никто не развивает его, а те, кто знают, как его поддерживать - и так всё знают.
К сожалению, не хватило времени на samba4. Есть хитрые проблемы, связанные с ld.so и компилятором, которые я надеялся исправить на хакафоне... но не всё сразу. Так или иначе, KDE был приоритетной задачей.
С другой стороны, я был вовлечён в несколько дискуссий и протестировал несколько патчей, летающих повсюду. И, даже в случае ошибок, мне доставлял радость тот факт, что я могу помочь другим разработчикам OpenBSD напрямую, что, как правило, проблематично в обычной жизни.
И, в заключении, я хочу (точнее, обязан) сказать спасибо Mitja Muženič и Dijaski dom Tabor за организацию этого чудесного мероприятия. Это был мой первый хакафон, и было удивительно, сколько всего произошло за несколько дней. И Любляна - прекрасный город... Я надеюсь что кто-то, кто знает английский язык лучше меня, мог бы лучше в красках живоописать этот уютное место и его жителей. Всё было просто классно - спасибо, спасибо и еще раз спасибо!
[#]
Комментарии Вадима
51t(lenina,1) — 51t
2014-07-21 15:00:20
Буду занудствовать, боюсь, в основном по части языка - гены пальцами
не задавишь... Поехали:
Общее замечание: написание названий. "kde4" - только если говорим о
каталоге в дереве портов, или о "kde4.port.mk". Когда речь идёт именно
о релизах KDE, то пишется "KDE4": "портирование KDE4", "выпуск KDE4",
"входит в состав KDE4"; но: "импортирован в каталог
x11/kde4/artikulate". Аналогично с "openbsd" - ОС пишется "OpenBSD".
"официальный анонс (чего?)" - KDE 4.13.3. Разработчики KDE дают
возможность мейнтейнерам пакетов с KDE в той или иной ОС иметь т.н.
предварительный доступ, где-то дней за 3-5 до официального релиза. Это
позволяет выпускать "родные" пакеты с KDE для ОС одновременно с
официальным анонсом релиза. К сожалению, в этот раз совсем
одновременно не получилось, из-за накладывания сего момента с
процессом перемещения тушки в направлении Любляна-Хельсинки-Москва, а
так же с необходимостью быстро влиться обратно в рабочий процесс. :)
"Но, по факту,.." - лучше "Но прежде всего" (запятые вокруг "прежде
всего" можно опустить в данном случае, так как они фразу больше
портят).
"... по openbsd..." - лучше "связанным с OpenBSD", а ещё лучше - пока
не придумал.
"... где я был, было EuroBSDCon 2013..." - во-первых, "была EuroBSCon
2013", т.к. это конференция (женский род); а во-вторых, "был, было" -
довольно коряво звучит.
"Я боюсь, что я не..." - в русской версии вырезай лишние "я", с точки
зрения грамматики они зачастую не нужны: "Боюсь, что не".
"... их илиих работа..." - я твой эр два дэ два колёс шатал...
"мне не нравится вообще слово импортирование..." - отчасти согласен. С
другой стороны, это устоявшийся термин... "Внести в CVS", может? Или
"занести", как ты писал выше; звучит оригинально, свежо.
"Но это не моя работа..." - в русском языке фраза звучит двусмысленно.
:)) Лучше "Это был не столько мой труд, сколько...".
"... нового о mandoc, groff и pkg_create" - да, это, наверное, лучший вариант.
"это было только для начала" - тогда уж или "это было только начало,
или что-то в духе "это было только для разгона".
"пушил их в апстрим" - возможно, я слишком мало работаю с DVCS (на
последних работах тоже всё как-то больше Subversion попадался), но...
"пушить" ассоциируется больше с пушным промыслом, или, на худой конец,
с распушиванием хвоста. :) Но это уже опциональное замечание.
"спамил landry@ о новых портах" - скорее, "засыпал landry@ новыми портами". :)
"благодаря его замечаниям" - скорее, "благодаря его отзывам". Отзывы
(ревью) могут быть и без замечаний, но без ревью импорт не делается.
:) Разве что я себе позволяю без ревью импортировать новые порты
внутри x11/kde4. ;)
"... зависимостями, типа Eigen 3.x и другими" - "и другими" в данном
случае избыточно.
"Из kde4 в openbsd-wip" - некорректно. Имелось в виду именно что "из
портов, связанных на KDE4", или что-то в этом роде. Cantata, Yakuake,
Calligra и т.д. не являются часть KDE4.
"Рафаэль Садовский" - он, скорее, Садовски. Но я бы лучше написал ему
и уточнил. ;)
Далее, мне было проще переписать абзац. :) "закончили упражнение" - это отлично!
"Обновление KDE 4.13.2 само по себе скучно и неинтересно. Имеем 200+
портов, значит, 200+ раз пишем "make configure update-plist
port-lib-depends-check package clean", отправляем несколько патчей в
апстрим, закончили упражнение. Вот и всё. Реально всё. Трудными были
задачи собственно портирования KDE4, а также совместного существования
KDE3 и KDE4, а поддержка портов KDE4 не так сложна."
"hosts[содержит?]" - именно хостит, то есть, размещает на себе (или в себе).
"Если вы видели services.exe по Windows" - "если вы видели
services.exe в Windows"
"особенно MIME .desktop файлы" - лучше, наверное, написать "связанные
с MIME файлы .desktop"
"приложения, .destkop-файлы" - запятая лишняя
"kded4 контролирует некоторые директории" - скорее, "мониторит".
Контроль подразумевает какую-то обратную связь, которой здесь нет.
"этот процесс очень неэффективен" - скорее, "этот процесс был очень
неэффективен"... Возможно, я слишком коряво выразился в английском
варианте - увы, проверять его пришлось самому, редакторы undeadly,
похоже, знают английский не лучше моего.
"по умолчанию ориентирован на inotify в Linux в QFSWatch в других
системах" - "по умолчанию использует inotify в Linux и QFSWatch в
других операционных системах".
"и мне не понравилось" - более корректно будет "но результаты меня не
удовлетворили".
"бэкэнда kqueue" - лучше "бэкэнда на базе kqueue(2)"
"Это то, что нужно" - "Это ведь то, что нужно"
"Две проблемы по цене одной! Покупайте наши libinotify!". :) К
сожалению, редакторы Undeadly поленились или не захотели дополнить
абзац важным предупреждением: все пользователи KDirWatch теперь едят
намного больше файловых дескрипторов (до нескольких тысяч - по сути,
по дескриптору на каждый отслеживаемый каталог и файл). На Linux эта
проблема не так заметна, так как там обычно банально не стоит никаких
лимитов, или они задраны очень высоко. Я добавил предупреждение в
MESSAGE, выводимый при установке/обновлении kde-runtime, но всё же
лишним предупредить не будет.
"в этом хакафоне, я успел доделать" - "за время этого хакафона я успел
закончить".
"в связке с sqlports это поможет сэкономить" - "в связке с sqlports
она позволяет сэкономить"
"некоторые порты, на CMake" - лишняя запятая
"потому что больше никто не развивает его, а те, кто знают, как его
поддерживать - и так всё знают." - всех лучше язык русский знает Йода
мастер. ;) "потому что его больше никто не собирается поддерживать, а
кто поддерживает сейчас, и так всё знает".
"С другой стороны, я был вовлечён в несколько дискуссий" - "Также я не
раз участвовал в дискуссиях"
"И, в заключении" - однажды, в студёную зимнюю пору, сижу за решёткой,
в темнице сырой... Гм. "В заключение", и всё. :)
"хочу (точнее, обязан)" - там было просто перечисление глаголов. :)
Должно было получиться что-то вроде: "хочу (чувствую необходимость,
обязан)"
"Mitja Muženič и Dijaski dom Tabor" - если уж переводить, то
полностью: "Мите Муженичу и гостевому дому "Табор"
"мог бы лучше в красках" - "сможет ярче"
... с оригинальным текстом я напрямую не сверял, пользуясь только
памятью, - думаю, в данном случае точность не так критична. :)