X Window System

Материал из свободной русской энциклопедии «Традиция»
Перейти к навигации Перейти к поиску
X Window System
X11.svg


Операционная система:
различные



Разработчик:
X.Org Foundation



Текущая версия:
X11R7.2
Дата выхода текущей версии:
15 февраля 2007 г.



Лицензия:
MIT

X Window Systemоконная система, которая обеспечивает стандартные инструменты и протоколы для построения графических интерфейсов пользователя. Почти все современные операционные системы поддерживают X Window System, но в основном она закрепилась в UNIX-подобных системах в качестве стандарта «де-факто».

X Window System обеспечивает базовые функции графической среды: отрисовку и перемещение окон на экране, взаимодействие с мышью и клавиатурой. X Window System не определяет деталей интерфейса пользователя — этим занимаются менеджеры окон, которых разработано множество. По этой причине внешний вид программ в среде X Window System может очень сильно различаться; разные программы могут использовать совершенно непохожие друг на друга интерфейсы.

В X Window System предусмотрена сетевая прозрачность: графические приложения могут выполняться на другой машине в сети, а их интерфейс при этом будет передаваться по сети и отображаться на локальной машине пользователя. В контексте X Window System термины «клиент» и «сервер» имеют непривычное для многих пользователей значение: «сервер» означает локальный дисплей пользователя (дисплейный сервер), а «клиент» — программу, которая этот дисплей использует (она может выполняться на удалённом компьютере).

Система X Window System была разработана в Массачусетском технологическом институте (MIT) в 1984 году. Нынешняя (по состоянию на июнь 2006 г.) версия протокола — X11 — появилась в сентябре 1987 г. Проект X возглавляет фонд X.Org Foundation. Демонстрационная реализация (reference implementation) системы (версия 11 выпуск 7.2) свободно доступна на условиях лицензии MIT и подобных ей лицензий[1].

X Window System часто называют X11 или просто X, неформально «иксы́».

Клиент-серверная модель и сетевая прозрачность[править | править код]

Файл:Клиенты и серверы X Window System.png
В этом примере X-сервер принимает ввод с клавиатуры и мыши и производит вывод на экран. На пользовательской рабочей станции выполняются веб-браузер и эмулятор терминала. Программа обновления системы работает на удалённом сервере, но управляется с машины пользователя. Обратите внимание, что удалённое приложение работает так же, как если бы оно выполнялось локально.

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

Эта клиент-серверная терминология — пользовательский терминал в качестве «сервера» и удалённые приложения в качестве «клиентов» — зачастую запутывает новых пользователей X, так как обычно эти термины имеют обратные значения. Но X Window System принимает точку зрения программы, а не конечного пользователя аппаратуры: локальный дисплей предоставляет услуги отображения графики программам, и потому выступает в роли сервера. Удалённые программы используют эти услуги, и потому играют роль клиентов.

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

Чтобы запустить удалённую клиентскую программу, выводящую графику на локальный X-сервер, пользователь обычно открывает эмулятор терминала и подключается к удалённой машине при помощи telnet или SSH. Затем он отдаёт команду, указывающую дисплей, на который следует выводить графику (например, export DISPLAY=[имя компьютера пользователя]:0 при использовании bash). Наконец, пользователь запускает клиентскую программу. Она подключится к локальному X-серверу и будет отображать графику на локальный экран и принимать ввод от локальных устройств ввода. Другой вариант — использовать небольшую вспомогательную программу, которая подключается к удалённой машине и запускает на ней нужное клиентское приложение.

Использование удалённых клиентов может быть полезно, например, в таких ситуациях:

  • графическое администрирование удалённой машины;
  • выполнение интенсивных ресурсоёмких вычислений на удалённой UNIX-машине и вывод результатов на локальной Windows-машине;
  • выполнение графических программ одновременно на нескольких машинах, с одним дисплеем, одной клавиатурой и одной мышью.

Принципы дизайна X[править | править код]

В 1984 г. Боб Шейфлер и Джим Геттис зафиксировали ранние принципы построения X:

  • Добавляй новую функциональность только в том случае, если без неё нельзя завершить какое-то реальное приложение.
  • Решить, чем система не является, столь же важно, сколь решить, чем она является. Не пытайся удовлетворить все мыслимые потребности; вместо этого сделай систему расширяемой, чтобы новые потребности могли быть удовлетворены совместимым образом.
  • Хуже обобщения одного примера может быть только обобщение вообще без примеров.
  • Если проблема не понята до конца, возможно, лучше не решать её вовсе.
  • Если ты можешь добиться 90 процентов нужного эффекта, затратив всего 10 процентов сил, используй более простое решение.
  • Изолируй сложные места как можно сильнее.
  • Обеспечивай механизм, а не политику. В частности, политика интерфейса пользователя должна быть в руках клиентов.

С тех пор проект X, в основном, придерживался этих принципов. Демонстрационная реализация разрабатывается с расчётом на расширение и улучшение, в то же время, она остаётся почти полностью совместимой с протоколом 1987 года.

Интерфейсы пользователя[править | править код]

KDE 3.5 в среде X Window System.
GNOME 2.14 в среде X Window System.

X Window System намеренно не определяет, как должен выглядеть интерфейс пользователя приложения — кнопки, меню, заголовки окон и т. д. Эти вопросы решаются на уровне оконных менеджеров, инструментариев элементов интерфейса, сред рабочего стола, либо на уровне отдельных приложений. По этой причине вид «типичного» X-интерфейса претерпел огромные изменения с течением времени.

Оконный менеджер управляет размещением и внешним видом окон приложений. Он может создавать интерфейс, подобный Microsoft Windows или Macintosh (например, так работают оконные менеджеры Kwin в KDE и Metacity в GNOME), или совершенно другой стиль (например, в фреймовых оконных менеджерах, таких, как Ion). Оконный менеджер может быть простым и минималистичным (как twm — базовый оконный менеджер, поставляемый с X), а может предлагать функциональность, близкую к полноценной рабочей среде (например, Enlightenment).

Многие пользователи используют X вместе с полной средой рабочего стола, которая включает в себя оконный менеджер, различные приложения и единый стиль интерфейса. Наиболее популярные среды рабочего стола — GNOME и KDE. В стандарте Single UNIX Specification указана среда CDE. Проект freedesktop.org пытается обеспечить взаимодействие между различными средами, а также компоненты, необходимые для конкурентоспособного рабочего стола на основе X.

Реализации[править | править код]

Демонстрационная реализация (англ. reference implementation) от фонда X.Org Foundation, называемая X.Org Server, является канонической реализацией X Window System. Поскольку она распространяется на условиях весьма либеральной лицензии, появились несколько её разновидностей (как свободных, так и проприетарных). Коммерческие поставщики UNIX зачастую берут демонстрационную реализацию и адаптируют её к собственному аппаратному обеспечению, обычно сильно модифицируя её и добавляя проприетарные расширения.

Вплоть до 2004 года проект XFree86 был наиболее распространённым вариантом X для свободных UNIX-подобных операционных систем. XFree86 возник как порт X на 386-совместимые персональные компьютеры. К концу 1990-х этот проект стал главным источником технических инноваций в X Window System и де-факто руководил разработкой X[2]. Однако в 2004 году XFree86 поменял условия лицензии и реализация X.Org Server (которая является форком XFree86, но со свободной лицензией) стала более распространённой.

Файл:X11 и GIMP в Mac OS X.jpg
X11.app выполняется без корневого окна на Mac OS X. В среде X запущен графический редактор GIMP.

Хотя X Window System чаще всего ассоциируется с UNIX, X-серверы могут также существовать внутри других графических сред. OpenVMS — операционная система компании Hewlett-Packard — в качестве стандартной среды рабочего стола использует версию X вместе с CDE, известную как DECwindows. В состав операционных систем Mac OS X 10.3 (Panther) и выше от Apple входит X11.app, основанная на XFree86 4.3 и X11R6.6, с более полной интеграцией в Mac OS X.

Файл:X11 в Windows XP.jpg
Cygwin/X выполняется без корневого окна на Microsoft Windows XP. X-приложения (xeyes, xclock, xterm) работают на одном экране с обычными приложениями Windows (Дата/Время, Калькулятор).

Microsoft Windows не включает в себя поддержку X, но существуют многочисленные сторонние реализации: как свободные (Cygwin/X, Xming, X-Deep/32, WeirdMind, WeirdX), так и проприетарные (Xmanager, WiredX, Exceed, X-Win32). Обычно они используются для управления удалёнными X-клиентами.

Когда X Window System выполняется внутри другой оконной системы (например, оконной подсистемы Microsoft Windows или Mac OS), она обычно работает в режиме без корневого окна (англ. rootless). Это значит, что корневое окно (фон экрана и связанные с ним меню) управляется внешней оконной системой, а не самой X Window System. При этом внешняя оконная система также управляет геометрией X-окон, создаваемых внутри неё. Однако некоторые серверы (например, Exceed или Cygwin/X) способны создавать и корневое окно — в этом случае клиенты отображаются в отдельном окне во внешней системе.

