X Window System

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
X Window System
Логотип программы X Window System
Скриншот программы X Window System
Типсвободное и открытое программное обеспечение, дисплейный сервер[вд], компьютерная платформа[вд] и оконный интерфейс
РазработчикX.Org Foundation
Дата выпуска1982
Последняя версия
Репозиторийgitlab.freedesktop.org/x…
Лицензиялицензия MIT[3]
Сайтx.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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 и подобных ей лицензий[4].

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[5]. Однако в 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 позволяет представить множество мониторов как один экран. С его помощью можно выводить согласованное изображение на большие экраны, составленные из многих мониторов. Однако, многие из существующих на данный моментоконных менеджеров не поддерживают, или не полностью поддерживают спецификации Xineramа, поэтому показывают неверные изображения при использовании данного расширения.

Xv

[править |править код]
Основная статья:X video

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

Ограничения и критика X

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

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

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

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

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

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

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

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

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

Сеть

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

В 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, которая впоследствии превратилась в AppleAqua для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[10] — протокол для обновления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 была реализована поддержкацветов для работы под DECVAXstation-II/GPX. Эта версия стала известна как версия 9. Ранее MIT лицензировал X6 некоторым сторонним группам за плату. Однако теперь было решено распространять X9 и будущие версиисвободно — на условиях, которые получили названиелицензии MIT. X9 появилась в сентябре 1985 года.

Группа изБраунского университета портировала версию 9 наIBM PC/RT, но проблемы при чтении неупорядоченных данных на 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.

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

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

X.Org и XFree86

[править |править код]
Необходимопроверитькачество перевода статьи «X Window System» c английского языка,исправить содержательные и стилистические ошибки.
Вы можете помочьулучшить эту статью (см. такжерекомендации по переводу).
(8 ноября 2008)

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

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

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

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

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

Фонд X.Org Foundation

[править |править код]
Основная статья: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[29].

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

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

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

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

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

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

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

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

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

История выпусков

[править |править код]
См. также:XFree86 § История выпусков иX.Org Server § История выпусков
ВерсияДата выпускаНаиболее важные изменения
Старая версия, не поддерживается: X1июнь 1984Впервые используется название «X». Фундаментальные изменения, отличающие продукт отW.
Старая версия, не поддерживается: X6январь 1985Первая версия, лицензированная нескольким внешним компаниям.
Старая версия, не поддерживается: X9сентябрь 1985Поддержка цветов. Первый выпуск на условияхлицензии MIT.
Старая версия, не поддерживается: X10ноябрь 1985IBMRT/PC,AT (под управлениемDOS) и другие.
Старая версия, не поддерживается: X10R2январь 1986
Старая версия, не поддерживается: X10R3февраль 1986Первый выпуск за пределыMIT.uwm становится стандартнымоконным менеджером.
Старая версия, не поддерживается: X10R4декабрь 1986Последняя версия X10.
Старая версия, не поддерживается: X1115 сентября 1987Первый выпуск нынешнегопротокола.
Старая версия, не поддерживается: X11R2февраль 1988Первый выпуск под начальством Консорциума X MIT.[34]
Старая версия, не поддерживается: X11R325 октября 1988XDM.
Старая версия, не поддерживается: X11R422 декабря 1989XDMCP;twm становится стандартным оконным менеджером; улучшения в приложениях; расширение Shape; новыешрифты.
Старая версия, не поддерживается: X11R55 сентября 1991X386 1.2,PEX, Xcms (управление цветом),сервер шрифтов,расширение X video.
Старая версия, не поддерживается: X11R616 мая 1994ICCCM версии 2.0; Inter-Client Exchange; X Session Management; расширение X Synchronization; расширение X Image; расширение XTEST; X Input; X Big Requests; XC-MISC; изменения вXFree86.
Старая версия, не поддерживается: X11R6.114 марта 1996Расширение X Double Buffer; расширение X keyboard; расширение X Record.
Старая версия, не поддерживается: X11R6.2
X11R6.3
23 декабря 1996ФункциональностьWWW;LBX. Последний выпуск под руководством X Consortium. X11R6.2 — это обозначение подмножества X11R6.3, в котором единственными отличиями от R6.1 являютсяXprint и реализация вXlib вертикального письма и поддержки символов, задаваемых пользователями.[35]
Старая версия, не поддерживается: X11R6.431 марта 1998Xinerama.[36]
Старая версия, не поддерживается: X11R6.52000Внутренний выпускX.Org; не стал доступным широкой публике.
Старая версия, не поддерживается: X11R6.5.120 августа 2000
Старая версия, не поддерживается: X11R6.64 апреля 2001Исправлениябагов; изменения в XFree86.
Старая версия, не поддерживается: X11R6.7.06 апреля 2004Первая версия X. Org Server от фондаX.Org Foundation какфорк от XFree86 4.4 RC2. Основным поводом для этого послужило несогласие некоторых участников проекта с новой лицензией XFree86 4.4. Многие из бывших разработчиков XFree86 позднее присоединились к проекту X.Org Server.

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

