X Window System

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
(перенаправлено с «X-сервер»)
X Window System
Тип оконная система
Первый выпуск 1984

X Window System — оконная система, обеспечивающая стандартные инструменты и протоколы для построения графического интерфейса пользователя. Используется в UNIX-подобных ОС.

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

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

Система X Window System была разработана в Массачусетском технологическом институте (MIT) в 1984 году. По состоянию на февраль 2016 года версия протокола — X11R7.7 — появилась в июне 2012 года. Проект X возглавляет фонд X.Org Foundation. Референсная (или образцовая) реализация (reference implementation) системы свободно доступна на условиях лицензии MIT и подобных ей лицензий[1].

X Window System часто называют X11 или просто X (в разговорной речи — «иксы́»).

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

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

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


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

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

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

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

Принципы построения X

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

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

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

Интерфейсы пользователя

GNOME 3.32 в среде X Window System
X Window System в Mac OS X

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.

Реализации

Референсная (эталонная) реализация от фонда 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.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.

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-клиентами.

Для устаревшей операционной системы DOS также существует реализация X-сервера, DesqView/X, даже в настоящее время позволяющая создавать довольно простые тонкие клиенты.

Когда X Window System выполняется внутри другой оконной системы (например, оконной подсистемы Microsoft Windows или Mac OS), она обычно работает в режиме без корневого окна (англ. rootless). Это значит, что корневое окно (фон экрана и связанные с ним меню) управляется внешней оконной системой, а не самой X Window System. При этом внешняя оконная система также управляет геометрией X-окон, создаваемых внутри неё. Однако некоторые серверы (например, Exceed, Xming или 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-сервера, реализующее функции масштабирования, поворота и отражения корневого окна. Используется при изменении разрешения, при динамической замене монитора (например, при переключении со встроенного экрана ноутбука на внешний монитор). Рассылает запущенным приложениям предупреждения об изменении конфигурации экрана.

XRender

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) подробно рассматривает проблемы протокола и даёт рекомендации по улучшению.

Видеоаппаратура

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

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

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

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

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

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

Сеть

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

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

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

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

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

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

Конкуренты X

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

Производились и попытки решить проблемы X путём полной её замены; в том числе — проекты Berlin/Fresco и Y Window System. Однако эти проекты не получили практически никакого распространения. На данный момент имеется развивающийся проект, направленный на снижение системных требований — MicroXwin. X.org Foundation в настоящее время занимается устранением недостатков в X11 путём приведения подсистем к актуальному состоянию — в частности появилась поддержка множества курсоров, а следовательно и multitouch, а также значительно улучшена подсистема ввода, которая стала называться Xinput2, что позволило снять ограничения на сканкоды клавиш. Несмотря на это появляются альтернативы X11. В частности компания Intel занята развитием нового протокола Wayland, который планируется как альтернатива X11, но при этом, в отличие от X11, не предоставляет средств удалённого доступа к приложениям на уровне протокола. Разработчики Ubuntu планировали переход на Wayland в выпуске 13.04, но позже объявили о собственной разработке — Mir — собственной графической подсистемы, представляющей собой ответвление графической подсистемы SurfaceFlinger из ОС Android, развивающееся далее ресурсами Canonical как самостоятельный проект. В 18-м выпуске дистрибутива Fedora Wayland включён как опциональный пакет.

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

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

  • VNC (Virtual Network Computing) — очень низкоуровневая система, которая пересылает сжатые растровые изображения по сети. Реализация для UNIX включает в себя X-сервер.
  • Citrix MetaFrame — подобный X продукт для Microsoft Windows.
  • Tarantella — компания, поставляющая Java-клиент для использования в веб-браузерах.
  • Технология NX NoMachine — узкополосный протокол для удалённых дисплеев. Не является конкурентом X, поскольку базируется на протоколе X11, но позиционируется как более совершенное решение, чем чистый X.
  • SVG Terminal[7] — протокол для обновления SVG-содержимого в веб-браузере в почти реальном времени.

История

Предшественники

До появления 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.

DECwindows CDE в OpenVMS 7.3-1

В 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, и оставив после себя возрастающее коммерческое влияние в разработке.[8][9]

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.[10] Новые условия не позволяли многим проектам (например, XFree86) и даже некоторым коммерческим поставщикам принять эту версию. После угроз сделать форк со стороны XFree86[11] The Open Group сменила условия распространения X11R6.4 обратно на традиционную лицензию в сентябре 1998 года.[12] Последним выпуском под руководством 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.[13]

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

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

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

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

Фонд 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[26].

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

Дальнейшие разработки

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

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

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

Наименование

Компьютерные специалисты зачастую сокращают полное название «X Window System» до «X11» или просто «X». Термин «X Windows» (на манер «GNU/Linux» или «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.[31]
X11R3 25 октября 1988 XDM.
X11R4 22 декабря 1989 XDMCP; twm становится стандартным оконным менеджером; улучшения в приложениях; расширение Shape; новые шрифты.
X11R5 5 сентября 1991 PEX; Xcms (управление цветом); сервер шрифтов; X386; Расширение Xvideo.
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 вертикального письма и поддержки символов, задаваемых пользователями.[32]
X11R6.4 31 марта 1998 Xinerama.[33]
X11R6.5 Внутренний выпуск X.Org; не стал доступным широкой публике.
X11R6.5.1 20 августа 2000
X11R6.6 4 апреля 2001 Исправления багов; изменения в XFree86.
X11R6.7.0 6 апреля 2004 Первая версия X. Org Server от фонда X.Org Foundation как форк от XFree86 4.4 RC2. Основным поводом для этого послужило несогласие некоторых участников проекта с новой лицензией XFree86 4.4. Многие из бывших разработчиков XFree86 позднее присоединились к проекту X.Org Server.

Удаление XIE, PEX и libxml2.[34]

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 Впервые была добавлена модульная система сборки. В 6.9.0 всё ещё использовалась старая система сборки Imake, в то время как системы 7.0.0 уже использовала Autotools. В итоге из одного набора исходных кодов получились модульная версия 7.0 и монолитная версия 6.9.

EXA, значительный рефакторинг кода.[35]

X11R7.1 22 мая 2006 Усовершенствования EXA; интеграция Kdrive; AIGLX; улучшения в поддержке различных ОС и платформ.[36]
X11R7.2 15 февраля 2007 Удаление LBX[37] и встроенного драйвера клавиатуры, X-ACE, XCB, улучшения AutoConfig.
X11R7.3 6 сентября 2007 X11R7.3: XServer 1.4, автоопределение устройств с помощью HAL, использование DTrace, поддержка PCI-доменов.

Xorg server 1.4 — see Server14Branch for more details. Highlights:

  • RandR 1.2: RandR 1.2 offers output hotplug, as well as on-the-fly output reconfiguration and mode switching.
  • Input hotplug: Input hotplug allows hotplugging of input devices, and also adds enhanced support for touchscreens and tablets, through either HAL or D-Bus.
  • KDrive: Numerous enhancements have been made to the KDrive codebase, including better support for multiple input devices.
  • DTrace: When running on OpenSolaris, DTrace support is available in the X server, allowing detailed accounting of operations inside the server.
  • EXA: A great deal of work has been done on the EXA framework to make it more usable.
  • New applications: xbacklight
  • New drivers: xf86-video-glide, xf86-video-vermilion
  • New man pages for API’s: libXinerama, libXcomposite, XKB functions in libX11, Xtest functions in libXtst
  • Support for font catalogue directories in font path
  • xdm: Xft support added[38].
X11R7.4 23 сентября 2008 XServer 1.5.1, XACE, переработка PCI, оптимизации EXA, _X_EXPORT, GLX 1.4, ускоренные запуск и выключение.[39]
X11R7.5 26 октября 2009 XServer 1.7.0[40], Xi 2, XGE, поддержка E-EDID, RandR 1.3, MPX, предсказуемое ускорение указателя, использование менеджера памяти DRI2, использование SELinux, удаление устаревших библиотек и расширений.
X11R7.6 20 декабря 2010[41] XServer 1.9.0, переход от управления устройствами с подсистемы HAL (Hardware Abstraction Layer) на использование библиотеки udev, возможность создания файлов конфигурации для отдельных устройств, поменялись ABI интерфейсов, ответственных за ввод-вывод видео, и некоторые расширения[42][43].
X11R7.7 6 июня 2012[44] XServer 1.12, поддержка мультитач, улучшенный процесс сборки документации из DocBook XML и начальная поддержка GLX и XKB в XCB.

См. также

Примечания

  1. Licenses (англ.). X.Org Foundation (март 2004). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  2. Джим Геттис. Письмо в форум XFree86. Дата обращения: 4 января 2007. Архивировано 29 января 2011 года.
  3. Дон Хопкинс. The X-Windows Disaster (англ.). The UNIX-HATERS Handbook. Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  4. Ханя Жаевска, Марк Менес, Джоэл МакКормак. Why X Is Not Our Ideal Window System // Software — Practice & Experience. — 1990. — Т. 20, № S2. Архивировано 10 сентября 2014 года.
  5. Re: X is painful. Дата обращения: 29 июня 2006. Архивировано 6 июля 2017 года.
  6. Xprint Frequently Asked Questions (англ.). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  7. airWRX — SVG Terminal. Дата обращения: 29 июня 2006. Архивировано 17 декабря 2007 года.
  8. mako. Financing Volunteer Free Software Projects (англ.) (15 июня 2005). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  9. 9,0 9,1 Джим Геттис. Lessons Learned about Open Source (англ.) (2000). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  10. Shaleh. xstate (англ.) (недоступная ссылка) (2 апреля 1998). Дата обращения: 29 июня 2006. Архивировано 1 апреля 2004 года.
  11. Мэттью Арнисон. The means to an X for Linux: an interview with David Dawes from XFree86.org (англ.) (недоступная ссылка) (июнь 1999). Дата обращения: 29 июня 2006. Архивировано 18 апреля 2002 года.
  12. Кристофер Браун. X11R6.4 Sample Implementation Changes and Concerns (англ.) (недоступная ссылка). Дата обращения: 29 июня 2006. Архивировано 11 августа 2002 года.
  13. [http://web.archive.org/web/20070930185501/http://www.xfree86.org/pipermail/forum/2004-February/003945.html Архивная копия от 30 сентября 2007 на Wayback Machine [forum] Re: Announcement: Modification to the base XFree86™ license] Архивированная копия (недоступная ссылка). Дата обращения: 29 июня 2006. Архивировано 7 сентября 2005 года.
  14. Роберт Митчелл. Q&A: The X Factor (англ.). ComputerWorld (4 февраля 2002). Дата обращения: 29 июня 2006. Архивировано 23 августа 2011 года.
  15. Кит Паккард. The Evolution of the X Server Architecture (англ.) (1999). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  16. [forum] A Call For Open Governance Of X Development Архивировано 12 февраля 2005 года.
  17. XFree86 joins X.Org as Honorary Member (англ.). Slashdot (1 декабря 1999). Дата обращения: 29 июня 2006. Архивировано 23 августа 2011 года.
  18. [forum] A Call For Open Governance Of X Development Архивировано 22 декабря 2004 года.
  19. [forum] A Call For Open Governance Of X Development Архивировано 6 января 2005 года.
  20. [forum] Discussing issues Архивировано 27 декабря 2004 года.
  21. [forum] Another teleconference partial edited transcript Архивировано 12 февраля 2005 года.
  22. mharris. Diary for mharris (англ.) (9 января 2003). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  23. [forum] Invitation for public discussion about the future of X Архивировано 12 февраля 2005 года.
  24. [forum] A Call For Open Governance Of X Development Архивировано 12 февраля 2005 года.
  25. [forum] Notes from a teleconference held 2003-3-27 Архивировано 12 февраля 2005 года.
  26. 26,0 26,1 Дэвид Уилер[англ.]. The Cautionary Tale of XFree86 (англ.) (недоступная ссылка). Make Your Open Source Software GPL-Compatible. Or Else (16 февраля 2005). Дата обращения: 29 июня 2006. Архивировано 23 апреля 2002 года.
  27. X11R6.9 and X11R7.0 Officially Released (англ.) (21 декабря 2005). Дата обращения: 29 июня 2006. Архивировано 23 августа 2011 года.
  28. Пол Андерсон, Алан Куперсмит, Эгберт Эйк, Адам Джексон, Кевин Мартин, Кейт Паккард. Modularization Proposal (англ.) (2005). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  29. Proposed Changes for X11R7.1 (англ.). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  30. Кейт Паккард. Getting X Off The Hardware (англ.) (2004). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  31. The X Window User HOWTO: Getting Started (англ.). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  32. XFree86 and X11R6.3 (англ.). Release Notes for XFree86 3.3.6. XFree86 Project (31 декабря 1999). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  33. X Press Release — X11R6.4 (англ.). The Open Group (31 марта 1998). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  34. X.Org Foundation releases X Window System X11R6.7 (англ.). LWN (7 апреля 2004). Дата обращения: 29 июня 2006. Архивировано 29 января 2011 года.
  35. ChangesSince68 (англ.). X.Org Wiki. Дата обращения: 29 июня 2006. Архивировано 23 августа 2011 года.
  36. Release Notes for X11R7.1 (англ.). X.Org Foundation (22 марта 2006). Дата обращения: 29 июня 2006. Архивировано 23 августа 2011 года.
  37. ChangesForX11R72 (англ.). X.Org Wiki. Дата обращения: 15 февраля 2007. Архивировано 23 августа 2011 года.
  38. 7.3 Release notes (англ.). X.Org Foundation. Дата обращения: 13 декабря 2007. Архивировано 23 августа 2011 года.
  39. X.Org Foundation Releases X7.4. Дата обращения: 14 февраля 2009. Архивировано 1 августа 2009 года.
  40. X.Org Foundation Releases X7.5. Дата обращения: 9 ноября 2009. Архивировано 6 июля 2010 года.
  41. X.Org Wiki — Other/Press/X11R76Released. Дата обращения: 1 сентября 2011. Архивировано 24 декабря 2010 года.
  42. X.Org Wiki — Server18Branch. Дата обращения: 1 сентября 2011. Архивировано 26 мая 2011 года.
  43. X.Org Wiki — Server19Branch. Дата обращения: 1 сентября 2011. Архивировано 31 августа 2011 года.
  44. [ANNOUNCE] X11R7.7. Дата обращения: 7 июня 2012. Архивировано 14 августа 2012 года.

Литература

Ссылки

Заметные реализации
  1. Internet Archive Search: subject:"X Window System (Computer system)". archive.org. Дата обращения: 24 декабря 2016.