X-терминалы[править | править код]

X-терминал — это выделенное аппаратное обеспечение, на котором выполняется X-сервер и которое служит в качестве тонкого клиента. Эта архитектура завоевала популярность при построении недорогих терминальных парков, в которых множество пользователей одновременно используют один большой сервер приложений. Такое применение X Window System хорошо соответствует изначальным намерениям разработчиков из MIT.

X-терминалы могут изучать сеть (в пределах локального широковещательного домена) с использованием протокола XDMCP, составляя при этом список узлов сети, с которых они могут запускать клиенты. На изначальном узле должен выполняться дисплейный менеджер X (англ. X display manager).

В настоящее время выделенные (аппаратные) X-терминалы не пользуются широкой популярностью: обычно персональный компьютер с X-сервером обеспечивает ту же функциональность при меньшей стоимости.

Расширения[править | править код]

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

DDC[править | править код]

VESA Display Data Channel (DDC™) — стандарт обмена информацией между монитором и графической платой, позволяющий монитору передавать данные о поддерживаемых разрешениях, частотах развёртки, производителе монитора и т. д. Модуль DDC поддерживает версии 1 и 2 спецификации DDC. В соответствии с полученными данными он устанавливает основные параметры экрана или предупреждает о несоответствии заданных пользователем параметров.

RANDR[править | править код]

X Resize, Rotate and Reflect Extension — расширение X-сервера, реализующее функции масштабирования, поворота и отражения корневого окна. Используется при изменении разрешения, при динамической замене монитора (например, при переключении со встроенного экрана ноутбука на внешний монитор). Рассылает запущенным приложениям предупреждения об изменении конфигурации экрана.

Render[править | править код]

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

Shape[править | править код]

Расширение Shape предназначено для улучшения вида интерфейса пользователя. Среди его возможностей — отбрасывание тени элементами интерфейса для создания иллюзии трёхмерности; окна и кнопки с округлыми краями; возможность создавать различные фигуры, отличные от прямоугольных.

Xinerama[править | править код]

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

Xv[править | править код]

X video extension — расширение, позволяющие ускорить вывод видеофрагментов на экран с использованием возможностей графической платы (а точнее — её драйвера) и уменьшить тем самым нагрузку на центральный процессор. Многие графические платы позволяют выводить видеоизображения в форматах кодирования цвета YUV (YUY2, I420 и т. д.), которые используются в стандартах систем аналогового цветного телевидения PAL, SÉCAM, NTSC, не переводя их предварительно в формат передачи цвета дисплея (RGB16/24/32), а также производить обратное перекодирование. Расширение Xv предоставляет информацию о доступных графических платах, количестве доступных портов (каждый порт может использовать только одно приложение), поддерживаемых форматах кодирования цвета. Всю эту информацию можно просмотреть с помощью утилиты xvinfo.

Ограничения и критика X[править | править код]

В книге «The UNIX-HATERS Handbook» (1994 г.) целая глава[3] посвящена проблемам X в конце 1980-х — начале 1990-х гг. Статья «Why X Is Not Our Ideal Window System»[4] («Почему X не является идеальной оконной системой») 1990 г. подробно рассматривает проблемы протокола и даёт рекомендации по улучшению.

Видеоаппаратура[править | править код]

Сегодня граница производительности графических компьютерных систем пролегает в области наиболее продвинутых графических функций. Изготовители аппаратного обеспечения, как правило, реализуют эти продвинутые возможности в проприетарных драйверах, причём эти драйверы обычно пишутся в первую очередь для систем Windows (как для самых распространённых на потребительском рынке). Драйверы многих старых графических плат подверглись обратной разработке в рамках проектов XFree86 и X.Org Server. Однако некоторые производители рассматривают свои разработки в области высокопроизводительного видео как коммерческую тайну, или же как патентованные изобретения, которые они не хотят раскрывать.

Многие нынешние реализации X управляют видеоаппаратурой напрямую. Неустойчивый X-сервер может сделать дисплей непригодным к использованию даже в тех случаях, когда сама операционная система продолжает нормально функционировать; при этом может потребоваться перезагрузка всей системы. Технология Direct Rendering Infrastructure (DRI) призвана устранить эту проблему.

Функции интерфейса пользователя[править | править код]