Старая версия, не поддерживается: X11R6.8.08 сентября 2004Прозрачность окон; XDamage; Distributed Multihead X;XFixes; Composite; XEvIE.
Старая версия, не поддерживается: X11R6.8.117 сентября 2004Устранение уязвимости вlibxpm.
Старая версия, не поддерживается: X11R6.8.210 февраля 2005Устранение багов, обновлениядрайверов.
Старая версия, не поддерживается: X11R6.9
X11R7.0
21 декабря 2005Впервые была добавлена модульная система сборки. В 6.9.0 всё ещё использовалась старая система сборкиImake, в то время как системы 7.0.0 уже использовалаAutotools. В итоге из одного набораисходных кодов получились модульная версия 7.0 и монолитная версия 6.9.

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

Старая версия, не поддерживается: X11R7.122 мая 2006Усовершенствования EXA; интеграцияKdrive;AIGLX; улучшения в поддержке различныхОС и платформ.[39]
Старая версия, не поддерживается: X11R7.215 февраля 2007Удаление LBX[40] и встроенного драйвера клавиатуры,X-ACE,XCB, улучшения AutoConfig.
Старая версия, не поддерживается: X11R7.36 сентября 2007X11R7.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[41].
Старая версия, не поддерживается: X11R7.423 сентября 2008XServer 1.5.1,XACE, переработка PCI, оптимизации EXA, _X_EXPORT,GLX 1.4, ускоренные запуск и выключение.[42]
Старая версия, не поддерживается: X11R7.526 октября 2009[43]XServer 1.7.0[44], Xi 2, XGE, поддержка E-EDID,RandR 1.3,MPX, предсказуемое ускорение указателя, использование менеджера памятиDRI2, использованиеSELinux, удаление устаревших библиотек и расширений.
Старая версия, не поддерживается: X11R7.620 декабря 2010[45]XServer 1.9.0, переход от управления устройствами с подсистемы HAL (Hardware Abstraction Layer) на использование библиотеки udev, возможность создания файлов конфигурации для отдельных устройств, поменялись ABI интерфейсов, ответственных за ввод-вывод видео, и некоторые расширения[46][47].
Текущая версия:X11R7.76 июня 2012[48]XServer 1.12, поддержкамультитач, улучшенный процесс сборки документации изDocBook XML и начальная поддержка GLX и XKB вXCB.
Легенда:
Старая версия
Старая поддерживаемая версия
Текущая версия
Тестовая версия
Будущая версия

См. также

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

Примечания

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

Литература

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

Ссылки

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

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

Перейти к шаблону «X Window System»
Архитектура
Менеджеры окон
Расширения
Реализации
Стандарты
Приложения
Перейти к шаблону «FOSS»
Главное
Сообщество
Организации
Лицензии
Проблемы
Прочее
Перейти к шаблону «Стандарты Open Group»
СтандартыThe Open Group
Источник —https://ru.wikipedia.org/w/index.php?title=X_Window_System&oldid=149813671
Категории:
Скрытые категории: