Книга: Вопросы истории: UNIX, Linux, BSD и другие

Глава двадцать вторая. Из истории Иксов

Хотя, как было отмечено в предыдущей главе, CLI в полной мере сохраняет своё значение в современных UNIX-подобных системах, жизнь как «обычного пользователя», так и типичного применителя оных протекает в основном в рамках интерфейсов графического режима. А во всех этих операционках в основе его лежит оконная система X (X Window Sysytem), именуемая в народе просто Иксами. Так что настала пора обратиться к её истории.

Вступление

Нынешний Linux в пользовательской своей ипостаси не мыслим без современной инкарнации оконной среды X – Xorg. Немыслим настолько, что начинающие пользователи этой ОС часто ставят между ними знак равенства, не отдавая себе отчёта в том, что, как говорится в народе, X – он и в Африке... Икс. Точнее, един во всех UNIX'ах и UNIX-подобных операционных системах.

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

Ибо теоретически вполне можно представить дистрибутив этой системы без компонентов, разработанных в рамках проекта GNU – есть и практически близкие к этому реализации, например, Tiny Core Linux. А вот без оконной системы X, менеджеров её окон, интегрированных десктопов и приложений графического режима говорить о каком-то десктопном Linux'е просто нелепо – как сказала поэт-линуксоид Алиса Деева,

Это разговор не в пользу бедных -- В пользу продавцов клавиатур.

И это – первая причина поговорить об истории Иксов. Вторая же – то, что разработчики проекта Wayland действительно обещают сделать Иксы достоянием истории. Которую надо рассказать, пока мы ещё чего-то помним и нас ещё не замочили.

Доисторический период

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

Не буду я рассматривать и детективную проблему – потибрили ли из Пало-Альто идею графического пользовательского интерфейса (по нашему, по бразильскому – GUI, именно этот термин и будет для краткости применяться в дальнейшем). И если потибрили – то кто же сделал это первым. Потому что по сему поводу исчерпывающе высказался лирический герой Венечки Ерофеева в поэме «Москва-Петушки»:

Никто этого не знает, и никогда теперь не узнает. Не знаем же мы вот до сих пор: царь Борис убил царевича Димитрия или же наоборот?

А начну я доисторический период с первых графических интерфейсов UNIX. Которая, как известно, зародилась и долгое время развивалась в качестве чисто текстовой. Настолько чисто, что сама идея прикручивания к ней какого-либо GUI воспринималась как ересь. Но, однако, идея эта была реализована.

Первой на это поприще вступила фирма Sun, о чём говорилось в главе третьей), изначально тесно связав свою SunOS со средствами поддержки GUI собственной разработки. Превым таким GUI'ём была SunView (Sun Visual Integrated Environment for Workstations, первоначально называвшаяся SunTools) – оконная система, возникшая едва ли не одновременно с самой SunOS в первой половине 80-х годов. От всех последующих оконных систем, ориентированных на UNIX, она отличалась тем, что большая её часть поддерживалась ядром. Она включала в себя набор стандартных пользовательских приложений, таких, как текстовый редактор, почтовый клиент, инструменты для настройки. И, наконец, она являлась частью стандартной поставки операционной системы. По-видимому, именно в SunOS впервые была реализована интеграция операционной системы, GUI и пользовательских приложений, получившая дальнейшее развитие не только в мире UNIX, а и в более иных операционках, доживших до наших дней (а имена их читатель и сам ведает).

На смену SunView в середине 80-х годов прошлого века пришла NeWS (Network extensible Window System) – более сложная система, основанная на PostScript. Однако получить широкого распространения она не успела.

Наконец, в конце 80-х годов для SunOS была разработана оконная среда OpenWindows. Сначала она поставлялась как отдельное дополнение, а потом была включена в состав операционной системы. Однако и она не снискала популярности.

Ибо тогда же, в конце 80-х годов начинается смена аппаратной платформы для SunOS: процессоры Motorola 68XXX в серверах и рабочих станциях заменяются на «камни» собственной разработки и производства, RISC-процессоры SPARC. Для которых разрабатывается и новая операционная система, названная Solaris 2. А с её приходом происходит и отказ от всех GUI собственной разработки. Они сменяются ставшими стандартными для UNIX мира оконной системой X и рабочей средой CDE. О последней речь пойдёт в главе про десктопы. А вот к истории первой обратимся сейчас.

Рождение Иксов

Программные средства обеспечения работы в графическом режиме можно условно разделить на две части – ту, что обеспечивает взаимодействие с аппаратурой, и собственно интерфейс с пользователем. Разделение это не строгое – только что я говорил о SunView, в которой эти части были неразрывны. Однако магистраль развития GUI лежала в области разделения этих частей, что наиболее последовательно было реализовано в оконной системе X (X Window System).

Кстати, о названии. Как гласят легенды древности, некогда существовала операционная система V. Поверх неё работала оконная система W, созданная в Стэнфордском университете Полом Асентэ (Paule Asente) и Брайаном Рейдом (Brian Reid). В дальнейшем она была портирована на UNIX, хотя и работала там, как говорят, очень медленно. Поэтому, когда под UNIX была разработана новая оконная система, её просто маркировали следующей буквой латинского алфавита.

Иксы начали разрабатываться в 1984 году сотрудниками MIT Робертом Шейфлером (Robert Sheifler) и Джимом Геттисом (Jim Gettys), к которым скоро присоединился Рон Ньюмен (Ron Newman). Идея разработки заключалась в том, чтобы создать графическую систему, полностью независимую как от аппаратной платформы, так и от операционной системы, даже родительской UNIX, которая бы обеспечивала студентам и преподавателям MIT доступ ко всему тому зоопарку компьютеров, который существовал в стенах этого заведения.