X Window System намеренно не включает в себя спецификации интерфейса пользователя, равно как и большей части межпрограммного взаимодействия. По этой причине возникли очень сильно отличающиеся друг от друга интерфейсы, а также приложения, не всегда правильно работающие друг с другом. Существует спецификация взаимодействия клиентов ICCCM, но она известна как трудная для правильной реализации. Последующие попытки стандартизации — такие, как инструментарий Motif и среда CDE — не исправили положения. Всё это мешает как пользователям, так и программистам [1]. В настоящее время разработчики обычно добиваются единого стиля в приложениях, ориентируясь на одну конкретную среду рабочего стола или на конкретный инструментарий. Это также позволяет избежать непосредственной работы с ICCCM.

Протокол X не предоставляет никаких средств для работы со звуком. Поддержка звуковой аппаратуры и воспроизведение звуков возлагается на операционную систему. Поскольку пользователям всё чаще необходим звук, эта ситуация привела к появлению различных несовместимых друг с другом звуковых подсистем. В прошлом многие программисты игнорировали сетевые проблемы, и просто использовали локальные звуковые API операционной системы. Первое поколение клиент-серверных звуковых систем включает в себя rplay и Network Audio System. Более современные системы — esound в GNOME и aRts в KDE. Также начата разработка новой системы — Media Application Server.

До недавнего времени X Window System не включала в себя хорошего решения для печати содержимого дисплеев. Многие X-клиенты печатают в формате PostScript независимо от X-сервера. Механизм Xprint впервые появился в X11R6.3; его клиентская часть работала хорошо, в отличие от многих серверных реализаций. Версии X11R6.8 и выше функционируют нормально[5] и набирают популярность в инструментариях элементов интерфейса.

Сеть[править | править код]

По состоянию на июнь 2006 г. в X Window System нет возможности отключить X-клиент или сеанс от одного сервера и подключить его к другому серверу (как в VNC). Работа над добавлением этой функции в X уже ведётся. Существуют обходные механизмы (просмотрщики VNC :0), которые делают экран текущего X-сервера доступным через VNC.

Пример туннелирования приложения X11 поверх SSH.

Данные, передаваемые по сети между X-сервером и удалёнными X-клиентами, по умолчанию не шифруются. Злоумышленник может при помощи сниффера перехватить и прочитать эти данные. Для предотвращения этого, как правило, X туннелируется поверх SSH. Большинство реализаций SSH поддерживает туннелирование X-приложений, хотя иногда эти функции по умолчанию отключены.

Независимость от аппаратуры и отделение клиентов от серверов влияет на производительность системы. Сетевая прозрачность X требует, чтобы клиенты и сервер работали отдельно друг от друга. В прошлом это существенно снижало производительность отдельностоящей системы — по сравнению с Microsoft Windows и Mac OS, где оконная подсистема внедрена глубоко в саму операционную систему. Для нормальной работы X Window System рекомендовалось от 4 до 8 Мб оперативной памяти — значительно больше (по тем временам), чем для Windows или Mac OS.

Текущие версии Windows и Mac OS X имеют внутреннее разделение графической подсистемы, похожее на клиент-серверное разделение в X, и имеют примерно те же требования к ресурсам, что X с KDE или GNOME. Бо́льшая часть накладных расходов в X теперь приходится на задержку при передаче данных по сети между клиентом и сервером. Существует распространённое заблуждение, согласно которому при локальном использовании X Window System её сетевые возможности (ненужные в данном случае) отрицательно сказываются на производительности. На самом деле современные реализации X используют в таком случае локальные сокеты и общую память, требуя лишь очень незначительных накладных расходов.

Конкуренты X[править | править код]

В UNIX-подобных операционных системах для вывода графики почти повсеместно используется X Window System. Тем не менее, история знает несколько попыток создания альтернативы или замены X. Среди них: NeWS компании Sun Microsystems, не завоевавшая популярность на рынке; и Display PostScript компании NeXT, которая впоследствии превратилась в Apple Aqua для Mac OS X.

Производились и попытки решить проблемы X путём полной её замены; в том числе — проекты Berlin/Fresco и Y Window System. Однако эти проекты не получили практически никакого распространения.

Другие конкуренты пытаются избежать накладных расходов, возникающих в X, путём работы непосредственно с аппаратным обеспечением. Примерами таких проектов являются DirectFB и очень маленький FBUI. Механизм Direct Rendering Infrastructure (попытка создать надёжный ядерный интерфейс к видеобуферу) может сделать эти проекты ненужными.

Есть и другие способы добиться сетевой прозрачности графических служб:

История[править | править код]

Предшественники[править | править код]

До появления X существовало несколько растровых дисплейных систем. Из Xerox пришли Alto (1973) и Star (1981). В Apple были разработаны Lisa (1983) и Macintosh (1984). В мире UNIX существовали терминал Blit Роба Пайка (1984) и проект Andrew (1982).

