First debugging session of LibreOffice code on iOS (simulator)

I am just debugging (well, not really, I am not expecting anything to actually do much interesting) for the first time cross-compiled LibreOffice code on the iOS Simulator. (So yeah, technically instruction-set-wise this is not cross-compiled, as the Simulator runs i386 code, too, but under a simulated iOS environment.) Not really that exciting, but still, couldn't help blogging. No, there is still nothing to "beta test", there is still no actual LibreOffice UI showing up or even any code to draw a single pixel on iOS.
Авторы, отзовитесь!
Если у вас есть возможность поделиться своим опытом по поводу использования Linux дома или на работе, приглашаю сделать это на страницах этого дневника. Тематика статей может быть любой.
Об условиях. Для того чтобы получить право публикации здесь - необходимо написать не менее трех статей. Желательно, чтобы они были грамотными, но это не проблема. Главное - интересное содержание. Три статьи - для того, чтобы я мог убедиться, что автор не иссякнет после написания одной-двух статей. Все присланные статьи будут опубликованы от имени тех авторов, которые пришлют эти статьи и в том виде, в котором они сами пожелают указать себя (или ники или полное имя). Адрес электронной почты приведен в моем профиле.
Авторы, отзовитесь!
Если у вас есть возможность поделиться своим опытом по поводу использования Linux дома или на работе, приглашаю сделать это на страницах этого дневника. Тематика статей может быть любой.
Об условиях. Для того чтобы получить право публикации здесь - необходимо написать не менее трех статей. Желательно, чтобы они были грамотными, но это не проблема. Главное - интересное содержание. Три статьи - для того, чтобы я мог убедиться, что автор не иссякнет после написания одной-двух статей. Все присланные статьи будут опубликованы от имени тех авторов, которые пришлют эти статьи и в том виде, в котором они сами пожелают указать себя (или ники или полное имя). Адрес электронной почты приведен в моем профиле.
A utility for merging configuration / sysconfig files – Week 7 Report

Source: http://www.openclipart.org
Hello again,
This is the 7th week report for my GSoC project. During the implementation of the matching procedures, i talked in my last blog post, there were some new developments concerning the project. That made the actual matching procedure halt for a while, because there are no effective way at the moment to test the matching progress in the actual implementation. Where is the problem? The problem that occurred is the handling of the special comments that are used in many of the sysconfig files. These comments may appear next to simple description comments but contain useful information that are then interpreted by the program, such information could be for example the type of a variable etc. So what now? This week I am trying to find an effective way to deal with this problem, the initial idea i have is to modify the sysconfig lens, used by Augeas, in order to represent the sysconfig files in a tree form (with more levels that the current) that will be suitable for the matching/sorting algorithms i have already implemented.
What else?
I got a response for my first patch i submitted in Augeas too, and i have learn many useful things from the tips. So among other things this week i had the chance to rework that patch in order to achieve a better result.
What i need to do this week?
– finish the modification of the sysconfig.aug lens.
– implement a way to effectively deal with the comments (special and simple ones).
Conclusion
During the last weeks I am on the toughest part of my gsoc project. I hope that when i finish this part of the project, there will be a burst of progress for the last parts of the initial schedule.
Till next week,
Christos
PackageKit backend for Software Center: week 6 report
Hi everyone, for this week report I would like to show you a screencast with the packagekit-backend branch of software-center:
As you can see in the video above, I’m using PackageKit in Software Center for the install/remove operations and also for fetching package information, such as summary, description and version.
The install backend lacks updates and addon management; also the dependency simulation is missing. For package information, work is still needed into getting license, installed_size and other custom fields, but all these seam doable.
Before you jump into running it by yourself, please note that to get PackageKit introspection working, you need the invoke-rewrite branch of pygobject, which will hopefully be merged into main and released next week.
This milestone being set, my work continues by completing the backend and then moving forward to other things such as optimizing or distro integration, packaging and testing
Дистрибутивы Linux. Часть II
- Берет исходные коды для своих пакетов непосредственно на сайтах разработчиков открытого ПО.
- Обладает своей собственной системой пакетного менеджмента (чтоб не зависеть от других). Имеется в виду, конечно же, не совсем и не всегда разработка с нуля. Дистрибутив может использовать, допустим rpm, со своими расширениями, но высокоуровневый пакетный менеджер (такой как yum, zipper или apt) у независимого дистрибутива будет свой. Можно, конечно, взять имеющийся пакетный менеджер, но если вдруг его бросят оригинальные разработчики, то можно огрести кучу проблем. Пример, который сходу приходит на ум, - это ALT Linux со своим apt-rpm, который заброшен оригинальными разработчиками и поддерживается теперь только альтовцами.
- Обладает собственным сообществом разработчиков. Это тоже большая проблема, потому что свободные разработчики они на то и свободные, что заставить их сделать что-то невозможно. Если им что-то не понравится - они уйдут в другой проект. И отдельная проблема - это убедить их в том, что новый проект будет нужен другим и к нему действительно стоит прикладывать руки и время.
- Обладает критическим числом квалифицированных разработчиков. Я это выделил в отдельный пункт, потому что квалифицированные кадры - это отдельная проблема, ведь их всегда не хватает. Разработчики могут просто упаковывать необходимый софт в пакеты дистрибутива (как это делают в ArchLinux), а могут и сопровождать подконтрольные пакеты, самостоятельно портируя для них необходимые исправления. Первое может делать кто угодно, а вот для второго уже необходимо наличие определенных знаний. Ряд системных пакетов (компилятор, сборочная среда, Х-сервер, ядро) все равно придется сопровождать на уровне, отличном от просто упаковки нужного софта, для чего и нужны такие разработчики.
- То, ради чего создается дистрибутив, - его миссия. У Debian - это создание максимально свободной универсальной операционной системы для всех. У Red Hat - примерно то же самое, только для корпоративных заказчиков. У Archlinux и Slackware - это создание дистрибутива на основе принципа KISS (максимально возможная простота), то есть отсутствие (либо минимальное наличие) каких-либо средств конфигурирования дистрибутива и ПО, в него входящего. Сюда же относится лицензионная политика для ПО дистрибутива. Есть ряд дистрибутивов, относимых к максимально свободным, – из них удален весь проприетарный софт, закрытые прошивки для устройств. Какой выбирать по данному критерию – каждый решает самостоятельно. Найти всю интересующую информацию по данному вопросу для конкретного дистрибутива нетрудно. Чтобы узнать ее, достаточно знать английский язык и название официального сайта дистрибутива.
- Анонсируемая сфера применения дистрибутива - встроенные системы, десктопы, сервера, облачные вычисления, роутеры или «и то и другое, и можно без хлеба» (c). Сходу сделать самостоятельный проект, рассчитанный на универсальность, вряд ли у кого получится (а если кто обещает это сделать – или дурак, или маркетолог :) ), поэтому многие проекты идут на то, что поддерживают определенную часть репозитория, оставляя сообществу другую часть - например, как в Ubuntu, где есть репозитории main и restricted, поддерживаемые Canonical, и multiverse и universe, поддерживаемые сообществом. Примерно та же схема у Red Hat/Fedora. Fedora - фарм-дистрибутив, в который сообщество собирает пакеты, а Red Hat отбирает из их репозитория то, что подходит для Red Hat Enterprise Linux, чтобы потом поддерживать это все безобразие максимально возможный срок. Плюс во всему часть пакетов Fedora пересобирается сообществом для пользователей RHEL в рамках проекта EPEL.
- Список поддерживаемых дистрибутивом архитектур. Обычно это вездесущие x86-совместимые - i386/i686 и x86_64. Сейчас в список широко поддерживаемых архитектур все чаще добавляется ARM. Самый большой список поддерживаемых архитектур – у Debian и Gentoo.
- Объем пакетов во всех репозиториях дистрибутива. Большинство проектов позволяют выполнять поиск пакетов через обычный веб-интерфейс без необходимости установки дистрибутива. Таковы Gentoo, Fedora, ArchLinux, openSUSE, Debian, Ubuntu и даже ALT Linux. Это позволяет оценить наличие в дистрибутиве нужного ПО и его версию.
- Анонсируемый уровень пользователей дистрибутива. В данном случае под пользователями понимаются все, кто будет эксплуатировать этот дистрибутив, будь то десктопные пользователи или администраторы серверов. Есть дистрибутивы для очень опытных пользователей (например, новичок в мире Linux просто не сможет поставить Gentoo) и для не искушенных пользователей, как, например Ubuntu.
- Конечная форма доставки пакетов пользователям - поставляется ли дистрибутив в бинарном виде или, как Gentoo, собирается на локальной машине. Тут могут быть и смешанные варианты. ArchLinux, например, имеет репозиторий бинарных пакетов и свою собственную систему для их сборки – ABS. Если пакета нет в базовых репозиториях, то можно легко найти файл спецификации для сборки пакета PKGBUILD в пользовательском репозитории AUR и собрать его самостоятельно. Та же схема и у Slackware. В этом дистрибутиве есть базовый репозиторий, подерживаемый на основе релизов. Все дополнительное ПО, по каким-то причинам не включенное Патриком в дистрибутив его пользователям предлагается собирать с помощью специальных скриптов SlackBuild.
- Политика релизов дистрибутива - выпускаются ли релизы или дистрибутив безрелизный. Обычно анонсируется срок жизни релиза (срок поддержки, за время которого выпускаются обновления) и примерные или точные сроки выхода новых релизов. Например, у Debian релиз выходит по готовности (примерно раз в два-три года), Ubuntu выпускает релизы точно в срок: релизы с долгим временем поддержки – раз в два года, с коротким – раз в полгода.
- Немаловажный фактор, отражающий качество сборки пакетов и квалификацию их майнтейнеров, – это стабильность репозитория для выпущенного релиза (и пакетов в нем). К сожалению, это познается только на собственном опыте. В некоторых дистрибутивах есть тенденции, что обновления нет-нет да и ломают что-нибудь. Не так серьезно, конечно, как в дистрибутивах со скользящими релизами, но все равно неприятно.
- Для дистрибутивов, выходящих на основе релизов, огромную важность несет скорость выхода обновлений, связанных с безопасностью ПО. Это тоже показывает уровень квалификации разработчиков дистрибутива. Серьезные дистрибутивы выпускают такие обновления оперативно, несерьезные берут исправления у серьезных :).
- Уровень модификации пакетов апстрим. Некоторые проекты, типа Archlinux, Gentoo, Slackware используют авторские пакеты без каких-либо серьезных модификаций. Другие проекты, типа Fedora и openSUSE обычно сильно патчат все свои пакеты. Иногда это сказывается на стабильности этих дистрибутивов, иногда нет... Ubuntu, например, также сильно модифицирует все пакеты, связанные с рабочим столом пользователя, потому что компания Canonical оплачивает труд профессиональных дизайнеров, которые и улучшают ее внешний вид. Это причина того, что в одних дистрибутивах интерфейс оконной среды сделан в стиле «разработано профессиональными программистами», а в других – любо-дорого посмотреть.
- Системные компоненты, включенные в дистрибутив по умолчанию. Также важна возможность предоставления вариантов этих компонентов и легкость их смены. Кто-то предоставляет эту возможность, кто-то нет. Например, в Fedora, начиная с 15-й версии, система инициализации systemd приколочена к системе намертво, а в openSUSE по-умолчанию используется старый добрый sysvinit, а systemd предоставляется как вариант. Еще один пример - во все дистрибутивы включается ядро Linux :). И во всех дистрибутивах перед разработчиками встают такие вопросы - нужно ли использовать какие-то дополнительные патчи для него, типа bfs, или нет? Нужно ли предоставлять пользователям несколько вариантов «вкуса» (flavours) ядра, как делают openSUSE, Ubuntu и Mandriva или стоит обойтись одним универсальным вариантом? Другие примеры – это возможность выбора различных вариантов сетевых служб, имеющих аналогичный функционал (например, sendmail/postfix), Java-сред по умолчанию, вариантов рабочего стола, офисного пакета (Openoffice.org или Libreoffice), оконной среды - KDE/GNOME/XFCE/Openbox/WindowMaker и т.п.
- Принципы построения сообщества вокруг дистрибутива. Обычно это вопросы иерархии тех, кто дистрибутив разрабатывает: кто будет принимать технические решения, кто будет обладать правом арбитра при решении споров и правом вето, как будут приниматься пожелания. Не менее важно - как построена обратная связь с пользователями дистрибутива - только через систему отслеживания ошибок или нечто подобное OpenFATE в openSUSE, brainstorm в Ubuntu и GLEP в Gentoo. Важны вопросы приема в проект новых участников, условия этого вступления. В нормальных и серьезных проектах такие вещи определяются политиками и руководящими документами. Легкость нахождения этих документов и их полнота - отличный показатель серьезности проекта.
- Доступность документации для конкретного дистрибутива. Все серьезные проекты имеют не менее серьезные wiki-страницы. По уровню wiki и ее проработанности лидирует, на мой взгляд, wiki.archlinux.org, неплохие страницы документации у Gentoo и Ubuntu. Для администраторов Red Hat кладезь информации - сайт docs.redhat.com.
- Еще один показатель качества дистрибутива - это наличие на сайте с документацией правил сборки пакетов для него с обязательными требованиями по качеству их сборки. У дистрибутивов, относящих себя к серьезным проектам, всегда есть в свободном доступе скрипты для выполнения такой проверки (deblint для Debian/Ubuntu, rpmlint в Fedora/openSUSE, sisyphus_check в ALT Linux). Эти скрипты используются в сборочной системе для контроля качества собранного пакета. Уровень серьезности таких проверок варьируется от дистрибутива к дистрибутиву, например, OBS проверяет исходный код на наличие утечек памяти, а в Debian в репозиторий не попадет пакет без man-страницы.
- Тяжелый вопрос для каждого из проектов - вопрос инфраструктуры. У серьезного дистрибутива должен быть свой web-сайт, на котором размещаются основные документы, касающиеся дистрибутива, приема новых участников команды, сайт с документацией, формы для приема пожеланий по его развитию, и, конечно же, форум для общения и обмена мнениям. Помимо этого - сборочный сервер, сервер с репозиторием дистрибутива и репозиториями отдельных разработчиков. Инфраструктура никак не может быть виртуальной и требует для своей работы определенного количества денег. Крупным проектам технику обычно дарят, а список дарителей висит на веб-странице проекта в явном виде.
Возможно ли на основе данной информации сделать какой-то выбор? Не знаю, если честно. Вопрос выбора дистрибутива – это как вопрос выбора автомобиля (если опустить финансовую сторону дела): человек может долго обсуждать технические аспекты вопроса, а потом выберет себе тот, где пепельница на удобном месте :).
Естественно, что это все приблизительно и приведено для примерных схем выбора, а не для очередного холивара :). Приведенная статья не может охватить все дистрибутивы Linux и сразу рассказать про них все (в ней тогда будет «многабукав» и читать ее мало кто рискнет :) ). Но если у меня получилось дать некую базу для дальнейшего гугления интересующей информации по сайтам конкретных проектов, думаю, что я достиг поставленной цели.
Off to Croatia!
I'll be enjoying the nice seaside of Dalmatia (Croatia) for the next 3 weeks and, hence, won't be updating packages or be otherwise reachable to fix stuff.
That being said, I really haven't been very active (to say the least) the last few weeks. Lost the moment(um), somehow. Dunno. Maybe the motivation problem will have fixed itself after my holidays. I sure hope so.
For really urgent matters, a few people in the openSUSE and FOSDEM projects have my phone number, just poke the right people ;), e.g. Andreas Jaeger.
I most probably won't be checking my email, but I should be tweeting, so that's an option to poke me as well.
Прощай, Учебный Центр!
А тому что ушло - самое время сказать два слова: Прощай и Спасибо за все!
Что касается данного блога - бросать я его не намерен. Буду его вести, по-прежнему, в меру своих сил. И постараюсь не бросать его больше на такой большой срок, как последние полгода :).
Прощай, Учебный Центр!
А тому что ушло - самое время сказать два слова: Прощай и Спасибо за все!
Что касается данного блога - бросать я его не намерен. Буду его вести, по-прежнему, в меру своих сил. И постараюсь не бросать его больше на такой большой срок, как последние полгода :).
PackageKit backend for Software Center: short week 5 report
This week I continued work on the install backend, especially connecting the PackageKit transaction signals to the software-center’s TransactionWatcher (also abstracted by me some time ago).
The challenge stands in differences from PackageKit and AptDaemon, such as in AD, after preparing a transaction and manually commiting it, one has access to the transaction object, and can watch for progress changes; in PK, after a transaction is launched, there are two ways of getting access to it: first by listening to a TransactionListChanged signal in D-Bus and second by watching the objects returned by the progress_callback callback.
The current approach, helped closely by hue-see (hughsie) on #PackageKit is to get the transactions from the callback and listen to the gobject notify::<property> signals.
More to come next week, stay tuned!