суббота, 25 июня 2011 г.

Your Linux is Ready, продолжение разговора

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

Не писал не просто давно, а очень давно, за что хочется извинится перед читателями этого блога. Темы для разговоров не закончились, их по-прежнему много, мир не стоит на месте, все движется, и, что естественно, мы движемся вместе с ним. По-другому и быть не может. Вернее может, но это немного другая история: у меня все же есть подозрение, что большая часть людей, которые читают более-менее тематические блоги за изменениями в мире следит.

Хочу поделится небольшим окололинуксовым наблюдением.

Когда я только-только начинал использовать GNU/Linux - системы, пытался делать первые шаги в этот интересный и захватывающий мир, мне попадалось очень много "success stories", от более продвинутых товарищей. Многие переходят на GNU/Linux, уже имея кое-какой опыт использования операционных систем от Microsoft, поэтому в подобных историях, тема классического противостояния всплывает сама собой. Типичный паттерн таких сравнений: Windows(или же проприетарный софт вообще) - это что-то типа "жри шо дают", а GNU/Linux - можно настраивать так как тебе хочется, и донастраивать до заоблачных высот, когда только тебе и Богу будет понятно что это, как оно работает, но зато будет удобно именно тебе. И действительно: скришноты Windows или Mac OS X в общем-то достаточно однообразны, в то время как рабочие столы GNU/Linux пользователей пестрят разнообразием. Кто-то не может жить без спецэффектов, кто-то предпочитает монотонный минимализм, и, безусловно, и то и другое заслуживает уважения. "Потому что я могу", в качестве ответа на вопрос "Зачем?" - это безусловно круто.

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

Но, как бы там ни было, если речь идет, скажем, о настройках какого-нить Apache или MySQL(уж простите за попсовость ассоциаций), то поверить в существование вуду легко(хотя все кто читал документацию и к тому и другому вполне в курсе, что никакого вуду там нет, хотя, например, modrewrite в документации таковым и назван), но вот другой пример. Допустим, существует необходимость в поведении "Х", и настройка окружения, так, чтобы "Х" происходило действительно возможна. Может быть не совсем тривиальными способами, может быть прийдется перелопатить немного документации чтобы понять что к чему, но таки в конце-концов будет работать. И пользователям, хотят они этого или нет, приходится идти именно этими не совсем тривиальными путями, для того чтобы достичь желаемого результата. И тут появляется Мессия, и говорит он: "я вижу как вы мучаетесь братья и сестры, я вижу ваши страдания, и мне кажется пора что-то менять, я создал нечто, что решит все ваши проблемы раз и на всегда, причем решит сразу, и настолько прозрачно для вас, что вы ничего и не заметите: просто проснетесь утром, и проблем уже не будет, и впоследствии вы даже не сможете себе представить как могли жить без моего нечты". Братья и сестры ведутся, и таки да, "нечта" решает какую-то часть проблем, у некоторых даже все, и многие действительно не могут представить жизнь без "нечты". Неудачники, которые в этот круг света не попали уныло бредут на форумы, и во все остальные интернеты, и что слышат они там: "Эту нечту, которая должна была, абсолютно незаметно и безболезненно улучшить жизнь ..." - да, вы правильно догадываетесь, - "надо уметь готовить". Такое положение вещей немного ставит в тупик.