X получила своё имя как преемница оконной системы W Window Systemлатинском алфавите буква X следует сразу за буквой W). Система W работала под управлением операционной системы V. W использовала сетевой протокол с поддержкой терминальных и графических окон, при этом сервер поддерживал списки дисплеев.

Истоки и ранние разработки[править | править код]

Изначальная идея X Window System возникла в Массачусетском технологическом институте (MIT) в 1984 г. в результате сотрудничества Джима Геттиса (из проекта Athena) и Боба Шейфлера (из лаборатории информатики MIT). Шейфлеру была необходима пригодная к использованию дисплейная среда для отладки системы Argus. Проект Athena (совместный проект DEC, MIT и IBM по предоставлению лёгкого доступа к компьютерам для студентов) нуждался в платформо-независимом графическом решении, чтобы соединить воедино свои гетерогенные системы, состоящие из продуктов разных поставщиков. В то время в рамках проекта Andrew в университете Карнеги—Меллон велась работа над оконной системой, но для неё не были доступны лицензии, а альтернатив не существовало.

Проект решил эти проблемы путём создания протокола, который поддерживал как локальные приложения, так и вызов удалённых приложений. В середине 1983 г. начальный порт W на UNIX работал в пять раз медленнее, чем в системе V. В мае 1984 г. Шейфлер заменил синхронный протокол на асинхронный, а списки дисплеев — на непосредственный вывод графики; таким образом получилась X Window System версии 1. X стала первой оконной системой, обеспечивающей истинную независимость от аппаратного обеспечения.

Шейфлер, Геттис и Рон Ньюмен приступили к работе, и X стала быстро развиваться. В январе 1985 г. была выпущена версия 6. Компания DEC, которая в то время готовилась к выпуску своей первой рабочей станции Ultrix, решила, что X — единственная оконная система, которая может быть завершена к нужному сроку. Инженеры DEC портировали X6 на дисплей QVSS на MicroVAX.

Во втором квартале 1985 г. в X была реализована поддержка цветов для работы под DEC VAXstation-II/GPX. Эта версия стала известна как версия 9. Ранее MIT лицензировал X6 некоторым сторонним группам за плату. Однако теперь было решено распространять X9 и будущие версии свободно — на условиях, которые получили название лицензии MIT. X9 появилась в сентябре 1985 г.

Группа из Браунского университета портировала версию 9 на IBM RT/PC, но проблемы при чтении неупорядоченных данных на RT привели к несовместимому изменению в протоколе, в результате чего в конце 1985 г. была выпущена версия 10. К 1986 г. из внешних организаций начали поступать запросы на использование X. Выпуск X10R2 состоялся в январе 1986 г., X10R3 — в феврале. X10R3 стала первой версией, получившей широкое распространение; DEC и Hewlett-Packard выпускали основанные на ней продукты. Другие группы портировали X10 на Apollo и на рабочие станции Sun, и даже на IBM PC AT. В то же время на выставке Autofact были проведены демонстрации первого коммерческого приложения на основе X (инженерной системы, работающей на VAX и отображаемой на персональных компьютерах с X-сервером). Последняя версия X10 — X10R4 — появилась в декабре 1986 г.

Хотя X10 обладала интересной и мощной функциональностью, стало очевидно, что протокол X желательно сделать менее зависимым от аппаратуры до того, как X Window System станет слишком широко распространённой. Однако MIT в одиночку не справился бы со столь крупными изменениями в протоколе. Смоуки Уоллэс из лаборатории DEC WSL и Джим Геттис предложили DEC WSL заняться разработкой X11 и сделать её свободно распространяемой на тех же условиях, что X9 и X10. Этот процесс начался в мае 1986 г.; протокол был готов в августе. Альфа-тестирование программного обеспечения началось в феврале 1987 г.; бета-тестирование — в мае. Наконец, 15 сентября 1987 г. X11 была официально выпущена.

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

Консорциум X MIT и X Consortium, Inc.[править | править код]

В 1987 г., когда успех X11 стал очевидным, MIT пожелал отказаться от дальнейшего управления проектом X. Однако на собрании девяти поставщиков, состоявшемся в июне 1987 г., поставщики сообщили MIT, что необходима нейтральная сторона, которая предотвращала бы распад X на рынке. В январе 1988 г. была сформирована некоммерческая группа под названием Консорциум X MIT (MIT X Consortium). Её целью являлось управление дальнейшей разработкой X в нейтральной атмосфере, с учётом как коммерческих, так и образовательных интересов. Директором Консорциума стал Шейфлер. Джим Фултон и Кейт Паккард присоединились в качестве старших разработчиков в январе и марте 1988 г. соответственно. При этом Джим работал в основном над Xlib, шрифтами, оконными менеджерами и утилитами; а Кейт занимался переделыванием сервера. Донна Конверс и Крис Петерсон присоединились позже в том же году; их усилия были сосредоточены в области инструментариев и наборов элементов интерфейса, они работали в тесной связи с Ральфом Свиком из проекта Athena института MIT. Консорциум X MIT выпустил несколько существенных обновлений к X11; первое из них (X11R2) вышло в феврале 1988 г.

