Работа opensource-сообщества на примере истории одного бага: будет ли в Xorg нормальная смена раскладки клавиатуры?

Свои первые осмысленные шаги в сторону работы на Linux на десктопе я делал на Ubuntu. То был 2006 год. Тогда я еще использовал Windows. Одним из первых неприятных моментов в Linux для меня была особенность работы переключения клавиатуры вместе с горячими клавишами приложений.

Например, если Ctrl+Shift переключает раскладку, а Ctrl+Shift+N открывает закладку в браузере, то в сумме получалось очень неудобно. К слову, в Windows эта мелочь работает как и ожидает пользователь -- если нажат шоткат приложения, то раскладка не переключится при отпускании кнопок. В Linux же переключение раскладки происходит при нажатии, а не при отпускании заданной комбинации, в чем и заключается основное неудобство.

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

Было это 5 лет назад, в начале 2006. Мне, как автору баг-репорта, приходили на почту уведомления все эти годы. На примере этого бага я прочувствовал многие особенности опенсорс-разработки. В целом, это похоже на захватывающий и долгий остросюжетный сериал :)

В начале других пользователей парил этот баг и в трекере появились подтверждения бага и ссылки на более поздние багрепорты-дубликаты. Тогда Daniel Holbach, видимо наводя порядок в багтрекере к концу 2006 года, обратил на это безобразие внимание, перевел баг в confirmed, назначил ответственную группу разработчиков и попросил отправить баг в "upstream".

Кто тут виноват сразу было не понятно, поэтому под подозрение попали Ubuntu Control Center, Gnome и Xorg. Трекер Ubuntu уже тогда позволял привязывать Upstream-баг репорты к багам дистрибутива и раздельно отслеживать статусы и в то время это было революцией в дистростроении.

Спустя почти полгода, очевидно в преддверии очередного релиза Ubuntu, Sebastien Bacher открыл этот баг в трекере Gnome и получил молниеносный (через 15 минут) ответ разработчика Сергея Удальцова:

NOTGNOME. That's the way X works.

Я перепостил его ответ в лог бага Ubuntu и Sebastien Bacher закрыл баги Control Center и Gnome:

closing the Ubuntu task then

Для меня тогда не было существенной разницы между Ubuntu, Gnome и Xorg. Что дальше делать было решительно непонятно, но я как автор бага чувствовал какую-то ответственность и пошел гуглить проблему. Оказалось это еще более древний баг в Xorg, подмеченный Виталием Шишаковым в далёком 2004 году.

Я перепостил ссылку в трекер Ubuntu и дальше баг Xorg в состоянии In progress был привязан к моему багу в Ubuntu.

Шли годы. Люди из разных стран и дистрибутивов Linux отписывались о проблеме в логе бага. Пользователи ругались на разработчиков, которые похоже не меняют раскладку клавиатуры раз до сих пор не поправили такой позорный баг. Daniel Stone методично закрывал дубликаты баг-репортов в трекерах Ubuntu и Xorg.

Разработчики обсуждали проблему и выяснили, что Xorg работает в соответствии со спецификацией, спецификацию на Xkb никто менять не будет, и вообще, никто уже не помнит что там в этом Xkb наворочено и все равно его скоро перепишут на xkb2 :) А новые дубликаты багов все поступали в трекеры Ubuntu, Gnome, KDE, Xorg и наверняка еще десятков дистрибутивов.

И вот, спустя 6 лет, в начале 2010 года, появилась надежда, и звали героя Илья Муравьёв:

Comment 45 Ilya Murav'jov 2010-02-07 14:17:20 PST
Created an attachment (id=33142) [details]
This patch is to resolve the issue; it is for "trunk" Xorg sources.

Please try to patch Xorg from git://anongit.freedesktop.org/git/xorg/xserver
and comment if the patch works for you.

Дальше события развивались стремительно, по количеству писем конечно, а не по результатам: весь 2010 год патч не могли принять в Xorg, Илья сделал все возможное, но патч нарушал спецификацию и нуждался в серьезном тестировании. Тем не менее весь год поступали радостные комменты что оно работает как надо от тех пользователей, кто в состоянии пропатчить и собрать Xorg.

В конце 2010 года Simos Xenitellis, написал в трекере Xorg какие, по его мнению, надо провести тесты. Александр Кожевников, не дав опомниться, выполнил все тесты "дедушки" за исключением IBus, потому что было непонятно что это такое. Но на разработчиков Xorg это не возымело видимого действия.