То есть вот, скажем, есть мой любимый линуксовый Window Manager - Xmonad. Я его выбрал вполне сознательно, с одной стороны - концепт тайлиноговых WM'ов мне по душе. В качестве рабочих мест у меня выступает или ноутбук с не очень большим экраном(13,3"), или рабочий десктоп, у которого монитор тоже большими размерами не отличается. Поэтому обычно окна развернуты на весь экран, и переключение происходит или между окнами или между десктопами. Я так привык, мне это удобно. Для этого все прелести обычных WM'ов в достаточной мере избыточны. Именно Xmonad пришел на смену ion3, когда стали возникать сомнения в адекватности разработчика этого самого ion3, и было подозрение, что такими темпами этот самый ion3 долго не проживет, в принципе так и получилось в итоге(да, я в курсе что есть продолжатели идеи), а за Xmonad стояли и стоят вполне адекватные люди. С другой стороны - мне просто было интересно было немного поиграться с Haskell (до сих пор интересно, но из-за работы пришлось забросить на время). Так вот, выбирая сначала fluxbox, потом ion3, потом Xmonad, я точно знал и знаю что это мой персональный fun, и в случае чего, проблемы нужно будет решать самостоятельно, настраивать его тоже нужно самостоятельно, иногда нужно включать мозг и так далее и тому подобное. По-сути, ждать Миссии, который прийдет и скажет "теперь жить станет лучше", не приходится, да и собственно WM-то работает, а вот остальное окружение - это уже исключительно выбор пользователя. Вполне себе linux-way, ничего страшного и странного. То что это все надо конфигурировать, заглядывать в документацию, что-то читать - и ежу понятно, и да вполне понятно что это "надо уметь готовить", хотя полуфабрикаты тоже доступны, на самые разные вкусы :)

Дальше в этой истории должно быть "но", и оно есть :) В седые времена, когда особого выбора между "готовить" и "не готовить" не было, некто Matthias Ettrich, попытавшись настроить нечто "десктопное" используя то что было под рукой, понял что дело дрянь, и было бы неплохо эту ситуацию изменить. Так появился KDE. Но у KDE в то время была одна проблема - он был основан на Qt, лицензия которого была не сильно то и свободной, и с этим тоже надо было что-то делать, так появился GNOME. Поскольку, как известно, "должен остаться только один", еще одно классическое противостояние, и еще одна тема для "священных войн", была обеспечена, так и произошло. Тем более что к "классическим", на сегодня, KDE3 и GNOME2 эти среды подошли в достаточной степени неодинаково. Создатели GNOME решили дать пользователю рабочую среду, что называется "из коробки", с возможностью подстраивать некоторые аспекты поведения этой среды, в то время как в KDE пользователь мог, и временами был вынужден, брать под свой контроль, самые незначительные штуки. Но в конечном счете и там и там, можно было работать без всякой черной консольной магии, и, в принципе, было достаточно стабильно и удобно. Потом "классическая эра" закончилась, и грянула пора перемен: сначала вышел KDE4 под девизом "давайте сделаем тоже самое, но по-другому, а то как-то скучно стало", а совсем недавно зарелизили GNOME3 под девизом "пользователь уж не тот что раньше, надо делать еще проще". Но, вернемся к началу: главная цель всего это праздника жизни: упростить жизнь для конечных пользователей, потому как для бородатого системного администратора достаточно простой запускалки xterm'а, и он его в конце-концов запустит, а если нет - сделает Ctrl+Alt+F1 и не будет чувствовать себя ущемленным в чем-то. C точки зрения "рецептов" и "умения готовить", DE - это "Мивина"(или "Доширак", или любая другая дрянь быстрого приготовления). Да, его можно "готовить", да, его можно подавать в составе других блюд, но основной паттерн использования, предполагаемый создателями: кинул в горячую воду, подождал пять минут и потребляешь в пищу: быстро, дешево, сердито. Все должно быть по максимуму просто, унифицировано и не допускать неоднозначного толкования.

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

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

Не так давно вышел GNOME3. Новая версия GNOME, совсем не похожая на GNOME2, с достаточно сильно переработанным всем. Насколько я понимаю, разработчики хотели сделать жизнь тех самых "конечных пользователей" еще лучше и проще, а саму среду привести к виду, отвечающему представлениям о современной Десктоп-реальности. Насколько удачно или неудачно получилось, и вообще к чему это все приведет, ИМХО, пока еще рано говорить: все только начинается. Я ставил эту радость себе в Debian'е, и не мог удержаться от того чтобы посмотреть как оно выглядит в Fedora(в варианте русского ремикса), неплохо, хотя возникают некоторые ... хм ... вопросы. Потом мне скинули ссылку на чудесную статью в вики Russian Fedora. Такой себе "рецепт приготовления". Особо привлекли внимание два пункта:

Заголовки окон не имеют кнопки свернуть/развернуть окно

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

Отсутствуют кнопки Shutdown и Reboot

Идеология разработчиков: перезагрузка пользователю не нужна, а вместо выключения компьютера ему следует использовать Suspend. Вопрос спорный и в данный момент все ещё обсуждается. Варианты: можно использовать Alt-F2 reboot/shutdown, можно в меню с кнопкой LogOut нажать Alt и получить доступ к скрытому пункту меню Power Off, можно установить расширение, возвращающее все скрытые пункты меню на место.

Первая реакция была "афигеть". Мне как пользователю настолько упростили жизнь, убрав две вещи которыми я, например, пользуюсь все время, когда загружаю GNOME, что теперь надо хитрыми манипуляциями это упрощение как-то подавить. Безусловно, факт необходимости тайного знания о приготовлении налицо, с другой стороны: а на кой черт мне это тайное знание сдалось? Я когда устанавливал эту самую Fedora 15 с LiveCD, не найдя кнопки Reboot после установки в "живом" окружении, долго думал, а как же мне попасть в то, что я только что в пару кликов установил. Да и собственно, если в OS X, трюк "закрыл крышку - оно заснуло, открыл крышку - оно проснулось" прокатывает всегда, я за три+ года использования ни разу не видел чтобы было по-другому, то в GNU/Linux + тот же самый Gnome такой трюк без проблем прокатывал крайне редко, в последнее время стало, правда, получше - Fedora около недели просыпалась без проблем. И при этом в OS X никто кнопки "Reboot" и "Shutdown" не убирал. По-сути, намеренно внесенный недостаток среды, компенсируется существованием тайного знания о том как этот недостаток исправить. Пользователь, не умеющий это "готовить" не виноват, ну не должен он гуглить для того чтобы вернуть себе привычный вид окружения которым он много лет пользуется, тем более, что декларируемая цель - упростить пользователю жизнь.

Ну хорошо, DE, такая как GNOME или KDE - это все же сложная конструкция, состоящая из кучи компонентов, и все-таки какие-то усилия, для того чтобы в рамках этой среды можно было как-то жить, можно от пользователя ожидать. Не стоит, но можно. Идеальный вариант, это когда ты установил, загрузил, и можешь работать. В свое время у меня так получилось с Fedora 7, я почти пол года "жил" в практически дефолтном окружении, и меня все устраивало. Но вот маленький компонент этой всей сложной конструкции - звук. В GNU/Linux наворотили целый зоопарк штук, через которые приложение может играть звук, многие приложения умеют дружить со всеми, или почти всеми, зверями из этого зоопарка, многие - только с отдельными видами, что безусловно, создает пользователю некоторые неудобства. Могут быть ситуации, когда каждое приложение нужно настраивать для воспроизведения звука отдельно. На самом деле, не такая уж большая проблема, поскольку на среднем десктопе проигрывание звука ожидается всего от нескольких приложений, да и выполнить минимальную настройку уже давно не было особо сложно. Да и даже минимального ручного вмешательства часто-густо не требовалось. Вообще, хоть какие-то ощутимые проблемы, с настройкой звука, за последние пару лет, у меня были только тогда, когда хотелось выводить звук на внешнюю звуковуху, но они решались достаточно легко, а в том же GNOME2 с тем же esd - очень легко. Да, кстати, и LTSP/GNOME/XMMS/esd (проигрывание музыки "через сеть", с терминального сервера, на локальную машину) тоже особых проблем не доставляло, во времена RHEL4, не помню какой там GNOME тогда был. Но тут появился PulseAudio, который должен был решить вообще все проблемы, даже, для большинства пользователей, несуществующие. И косо-криво, его начали "впиливать" во все дистрибутивы, и проблемы, вместо того чтобы исчезнуть окончательно, вдруг начали ползти на свет.

На unixforum до сих пор в FAQ по Fedora остался популярный в то время вопрос "Почему заикается звук?", и одно из вуду решений. Проблема была, решений было много, особо в принципе они не помогали, в какой-то момент стал популярен ответ от разработчиков "обновите железо". К слову сказать, мой древний Xmod который безбожно глючил с PulseAudio, тогда играл, и до сих пор вполне нормально играет в OS X, и особо старым себя не чувствовал и не чувствует, да и Audigy 4, "обновлять" тогда было как-то не совсем понятно куда и зачем, тем более что без "пульсы", все работало замечательно. Сейчас вроде проблем стало поменьше. Но не так давно, мое внимание привлекло несколько комментариев на ЛОРе и unixforum'е в отношении PulseAudio, где прямым текстом говорилось "вы просто не умеете эту пусльсаудию готовить", "пользователи не читают документацию, если бы читали, все было бы хорошо". Но блин, PulseAudio как раз была и призвана решить проблемы пользователей, так, чтобы пользователи, этих проблем вообще не замечали, а просто могли тихо и спокойно заниматься любимым делом под музыку! Она как раз таки, изначально, не предполагала знания вуду, необходимости настройки и так далее и тому подобного, она как раз таки должна была нас всех от этого избавить, и теперь вы мне говорите что, блин, пока не приготовишь, нормально работать не будет. Другой курьез ситуации здесь в том, что особо там "готовить" и нечего, а если хотите "готовить", то неплохо бы знать и "вуду" от PulseAudio, и, скажем "вуду" от какой-нить "alsa".

***

И совсем неожиданно, но все же будет "Вывод".

Я это все к чему. Безусловно, в GNU/Linux есть много вещей которые требуют настройки, и есть много вещей которые без этой настройки просто работать не будут, и есть много вещей которые требуют специальных знаний. Например, представления о том же Vim могут варьироваться от "он работает в двух режимах: бибикать и все портить", до "я умею им пользоваться, но все же предпочту что-то более другое", и до "vim - наше фсе", в зависимости от наших знаний об этом инструменте, и того насколько он подходит именно нам. Здесь имеет место быть идеология: для того чтобы этим пользоваться, нужно читать документацию, нужно в этом разбираться, и тогда использование может быть эффективным. А может и не быть, это уже вопрос выбора адекватного инструмента, "под задачу". Но, с другой стороны, есть вещи которые должны упрощать жизнь, такие как DE, PulseAudio, NetworkManager, и очень часто они должны упрощать жизнь все же не IT-человекам, а конечным пользователям. И если они это действительно делают - это замечательно, если они это делают, и в тоже самое время позволяют делать намного больше, пусть и более сложными способами - это еще более замечательно :). Если же нет, - то стоит помнить о двух вещах:

  • во-первых, чаще всего есть "другая дверь". Если выкинуть "улучшайзер" и "вернуться к корням", может получится сильно быстрее, и сильно проще, чем пытаться образумить "улучшайзер";
  • во-вторых, "улучшайзеры" - это полуфабрикаты быстрого приготовления. Это не значить что их нельзя использовать по-другому, но это значить, что у них есть вполне определенные цели и задачи, в плане "работы из коробки", и их "предполагаемого использования". И если пользователь ожидает вполне конкретного поведения от интерфейса, а интерфейс при этом делает что-то другое, или делает что-то не так - это чаще всего не вина пользователя. Глупо предполагать, что такой рабочий инструмент, как Vim, и такая фиговина как PulseAudio, должны требовать одинакового внимания со стороны пользователя.