X Window System
X Window System |
- Разработчик:
- X.Org Foundation
- Текущая версия:
- X11R7.2
- Дата выхода текущей версии:
- 15 февраля 2007 г.
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 использует клиент-серверную модель: X-сервер сообщается с различными клиентскими программами. Сервер принимает запросы на вывод графики (окон) и отправляет обратно пользовательский ввод (от клавиатуры, мыши или сенсорного экрана). X-сервер может быть:
- системной программой, контролирующей вывод видео на персональном компьютере;
- приложением, отображающим графику в окно какой-то другой дисплейной системы;
- выделенным компонентом аппаратного обеспечения.
Эта клиент-серверная терминология — пользовательский терминал в качестве «сервера» и удалённые приложения в качестве «клиентов» — зачастую запутывает новых пользователей X, так как обычно эти термины имеют обратные значения. Но X Window System принимает точку зрения программы, а не конечного пользователя аппаратуры: локальный дисплей предоставляет услуги отображения графики программам, и потому выступает в роли сервера. Удалённые программы используют эти услуги, и потому играют роль клиентов.
Протокол, с помощью которого сообщаются сервер и клиент, является прозрачным для сети: клиент и сервер могут находиться как на одной и той же машине, так и на разных. В частности, они могут работать на различных архитектурах под управлением разных операционных систем — результат будет одинаковым. Клиент и сервер могут даже безопасно взаимодействовать через Интернет посредством туннелирования соединения сквозь зашифрованный сетевой сеанс.
Чтобы запустить удалённую клиентскую программу, выводящую графику на локальный X-сервер, пользователь обычно открывает эмулятор терминала и подключается к удалённой машине при помощи telnet или SSH. Затем он отдаёт команду, указывающую дисплей, на который следует выводить графику (например, export DISPLAY=[имя компьютера пользователя]:0
при использовании bash). Наконец, пользователь запускает клиентскую программу. Она подключится к локальному X-серверу и будет отображать графику на локальный экран и принимать ввод от локальных устройств ввода. Другой вариант — использовать небольшую вспомогательную программу, которая подключается к удалённой машине и запускает на ней нужное клиентское приложение.
Использование удалённых клиентов может быть полезно, например, в таких ситуациях:
- графическое администрирование удалённой машины;
- выполнение интенсивных ресурсоёмких вычислений на удалённой UNIX-машине и вывод результатов на локальной Windows-машине;
- выполнение графических программ одновременно на нескольких машинах, с одним дисплеем, одной клавиатурой и одной мышью.
Принципы дизайна X[править | править код]
В 1984 г. Боб Шейфлер и Джим Геттис зафиксировали ранние принципы построения X:
- Добавляй новую функциональность только в том случае, если без неё нельзя завершить какое-то реальное приложение.
- Решить, чем система не является, столь же важно, сколь решить, чем она является. Не пытайся удовлетворить все мыслимые потребности; вместо этого сделай систему расширяемой, чтобы новые потребности могли быть удовлетворены совместимым образом.
- Хуже обобщения одного примера может быть только обобщение вообще без примеров.
- Если проблема не понята до конца, возможно, лучше не решать её вовсе.
- Если ты можешь добиться 90 процентов нужного эффекта, затратив всего 10 процентов сил, используй более простое решение.
- Изолируй сложные места как можно сильнее.
- Обеспечивай механизм, а не политику. В частности, политика интерфейса пользователя должна быть в руках клиентов.
С тех пор проект X, в основном, придерживался этих принципов. Демонстрационная реализация разрабатывается с расчётом на расширение и улучшение, в то же время, она остаётся почти полностью совместимой с протоколом 1987 года.
Интерфейсы пользователя[править | править код]
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, но со свободной лицензией) стала более распространённой.
Хотя 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.
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.
Данные, передаваемые по сети между 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 (попытка создать надёжный ядерный интерфейс к видеобуферу) может сделать эти проекты ненужными.
Есть и другие способы добиться сетевой прозрачности графических служб:
- VNC (Virtual Network Computing) — очень низкоуровневая система, которая пересылает сжатые растровые изображения по сети. Реализация для UNIX включает в себя X-сервер.
- Citrix MetaFrame — подобный X продукт для Microsoft Windows.
- Tarantella, Inc. — компания, поставляющая Java-клиент для использования в веб-браузерах.
- Технология NX NoMachine — узкополосный протокол для удалённых дисплеев.
- SVG Terminal — протокол для обновления 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.[править | править код]
В 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[править | править код]
В начале 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]. |
См. также[править | править код]
- Графический интерфейс пользователя
- Оконная система
- Оконный менеджер
- ICCCM
- Xgl
- AIGLX
- VirtualGL
- Y Window System
- Программы UNIX-подобных операционных систем
- Sax2
X Window System | |
---|---|
Архитектура | |
Менеджеры окон | |
Расширения |
Графическое • Клавиатурное • Общей памяти • X video • Контурное • GLX • XRender |
Реализации | |
Стандарты | |
Приложения | X-терминал |
Ссылки[править | править код]
- X.Org Foundation(англ.) — официальный веб-сайт.
- X Window System в DMOZ
- Window Managers for X(англ.) — веб-сайт, посвящённый различным оконным менеджерам X.
- DsY(англ.) — развитие проекта Y Window System.
- Смирл, Джон. "State of Linux Graphics". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Unknown parameter|datepublished=
ignored (help); Check date values in:|accessdate=
(help) - Браун, Кристофер. "On the Thesis that X is Big/Bloated/Obsolete and Should Be Replaced". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Check date values in:|accessdate=
(help) - Геттис, Джим. "Open Source Desktop Technology Road Map". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Unknown parameter|datepublished=
ignored (help); Check date values in:|accessdate=
(help) - Бойкин, Оскар. "X Marks the Spot: Looking back at X11 Developments of Past Year". OSNews. Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Unknown parameter|datepublished=
ignored (help); Check date values in:|accessdate=
(help) - Майк Пакетт, Apple Computer. "Why Apple didn't use X for the window system". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Unknown parameter|datepublished=
ignored (help); Check date values in:|accessdate=
(help) - Digital Equipment Corporation. "Writing a Graphics Device Driver and DDX for the DIGITAL UNIX X Server". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Unknown parameter|datepublished=
ignored (help); Check date values in:|accessdate=
(help) - Ли, Кентон. "Technical X Window System and Motif WWW Sites". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Check date values in:|accessdate=
(help)
Заметные реализации[править | править код]
- Демонстрационная реализация от фонда X.Org(англ.).
- XFree86 — на протяжении многих лет была самой популярной реализацией, особенно на открытых UNIX-подобных системах.
- Apple — Mac OS X — X11(англ.) — X11.app, тесно интегрированная с Mac OS X.
Литература[править | править код]
- Линда Муи, Эрик Пирс 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о книге
- Роберт Шейфлер, Джеймс Геттис X Window System: Core and extension protocols: X version 11, releases 6 and 6.1. — Digital Press, 1996. — ISBN 1-55558-148-Xо книге
Примечания[править | править код]
- ↑ "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) - ↑ Jim Gettys. "Письмо в форум XFree86". Retrieved 4 января. Unknown parameter
|accessyear=
ignored (help); Check date values in:|accessdate=
(help) - ↑ Дон Хопкинс. "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) - ↑ Ханя Жаевска, Марк Менес, Джоэл МакКормак «Why X Is Not Our Ideal Window System» // Software — Practice & Experience. — 1990. — Т. 20. — № S2.
- ↑ "Xprint Frequently Asked Questions". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Check date values in:|accessdate=
(help) - ↑ 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) - ↑ а б Геттис, Джим. "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) - ↑ 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) - ↑ Арнисон, Мэттью. "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) - ↑ Браун, Кристофер. "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) - ↑ Митчелл, Роберт. "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) - ↑ Паккард, Кейт. "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) - ↑ 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) - ↑ 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) - ↑ а б Уилер, Дэвид. "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) - ↑ "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) - ↑ Пол Андерсон, Алан Куперсмит, Эгберт Эйк, Адам Джексон, Кевин Мартин, Кейт Паккард. "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) - ↑ "Proposed Changes for X11R7.1". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Check date values in:|accessdate=
(help) - ↑ Паккард, Кейт. "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) - ↑ "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) - ↑ 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) - ↑ 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) - ↑ 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) - ↑ X.Org Wiki. "ChangesSince68". Retrieved 29 июня. Unknown parameter
|accessyear=
ignored (help); Unknown parameter|lang=
ignored (help); Check date values in:|accessdate=
(help) - ↑ 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) - ↑ 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