На фронтах более демократичного багтрекера Ubuntu тем временем разыгралась драма. Nick Andrik номенировал мой баг в категорию PaperCuts -- тривиальные ошибки и нарушения юзабилити, которые создают впечатление сырого и глючного софта у пользователей. Термин введен впервые в Ubuntu, но теперь используется в других проектах. Такие ошибки пользуются повышенным вниманием у разработчиков и обычно исправляются к очередному релизу. Но Sense Hofstede через 2 месяца ответил отказом, мотивируя тем, что фикс нетривиален.

Тем временем, Oded Arbel применил патч Ильи в своем PPA-репозитарии, откуда можно было легко установить Xorg, что существенно увеличило количество сообщений об успешной работе патча под Ubuntu. Oded Arbel написал о том, что правильным способом включения патча в Ubuntu является привлечение внимания Ubuntu's X-SWAT Team к этому багу. В Xorg от Ubuntu включено более 50 патчей которые ещё не попали в апстрим релиз, только предстоит принять в апстрим, либо вообще никогда не будут приняты в Xorg. В тот же день Nick Andrik подписал X-SWAT team на мой баг, но спецназ хранил молчание.

В сентябре 2010 Алексей Козлов, который не оставлял убунтовцев в покое c августа 2010 года, написал в лог бага обращение к X-SWAT team, в котором кратко и точно описал состояние дел в нескольких сотнях комментов разных багтрекеров относительно бага, патча Ильи и позиции разработчиков Xorg. Он доступно объяснил важность этого фикса для дистрибутива, которым пользуются не только люди с одной (английской) раскладкой клавиатуры. Дальше были какие-то перемещения бага по пакетам и опять затишье...

6 января 2011 года Bryce Harrington отписал, что хотя нарушение спецификации и является блокером для патча в апстриме, на уровне дистрибутива есть выбор, тем более, что, в конце концов, планируется переход на Wayland... и, так как патч требует более широкого тестирования и врядли вызовет критические ошибки, он склонен включить его в Ubuntu и посмотреть что будет.

7 декабря Timo Aaltonen написал:

uploaded to natty
affects: xserver-xorg-input-evdev (Ubuntu) → xorg-server (Ubuntu)
Changed in xorg-server (Ubuntu):
status: Fix Committed → Fix Released

Хотя я давно не использую Ubuntu, сменил клавиатурные привычки, поменял софтовые предпочтения, но, тем не менее, я очень рад, что патч Ильи наконец-то пойдет в массы, и надеюсь, что он будет включён в Xorg после тестирования пользователями Ubuntu :)

P.S.: Если вы дочитали до этого места, ответьте пожалуйста на вопрос по поводу необходимости патчей к upstream-версиям программ в дистрибутивах Linux (опрос справа) и прокомментируйте свое мнение.

Блог: RU Linux

Захватывающе) Тоже люблю создать баг и стареть вместе с ним) Вот, недавно таки запилили в КДЕ4 возможность сделать одновременно лаунчер и переключалку задач (как в виндоус7, docky, macos и так далее). Очень большая радость)

>P.S.: Если вы дочитали до этого места, ответьте пожалуйста на вопрос по поводу необходимости патчей к upstream-версиям программ в дистрибутивах Linux (опрос справа) и прокомментируйте свое мнение.


Хренасе. Куда ж мы без патчей.

Блин, наконец-то

Ответил да, иначе, к сожалению, ничего работать не будет. Правильнее сразу включать патчи в upstream, но это unreal по ряду причин, разработчик просто может встать в позу, хотя патч будет "удобен" для большинства.

Я как-то чаще вижу баги, которые лежат годами и их никто не правит. Даже никто не комментирует.

У меня в launchpad-е есть баги, которые я подтверждал, еще о KDE3. До сих пор в статусе undecided или confirmed. И все. Баги ядра, обычно, никто не исправляет. Дай бог kernel team ответит и попросит какую-нить информацию, но после это скорее всего баг будет висеть без исправлений вечно. Опять же все помнят переход с usplash на plymouth с драйвером от nVidia. Баг тупо прикрыли оставив разрешение 640x480x4bit.

А я сменил переключение раскладки на Alt+Shift. В Linux есть много чего, что не исправляется годами - жутко тормозной Flash, горячие клавиши в русской раскладке и т.д.

Багом этим ни кто не занимался ибо нафиг не упал. :) Большинство линуксойдов использует при переключении caps или на крайний случай "драное окно". Вообще эту дурь, переключать раскладку ctrl+shift/alt+shift придумал явно не здоровый человек: криво и не удобно. Так что этот "баг" парит только людей недавно ушедших с винды. ;)

как хорошо что я давно использую альт+шифт для переключения раскладки. и даже уже успел забыть почему я начал это делать - помоему как раз таки из-за этого бага. хотя подобное поведение бесит по другой причине - когда в адресной строке фаерфокса выделяю куски текста по контрл+шифт - происходит известно что. но вот насколько помню в генте и арче этого бага не было. только убунта, и фрибсд(из того с чем пришлось столкнуться) наверное там стоит этот или похожий патч(гентой пользовался в 2007-2009 году и не заметил этого бага, арч 2009-сейчас)?

Я использую Alt+Shift на своих компьютерах так как большинство других компьютеров вокруг меня, которыми иногда приходится пользоваться, переключаются именно так.

хм... история похожа на баг переключалки в сеансе RDP, работающем под rdesktop. Тоже долго и безрезультатно парили моск, но потом, похоже, все плюнули на него в связи с появлением нормально работающей Remmina. Жаль что в опенсорсе проблемы иногда решаются вот так...

Всем, кто думает, что Alt+Shift их спасет: предлагается попытаться прокрутить окна в обратном порядке, Alt+Shift+Tab вместо Alt+Tab, и самовыпилиться из обсуждения (а люди с богатой фантазией также обнаружат и другие комбинации на Alt+Shift+что-то-там "в дикой природе").

патчи нужны, это же развитие. И в дистрибутивы их надо включать, кто-то же должен их тестить, если разрабы не хотят. А потом, если патч понравится, может и апстрим очнётся.

Одно время парился с этим багом, т.к. есть шоткаты и для Ctrl+Shift и для Alt+Shift (и часто в одной и той же программе). А потом обнаружил, что нециклическое переключение удобнее (т.е. одна комбинация для одного языка и другая для другого). Стал пользоваться Caps и Shift+Caps, и проблемы с раскладками мня уже как года 3-4 не волнуют.

Спасибо за интересную статью. Я вот тоже сейчас пытаюсь обустроить рабочее место в Ubuntu, но понимаю, что пока количество раздражающих мелочей зашкаливает. Больше всего напрягают кривой рендеринг шрифтов и отработка нажатий кнопок (мышиных и клавиатурных) по keyPress, а не по keyRelease. Причем разработчикам, судя по всему наплевать по большей части - например, Максим Шеманарев (www.antigrain.com) около 4-х лет назад провел подробнейшее исследование на предмет качественного рендеринга шрифтов, мало того, и программку с демонстрацией алгоритма приложил, и к разработчику FreeType вроде даже обращался с предложением патча - в итоге никому ничего не надо! А ведь у него качественней чем ClearType рендеринг получился. Тоже самое с keyPress/keyRelease - да поправьте вы уже наконец эту хрень в иксах раз и навсегда - и проблема будет решена system wide - так нет ведь - уперлись как бараны - нарушает спецификацию. А признать, что в спецификацию было изначально заложено кривое design desicion у них гордость не позволяет. Так сделайте хоть опционально при компиляции - и того ведь не допросишься. Хотя для знающих людей/разработчиков той или иной подсистемы - не думаю что большая проблема внести эти изменения. А разработчики Gimp? Сколько лет их, например, просили сделать однооконный режим? Кое-как ведь уломали. И таких примеров - не сосчитать.

Эпопея конечно интересная, но даже не все виндузятники используют Ctrl+Shift, скорее Alt+Shift и это привычки пользователя виндовса, а не баг... Для меня это никогда не было и не будет проблемой, использую циклическое переключение клавишей "Menu" и мне не нужен ваш патч на Х.орг, так как во флуксбоксе у меня другие сочетания клавиш и безразлично какие там конфликты с вашими привычками и быстрыми клавишами Гнома и КДЕ. Патч нарушающий спецификации не нужен и будет жаль, если его включат в Убунту. IMHO

Реально паршивый баг, мучаюсь до сих пор, наконец то его исправят!

Убунта 11.04 — до сих пор не исправили.

> Патч нарушающий спецификации не нужен Поэтому надо пользоваться керосиновыми лампами. Ведь 150 лет назад не было стандарта на использование электрических. Очевидно, что проблема в кривой спецификации — любая кнопка переключения раскладки будет мешать любым шорткатам, в которых она используется, несмотря на то, что такой проблемы нет и никогда не было, например, в Windows. А то, что по счастливому стечению обстоятельств множество пользователей вообще не нуждается в переключении раскладки, либо переключает её той кнопкой или комбинацией, которая редко совпадает с большинством шорткатов — это ещё не значит, что проблемы не существует в принципе.

Alt (клавиша) - Википедия При использовании xkb можно назначить ввод двух разных символов на комбинацию AltGr, Shift и алфавитно-цифровой клавиши, в зависимости от порядка нажатия первых двух.

Тоесть этот патч эту фичу порушит.

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