X Window System

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

оконная система

Разработчики

X.Org Foundation

Операционная система

UNIX-подобные операционные системы

Последняя версия

X11R7.7 (6 июня 2012)[1]

Лицензия

лицензия MIT[2]

Сайт

x.org

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 году. Нынешняя (по состоянию на февраль 2009 года) версия протокола — X11 — появилась в сентябре 1987 года. Проект X возглавляет фонд X.Org Foundation. Референсная (или образцовая) реализация (reference implementation) системы свободно доступна на условиях лицензии MIT и подобных ей лицензий.[3]

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

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

В этом примере 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 4.10 в среде X Window System.
GNOME 2.20 в среде 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.[4] Однако в 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-клиентами.

Когда 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) целая глава[5] посвящена проблемам X в конце 1980-х — начале 1990-х годов. Статья «Why X Is Not Our Ideal Window System»[6] («Почему X не является нашей идеальной оконной системой») (1990) подробно рассматривает проблемы протокола и даёт рекомендации по улучшению.

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

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

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

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

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

Сеть[править | править вики-текст]

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

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

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

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

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

Наконец, в феврале 2004 года проект XFree86 выпустил версию 4.4 под более ограниченной лицензией: в неё был добавлен пункт, аналогичный рекламному пункту (англ. advertising clause) оригинальной лицензии BSD. Многие проекты, полагавшиеся на X, посчитали такую лицензию неприемлемой. FSF и Debian сочли добавленный пункт несовместимым с условиями GNU GPL.[28] Другие группы (например, 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.[28]

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

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

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

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

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

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

Компьютерные специалисты зачастую сокращают полное название «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.[33]
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 вертикального письма и поддержки символов, задаваемых пользователями.[34]
X11R6.4 31 марта 1998 Xinerama.[35]
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.[36]

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, значительный рефакторинг кода.[37]

X11R7.1 22 мая 2006 Усовершенствования EXA; интеграция Kdrive; AIGLX; улучшения в поддержке различных ОС и платформ.[38]
X11R7.2 15 февраля 2007 Удаление LBX[39] и встроенного драйвера клавиатуры, 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.[40]
X11R7.4 23 сентября 2008 XServer 1.5.1, XACE, переработка PCI, оптимизации EXA, _X_EXPORT, GLX 1.4, ускоренные запуск и выключение.[41]
X11R7.5 26 октября 2009 XServer 1.7.0[42], Xi 2, XGE, поддержка E-EDID, RandR 1.3, MPX, предсказуемое ускорение указателя, использование менеджера памяти DRI2, использование SELinux, удаление устаревших библиотек и расширений.
X11R7.6 20 декабря 2010[43] XServer 1.9.0, переход от управления устройствами с подсистемы HAL (Hardware Abstraction Layer) на использование библиотеки udev, возможность создания файлов конфигурации для отдельных устройств, поменялись ABI интерфейсов, ответственных за ввод-вывод видео, и некоторые расширения[44][45].
X11R7.7 6 июня 2012[46] XServer 1.12, поддержка мультитач, улучшенный процесс сборки документации из DocBook XML и начальная поддержка GLX и XKB в XCB.

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

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

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

Литература[править | править вики-текст]

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

Ссылки[править | править вики-текст]

Заметные реализации