Блог:Точка Росы

Материал из Rosalab Wiki
Перейти к: навигация, поиск
Rosa-point-logo2.png

Блог с постами технической направленности — чтобы похвалиться сделанной работой и поделиться результатами исследований, выполненных в текущей рутине.

Если вы умеете пользоваться агрегаторами RSS/Atom, подписывайтесь!. По любым вопросам можно писать сюда.

Весь контент данного блога распространяется на условиях Creative Commons Attribution-ShareAlike 3.0 License (CC-BY-SA)

Хоткеи для Windows-свитчеров. Смело переходите на GNOME!

Windows-key.png

Про «инновационную оболочку», ну или если многословно и официально — «окружение рабочего стола, GNOME SHELL», в сообществе линуксоидов сложилось несколько превратное, хотя и местами обоснованное мнение, что это слишком инновационно и не для «простых людей». Некоторые даже причисляют GNOME SHELL[1] к так называемым post desktop интерфейсам, уходящим вдаль от классической метафоры «захламленного рабочего стола», с переключением задач через вездесущую панель.

Да, в GNOME SHELL есть большая схожесть с MacOS, и можно было бы надеятся, что эта схожесть сможет привлечь макюзеров…, но взглянем в глаза жестокой правде — их доля тоже невелика, в то время как высока их «верность Яблоку».

А основная масса потенциальных пользователей Linux Desktop, это — вольные или невольные пользователи Windows, и хотелось бы зазвать именно их, причем не только на схожие интерфейсы KDE/LXDE, но и на GNOME SHELL — ведь на самом деле, GNOME вполне расширяем, там легко поставить привычную панель задач, а визуальные метафоры GNOME SHELL тоже вполне неплохи, и хотя их почему-то[2] считают «планшетоориентированными», они весьма эффективны, например, для ноутбуков с небольшим экраном.

Более того, аскетичная минималистичность GNOME SHELL, с минимумом открытых и мигающих панелей-виджетов и прочих свистелок и перделок, ориентирована в первую очередь на продвинутого пользователя, который уже несколько лет как ушел от исследовательского тыкания в эти самые виджеты и гаджеты, он уже вполне понимает про приложения, окна и их переключение, он владеет базовыми хоткеями, ему уже надо «работу работать», а не «скрепку Боба» и кучу мигающих скеоморфных значков, отвлекающих его от документов, текста, кода…

Но. Если достаточно легко понять изменение некоторых метафор (лаунчер «не иерархическое меню по кнопке пуск, а полноэкранное», «Dash» вместо панели, нижний док вместо «tray»…), то вот изменить клавиатурные навыки невозможно очень, очень непросто. Они уже «опустились» на уровень рефлексов и костного мозга, и если смена Desktop Environment — это как новый автомобиль — да, множество мелочей находится в непривычных местах, возможен ступор при поиске кнопок управления стеклоподъемниками и т.п., то управлять машиной, если перепутаны педали — нереально (см. также размышления в Blog:Точка Росы/Мы покончили с национальной дискриминацией хоткеев в GNOME!). Особенно, если приходится ездить на разных машинах.

Собственно среднепродвинутый Win-бизнес-пользователь привык к продвинутым Windows клавиатурным хоткеям[3] серии «WIN+XXX», когда по WIN-E у него откроется «Проводник по файлам», по WIN-D → уберется свалка окон, чтобы открыть свалку ярлыков на нескучных обоях, а кнопки «WIN←» и «WIN→» легко, без специальных тайлинг-менеджеров и виртуальных рабочих столов наведут порядок в перекрывающихся окнах. Это было замечено и девствене пробовавшими linux desktop пользователями на наших юзабилити-сессиях[4], и собственно, сотрудниками компании, которые еще помнят Windows.

Особенно, если параллельно нужно использовать декстопы на GNOME и Windows, ведь это сейчас совершенно нормальная ситуация. Времена, когда люди становились в очередь к компьютеру прошли, сейчас наоборот, вполне возможно, когда на лично-развлекательном ноутбуке — GNOME, а на работе нужно сидеть в постылой Windows XP. Или наоборот, дома игровой бокс с виндами, а на работе — строгий корпоративный GNOME.

На всех клавиатурах[5] есть привычная кнопка «WIN», и есть куча привычных навыков — «позвать файловый менеджер по WIN-E», «WIN-D, чтобы убрать свалку окон со стола, чтобы увидеть помойк аккуратно разложенные иконки на любовно выбранных обоях», «WIN+←» или «WIN+→», чтобы сделать мгновенно сделать тайлинг окон на большом мониторе, или «WIN+↑», чтобы наоборот, максимизировать окно на маленьком экране лептопа…

Так вот, если смотреть на стандартные хоткеи самых распространенных DE, то оказывается, что многие Windows-хоткеи совпадают с как раз с хоткеями GNOME по умолчанию.

К сожалению, правда, далеко не все.


Good news everyone!

Мы реализовали «ROSA Hotkeys» — специальное расширение[6] для GNOME, который поддерживает большую часть самых необходимых хоткеев.

Расширение для GNOME, обеспечивающее поддержку ряда широко известных[7] горячих клавиш для управления рабочим столом.

Запускалки
Win+L
(и/или Ctrl+Alt+Del) — Заблокировать компьютер.
Win+R
Открыть окно «Выполнить».
Win+Е
Запуск файлового навигатора (Nautilus).
  • Shift+Ctrl+N
    Создать новую папку.
Win+F
Открыть окно поиска.
Сtrl+Shift+Esc
Открытие диспетчера задач (Запуск gnome-system-monitor). Gnome-shell-monitor.png
Win+Pause
Свойства системы (Центр управления) Rosa-gnome-parameters.png.

Vertical-window-tiling.png
Окна
Win+D
Показать рабочий стол (свернуть все окна).
Win+Home
Свернуть все окна, кроме активного.
Win+←/Win+→
Вертикальный Tiling — окно занимает полмонитора слева/справа соответственно.
Win+Shift+↑
Развернуть по максимуму окно по вертикали.

Многомониторные конфигурации
Win+Shift+←/Win+Shift+→
Перенаправить окно на соседний монитор.
Win+P
Переключение режимов «проектора» — клон → расширенный стол → только второй монитор → только основной.



По умолчанию, это расширение установлено и включено.

  • Если оно не установлено, то установите его:

urpmi gnome-shell-rosa-hotkeys

  • Если оно выключено, то его надо включить через «Параметры → Дополнительные параметры системы → Расширения Shell → ROSA hotkeys».

Теперь, можно совершенно комфортно[8] чувствовать себя и под виндами и под гномом, чувствуя, как окна послушно управляются силой твоей мысли.


Надеюсь, эта новость вас…

Ввела в экстаз ^_^9
27%
Порадовала :)18
55%
Оставила равнодушным -_-5
15%
Огорчила :(1
3%
  1. И заодно Unity
  2. Это необоснованно, есть даже некоторые исследования, что как раз на планшетах они не очень.
  3. появившимся на
  4. О которых мы, наверно, расскажем отдельно…
  5. Эта кнопка стала стандартом для клавиатур с 2003года, хотя еще встречаются исключения, которые только подтверждают правила. У меня есть IBMовские клавиатуры с тачпадами, удобные и хорошие, но кнопки «WIN» в них нет… и без нее так плохо, что я готов подарить их дочитавшему до этого абзаца.
  6. GNOME Extensions — это самый неинвазивный метод расширения функциональности GNOME Shell
  7. «Windows»-стиль, с использованием Win-клавиши
  8. И неважно, что панель в гноме по умолчанию сверху, а в Windows — снизу, можно настроить, чтобы было одинаково.

Легализация Gnome-tweak-tool

Согласно концепции GNOME-строителей, восходящей к патернализму яблочной компании, пользователю не нужны настройки системы, ведь в правильно сделанной системе все уже правильно!

Отсюда и серьезная бедность настроек GNOME SHELL по сравнению с KDE, в котором, правда серьезно ударились в другую крайность, и что самое обидное — настройки то остаются, только они исключены из стандартных «Параметров», и заметены под плинтус доступны из отдельных утилит, в частности, утилиты gnome-tweak-tool, недоступной из стандартного интерфейса, да и зачастую не входящую в образ дистрибутива.

Это конечно немного романтично, использовать не постылые «настройки для всех», а настоящий «хакерский тул»[1], про существование которого надо нагуглить, или узнать от посвященных, но все же это неправильно. Все возможные разумные настройки должны быть доступны из единой точки входа, чтобы их в крайнем случае можно было перебрать, хотя бы «обходом дерева в глубину», ну и все было сбалансировано так, чтобы все реально часто используемое было действительно близко, а редкое и странное там не мешалось.

В целом, сейчас ситуация с настройками GNOME SHELL скорее близка к ненасыщенной — многие очевидно необходимые настройки спрятаны в gnome-tweak-tool. Некоторые настройки мы выносим с чулана gnome-tweak-tool на свет «Параметров», например, «Настройки шрифтов», но в любом случае, надо сделать его «легализовать твикер», сделав туда легким вход любому пользователю.

И мы сделали это, добавив вызов gnome-tweak-tool из «Параметров», назвав его, после некоторых дебатов, «Тонкие настройки»

Rosa-gnome-parameters.png
Да, название получилось длинноватое и скучно… Впрочем, если у вас есть удачные предложения — пишите в комментарии, рассмотрим все варианты!
  1. Вспоминаются пачки твикеров для винды, твикеры для кодек-паков, и т.п.

GNOME для нетбуков — режим без тормозов

Несмотря на то, что у нового пользователя название GNOME вызывает ассоциации с гномами, чем-то небольшим и компактным, современный GNOME (>3.6.2) очень плохо подходит для нетбуков и слабого железа.

Разработчики-гномеры всегда устремлены в будущее, и заложились на то, что в компьютере обязательно есть мощная видеокарта, на которую они и возложили все оконные хитрости, со всеми суперэффектами, свистелками и … А если такая видеокарта не обнаруживалась, всем этим приходилось заниматься процессору, и возникал очевидный эффект → «уже сейчас видно, что все будет глючить и тормозить™».

Теоретически, в GNOME есть специальный режим, «GNOME classic», от которого пользователь ожидал, что там все будет, «как при бабушкеGNOME2» — c меню в левом верхнем углу, без свистелок но и без тормозов. К сожалению, нет — меню в этом режиме появлялось, но вот тормоза и свистелки никуда не девались, причем тормозит и оконная система, и даже видео — тупо не посмотреть без дергания сериальчики, даже не в HD!

Дело в том, что в GNOME 3.8 решено было полностью отказаться от режима совместимости (fallback-режима), работающего со старыми проверенными компонентами окружения Gnome — gnome-panel и metacity, в пользу сосредоточения всех усилий разработчиков на дальнейшем развитии gnome-shell, без оглядки на «старое железо». В результате, gnome-panel перестал развиваться и остановился на версии 3.6.2, а из компонентов среды, таких как gnome-settings-daemon и nautilus был вырезан функционал по взаимодействию с gnome-panel.

Мы решили поправить ситуацию и начали с портирования gnome-panel на библиотеки из состава GNOME 3.8. После этого, мы вернули необходимый функционал по взаимодействию с gnome-panel в gnome-settings-daemon и nautilus, и тем самым восстановили fallback-режим в GNOME 3.8.

Теперь все летает даже на вымершем классе нетбуков, и если вы хотите подарить старый нетбук теще — уже не обязательно ставить LXDE или WinXP, а можно и новый GNOME с привычным обличьем.

Тестируем воспроизведением видео высокого разрешения[1]:

Тестирование ROSA Gnome Fallback на слабом нетбуке 01.jpg


Кстати, совсем свежий проект Gnome Flashback ставит своей целью добиться того же и даже большего — помимо простого восстановления работоспособности, планируется продолжать развитие компонентов, в том числе портировать их на GTK+3.

Но на данный момент произведено лишь портирование gnome-panel для работы в GNOME 3.8 и восстановление сессионной записи для Gnome Fallback.

Тем не менее, очень надеемся, что этот проект будет развиваться, так как иметь поддержку нужного функционала в upstream’е — всегда хорошо.

Надеюсь, эта новость вас…

Ввела в экстаз ^_^49
25%
Порадовала :)127
65%
Оставила равнодушным -_-13
7%
Огорчила :(5
3%

Update
К сожалению (а может и к счастью), обнаружилось[2], что этот режим не востребован. Поэтому начиная с GNOME 3.12, и релиза R5, мы его исключаем. Для слабых компьютеров, мы по-прежнему рекомендуем использовать либо LXDE, либо оптимизацию KDE.
  1. Видео лицензионное, самодельное, секретное — запись демонстрации UX Team
  2. По статистике установок, отзывам, и опросам
  3. OSSDEVCONF-2013

    Пасторальный пейзаж Калуги.jpg

    19-22 сентября в Калуге прошла Десятая конференция разработчиков свободных программ, там же, мы назвали ее для краткости и твиттера OSSDEVCONF-2013. Собственно раньше она проходила в Обнинске, но в этот раз организаторам удалось найти более приличное место, и не сильно дальше от Москвы, место, удобное для туризма — старинный русский город, колыбель Циолковского, и при этом еще есть интернет и островки высоких технологий.

    Туда высадился и десант из «РОСЫ» — с докладами, и, что, возможно более интересно, с кучей видеотехники — сто килограмм штативов, камер, фотоаппаратов, ноутбуков и прочего. Да, мы стараемся снять и опубликовать проходящие конференции про линукс и опенсорс (см. например, OSDN-UA-2012, PingWinFest-2012, OSEDUCONF-2013, ROSS-2013, OSSDEVCONF-2013), чтобы увеличить аудиторию докладов (см. Blog:Точка Росы/talks.rosalab.com — конференции, которые всегда с вами).

    Пять ноутбуков, три штатива, четыре видеокамеры и фотоаппарата, фреймграбберы, свитчи, шнуры, и даже запасной проектор с экраном[1], ибо часто опенсорс-конференции проходят весьма в спартанских условиях, когда выход из строя единственного проектора может полностью сорвать мероприятие.

    Но в этот раз все было в очень цивилизованном месте, в IT-центре «Астрал», который хоть и находился среди пасторальных российских пейзажей прошлого тысячелетия, но в котором все было отлично и с проекторами, и со звуком, комфортными креслами и столиками, и кстати, с кофе, бутербродами и плюшками — так что если вы думали приехать, но не собрались — зря. Wish you were here!

    Зал IT Астрал 02 (OSSDEVCONF-2013).png

    Но даже если вы не приехали — у вас есть прекрасная возможность посмотреть доклады с конференции, видео cнято, смонтировано и опубликовано через пару дней после конфы, в соответствии с нашими высочайшими стандартами, ну а сейчас мы набросаем еще краткий обзор-ревью докладов, чтобы заинтересовать[2].

    Зал IT Астрал 01 (OSSDEVCONF-2013).png

    Сорри за качество фото, там были фотографы с большими объективами, но у них почему-то не получились, поэтому пришлось надергать кадров из видео.

    Алексей Новодворский (OSSDEVCONF-2013).png

    В целом, очень большая часть докладов была связана с организатором — ALT LINUXом, и ALT-овая тусовка была и среди докладчиков и среди участников (см. «видеофотки» справа). Технологии сборки и дистростроительства, история и перспективные эксперименты с ARM-овым железом, всего понемногу:

    Дмитрий Державин и Михаил Шигорин (OSSDEVCONF-2013).png
    Смирнов, Левин, Фотенгауэр (OSSDEVCONF-2013).png
    Игорь Власенко (OSSDEVCONF-2013).png

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

    Про это и доклады и двухчасовой мастер класс Игоря Власенко, и доклад нашего ведущего системного архитектора:

    За скобками обсуждений об оптимальной автоматизации, правда остался философский вопрос — ведь все таки изначально «дистростроительство с ментейнерами» подразумевало действительно, «феодальные наделы», множество ручной, «ремесленной» работы, «цеховые» регламенты «гильдии» ментейнеров, и плотную, духовную или практическую связь ментейнера с пакетом, когда ментейнер отлично разбирался и во внешнем, и внутреннем интерфейсе поддерживаемой софтины, активно пользовался ей, замечал косяки сборки, отвалившиеся фичи, баги, да и следил за изменениями, минимизируя шансы внедрения подлых закладок. А теперь, когда изменения роботизированно расползаются по репозиториями, а пакеты лишаются «души», то даже опенсорс не может служить защитой от внедрения хитрых типов уязвимостей, о чем и был доклад-дискуссия Проблема доверенного компилятора в механизме сертификации ПО (Дмитрий Державин, OSSDEVCONF-2013)


    Лично меня очень заинтересовали доклады Михаила Пожидаева. В одном он рассказал о обреченном?смелом подходе к инсталляции пакетов через решение NP-полных задач → Статус разработки и предложения (Михаил Пожидаев, OSSDEVCONF-2013).

    Немедленно вспоминается классика:

    … — Голубчики, — сказал Фёдор Симеонович озабоченно, разобравшись в почерках. — Это же проблема Бен Бецалеля. Калиостро же доказал, что она не имеет решения.

    — Мы сами знаем, что она не имеет решения, — сказал Хунта, немедленно ощетиниваясь. — Мы хотим знать, как её решать.

    — Как-то странно ты рассуждаешь, Кристо… Как же искать решение, когда его нет? Бессмыслица какая-то…

    — Извини, Теодор, но это ты очень странно рассуждаешь. Бессмыслица — искать решение, если оно и так есть. Речь идёт о том, как поступать с задачей, которая решения не имеет. Это глубоко принципиальный вопрос… © «Понедельник начинается в субботу»

    Честно говоря, при всем уважении к смелости подхода, возможно это тупиковый путь, причем для всех RPM-дистрибутивов[3]. В любом случае, это очень интересная задача, наверно надо будет ее обсудить со студентами (тянет на диплом, а в магическом случае полного решения — на Филдсовскую премию).

    Второй же его доклад → Luwrain. ОС для людей с проблемами зрения (Михаил Пожидаев, OSSDEVCONF-2013), внезапно решено было закончить реальной демонстрацией того, что практически никто не видел → интерфейсом для слепых пользователей. Это было удивительно и пугающе, практически постапокалепсичная картина → затемненный подвал[4], мигающие черные буквы на красном фоне, механический голос компьютера и последние люди у клавиатуры… Это надо видеть, и это наверно обязательно надо посмотреть UX-специалистам, ибо UX → это не про раскрашивание кнопочек и шрифты.


    Робот ползающий (OSSDEVCONF-2013).png
    Робот летающий 01 (OSSDEVCONF-2013).png
    Робот летающий 02 (OSSDEVCONF-2013).png

    Разумеется, не обошлось без роботов, рожденных как ползать, так и летать → был доклад и даже целый мастер-класс → Образовательный проект по робототехнике УМКИ на основе СПО (Игорь Воронин, OSSDEVCONF-2013)


    Ребята из ИСПРАНа, поддерживающие проект «Linux Driver Verification», рассказали о мощных технологиях статического анализа, которыми они мучают линуксовые ядра, к сожалению, насколько я понял, сами технологии тащить в отдельное дистростроительство сильно непросто, с другой стороны, пока эти ребята работают, ядро линукса улучшается во всех дистрибутивах.


    Веселая дискуссия вышла и по окончании доклада О свободных форматах публикации результатов научных исследований (Филипп Занько, OSSDEVCONF-2013) → ведь действительно, все старые форматы, ориентированные на обязательную страничную печать статей, и распространение через монопольных монстроиздательства[5], надо выпиливать, переходя к

    • свободному распространению
    • веб-публикации материалов.

    И раздумывать надо уже над конкретными технологиями «авторинга», чтобы можно было максимально и совместно создавать контент, эффективно донося идеи до аудитории.

    В некотором смысле, можно сравнить oldschool бумажные сборники тезисов конференции и страницы с аннотированным видео докладов → возможно пока еще бумага и нужна, но еще несколько лет, и бумажные носители точно можно будет списывать, а в вебпубликации, кроме текста, картинок и формул (уже можно в SVG-виде), видео и аудио, появятся какие-нибудь живые интерактивные модели, и вопрос, что лучше будет закрыт окончательно.


    Михаил Быков (OSSDEVCONF-2013).png

    Были еще и другие доклады, например,

    но в целом, думаю, можно завершить наш краткий обзор, и рекомендовать читателю (вы еще с нами? — поздравляю, вы осилили мои многобукв!) собственно перейти к просмотру заинтересовавших докладов.


    Подбит каток нашего танка.jpg

    Впрочем, еще один момент. Без потерь обойтись не удалось. Были и материальные поломки (колесо, аккумулятор ноутбука и т.п.). И, нематериальные — возможно потерян один доклад. Несмотря на многократную перестраховку (сьемка экрана фотоаппаратом, скринкастом на ноутбуке и захват фреймбгаббером), некий фейл случился → испорчен MP4 файл с записью экрана.

    Если вы действительно разбираетесь в видео, (ffmpeg, VLC, untrunk, mplayer, mencoder я уже пробовал), попробуйте починить. Вот торрент с этим файлом (8GB!), если у кого получится — напишите мне, обещаю подарить ноутбук с ROSA Fresh.

    И кстати — пишите мне, если вдруг видите косяки монтажа (не видно что-нибудь, или не слышно) — пока еще исходники есть, все это можно поправить. А вот если баги не заметят за несколько недель, значит,… значит…, наверно их и не надо править.
    1. К сожалению, все это был явно перебор по весу, и суперсумка со всем этим получилась совершенно неподъемной, такой, что даже сломалось одно из трех колес (после чего она стала совершенно нетранспортабельной.
    2. Ну или наоборот, сэкономить вам время
    3. При проектировании DEB-дистрибутивов эта проблема уже была распознана, и там перешли от дискретной задачи на выполнимость к приближенно решаемым оптимизационным задачам
    4. Конференц-зал был в подвале
    5. Elsevier, Springer, и т.п.

    Updates Builder – Pull Request'ы и автоматическое исправление ошибок сборки

    Репозитории ROSA Desktop Fresh R1 содержат порядка 15.000 пакетов, способных удовлетворить нужды практически любого пользователя. Однако поддержка такого обширного набора библиотек, приложений, утилит и прочих программных компонентов — задача непростая. Ведь новые версии многих программ выходят очень часто, и мэйнтейнерам необходимо оперативно отслеживать их появление, собирать их для РОСЫ, тестировать и решать — стоит ли обновлять пакет в репозитории до новой версии. Для автоматизации подобных задач мы используем инструмент Updates Builder, осуществляющий мониторинг апстрима и автоматически собирающий новые версии программ на ABF.

    До недавнего времени процесс работы Updates Builder’а был незатейлив — он брал имеющийся spec-файл от старой версии пакета, заменял в нем версию и имя файла с исходным кодом и пытался собрать новый пакет. Практика продемонстрировала эффективность такого подхода — достаточно часто новые версии содержат минимум изменений по сравнению с предыдущими, и никаких серьезных изменений в spec-файле для их сборки не требуется. Как результат — за три месяца использования Updates Builder’а мы с его помощью обновили несколько сотен пакетов. Но аппетит приходит во время еды, и нам захотелось еще больше повысить эффективность инструмента.

    Как оказалось, часто новые версии пакетов не собираются по тривиальным причинам — например, в новой версии добавились новые файлы, появилась потребность в новых зависимостях сборки и так далее. Эти изменения приводят к ошибкам сборки, которые можно исправить небольшой модификацией spec-файла. Однако многие изменения довольно типичны и требуют внесения одних и тех же корректировок в spec-файл. Так почему бы не возложить задачу внесения таких корректировок на автоматизированный инструментарий?

    Для реализации такой возможности мы разработали скрипты анализа ошибок, возникших при сборке пакета. Скрипты запускаются автоматически в случае, если сборка новой версии пакета с помощью Updates Builder’а завершилась неудачно. При обнаружении одной из ошибок, известных скриптам, они сами вносят в spec-файл изменения, которые должны позволить избавиться от этой ошибки, и отправляют пакет на пересборку. Этот процесс может иметь несколько итераций — ведь после исправления одной ошибки могут появляться другие. Таким образом, процесс работы Updates Builder’а в РОСЕ устроен следующим образом:

    Updates builder workflow ru.png

    Список ошибок, которые скрипты в состоянии исправить на данный момент, таков:

    • ставшие ненужными патчи
      • Reverse (or previously applied) patch detected
    • Нехватка сборочных зависимостей Perl
      • Can’t locate <perl_module> in @INC
    • Добавленные или удаленные файлы:
      • File not found / File not found by glob
      • Отсутствие файла, указанного в %doc
      • Installed (but unpackaged) file(s) found
    • Ошибки rpmlint
      • debuginfo-without-sources и empty-debuginfo-package

    Исправление этих ошибок носит эвристический характер и мы не можем гарантировать, что исправление корректно, даже если после его внесения пакет собрался успешно. Например, ошибки debuginfo-without-sources и empty-debuginfo-package сейчас решаются просто отключением сборки debug-пакета; но возможно, более правильным было бы пометить пакет как архитектурно-независимый (noarch) или добавить какие-то флаги сборки, в отсутствии которых не генерируется отладочная информация. Поэтому перед переносом предложенных Updates Buider’ом обновлений в основной репозиторий, мэйнтейнерам следует присмотреться — какие изменения были внесены в spec-файл и не стоит ли их скорректировать.

    К слову об анализе предлагаемых Updates Builder’ом обновлений и их переносе в основные репозитории — этот процесс недавно стал гораздо более удобным и наглядным. До сих пор Updates Builder только оповещал о результатах сборки по e-mail, после чего мэйнтейнерам необходимо было самим смотреть, какие изменения были внесены в ветке auto_update Git-репозитория и сливать эти изменения в основную ветку. Теперь в случае успешной сборки на ABF формируется Pull Request на внесение изменений в целевую ветку, так что мэйнтейнеры могут визуально изучить все модификации и принять их нажатием одной кнопки.

    Pull Request от Updates Builder’а для python-m2crypto — можно обновиться до версии 0.21.1
    Детальные изменения — мы не просто обновили тарболл с исходниками и поменяли версию, но и выкинули ставший ненужным патч.

    talks.rosalab.com — конференции, которые всегда с вами

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

    Картинка на тему talks.jpg

    Публикуем мы все это на «ROSA-Медиатека», http://talks.rosalab.com. Это удобная видеотека докладов с ряда софтверных конференций, удобно категоризованная, присобленная и для удобного просмотра, и для фидбека.

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

    Низок КПД и для докладчиков — человек может несколько недель готовить доклад, а получить аудиторию всего из пары десятков человек.

    И хорошая, годная запись докладов — это очень удобный и быстрый способ ознакомиться с современным состоянием в различных технологиях и предметных областях, там, куда книги или вообще не придут, или будут написаны только лет через десять, да и о которых может быть даже не будет статей — ведь часть опыта весьма редкая и специфическая, часть — просто инсайды «как сделано у нас», и никто не будет об этом писать даже статей в блоги.

    Правильно сделанные записи можно смотреть в удобное время, перед сном (чтобы например, уснуть), в ванной, я даже смотрел в транспорте и на ходу. Можно смотреть прерываясь, гугля непонятное, пересматривая повторно неочевидное, или наоборот, проматывая, и даже дропая тривиальщину.

    Но. Большая часть конференционных записей, смонтирована и опубликовано безобразно:

    • Тупая запись одной камерой — невозможно ничего рассмотреть на экране.
    • Все это вываливается, в лучшем случае, единым альбомом на ютуб[1]. Тут еще проблема в том, что нет
      • никакой связи с докладчиком — непонятно, кто автор, стоит ли его смотреть, кому задавать вопросы, если возникнут[2], как посмотреть другие его доклады и т.п.
      • сложно понять, стоит ли смотреть — аннотация отдельно, даже если слайды выложены на слайдшаре — их долго листать, чтобы понять, примерно о чем, достаточно ли качественно сделана визуальная часть, или там «смерть от Powerpointa».
      • Ютуб грузит рекламу, и на дает загрузить само видео (без специальных приседаний, о которых мало кто в курсе).
      • Комментировать в ютубе (плоский список комментов) не очень удобно, и трудно вести длинную осмысленную дискуссию, для которой, как минимум, требуется древообразная система комментариев.

    В то время, как качественные записи с удобной публикацией, вполне могут набрать несколько тысяч[3] просмотров, но даже пара сотен просмотров может на порядок увеличить аудиторию доклада.

    Плюс отдельная проблема — сегментации видеозаписей по конференциям. Как правило, зрителю более-менее все равно, что это за конференция, его может интересовать подборки видеозаписей с разных конференций — по определенной тематике или по отдельному понравившемуся[4] докладчику. Обычно всего этого нет, ведь конференции конкурируют[5] за аудиторию.

    У нас же:

    • Правильная видеосьемка и монтаж, с раздельной сьемкой докладчика и экрана, c ускорением, на базе наших обкатанных технологий (вот мой короткий рассказ о них, рекомендую).
    • Единая база по целому спектру конференций[6], пара сотен докладов, куча дополнительных статей — категории, участники, всего где-то под тыщу[7].
    • Сделана и расширяется тематическая классификация, каждый доклад может быть приписан к нескольким темам (например, Образование + Программирование или Управление продуктами + Юзабилити …).
    • Есть группировка и классификация и по авторам, причем для каждого[8] автора, кроме подборки его докладов, есть ссылка на его актуальный профиль в профессиональных социальных сетях, чтобы можно было ознакомится, кто это, стоит ли его слушать, и чтобы с автором можно было связаться, даже если он сменит работу[9]. Ох, как это было непросто. Ведь часто про автора даже после доклада ничего не известно, контактов на слайдах нет, сам не представился, в программе только фамилия и инициалы... Иногда приходилось делать целое расследование, потратив несколько часов, и бывало даже, безрезультатно…
    • По конференциям тоже все разложено.
    • Для каждого[10] доклада есть аннотация, ссылки на дополнительную информацию, а слайды развернуты в «быструю инфографику» листаемых картинок, чтобы можно было просто пролистать колесом мыши, и гештальтно ознакомится с визуальной частью («смерть от PowerPointa» или нормальная визуализация, какие там ключевые слова и картинки видны, будет ли это про архитектуру, или просто «веселые картинки» менеджерского доклада).
    • Верстка максимально адаптирована для зрителя:
      • в целом — чистый whitespace дизайн[11], что сейчас в тренде.
      • никаких лишних блоков, рекламы и прочего спама.
      • adaptive design — удобная для чтения основная колонка, оптимальной для чтения ширины, а дополнительные блоки — классификации, поиска и комментирования на широких экранах идут вбок, а на узких — уходят вверх и вниз — теоретически все должно быть ОК на планшетах и даже смартфонах.
    • прикручена стандартная, известная всем система комментирования DISQUS (~80% сайтов c внешней системой комментариев сделана на этой системе) — вполне можно всласть пообсуждать.

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

    • … есть и просто, всякие кнопки для шаринга и лайканья, без них сейчас никуда,
    • есть и простая голосовалка для оценки доклада, для тех, кто любит ставить оценки.

    Welcome! Посмотрите, возможно найдутся интересные вам доклады.

    • Если доклад вам понравится — можете полайкать его любым удобным способом.
    • Если есть отзыв — можно написать комментарий. Или ссылку на отзыв в вашем личном блоге.
    • Если есть интересные ссылки по теме — сбросьте комментарием, потом мы подошьем к статье.
    • Если вы знаете (ссылки на соцсети или личные страницы) кого-нибудь для кого я это не нашелнапишите мне.
    • А если хотите, чтобы мы бесплатно сняли и смонтировали вашу конференцию, посмотрите сюда, и если ок → обращайтесь.

    Кстати, кроме записей конференций, есть также проведенные нами записи вебинаров дружественной нам компании PingwinSoft.

    И мы, кстати, раздумываем — а не вести ли вебинары и нам, концентрируясь не на рекламе продуктов, а на командно-технологическом инсайде, рассказывая о своих новых, даже сырых наработках и планах, и отвечая на вопросы о тонкостях разработки дистрибутива, новых трендах, проблемах и решениях, в мире линукса и опенсорса.

    Живые инсайд-вебинары от команды «РОСЫ»:

    Отличная, буду участвовать8
    73%
    Хорошая, возможно посмотрю.3
    27%
    Плохая, «нинужно»0
    0%

    Возможно это развеет безумные мифы о нашей работе, бродящие в анонимных обсуждениях на ряде сетевых ресурсов…

    Ну, и если есть идеи-критика-предложения-багрепорты — пишите их сюда или мне, все это welcomed.
    1. Ну вот пример одной весьма известной международной конференции, видно, что у видеозаписей — считанные просмотры
    2. Да можно гуглить, но кто же это будет делать
    3. см. например, мою статистику.
    4. Ну или наоборот, идеологическому врагу, которого хочется отсмотреть, чтобы раскритиковать все и разом.
    5. Бывают кросс-реклама конференций от одних и тех же организаторов, но это исключение, подтверждающее правило
    6. Cейчас их десяток, но потенциально, если будет интерес публики и возможности у нас — все расширяемо, ибо нас часто зовут записывать конференции…
    7. 760 страниц, 157 файлов
    8. За парой исключений
    9. Обычные «контакты-корпоративные emaйлы» сейчас дико короткоживущи, народ сейчас меняет работу очень быстро, ссылка на linkedinы, фейсбуки, на худой конец вконтакты, потенциально вечноживущи
    10. Опять таки, за некоторыми исключениями
    11. Возможно, когда наши прекрасные дизайнеры смогут отвлечся от дизайна продуктов, тут будет что-то более классное.

    Мы покончили с национальной дискриминацией хоткеев в GNOME!


    Copy-paste.jpg

    Достаточно очевидно, что если у вас десктопный линукс, то у вас десктоп или лептоп (thanks, C.O.), и скорее всего, вы действительно используете клавиатуру, на данный момент самый эффективный интерфейс между человеческим мозгом и компьютером. Иначе, вы бы уже превратились в смартфоноюзера или планшетопользователя, где вроде как есть «sensable interfaces», которые на самом деле маркетоидная ложь — это смартфон чувствует ваши касания, но вы его — нет.

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

    Знание хоткеев, как показали исследования ученых[1], погружается в костный мозг, и становится неотъемлемым автоматическим навыком, типа езды на велосипеде или вождения автомобиля… И даже если вы будете возмущенно утверждать обратное — «хоткеи для гиков, я приличный человек!», заметим, что уж «CTRL-C CTRL-V» знают все, ведь этот простейший хоткей и привел к той информационной лавине, в которой мы живем…

    Казалось бы, да, линукс на десктопе, вроде бы он должен быть оптимален для гиков, которым кроме командной строки и клавиатуры ничего не надо, ну а уж хоткеи в офисном софте должны работать 100%, потому как третье тысячелетие на дворе, Natural UI на подходе, и вообще, о чем речь.

    Но нет. Если у вас GNOME версии выше v3.4, и вы не чистокровный WASP англоговорящий и англопишущий, то вас ждет странная засада — под неанглийскими раскладками во всех приложениях[2] все хоткеи не работают! Даже «CTRL-C CTRL-V»! Ужас охватывает, когда то, что всегда срабатывало — не срабатывает… Это похоже на паралич новых кибернетических органов, это бесит, к этому нельзя привыкнуть…

    Это мы обнаружили когда проводили специальные юзабилити-сессии[3], да впрочем, учитывая, что почти все сотрудники компании, включая менеджмент, и так «сидят на ROSA GNOME», проблема была обнаружена быстро.

    Почему это так? Была ли это специальная диверсия Запада против России? Оставим конспирологию депутатам.

    Скорее всего, ребята из GNOME взяли такое ускорение на пути в космос,

    46-Slides-s xe1nchez penas-brightfuture gnome.pdf 46-Slides-s xe1nchez penas-brightfuture gnome.pdf 46-Slides-s xe1nchez penas-brightfuture gnome.pdf

    что часто не замечают отваливающихся фич, и выпадающих из этой блестящей ракеты людей.

    Кстати,

    А какие Desktop Environment-ы вы используете?

    GNOME SHELL48
    20%
    GNOME CLASSIC21
    9%
    LXDE10
    4%
    KDE64
    27%
    Enlightment3
    1%
    MacOS11
    5%
    Windows27
    11%
    что-то еще…42
    18%
    Ничего из перечисленного4
    2%

    Все это последствия сращивания классической системы ввода XKB с новомодным ЯАвтобусIBus в одну ротацию раскладок, чтобы все между всем бесшовно переключалось… но все эти тонкости неважны для пользователей, которые безуспешно хотят вернуть утраченное по форумам (См, например, ЛОР, УбунтуФорум, Арч…… куча ссылок). Предлагаются разные хакерские воркараунды, от отключения ibus в пользу xkb до использования специальных русских локалей на базе японских.… Но все эти workaroundы, увы, с побочными эффектами — либо не будут работать индикаторы раскладки, либо отвалятся стандартные настройки…

    Мы же решили сделать все это по-уму, и просто починить.

    Корень проблемы был найден в плагине к gnome-settings-daemon под названием keyboard, именно там реализованы механизмы контроля переключения и задания раскладок.

    В реализации этого плагина по умолчанию для того, чтобы работали горячие клавиши предусмотрено добавление «us» раскладки на последнее место в списке раскладок при выборе не-«us» раскладки.

    К сожалению, по какой-то причине такой подход не работает, отсюда и возникает проблема. Подготовленный нами патч перерабатывает механизм добавления раскладки, ставя «us» всегда на первое место и просто переключая активную раскладку на нужную в данный момент, например на «ru». Именно такой механизм используется самим XKB, если исключить вмешательство gnome-settings-daemon в переключение раскладок.

    Надеюсь, эта новость вас…

    Ввела в экстаз ^_^39
    38%
    Порадовала :)44
    43%
    Оставила равнодушным -_-15
    15%
    Огорчила :(5
    5%
    1. не только британских — исследования мозговой активности геймеров например, ярко показывают, что основной мозг вовсе выключается, а вся работа с клавиатурой сидит в костном мозге.
    2. За исключением пары «родных для гнома» Gedit/Mozilla…
    3. О которых мы расскажем отдельно

    Urpmi, rpmdrake и автоматический выбор зависимостей

    Одной из особенностей репозиториев нашей ОС является наличие пакетов, зависимости которых могут быть разрешены несколькими способами — поскольку для некоторых зависимостей присутствует несколько пакетов, их предоставляющих. Почему так происходит? Поясню на примере.

    Есть у нас в репозиториях система распознавания символов (OCR) Tesseract. Ей для работы необходимы пакеты с данными для конкретных языков. Tesseract сейчас поддерживает более 70 языков, и для каждого из них у нас отдельный пакет. Однако вся эта куча языков пользователю вряд ли понадобится — большинству достаточно поддержки родного для них языка. Поэтому при установке tesseract надо каким-то образом решить — какие языковые пакеты надо поставить. Непосредственно на уровне пакетов этот вопрос решается следующим образом: сам пакет tesseract требует абстрактную зависимость tesseract-language, а ее предоставляет каждый из соответствующих языковых пакетов.

    При установке tesseract, urpmi (или rpmdrake) видят, что зависимость tesseract-language может быть разрешена несколькими способами. В такой ситуации они либо спрашивают пользователя, какой пакет выбрать, либо, в случае выставления опции --auto (или аналогичной галочки в настройках rpmdrake), выбирают один из пакетов самостоятельно.

    Rpmdrake auto.png
    Strange food menus.jpg

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

    Кстати,

    При установке пакетов, вы предпочитаете автоматический или ручной выбор зависимостей?

    Автоматический15
    88%
    Ручной2
    12%
    Когда как0
    0%

    → продолжить чтение…

    GRUB2: новый функционал - размеры и положение терминала

    Наши разработчики продолжают улучшать GRUB.

    В этот раз они реализовали новый функционал - теперь в файле темы можно задать местоположение и размеры терминала.

    Также добавлена возможность изменять рамку терминала - пустое пространство, оставляемое со всех сторон в окне терминала.

    terminal-left: "50"
    terminal-top: "50"
    terminal-width: "800"
    terminal-height: "600"
    terminal-border: "10"
    

    08 08 13-grub-terminal-move.png

    Патч был одобрен апстримом и добавлен в исходный код.

    Точка Росы №7


    Обложка Точка РОСЫ №7.png

    Выпускаем очередной дайджест, «точку сборки» технологических новостей компании, представляем его и в обычном формате вебжурнала «подборка статей с обложкой», так и в oldschool PDF-файле.

    Для тех, кто подписан на «Точку РОСЫ», это просто повод кратко напомнить об этих новостях… ведь информационный поток льющийся на наших читателей так могуч, что вполне можно было бы и пропустить кое-что ценное.

    Итак, в седьмой выпуск «Точки РОСЫ» войдут:

    Интерфейсы и юзабилити
    GRUB2
    Инструменты мантейнера
    Технические новости

    Ну и еще раз напоминает, что есть и PDF-версия:

    Точка РОСЫ №7.pdf


    Кстати, вопрос, а нужна ли она, если есть и блог, и дайджест… или есть желающие почитать сборник оффлайн?

    Ваше мнение весьма важно для нас, проголосуйте пожалуйста!

    PDF-сборники «Точек РОСЫ»:

    Нужны71
    90%
    Не нужны8
    10%

    Центр управления LXDE или маленький эксперимент на острие тенденций

    В LXDE никогда не было своего центра управления. Среда минималистична по сути, и ее авторы предлагали использовать отдельные утилиты, как свои (lxappearance, lxrandr и другие), так и входящие в другие DE или вообще системные.

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

    Одним из таких был аргентинский дистрибутив Toquito, в котором сделали простой Центр управления на основе Python и WebKit. Но он был написан «для себя» и имел привязку к вещам, которые есть только в deb-дистрибутивах.

    В 2011 году этот центр был адаптирован для, тогда еще, Mandriva и в репозиториях последней появилась первая реализация, которая впоследствии была переделана под ROSA.

    Центр был источником запуска как утилит drakx, так и утилит настройки LXDE и дополнительного окружения (к примеру, openbox или NetworkManager). В дальнейшем форки центра появились в Mageia и в MagOS.

    В этом году было решено поставить эксперимент и сделать рестайлинг Центра, а также заложить основы для будущего расширения последнего и избавления от старых утилит, доставшихся в наследство от Mandriva.

    LXDE Control Center 01.png

    Что было сделано:

    • Во-первых, код был подвергнут рефакторингу и из него были выкинуты лишние и неиспользуемые части с целью упрощения работы с программой - оставлен только один вид, убраны настройки, путающие пользователя, почищен python-код.
    • Веб-часть была переписана с использованием видоизменного bootstrap в стиле MetroUI с использованием наработок проекта http://metroui.org.ua/. Это дает нам более легкий дизайн, которому сейчас также следуют как Apple в новой iOS, так и Google, а также возможность построения единообразных веб-основанных приложений в будущем. Использование такого режима позволяет также быстро менять темы оформления.
    • Главная страница была видоизменена в с использованием «плиток», на которые в будущем планируется выводить полезную системную информацию, а также дать пользователю возможность настраивать внешний вид Центра. Пока что пользователь может только переключать темы между светлой и темной.
    • Список утилит был приведен в соответствие с текущими положением дел в ROSA.

    Что дальше? А дальше будет интереснее! Мы планируем переработку Центра и замену python на html+js части и, возможно, запуск в режиме как веб-кит окна, так и веб-сервиса, что позволит использовать его по сети.

    LXDE Control Center 02.png

    Утилиты drakx и системные утилиты будут по возможности заменяться на аналоги на основе веб-технологий. Первой утилитой, над которой мы работаем сейчас, является замена system-config-printer на веб-аналог из CUPS, вызвываемый через localhost:631. Это даст большую гибкость в настройках системы. Также есть идея сделать в Центре определение DE и вывод тех инструментов, которые пристуствуют или необходимы для данной DE, а также сделать QT-версию основы Центра. Возможно, это позволит возродить старый добрый drakconf в новом виде, перейдя от парадигмы «утилиты в Центре управления окружения рабочего стола» к «Единый Центр, подстраивающийся под окружение рабочего стола». Но это всего лишь вероятноe будущее, пока что Центр будет развиваться именно как часть LXDE.

    «Точка Росы» переходит на rolling release


    Наши давние читатели помнят наш бюллетень «Точка РОСЫ», предназначенный для технологически продвинутой аудитории. Но он был несколько старомодно-журнального формата, выпускался раз в месяц и в PDF-формате, что совершенно не соответствует современному ритму жизни.

    Good news everyone!

    Мы переходим к формату «Точка РОСЫ 2.0», с непрерывным циклом наших технологических новостей. Можно сказать, что мы перешли к стратегии rolling release, теперь каждая заметка появляется сразу, и новости не устаревают к моменту публикации.

    Для читателей все будет понятно и просто — это классический блог, который можно читать хронологически, последовательно или по календарю, можно подписаться на RSS/Atom. Попасть в этот блог очень просто — ссылка «Точка Росы» в левой навигационной панели нашей вики.

    Впрочем, раз в месяц мы будем добавлять специальный пост-дайджест наиболее интересных статей, чтобы вы случайно не пропустили самое ценное, и сопровождать его PDF-сборником для любителей оффлайн-просмотра.

    Плодотворного чтения!

    Not Invented Here-2010-03-09.jpg

    Ну, и напомним, что для контактов любого рода с нашей компанией можно использовать и простую олдскульную почту info@rosalab.ru.

    GRUB2: улучшение опции start angle и исправление ошибок

    Наши разработчики продолжают работу над улучшением загрузчика. Были найдены и исправлены ошибки, а также была улучшена одна опция. Патчи были отосланы в апстрим и приняты.

    → продолжить чтение…

    Первое полноценное руководство по созданию графических тем в GRUB2

    Наш разработчик написал первое полноценное руководство по созданию графических тем в GRUB2.

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

    В статье указаны формулы и схемы, с помощью которых можно рассчитать и построить схему с точностью до пикселя.

    Руководство подходит как для начинающих, так и для тех, кто уже имел дело с темами GRUB2.

    Вы можете посмотреть статью на нашей вики, эту ссылку можно найти на сайте документации GRUB2.

    PkgDiff 1.6 - Добавлена проверка совместимости пакетов

    Инструмент PkgDiff разработан для визуализации изменений в файлах и атрибутах пакетов любых форматов и предназначен для использования мэйнтейнерами и QA-инженерами с целью контроля изменений и предотвращения внесения незапланированных изменений в репозитории ПО, которые могут нарушить сборку или функционирование других пакетов. Одними из самых многочисленных элементов в структуре дистрибутива Linux являются системные библиотеки. Средний дистрибутив содержит несколько тысяч библиотек. При этом они имеют огромное число зависимостей между собой. По этой причине неаккуратное обновление одной библиотеки может нарушить сборку и функционирование других библиотек и в итоге привести к отказу пользовательских приложений.

    В новой версии инструмента PkgDiff 1.6 мы добавили возможность проверки совместимости изменений в библиотеках. Это стало возможным благодаря новому инструменту ABI Dumper, который может извлекать информацию об ABI библиотеки из соответствующих debug-файлов, которая затем может быть проанализирована инструментом ABI Compliance Checker. Для проверки совместимости двух пакетов A и B (старая и новая версии одного пакета), пользователь должен подать на вход инструменту соответствующие debug-пакеты и запустить его с дополнительной опцией -details:

    pkgdiff -old A-debuginfo.rpm -new B-debuginfo.rpm -details
    

    В отчете добавлена секция ABI Status, в которой показан уровень обратной совместимости API и ABI библиотеки в процентах. Для просмотра детализированных отчетов о совместимости необходимо найти в отчете таблицу Debug Info Files и перейти по ссылкам в колонке Detailed Report.

    PkgDiff-2.png
    PkgDiff-1.png

    ABI Dumper - Инструмент для создания дампа ABI из debug-информации ELF-объекта

    При компиляции ELF-объектов, таких как разделяемые библиотеки, модули ядра Linux и др., с дополнительной опцией -g, в них добавляется отладочная информация. Эта информация обычно используется стандартным отладчиком gdb для предоставлению пользователю дополнительных возможностей при поиске ошибок во время выполнения программы. С помощью опции -debug-dump утилиты readelf или eu-readelf (из пакета elfutils) данная информация может быть представлена в удобном для прочтения виде.

    Важной частью любого ELF-объекта является его бинарный интерфейс (ABI), предоставляемый использующим его приложениям. По-сути он является представлением API объекта на бинарном уровне (после компиляции). При обновлении ELF-объекта в дистрибутиве, важно поддерживать его ABI обратно совместимым, иначе это может привести к нарушению работы приложений. Изменения в ABI вызываются соответствующими изменениями в API объекта или изменением конфигурации сборки и опций компиляции. Чтобы отслеживать изменения в ABI объекта используется разработанный нами ранее инструмент ABI Compliance Checker. Но до настоящего времени он мог анализировать только разделяемые библиотеки посредством извлечения информации об ABI из заголовочных файлов.

    Для того, чтобы расширить границы применения и успростить использование инструмента ABI Compliance Checker, мы применяем новый инструмент ABI Dumper для извлечения ABI-информации из отладочной информации объектов. Теперь, с помощью этого инструмента можно отслеживать изменения в ABI не только библиотек, но и, например, модулей ядра. Типичный пример использования заключается в создании дампов ABI для старой и новой версии объекта:

    abi-dumper libtest.so.0 -o ABIv0.dump
    abi-dumper libtest.so.1 -o ABIv1.dump
    

    и последующем их сравнении:

    abi-compliance-checker -l libtest -old ABIv0.dump -new ABIv1.dump
    

    К сожалению, у данного подхода есть свои недостатки. Пожалуй, главным недостатком является невозможность проведения некоторых проверок совместимости. Например, нет возможности проверки изменений значений констант (как дефайнов, так и глобальных данных), так как эти значения подставляются в код при компиляции и отсутствуют в отладочной информации. В целом, могут быть проведены около 98 % всех проверок совместимости. Еще одним недостатком является долгое время работы на больших объектах размером более 50 мб. Для сжатия debug-информации и следовательно уменьшения размеров входных объектов может быть использована утилита dwz.

    Packaging-tools - набор полезных скриптов для облегчения задач мэйнтейнеров

    В РОСЕ доступен packaging-tools — набор скриптов для мэйнтейнеров, изначально разработанный в Ark Linux.

    Набор включает генератор spec-фалов для произвольных пакетов — vs — который создает заготовку spec-файла и открывает ее в vim (или в редакторе, заданном в переменных EDITOR или VISUAL). Также предоставляются специализированные генераторы spec-файлов для пакетов определенных типов:

    vl
    для библиотек
    vp
    для модулей Perl
    vj
    для Java-пакетов

    Эти генераторы создают заготовки spec-файлов, учитывающие специфику конкретного типа пакетов (например, создаются необходимые подпакеты для библиотек, прописываются используемые в РОСЕ пути установки для Java и так далее).

    Ущу один полезный скрипт — это e, небольшая обертка для gendiff. Если вы хотите подготовить патч для некоторого пакета, то вам следует распаковать архив с исходным кодом и отредактировать необходимые файлы с помощью e. На самом деле, этот скрипт вызовет внешний редактор (указанный в переменных EDITOR или VISUAL; по умолчанию используется vim), сохранив перед этим исходный файл с суффиксом rosa2012.1~ (используемый суффикс можно переопределить с помощью опции -s). После внесения всех необходимых модификаций в исходный код, вызовите gendiff для создания патча.

    Например, вот так можно подготовить патч для файла test.c из исходного кода someapp-1.2.3 с помощью редактора geany.

     $ tar xzvf someapp-1.2.3.tar.xz
     $ cd someapp-1.2.3
     $ export EDITOR=geany
     $ e test.c
     $ cd ..
     $ gendiff someapp-1.2.3 .rosa2012.1~ >my.patch
    

    Этот способ может показаться немного сложным, но он действительно удобен, если вам необходимо подготовить небольшой патч для исходного кода большого объема.

    Vtable Dumper - инструмент для просмотра виртуальных таблиц библиотеки

    Поддержка обратной совместимости внешних API интерфейсов является одной из наиболее важных задач при разработке библиотек. Это позволяет проще портировать существующие приложения на новые версии библиотек. Конечно это относится в первую очередь к библиотекам у которых уже есть применения, но и немаловажно для новых библиотек, поскольку при выборе библиотеки часто обращают внимание не только на функциональность, но и на стабильность. Совместимость бывает трех видов: на уровне исходных кодов, бинарная и функциональная. Наличие совместимости на уровне исходных кодов и функциональной совместимости позволяет портировать приложения путем их пересборки без необходимости модификации кода. Бинарная же совместимость является наиболее сильным уровнем совместимости и позволяет запускать старые приложения без их пересборки.

    Наиболее сложно поддерживать совместимость C++ библиотек, так как, по сравнению с Си-библиотеками, дополнительно используются манглинг имен функций и виртуальные таблицы, создаваемые компилятором для реализации полиморфизма классов. Виртуальные таблицы могут меняться нелинейным образом при изменении в объявлении классов (добавление или удаление функций, базовых классов, атрибутов наследования и т.д.) и любое такое изменение может привести к неопределенному поведению или падению приложений. Для контроля за составом виртуальных таблиц мы создали специальный инструмент Vtable Dumper, который печатает содержимое всех виртуальных таблиц найденных в бинарных файлах библиотеки. Таким образом можно сравнить вывод инструмента для старой и новой версии библиотеки, найти и предотвратить случайные изменения.

    Пример использования инструмента:

    vtable-dumper /usr/lib64/libstdc++.so.6
    

    Стоит заметить, что существует альтернативный способ изучения состава виртуальных таблиц с помощью опции -fdump-class-hierarchy компилятора GNU G++. Однако входными данными для его работы являются заголовочные файлы библиотеки и необходима их компиляция, которая может произойти с ошибками и потребовать дополнительных опций, порядка включения файлов и др. Кроме того, заголовочные файлы в отличие от бинарных файлов библиотеки не всегда установлены в системе. Форматы вывода обоих инструментов практически идентичны. Дополнительно инструмент Vtable-Dumper показывает параметры виртуальных функций в таблице и их mangled-имена (опция -mangled).

    Далее приведен пример отображения инструментом содержимого виртуальной таблицы одного из классов библиотеки libQtGui:

     Vtable for QIconEnginePlugin
     _ZTV17QIconEnginePlugin: 22 entries
     0     (int (*)(...)) 0
     8     (int (*)(...)) (& _ZTI17QIconEnginePlugin)
     16    (int (*)(...)) QIconEnginePlugin::metaObject() const
     24    (int (*)(...)) QIconEnginePlugin::qt_metacast(char const*)
     32    (int (*)(...)) QIconEnginePlugin::qt_metacall(QMetaObject::Call, int, void**)
     40    (int (*)(...)) QIconEnginePlugin::~QIconEnginePlugin()
     48    (int (*)(...)) QIconEnginePlugin::~QIconEnginePlugin()
     56    (int (*)(...)) QObject::event(QEvent*)
     64    (int (*)(...)) QObject::eventFilter(QObject*, QEvent*)
     72    (int (*)(...)) QObject::timerEvent(QTimerEvent*)
     80    (int (*)(...)) QObject::childEvent(QChildEvent*)
     88    (int (*)(...)) QObject::customEvent(QEvent*)
     96    (int (*)(...)) QObject::connectNotify(char const*)
     104   (int (*)(...)) QObject::disconnectNotify(char const*)
     112   (int (*)(...)) __cxa_pure_virtual
     120   (int (*)(...)) __cxa_pure_virtual
     128   (int (*)(...)) -0x00000000000010
     136   (int (*)(...)) (& _ZTI17QIconEnginePlugin)
     144   (int (*)(...)) _ZThn16_N17QIconEnginePluginD1Ev
     152   (int (*)(...)) _ZThn16_N17QIconEnginePluginD0Ev
     160   (int (*)(...)) __cxa_pure_virtual
     168   (int (*)(...)) __cxa_pure_virtual
    

    Визуализация изменений в дистрибутиве Linux с помощью утилиты DistDiff

    Выпуск стабильных обновлений для дистрибутива Linux — непростая задача. Необходимо убедиться, что все пользовательские приложения продолжат корректно функционировать после обновления. Их можно разбить на две группы — базовые (из дистрибутива) и персональные (самостоятельно установленные пользователем из других источников). Базовые приложения можно относительно легко проверить, установив их в обновленный дистрибутив и вручную проверив их функциональность. О приложениях же второй группы разработчикам дистрибутива ничего не известно. Поэтому проверяют не только работоспособность приложений, но и детально изучают список всех изменений в пакетах.

    Совместимость изменений в системных библиотеках можно проверять с помощью инструмента ABI Compliance Checker. Для проверки изменений в остальных пакетах мы разработали инструмент DistDiff. С помощью этого инструмента можно визуализировать изменения во всех пакетах дистрибутива и быстро их просмотреть на предмет нарушения совместимости. На вход этому инструменту надо лишь предоставить две директории — со старыми и новыми пакетами. В режиме по-умолчанию инструмент проверяет изменения в интерфейсных файлах (библиотеки, модули, скрипты, исполняемые файлы и т. д.), потенциально влияющих на совместимость, но может проверять и все файлы с помощью опции -all-files.

    Работает инструмент на основе разработанного нами ранее инструмента PkgDiff для сравнения и визуализации изменений в пакетах.

    Sample report between RHEL 6.3 and RELS 2012 on x86_64

    Починили GRUB2 - утечки памяти, косяки в прогресс-барах и индикаторах

    Наши разработчики стараются улучшить и дополнить любую программу, с которой имеют дело.

    Поэтому они создали ещё 5 патчей для загрузчика GRUB2. Патчи были отправлены в апстрим GRUB2 и приняты.

    → продолжить чтение…