Официальным названием новой системы было – X Window System, причём слово Window появилось в ней более чем за год до его употребления в имени одной графической оболочки для DOS, которую тогда никто не воспринимал всерьёз ввиду непригодности к практическому использованию. И для которой оно стало ни чем иным, как торговой маркой, охраняемой законом.

Тем не менее позже в кругах, далёких от UNIX, некоторое распространение получило словосочетание X Windows. Однако, говоря словами всё того же героя Венечки, «это позорно и преступно». И истинный линуксоид до такого никогда не опустится – и не из-за пиетета перед законами. А вот более краткое X System, несколько жаргонное X11 (почему именно 11 – станет ясно со временем) и, особенно, просто X, не только допустимо, но и широко используется краткости для.

На русский язык официальное название X Window System переводилось столь же официально – Оконная система X. Однако используется оно редко – только в особо торжественных случаях. Ибо практически сразу было вытеснено кратким словом «Иксы» – пусть и жаргонным, но адекватным. Его я использовал в этой книге ранее и буду использовать впредь, поскольку официоз в ней кажется уж совсем неуместным.

Работа над Иксами проводилась ударно-стахановскими темпами. Первая версия новой системы вышла в мае 1984 года, а вышедшая в январе 1985 года версия получила порядковый номер 6. Это привлекло к Иксам внимание фирмы DEC, и Иксы были портированы на её VAX’ы.

Версии Иксов, именовавшиеся X#, сменялись с калейдоскопической быстротой: уже во второй половине 1985 года появляется X9 – первая версия, распространяемая свободно, на условиях так называемой лицензии MIT (до этого институт распространял её за плату). А на рубеже 1985-1986 годов выходит версия X10 – подряд в нескольких вариантах, так называемых реализациях: X10 – декабрь 1985 года, X10R2 – январь и X10R3 – февраль 1986.

Версия X10R3 получает широкое распространение. Кроме VAX, она портируется на машины Hewlett-Packard, рабочие станции Apollo, Sun и ряд других. В связи с этим возникла необходимость сделать её окончательно независимой от аппаратуры, что и было выполнено с привлечением сил DEC в рамках версии X11.

Разработка версии X11 заняла необычно много времени для этого проекта – более полугода: финальный вариант её вышел аж в сентябре 1986 года. Ход работы над ней широко обсуждался в Сети благодаря открытым спискам рассылки. Это был пример первого в истории масштабного проекта, разрабатываемого распределенным коллективом программистов, связанных лишь Интернетом. Таким образом, разработка X11 послужила прообразом современных крупномасштабных проектов FOSS.

Длительность разработки X11, тщательность тестирования и широта обсуждения проекта привели к тому, что эта система стала уникальным для софтверной индустрии долгожителем: номер главной версии с тех пор не менялся ни разу, добавлялись только номера реализаций. С формальной точки зрения те Иксы, с которыми мы имеем дело сейчас (то есть Xorg), также являются представителями ветки X11. Именно поэтому для X Window System широко распространилось сокращённое именование – X11.

Иксы в своей 11-й ипостаси продолжали свое триумфальное шествие по «железным» архитектурам и их операционным системам. Только что я говорил, что ради Иксов Sun прекратила собственные разработки в области графического интерфейса. Та же судьба постигла и все иные графические системы для UNIX – даже имена их ныне забылись. Иксы стали стандартным средством обеспечения работы в графическом режиме всех без исключения UNIX'ов и UNIX-подобных операционок.

Кроме того, Иксы были портированы на VAX/VMS фирмы DEC, OS/2 от IBM и даже, страшно сказать, на Windows. Хотя о последнем факте и не любят говорить вслух.

Проект приобрёл такие масштабы, что для управления им в 1988 году потребовалось создать специальную организацию, названную Консорциум X MIT (MIT X Consortium), которая объединила в своём составе как университетские круги, так и компании, разрабатывающие коммерческие решения. В 1993 году на смену ему пришёл X Consortium, выпустивший в мае 1994 года X11R6, реализацию, просуществовавшую более 10 лет: следующей, X11R7, суждено было появиться только в конце года 2005! И различные минорные её версии (последняя по времени – X11R7.7, появившаяся в июне 2012 года) используются в дистрибутивах Linux и BSD-системах по сей день.

XFree86 и другие

Сама по себе оконная система X версии X11 представляла из себя набор открытых спецификаций (reference implementation), доступных под лицензией MIT, на основе которых предлагалось создавать конкретные реализации – X-сервера с сопутствующими компонентами. Которые уже могли распространяться на любых условиях, в том числе и коммерческих.

Этим предложением не замедлили воспользоваться разработчики программного обеспечения для UNIX-систем. В результате чего появился ряд проприетарных X-серверов, обеспечивавших графический режим в столь же частнособственнических UNIX'ах. Однако наибольшую известность получила свободная реализация Иксовых референсов – XFree86.

Прототип проекта XFree86 зародился в 1991 году в рамках X11R5: соответствующий спецификациям этого релиза X-сервер был разработан Томасом Роэллом (Thomas Roell) и Марком Снайтили (Mark W. Snitily) для 32-битных платформ на процессорах Intel, получив вполне ожидаемое имя X386. Этот сервер распространялся под проприетарной лицензией фирмы SGCS (ныне SGI), сотрудником которой являлись его авторы.

Это, однако, не помешало Дэвиду Векселблату (David Wexelblat), Гленну Лэю (Glenn Lai), Дэвиду Доуэсу (David Dawes) и Джиму Тсилласу (Jim Tsillas) в 1992 году внести в его исходники коррективы столь существенные, что у них были основания выделить их в отдельную версию, названную X386 1.2E .и распространять её уже свободно.