В 1993 г. был сформирован преемник Консорциума X MIT — некоммерческая корпорация X Consortium, Inc. Под её началом 16 мая 1994 г. была выпущена версия X11R6. В 1995 г. корпорация взяла на себя управление разработкой инструментария Motif и среды CDE для UNIX-систем. X Consortium распалась в конце 1996 г., выпустив последнюю версию, X11R6.3, и оставив после себя возрастающее коммерческое влияние в разработке[6][7].

The Open Group[править | править код]

В середине 1997 г. X Consortium передал руководство проектом X организации The Open Group, образованной в 1996 г. в результате слияния Open Software Foundation и X/Open.

The Open Group выпустила X11R6.4 в начале 1998 г. В этой версии было решено отказаться от традиционной либеральной лицензии, поскольку The Open Group желала обеспечить финансовую поддержку разработки X[8]. Новые условия не позволяли многим проектам (например, XFree86) и даже некоторым коммерческим поставщикам принять эту версию. После угроз сделать форк со стороны XFree86[9] The Open Group сменила условия распространения X11R6.4 обратно на традиционную лицензию в сентябре 1998 г.[10] Последним выпуском под руководством The Open Group стал X11R6.4 patch 3.

X.Org и XFree86[править | править код]

Проект XFree86 возник в 1992 г. из сервера X386 для IBM PC-совместимых компьютеров. X386 был написан Томасом Роэллом и Марком Снитили, пожертвован Консорциуму X MIT компанией Snitily Graphics Consulting Services (SGCS) и включён в состав X11R5 в 1991 г. Со временем XFree86 превратился из просто отдельно взятого порта X в ведущую и самую популярную реализацию системы, и стал де-факто руководить разработкой X [2].

В мае 1999 г. The Open Group основала X.Org. X.Org контролировала выпуск версий X11R6.5.1 и выше. В это время разработка X практически остановилась[11]; технические инновации происходили в основном в рамках проекта XFree86[12]. В 1999 г. команда XFree86 вошла в состав X.Org в качестве почётного члена [3], чему способствовали различные компании-производители аппаратного обеспечения[13], заинтересованные в использовании XFree86 вместе с GNU/Linux и в его статусе как наиболее популярной версии X.

Вплоть до 2003 года, пока популярность GNU/Linux (и, как следствие, распространённость X) возрастала, X.Org бездействовала [4], и основная разработка происходила в XFree86. Проект XFree86 страдал от слишком закрытой модели разработки: программисты не могли получить доступ на запись в CVS-репозитарий, и поставщикам приходилось поддерживать обширные наборы патчей[14]. В марте 2003 г. организация XFree86 исключила Кейта Паккарда, который присоединился к XFree86 после распада Консорциума X MIT; сделано это было в весьма недружелюбной обстановке [5] [6] [7].

X.Org и XFree86 начали обсуждать реорганизацию, дабы обеспечить полноценную разработку X [8] [9] [10]. Джим Геттис настаивал на переходе к открытой модели разработки по крайней мере с 2000 г.[7] Геттис, Паккард и другие начали подробно обсуждать изменения, которые требовалось внести для перехода к эффективной открытой разработке X.

Наконец, в феврале 2004 г. проект XFree86 выпустил версию 4.4 под более ограниченной лицензией: в неё был добавлен пункт, аналогичный рекламному пункту (англ. advertising clause) оригинальной лицензии BSD. Многие проекты, полагавшиеся на X, посчитали такую лицензию неприемлемой. FSF и Debian сочли добавленный пункт несовместимым с условиями GNU GPL[15]. Другие группы (например, OpenBSD) считали, что наложение дополнительных лицензионных ограничений противоречит изначальному духу X. Из-за этих лицензионных проблем на фоне закрытости XFree86 сложилась подходящая атмосфера для создания форка.

Фонд X.Org Foundation[править | править код]

Icons-mini-icon 2main.png Основная статья: X.Org Foundation

В начале 2004 г. представители X.Org и freedesktop.org основали фонд X.Org Foundation. The Open Group передала ему управление доменным именем x.org. Это стало коренным изменением в разработке X. В то время как распорядители X с 1988 г. (включая предыдущую X.Org) были организациями поставщиков, X.Org Foundation был основан самими разработчиками программного обеспечения, и в нём использовалась открытая модель разработки, опирающаяся на вклад извне. Было открыто членство для частных лиц, а корпоративное членство представлено в виде спонсорства. В настоящее время фонд X.Org Foundation поддерживается несколькими крупными корпорациями, такими, как Hewlett-Packard и Sun Microsystems.

Фонд выпустил X11R6.7 — X.Org Server — в апреле 2004 г. Эта версия была основана на XFree86 4.4RC2 (последней версии XFree86, выпущенной под старой лицензией), с добавленными изменениями X11R6.6. Благодаря внедрению открытой модели разработки и сохранению совместимости с GNU GPL проект привлёк многих бывших разработчиков XFree86[15].

X11R6.8 вышла в сентябре 2004 г. В неё были включены значительные нововведения, в том числе предварительная поддержка прозрачных окон и других сложных визуальных эффектов, экранных луп и миниатюр, а также средства для интеграции с трёхмерными дисплейными системами (такими, как проект Looking Glass от Sun и проект Croquet). Политику внешнего вида предоставляют сторонние приложения, называемые композитными менеджерами (англ. composite managers).

Дальнейшие разработки[править | править код]

Благодаря X.Org Foundation и freedesktop.org разработка X Window System вновь ускорилась. Разработчики планируют выпускать текущие и будущие версии как готовые к использованию продукты, а не просто как основу для продуктов, создаваемых поставщиками.

21 декабря 2005 г. фонд выпустил[16] X11R6.9 — монолитное дерево исходного кода для устаревших систем, и X11R7.0 — тот же исходный код, разбитый на независимые модули, которые могут поддерживаться в рамках отдельных проектов[17]. Версия X11R7.1 была выпущена 22 мая 2006 г., примерно через четыре месяца после 7.0, и включает в себя существенные улучшения[18].

Планируется, что в будущем X-сервер будет получать доступ к видеоаппаратуре исключительно посредством OpenGL и Direct Rendering Infrastructure (DRI) на тех комбинациях аппаратного обеспечения и операционных систем, которые поддерживают такой доступ. Инфраструктура DRI впервые появилась в XFree86 версии 4.0 и стала стандартной в X11R6.7 и более поздних версиях[19]. Многие операционные системы начали добавлять соответсвующую поддержку в ядро. Работа в этой области продолжается.

Наименование[править | править код]

Компьютерные специалисты зачастую сокращают полное название «X Window System» до «X11» или просто «X». Термин «X Windows» (на манер «Microsoft Windows») официально осуждается и считается неверным, хотя широко используется с самого начала истории X, в том числе и намеренно для литературного эффекта (например, в книге «The UNIX-HATERS Handbook»).

История выпусков[править | править код]

Версия Дата выпуска Основные изменения
X1 июнь 1984 Впервые используется название «X». Фундаментальные изменения, отличающие продукт от W.
X6 январь 1985 Первая версия, лицензированная нескольким внешним компаниям.
X9 сентябрь 1985 Поддержка цветов. Первый выпуск на условиях лицензии MIT.
X10 конец 1985 IBM RT/PC, AT (под управлением DOS) и другие.
X10R2 январь 1986
X10R3 февраль 1986 Первый выпуск за пределы MIT. uwm становится стандартным оконным менеджером.
X10R4 декабрь 1986 Последняя версия X10.
X11 15 сентября 1987 Первый выпуск нынешнего протокола.
X11R2 февраль 1988 Первый выпуск под начальством Консорциума X MIT[20].
X11R3 25 октября 1988 XDM.
X11R4 22 декабря 1989 XDMCP; twm становится стандартным оконным менеджером; улучшения в приложениях; расширение Shape; новые шрифты.
X11R5 5 сентября 1991 PEX; Xcms (управление цветом); сервер шрифтов; X386.
X11R6 16 мая 1994 ICCCM версии 2.0; Inter-Client Exchange; X Session Management; расширение X Synchronization; расширение X Image; расширение XTEST; X Input; X Big Requests; XC-MISC; изменения в XFree86.
X11R6.1 14 марта 1996 Расширение X Double Buffer; расширение X keyboard; расширение X Record.
X11R6.2
X11R6.3 (Broadway)
23 декабря 1996 Функциональность WWW; LBX. Последний выпуск под руководством X Consortium. X11R6.2 — это обозначение подмножества X11R6.3, в котором единственными отличиями от R6.1 являются Xprint и реализация в Xlib вертикального письма и поддержки символов, задаваемых пользователями[21].
X11R6.4 31 марта 1998 Xinerama[22].
X11R6.5 Внутренний выпуск X.Org; не стал доступным широкой публике.
X11R6.5.1 20 августа 2000
X11R6.6 4 апреля 2001 Исправления багов; изменения в XFree86.
X11R6.7.0 6 апреля 2004 Первый выпуск от фонда X.Org Foundation, включающий XFree86 4.4RC2. Полный комплект для конечного пользователя. Удаление XIE, PEX и libxml2[23].
X11R6.8.0 8 сентября 2004 Прозрачность окон; XDamage; Distributed Multihead X; XFixes; Composite; XEvIE.
X11R6.8.1 17 сентября 2004 Устранение уязвимости в libxpm.
X11R6.8.2 10 февраля 2005 Устранение багов, обновления драйверов.
X11R6.9
X11R7.0
21 декабря 2005 EXA, значительный рефакторинг кода[24]. Из одного набора исходных кодов получились модульная версия 7.0 и монолитная версия 6.9.
X11R7.1 22 мая 2006 Улучшения EXA; интеграция Kdrive; AIGLX; улучшения в поддержке ОС и платформ[25].
X11R7.2 15 февраля 2007 Удаление LBX[26].

См. также[править | править код]

Ссылки[править | править код]

Заметные реализации[править | править код]

Литература[править | править код]

  1. Линда Муи, Эрик Пирс X Window System Volume 8: X Window System Administrator's Guide for X11 Release 4 and Release 5, 3rd edition. — O'Reilly and Associates, 1993. — ISBN 0-937175-83-8о книге
  2. Роберт Шейфлер, Джеймс Геттис X Window System: Core and extension protocols: X version 11, releases 6 and 6.1. — Digital Press, 1996. — ISBN 1-55558-148-Xо книге

Примечания[править | править код]

  1. "Licenses". The X.Org Foundation. Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  2. Jim Gettys. "Письмо в форум XFree86". Retrieved 4 января.  Unknown parameter |accessyear= ignored (help); Check date values in: |accessdate= (help)
  3. Дон Хопкинс. "The X-Windows Disaster". The UNIX-HATERS Handbook. Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  4. Ханя Жаевска, Марк Менес, Джоэл МакКормак «Why X Is Not Our Ideal Window System» // Software — Practice & Experience. — 1990. — Т. 20. — № S2.
  5. "Xprint Frequently Asked Questions". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  6. mako. "Financing Volunteer Free Software Projects". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  7. а б Геттис, Джим. "Lessons Learned about Open Source". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  8. Shaleh. "xstate". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  9. Арнисон, Мэттью. "The means to an X for Linux: an interview with David Dawes from XFree86.org". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  10. Браун, Кристофер. "X11R6.4 Sample Implementation Changes and Concerns". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  11. Митчелл, Роберт. "Q&A: The X Factor". ComputerWorld. Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  12. Паккард, Кейт. "The Evolution of the X Server Architecture". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  13. Slashdot. "XFree86 joins X.Org as Honorary Member". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  14. mharris. "Diary for mharris". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  15. а б Уилер, Дэвид. "The Cautionary Tale of XFree86". Make Your Open Source Software GPL-Compatible. Or Else. Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  16. "X11R6.9 and X11R7.0 Officially Released". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  17. Пол Андерсон, Алан Куперсмит, Эгберт Эйк, Адам Джексон, Кевин Мартин, Кейт Паккард. "Modularization Proposal". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  18. "Proposed Changes for X11R7.1". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  19. Паккард, Кейт. "Getting X Off The Hardware". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  20. "The X Window User HOWTO: Getting Started". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  21. The XFree86 Project, Inc. "XFree86 and X11R6.3". Release Notes for XFree86[tm] 3.3.6. Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  22. The Open Group. "X Press Release - X11R6.4". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  23. LWN. "X.Org Foundation releases X Window System X11R6.7". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  24. X.Org Wiki. "ChangesSince68". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)
  25. The X.Org Foundation. "Release Notes for X11R7.1". Retrieved 29 июня.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Unknown parameter |datepublished= ignored (help); Check date values in: |accessdate= (help)
  26. X.Org Wiki. "ChangesForX11R72". Retrieved 15 февраля.  Unknown parameter |accessyear= ignored (help); Unknown parameter |lang= ignored (help); Check date values in: |accessdate= (help)

Первоисточник этой статьи был признан «избранной статьёй» в русском разделе Википедии eo:Fenestra Sistemo X lt:X Window