Такое положение создавало определённую путаницу. И потому после обсуждения и обмена мнениями стороны постановили: переименовать новый проект в XFree86. Что по созвучию намекало и его на связь с корнями (X-three-eighty-six), и на характер распространения (X-free-eighty-six), а цифры явным образом указывали также на архитектуру целевых процессоров – x86.

Не пропало и дело исходного проекта: X386 был переименован в Accelerated-X, и Томас Роэлл создал фирму Xi Graphics, которая на протяжении многих лет занималась его продажами, а поддержку осуществляет чуть ли не по сей день. У нас ещё будет повод вспомнить про этот X-сервер.

А пока вернёмся к XFree86. Во вступлении я уже говорил, что своей популярностью среди широких пользовательских масс Linux во многом обязан Иксам – и конкретно именно свободной их реализации. Но, с другой стороны, XFree86 повсеместным своим распространением обязана Linux'у в не меньшей степени. Ибо усилиями Ореста Зборовски (Orest Zborowski) она заработала на Linux'е чуть ли не со дня своего рождения, а именно с апреля 1992 года.

Вообще взаимоотношение XFree86 с Linux'ом на том этапе развития обеих систем в источниках освещено довольно противоречиво. Остаётся не вполне ясным: создавалась ли свободная реализация Иксов уже с прицелом на юную, но активно развиваемую операционку? Или ещё под абстрактный UNIX, а на Linux была Орестом лишь портирована? Прямых ответов на эти вопросы мне найти не удалось.

Так что в эти детали я вдаваться не буду. Тем более в рамках нашей темы сейчас важнее другое: в октябре 1992 года XFree86 была включена в комплект, который можно назвать первым в истории настоящим дистрибутивом Linux. Им стал SLS (Softlanding Linux System), разработанный Питером Мак-Дональдом (см. главу одинадцатую). И с тех пор судьбы XFree86 и Linux'а были неразрывно связаны на протяжении 12 лет, вплоть до событий «Великого раскола», о которых я расскажу в следующих разделах.

Однако Linux не была единственной операционкой, в которой реально использовалась XFree86. В недрах архивов проекта можно обнаружить списки издревле поддерживаемых им ОСей. В их числе мы увидим такие, ныне забытые, имена, как Amoeba (первая попытка Танненбаума построить «настоящую» микроядерную ОС) и BSDi (коммерциализированная сестричка FreeBSD), Mach, ушедший в тень MacOS X, и «игрушечную» Minix, благоздравствующую, но «незнаменитую» NetBSD и скандально ославившуюся SCO, а также SVR3 и SVR4, давно ставшие абстракциями учебников по Computer Science.

А вот следов поддержки FreeBSD в ранних версиях XFree86 найти не удаётся: похоже, что в её портах свободные Иксы появляются во второй половине 1994 года (собственно, одновременно с самой системой портов). Однако с этого момента XFree86 оказывается связанной с FreeBSD не менее тесно, чем с Linux'ом – и со временем мы увидим, что эта связь окажется особенно важной для нашей страны.

Как уже говорилось, изначально XFree86 была основана на X11R5, и так продолжалось во всех версиях 1-й и 2-й веток (нумерация их не имеет никакого отношения к версиям и релизам собственно Иксов). Последней представительницей этой линии была XFree86 2.1.1, вышедшая в мае 1994 года. Однако почти одновременно появляется и новая спецификация Иксов – X11R6, которая ложится в основу новых реализаций X-серверов. В их числе была и XFree86 3.0, увидевшая свет в конце августа 1994 года.

И это были те самые Иксы, с которыми впервые столкнулось большинство из ныне действующих применителей Linux первого и второго призыва. Те самые, которые появляются в портах FreeBSD. Иначе говоря, те самые, которые стали, как принято говорить, стандартом de facto для всех существовавших тогда свободных UNIX-подобных ОС. А со временем – и для несвободных тоже, но это будет не очень скоро.

XFree86: немного о внутренностях

Говоря о XFree86 как об одной из реализаций X-сервера, я был не совсем точен: это была не одна из реализаций, а множество реализаций оного. Откуда их столько взялось? Ответить нетрудно.

Ныне, когда речь заходит о видеоподсистеме и её поддержке в Linux'е, он обычно сводится к священной войне между приверженцами Nvidia и ATI/AMD. От которой дистанцируются резонные применители, любовно поглаживающие в сторонке свои встроенные Intel'я. И подчас вспоминающие даже о существовавших не так давно SiS и Matrox. Однако представить себе пестроту видеорешений, сосуществовавших каких-нибудь 15-20 лет назад, может только тот, кто видел её своими глазами.

Ибо это была пестрота восточного базара. На котором можно было встретить видеокарты на любом чипе из выпускавшихся в те годы: и откровенно рабоче-крестьянском Trident, и плебейски-претенциозном Cirrus Logic, и S3 – символе мещанского благополучия, и аристократическом ATI, скромном трудяге – Tseng и блистательном Imagine128, 3DLabs, знаменующем высоты профессионализма, и многих других, имена которых стёрлись в памяти даже ветеранов. И чуть ли не каждому производителю видеочипов в составе XFree86 полагался свой персональный X-сервер, а некоторым их доставалось по два (как S3), а то и по три (как ATI).

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

Но это будет ещё не скоро. А пока работа многих свободных X-серверов – результата «слепого» реинжиниринга фирменных решений – часто оставляла желать лучшего. Вплоть до того, что иногда графический режим просто не удавалось запустить с «родным» сервером. Правда, в составе XFree86 имелись «всечиповые» сервера VGA и SVGA, работающие на любых картах, поддерживающих соответствующие стандарты. Однако наблюдать на дисплее, подключённом к крутейшей видеокарте, что-нибудь вроде 640x480 при 16 цветах доставляла тогдашним пользователям не много радостей.

Конечно, не всё было так мрачно, и большинство карт на типовых чипах (особенно не гипермодерновых) с типовыми же X-серверами из поставок XFree86 работали вполне справно. Однако вопрос поддержки видеосистемы свободными Иксами в 90-х годах стоял весьма остро. И попытки его кардинального решения тем или иным образом предпринимались постоянно.

Первым направлением таких попыток было, разумеется, совершенствование самих X-серверов. На этом поприще особенно прославилась фирма S.u.S.E. – создатель одноимённого дистрибутива Linux, героя главы семнадцатой. Благодаря тесным контактам с фирмой Elsie – производителем высококлассных видеокарт, в том числе профессиональных, её разработчики очень быстро получали информацию о новинках «видеожелеза» и столь же оперативно вносили патчи в свои реализации X-серверов.

Вторым направлением было использование коммерческих X-серверов, вроде упоминавшегося выше Accelerated-X. Сами по себе они не были ни свободными, ни открытыми, но на определённых условиях могли распространяться (почти) бесплатно. Благодаря этому их нередко включали в состав дисковых наборов Linux-дистрибутивов и софта для них, вроде упомянутых в главе про Linux на Руси боксов от Walnut Creek и InfoMagic. Правда, тут возникали свои сложности, как лицензионные, так и чисто технические. А для Руси этот путь оказывался закрытым напрочь, потому что тот же Accelerated-X в принципе не поддавался кириллизации.

Наконец, третий путь продемонстрировала в 1998 году маленькая и неприметная тогда фирма Nvidia. Выпустив незадолго перед тем «народную» 3D-карту Riva 128, она вскоре сопроводила её и фирменным драйвером для работы в Linux'е – драйвером, работавшим безукоризненно.

Я не буду выстраивать причинно-следственных связей. Однако то, что звёздный час Nvidia начался с Riva 128 и её Linux'ового драйвера, остаётся медицинским фактом. На констиатации которого я и поставлю запятую в своей истории.

От XFree86 к Xorg

Хронологически привязанную часть прошлых разделов этой главы я закончил на появлении в августе 1994 года XFree86 версии 3.0 – той самой, которой суждено было со временем лечь в основу десктопного Linux'а. В нынешней же главе предлагаю посмотреть, что было со свободной реализацией Иксов дальше.

Между «тройкой» и «четвёркой»

А дальше на протяжении 1994-1996 годов плавно сменились версии 3.1 и 3.2, не прославившиеся какими-либо громкими новшествами. А затем в мае 1997 года выходит версия 3.3, ознаменовавшаяся появлением в ней XFree86 Acceleration Architecture (XAA). Архитектура эта, как явствует из названия, обеспечивала ускоренный вывод графики – пока ещё двухмерной: как это ни трудно нынче представить, но тогда последняя ещё нуждалась в акселерации. Именно на её почве расцвели пышным цветом те самые X-сервера, привязанные к видеочипам, о которых шла речь в заключительной части прошлой статьи.

За два с половиной года активного развития версии 3.3 она пережила более полудюжины минорных релизов, характеризовавшихся, однако, весьма мажорными нововведениями. Описывать их последовательно было бы скучно, да нынче и проследить их поверсионно сейчас уже нелегко. Поэтому остановлюсь на тех из них, которые сыграли важную роль в постановке под названием «десктопный Linux».

О постоянном совершенствовании X-серверов, обеспечивавших базу для всего остального, я уже говорил. Далее, важным оказалось развитие поддержки шрифтов. Первоначально в XFree86 применялись, во-первых, растровые шрифты (форматов bdf и pcf), во-вторых, векторные шрифты формата PostScript (ATM Type 1). Сфера применения первых была ограничена – они использовались преимущественно в терминальных программах и текстовых редакторах. Назначение же вторых было, теоретически, вполне универсально. Практически же их широкому использованию мешало. во-первых, низкое качество самих шрифтов, во-вторых – не лучший их рендеринг.

До решения второй проблемы было ещё далеко. А вот в отношении первой в описываемое время произошли определённые подвижки, выразившиеся в появлении поддержки шрифтов True Type. Что сначала дало возможность использовать шрифты от Microsoft, штатно применявшиеся в Windows, начиная с версии 3.1 (Arial, Times New Roman, Courier New и так далее), по чьему-то недосмотру оказавшиеся в почти свободном доступе, хотя и в несколько извращённой форме. А потом оказалось толчком для разработки качественных ttf-шрифтов, уже полностью свободных (Bitstream Vera, DejaVu, Liberation).

Теперь надо сказать пару слов о поддержке устройств ввода – то есть клавиатур и мышей.

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

Ввод кириллицы в кодировках ISO 8859-5 (по историческим причинам изначально принятый в русских вариантах проприетарных UNIX'ов, в частности, в SunOS) и KOI8-R (утвердившейся, благодаря Андрею Чернову aka ache, во всех свободных UNIX-подобных системах), поддерживался ещё в XFree86 2.X, однако методом, считавшимся идеологически неправильным. Полноценная поддержка кириллических раскладок стала возможной только в версиях 3-й ветки – правда, ценой несовместимости с более старыми русифицированными приложениями, например, Netscape Navigator (легендарный предшественник современных FireFox'а и Thunderbird'а).

Параллельное использование более чем одной раскладки клавиатуры (впрочем, в те времена их число ограничивалось двумя) требовало средства переключения между ними. И такое средство ещё в версиях 2.X было жёстко встроено в саму раскладку. В частности, переключение с латиницы на кириллицу и обратно было привязано к клавише CapsLock (а функцию перевода алфавитных клавиш в верхний регистр выполняла комбинация Shift+CapsLock).

В XFree86 3.X появилась возможность переназначения переключателя раскладок, чем народ немедленно воспользовался: для переключения с латиницы на кириллицу пошли в ход Windows-подобные комбинации типа Control+Shift и Alt+Shift, и даже приснопамятные «два шифта».

Очередное отступление, или Легенда о двух Shift'ах. Во времена самостийных русификаций DOS и её приложений переключатели латинской и кириллической раскладок бывали самыми причудливыми. Однако, когда русский язык начал официально поддерживаться этой ОС (начиная с версии 4.01), в этом качестве утвердилась комбинация левого и правого Shift'ов. И ей суждена была долгая жизнь – но благодаря не DOS'у, а Linux'у.

В первых версиях Red Hat, самостоятельно, без участия российских пользователей, поддерживавших русский язык, выбор его на стадии установки автоматически приводил к тому, что умолчальной становилась кириллическая раскладка (причём об этом нигде не говорилось). Это на стадии создания аккаунтов делало невозможным ввод корректных паролей администратора и пользователя, если не переключиться на латиницу. Переключение это программе установки (и только в ней) осуществлялось комбинацией обоих Shift'ов – но это нигде не было документировано. И не одно поколение пользователей Red Hat, а затем и Fedora, имело повод поупражняться в солдатской смекалке, угадывая сначала, почему в ответ на ввод пароля выдаётся сообщение об ошибке, а потом – о способе её устранения. Ибо последние рецидивы данного бага (давно превратившегося в фичу) я наблюдал ещё в Fedora 11.

При этом поначалу наличие «заказного» переключателя раскладок не исключало и использование переключателя встроенного, то есть всё той же клавиши CapsLock. Что, казалось бы, никому не мешало – как и наличие бочек с красной и чёрной икрой при входе в магазин Рабиновича на Дерибасовской улице. Однако было сочтено излишеством – и в версии XFree86 3.4 встроенный переключатель раскладок исчез. Что скоро, с появлением средств автоматического конфигурирования Иксов, доставило много дополнительных развлечений не одному поколению начинающих линуксоидов и берклианцев.

Однако прежде чем отсутствие встроенного переключателя раскладок проявило себя во всей красе, произошла та самая забавная история, о которой я недавно упоминал. Суть её была в том, что в один прекрасный момент, с выходом XFree86 версии 3.3.2, русская раскладка для кодировки KOI8-R без всяких видимых причин просто перестала работать. Точнее, она делал вид, что работала, но выводе получалась абракадабра из русских букв.

Дело оказалось в том, что раскладка для кодировки KOI8-R подменялась таблицей для ISO 8859-5. А причина заключалась в банальной опечатке в исходниках главной Иксовой библиотеки – xlib. Более ни на что эта опечатка не влияла, и потому её выявление заняла довольно много времени. Это было сделано Иваном Паскалем, который и написал соответствующий патч для версии 3.3.2, штатно включённый в следующий релиз (3.3.3).

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

Тем не менее, XFree86 в рамках ветки 3.3 от версии к версии всё совершенствовалась, пока система не приобрела законченный вид в релизе 3.3.6, вышедшем в декабре 1999 года. Она тут же была включена во все дистрибутивы Linux, и использовалась на протяжении долгого времени.

Однако на этом развитие 3-й XFree86 ветки фактически прекратилось – уже в марте 2000 года появляется первый релиз ветки 4-й, кардинально переработанной. Правда, разработчики XFree86 совершенно чётко позиционировали версию 4.0 как экспериментальную, и майнтайнеры всех распространённых дистрибутивов вняли их предупреждению, включая её в состав своих сборок в качестве опции: как основная графическая система ещё долгое время применялась версия 3.3.6.

Хроника поступательного движения

главным новшеством XFree86 4-й ветки была ликвидация зоопарка X-серверов, расплодившихся по принципу «один видеочип – один сервер». Отныне герой (то есть X-сервер) остался один. А вся чипо-специфическая его часть выносится в отдельные модули (по старой традиции называемые драйверами).

Далее, в XFree86 4.X появляются собственные средства автоконфигурирования. Если раньше к таковым понятие «авто» можно было применить чисто условно (см. следующие отступления), то теперь запуск команды

# X -configure

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

Настройка XFree86: как это делалось встарь Говорят, что во времена совсем былинные настроить Иксы можно было только лобовым созданием их конфигурационного файла в текстовом редакторе. Однако затем появились механизированные средства для решения этой задачи, и первое из них носило имя xf86config, издревле входившее в штатную поставку XFree86. Оно запускалось из командной строке и работало в интерактивном режиме. То есть – требовало нудного ответа на множество вопросов. И любая ошибка могла быть исправлена только одним способом – выходом из конфигуратора и повторением процедуры с самого начала. Однако это средство обладало одним несомненным достоинством – при должной аккуратности позволяло добиться результата (в виде сгенерированного файла /etc/XFree86.conf), почти не требующего ручной доводки (за исключением некоторой докрутки кириллицы и, для некоторых CRT-мониторов, юстирования частотных характеристик развёртки).

Настройка XFree86: как это делалось в Одессе В XFree86 появились меню-ориентированные программы настройки: Xconfigurator с псевдографическим интерфейсом, XF86Setup, работавшая в графическом режиме VGA, и xf86cfg, допускающая как текстовый, так и графический варианты запуска, причём в последнем она пыталась максимально точно определить параметры видеоподсистемы. Разумеется, работать через меню, да ещё и (в графических вариантах) управляемом мышью, было куда проще, чем отвечать на многочисленные вопросы. Да и вернуться к ошибочно определённому пункту было куда легче, чем перезапускать заново, с нуля, xf86config. Однако объём однако объём ручной правки после работы любой из перечисленных утилит, был куда больше, чем при использовании последнего.

Настройка XFree86: как это делалось в Linux'ах В конце 90-х годов ряд дистрибутивов, проявлявших наибольшую любовь к пользователям, штатно включили средства настройки Иксов в свои инсталляторы. В числе первых на этом поприще отметились Mandrake и Caldera OpenLinux – приоритет сейчас уже не определить. Да он и не очень важен. Более существенно то, что средства настройки Mandrake были унаследованы сначала его Russian Edition, а потом Altlinux'ом. Где были расширены, углублены и закалены в боях с кириллицей (или, правильней сказать, за кириллицу в Иксах). А под идейным влиянием дистрибутива от Caldera развивался инсталлятор ASPlinux, выпускавшийся одноимённой фирмой. А поскольку она тоже имела соплеменное происхождение, то и он доблестно показал себя на ниве кириллизации Иксов.

Разумеется, сказанным усовершенствования «четвёрки» не исчерпывались: тут были и возможность работы с двумя мониторам, и автоматическое распознавание большинства моделей «колесатых» мышей (ранее для их поддержки требовался отдельный пакет imwheel), и способность работать с графическими планшетами «рисовального» назначения.

Все эти «улучшательства», постепенно накапливавшиеся в ходе коротких жизненных циклов минорных релизов 4.0.X, привели к тому, что релиз 4.1, вышедший в июне 2001 года, широко распространился в дистрибутивах Linux в качестве «Иксов по умолчанию». А появлением в начале 2002 года релиза 4.2 «тройка» из их состава практически исчезла, уцелев разве что в ультраконсервативных системах типа Debian'а.

На этом поступательное развитие XFree86 не остановилось: в сентябре 2002 года выходит корректирующий релиз 4.2.1, а за ним, в феврале 2003, – «полумажорный» 4.3. В рамках последнего продолжают накапливаться усовершенствования, призванные воплотиться в будущем релизе 4.4, уже совсем «мажорном». Однако тут происходит поворот судьбы, значение которого для дальнейшего развития и Иксов, и Linux'а трудно преувелчить – хотя и до сих пор не ясно, как оценить.

Предпосылки Великого раскола

Все указанные усовершенствования, хотя и существенно улучшали жизнь пользователей, но никак не могли рассматриваться в качестве революционных. Что не нравилось некоторым участникам проекта XFree86, в первую очередь – одному из его основоположников, Кейту Паккарду. И о дальнейших событиях существуют противоречивые свидетельства.

Основная часть разработчиков проекта утверждала тогда, что Кейт втихаря начал разработку проекта параллельного. И в результате в марте 2003 года его исключают из «партии XFree86» с закрытием доступа к «партийному распределителю» – дереву исходников. Сам же Паккард отрицал партизанский характер своих действий, хотя и активно критиковал бывших коллег за медлительность в рассмотрении патчей от сторонних разработчиков и общий консерватизм. И действительно, после изгнания «из рядов», создаёт собственный форк Иксов – тот самый, которому суждено было стать современным проектом Xorg. Обещая, что он будет развиваться более динамично и «инновационно».

Насколько эти обещания были выполнены на первом, ещё «безымянном», этапе развития нового проекта, судить трудно. Потому что это не был ещё сам Великий раскол: в итоге основу форка Xorg составил один из пре-релизов XFree86 – 4.4 RC2. А поводом для собственно раскола послужили лицензионные противоречия. Но это – совсем другая история, которая принадлежит скорее политике.

Повод к Великому расколу

Что потом началось – не опишешь в словах Владимир Высоцкий

Прошлый раздел завершился тем, что на базе последнего кандидата в релизы XFree86 4.4 RC2 был создан его форк. А вслед за этим происходит событие, приведшее к Великому расколу. Точнее, послужившее его непосредственным поводом – причины его, как мы только что видели, были гораздо глубже.

В феврале 2004 года выходит долгожданный релиз XFree86 4.4, аккумулирующий все новшества предшествующих корректирующих и «полумажорных» релизов. Однако – под скоректированной же лицензией. Если ранее XFree86 распространялась под стандартной «разрешительной» лицензией MIT, то в новой версии появился пункт, несколько напоминающий пресловутую «оговорку о рекламе» из первой версии BSD-лицензии, в последующем изъятую (подробности см. в главе второй).

Хотя, если вчитаться в текст лицензии, выясняется, что всё её новшество сводится к требованию включать в документацию дистрибутивов, использующих XFree86, такую фразу:

Данный продукт включает программное обеспечение, разработанное The XFree86 Project, Inc (http://www.xfree86.org/) и его сотрудниками.

То, что в просторечии обычно называется лицензией MIT, правильней именовать лицензией X11. Ибо в разных проектах MIT использовалось несколько видов лицензий, большинство из которых со временем вышли из употребления. Существующий же текст лицензии, под которой распространялась XFree86 вплоть до последнего кандидата в релизы версии 4.4, был сочинён специально на ранней стадии разработки Иксов и именно для них.

Казалось бы – чего страшного? Почему бы лишний раз не помянуть добрым словом разработчиков хорошей (и на тот момент времени практически незаменимой) системы? А вот именно её незаменимость и вызвала, думается, претензии: фактически каждый дистрибутив Linux'а общего назначения или операционная система BSD-семейства включали в себя Иксы – а альтернатив XFree86 к тому времени не было, ибо прочие X-сервера, о которых вскользь упоминалось в одном из предыдущих разделов, практически вымерли. И такое требование было воспринято сообществом (сначала – некоторыми, но влиятельными его членами) как беззастенчивая реклама проекта XFree86 за счёт разработчиков всех остальных, взаимосвязанных, но независимых проектов.

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

Тут поднялся галдёж и лай..

Новая лицензия была названа несовместимой с принципами свободы такими авторитетами, как Ричард Столлмана и разработчики Debian'а. К ним постепенно присоединились остальные ведущие разработчики, включая Тео де Раадта (OpenBSD) – его высказывания в этом плане были, пожалуй, наиболее резкими.

Правда, все эти разработчики поначалу пошли своими путями. В одни системы (Debian, OpenBSD) была включена XFree86 под последней «чистой» MIT-лицензией, большинство же переключилось на её форк – Xorg, первый официальный релиз которого появился в апреле 2004 года. Который вскоре и стал магистральной линией развития Иксов.

Конечно, были и отдельные «голоса из ветвей». Так, Патрик Фолькердинг высказался в том смысле, что его все эти политико-юридические игры не интересуют, и ничего крамольного в новой лицензии XFree86 он не видит. Однако был вынужден, в целях совместимости с прочими дистрибутивами Linux'а, перейти на Xorg.

А вот разработчики NetBSD вообще сочли, что новая лицензия – вполне нормальна с точки зрения BSD-стиля, и использовали XFree86 в своей ОС вплоть до её версии 4.0 включительно (вышла в самом конце 2007 года). Правда, в версии 5.0 (апрель 2009) и им пришлось от неё отказаться, ибо разработка XFree86 к этому времени фактически прекратилась: последний её релиз, 4.8, появился в конце 2008 года.

Конец XFree86...

That is the end of Solomon Grandy. Английское народное

Причин прекращения разработки XFree86 было несколько. Здесь можно назвать и её невостребованность в связи с переходом большинства, а затем и всех дистрибутивов Linux и BSD-систем на Xorg, и миграцию многих, если не большинства, бывших её разработчиков в томи же направлении. Но главной, на мой взгляд, причиной было то, что в XFree86, в сущности, стало нечего разрабатывать: уже к 2004 году она представляла собой устоявшуюся экосистему, кардинальные улучшения в которую можно было внести путём столь же кардинальных изменений. Так что участникам проекта, в сущности, оставалось только отлавливать баги и вносить коррективы в соответствие с изменениями остальных базовых компонентов. То есть осуществлять банальную техническую поддержку конечного продукта. А это для разработчиков Open Source, следующих курсу Just for Fun, что серпом по... ушам. Вот хлопцы и разбежались в разные стороны. Точнее, в сторону Xorg.

Однако в последнем случае нельзя исключить и влияние активной пропаганды порочности новой лицензии XFree86 с точки зрения идеалов свободы и демократии. А насколько такого рода пропаганда может быть действенной в сообществе Open Source, мы имели возможность убедиться совсем недавно – на примере тотальной systemd'изации всея Linux'а. Так что уделим обсуждению этого вопроса ещё несколько минут.

Как уже было сказано, с точки зрения здравого смысла и человеческой порядочности новая формулировка лицензии XFree86 не может вызвать никаких возражений: упоминание автора всегда считалось хорошим тоном в мире фундаментальной науки. А разработка Open Source, как ещё давно показал Николай Безруков, есть разновидность фундаментальной науки. По крайней мере, должна ею быть...

Интересно, что наиболее активные из тогдашних критиков новой лицензии XFree86 (не будем лишний раз поминать их всуе) и по сей день не упустят случая напомнить, что ОС Linux на самом деле должна называться GNU/Linux. Ибо Linux – это только ядро, а всё пользовательское окружение – достижения проекта GNU.

Но, если следовать этой логике, то термин вроде XFree86/Linux имел 10 лет назад куда больше прав на существование. Как сейчас более правомерен был бы термин Xorg/Linux. А во все времена и у всех народов – просто X/Linux. Ибо, с одной стороны, так называемое пользовательское окружение ядра Linux состоит не только из GNU-комопнентов. Более того, существуют дистрибутивы (например, Tiny Core), где их нет совсем. А вот без Иксов в том или ином их проявлении ни один дистрибутив общего назначения не обходился никогда.

Со стороны же другой, современный пользователь Linux может (то есть имеет не только право, но и возможность) даже не подозревать о пресловутом пользовательском GNU-окружении. Ибо часто работает исключительно в графической среде, то есть в Иксах и надстраивающих их оконных менеджерах или интегрированных десктопах. А потому без XFree86/Xorg ни о каком десктопном Linux'е не может идти и речи.

Так что новая лицензия XFree86 была только попыткой «легализовать» существующее положение дел. Причём без претензий на замену устоявшихся имён операционных систем, а только на уровне обязательности упоминания одного из важнейших, с точки зрения пользователя, их компонента. И, более того, не во всяких там копирайтах и копилефтах, а исключительно в документации, сопровождающей дистрибутивы. Тем не менее, она была дружно признана несовместимой с духом изначальных Иксов (Тео де Раадт), свободного софта вообще (Ричард Столлман) и буквой «самой свободной» из всех свободных лицензий, то есть с GPLv2. И потому подверглась всеобщему остракизму.

Новая лицензия проекта XFree86 по научному называлась Лицензия XFree86 версии 1.1 (под версией 1.0 следует понимать лицензию X11). Интересно, что GNU/FSF, в своё время столь категорически её осудившая, ныне признаёт её совместимость с лицензией GPLv3 – той самой, которую FSF в настоящее время считает наиболее правильной и всячески рекомендует её к употреблению. Однако с GPLv2 лицензия XFree86 версии 1.1 несовместима по прежнему – из-за требования упоминания её имени в документации.

Впрочем, ныне это уже не актуально. И может быть приведено только в качестве примера того, как юридические формулировки, придуманные, казалось бы, с самыми лучшими намерениями – ради защиты свободы – вступают в противоречие со здравым смыслом. А в конечном счёте – и с той же самой свободой. Ещё один такой пример мы уже видели при рассмотрении истории файловой системы ZFS (см. главу десятую).

... и начало Xorg

Если историю XFree86 уже в 2004 году можно было считать законченной (хотя она существует и доступна по сей день), то история Xorg только начиналась. И начиналась она весьма бурно.

Дабы отрешиться от старого мира, в проекте Xorg отказались от продолжения нумерации версий XFree86. И для начала продолжили нумерацию спецификаций оконной системы X вообще: первый релиз проекта (апрель 2004) именовался просто X11R6.7.0. Напомню, что предыдущая «общеиксовая» версия, X11R6.6, появилась на свет в апреле 2001 года. А спецификации «мажорные», то есть X11R6, на протяжении многих лет лежащие в основе XFree86, уходят в далёкий майский день 1994 года.

Со временем параллельно ей стала использоваться нумерация по версиям собственно сервера Xorg. В релизах X11R6.7.0 и X11R6.8.X в неявном виде подразумевалось, что он имеет номер версии 1.0. А далее к нему прибавлялась «мажорная» (1.X) или «минорная» (1.X.Y) единица. В настоящее время именование по версиям сервера Xorg является основным. Так, текущая его версия на момент сочинения этих строк – 1.15.

Итак, в апреле 2004 года появляется первая версия собственно Xorg – X11R6.7.0, основанная на исходниках XFree86 4.4 RC2 и мало чем от последней отличавшаяся. Точнее, не отличавшаяся ничем – имел удовольстве сравнивать их вживе. А далее версии сменяются с быстротой, заставляющей вспомнить ранние времена первозданных Иксов: 8 сентября 2004 – X11R6.8.0, 17 сентября 2004 – X11R6.8.1, февраль 2005 – X11R6.8.2.

В версии X11R6.8.0 впервые появляются такие ныне привычные вещи, как Composite – предварительная прорисовка изображения для вывода его на экран в уже готовом виде, прозрачность окон и прямая поддержка конфигураций с несколькими мониторами. «Минорные» же версии носили корректирующий характер.

Далее наступает некоторое затишье, продолжавшееся до 21 декабря 2005. Зато этот день ознаменовался выходом сразу двух версий – X11R6.9 и X11R7.0. Нет, это было не раздвоением личности, а окончательным разрывом со старыми традициями: переходом от Imake – системы автоматизации сборки, унаследованной от XFree86, к Autotools – аналогичной системе, развиваемой в рамках проекта GNU. Что вызвало и переход от монолитной сборки к модульной. В результате чего на одной кодовой базе и были созданы монолитная версия 6.9 и модульная версия 7.0. Во всех последующих релизах Xorg использовалась только система Autotools и, соответственно, все они были модульными.

Традиционно исходные коды XFree86 распространялись в виде нескольких крупных тарбаллов (в разных версиях – от трёх до семи). Которые при монолитной системе сборки и в бинарном виде собирались как серия крупных пакетов, таких, как Xbin, Xlib, Xxserv и так далее. Разумеется, бинарники можно было собрать и более дробно, и майнтайнеры ряда дистрибутивов, таких, как RedHat и Debian, прибегали к этому со стародавних времён. Но поначалу в Xorg штатно такая возможность не использовалась. Как не применялось «дробное» пакетирование и в дистрибутивах, придерживавшихся соответствия пакетов «авторских» и «дистрибутивных» – а такими на протяжении долгого времени были Slackware, Gentoo и идеологически близкие к ним, не говоря уж об LFS.

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

Впрочем, чтобы, как говорится, почувствовать разницу, достаточно сравнить древа исходных текстов версий X11R6.9 и X11R7.0 на официальном сервере проекта.

Следующая веха в истории Xorg – версия X11R7.3 (X-сервер 1.4), вышедшая в сентябре 2007 года: в ней, среди прочего, получает дальнейшее развитие автоопределение оборудования, в том числе и горячего подключения. Тогда это делалось через HAL (Hardware Abstraction Layer) – и делалось вполне успешно, и, что характерно, в сборках Иксов не только для Linux, но и для BSD-систем. В частности, автор этих строк неоднократно использовал HAL во FreeBSD.

Тем не менее, в версии X11R7.6 (X-сервер 1.8.0, декабрь 2010) в управлении устройствами подсистема HAL была заменена менеджером устройств udev. Что, с одной стороны, привело к определённому прогрессу в этом деле. А с другой, поскольку udev – инструмент, специфический для Linux'а, отгородило последующие версии Xorg от остальных UNIX-подобных систем. Но на этом я поставлю точку: мой рассказ подошёл к своему логическому завершению. И вместе с ним близится и конец Иксов вообще: на горизонте маячат Wayland, с одной стороны, и Mir – с другой. Но это уже дела дней сегодняшних и грядущих.

Оглавление книги


Генерация: 1.245. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз