X Window System

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
X Window System
X11.svg
X11.svg
Розробник(и) X.Org Foundation
Стабільний випуск X11R7.7 (6 червня 2012 р.)
Операційна система різні
Тип віконна система
Ліцензія MIT
Сайт www.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 році. Нинішня (на червень 2006 р.) версія протоколу — X11 — з'явилася у вересні 1987 р. Проект X очолює фонд X.Org Foundation. Зразкова реалізація (англ. reference implementation) системи вільно доступна на умові ліцензії MIT і подібних до неї ліцензій[1].

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 в середовищі X Window System
GNOME 2.20 в середовищі X Window System
Графічний інтерфейс користувача Xfce
Логотип 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.

Реалізації[ред.ред. код]

Референсна (зразкова) реалізація (англ. 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 виконується всередині іншої віконної системи (наприклад, віконної підсистеми 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, SECAM, NTSC, не переводячи їх попередньо в формат передачі кольору екрана (RGB16/24/32), а також робити протилежне кодування. Розширення Xv надає інформацію про доступні графічні плати, кількість доступних портів (кожен порт може використовувати тільки один додаток), підтримуваних форматах кодування кольору. Всю цю інформацію можна переглянути за допомогою утиліти xvinfo.

Обмеження та критика X[ред.ред. код]

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

Відеоапаратура[ред.ред. код]

Сьогодні межа продуктивності графічних комп'ютерних систем пролягає в галузі найпередовіших графічних функцій. Виробники апаратного забезпечення, як правило, реалізують ці можливості у пропрієтарних драйверах, причому ці драйвери звичайно пишуться в першу чергу для систем Microsoft Windows (як для самих розповсюджених на ринку). Драйвери багатьох старих графічних плат піддалися зворотній розробці в рамках проектів XFree86 та X.Org. Проте деякі виробники розглядають свої розробки в області високопродуктивного відео як комерційну таємницю, або ж як патентовані винаходи, які не хочуть розкривати.

Багато нинішніх реалізації X керують відеоапаратурою напряму. Нестійкий X-сервер може зробити дисплей непридатним до використання навіть у тих випадках, коли сама операційна система продовжує нормально функціонувати. При цьому може знадобитися перезавантаження всієї системи. Технологія Direct Rendering Infrastructure (DRI) покликана усунути цю проблему.

Функції інтерфейсу користувача[ред.ред. код]

X Window System навмисно не включає в себе специфікації інтерфейсу користувача, так само як і більшої частини міжпрограмної взаємодії. Завдяки цьому виникли різноманітні інтерфейси, а також додатки, що не завжди правильно працюють один з одним. Існує специфікація взаємодії клієнтів ICCCM, але вона відома як важка для правильної реалізації. Подальші спроби стандартизації — такі, як інструментарій Motif і середовище CDE — не виправили становища. Все це заважає як користувачам, так і програмістам. [5] В наш час[Коли?] розробники зазвичай домагаються єдиного стилю в додатках, орієнтуючись на одне конкретне середовище робочого столу або на конкретний інструментарій. Це також дозволяє уникнути безпосередньої роботи з ICCCM.

Протокол X не надає ніяких засобів для роботи зі звуком. Підтримка звукової апаратури та відтворення звуків покладається на операційну систему. Оскільки користувачам все частіше необхідний звук, ця ситуація призвела до появи різних несумісних один з одним звукових підсистем. У минулому багато програмісти ігнорували мережеві проблеми, і просто використовували локальні звукові API операційної системи. Перше покоління клієнт-серверних звукових систем включає в себе rplay та Network Audio System. Сучасніші системи — PulseAudio, esound в GNOME та aRts в KDE. Також розпочато розробку нової системи — Media Application Server.

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

Мережа[ред.ред. код]

Станом на червень 2006-го в 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.

Поточні версії Windows і Mac OS X мають внутрішній поділ графічної підсистеми, схоже на клієнт-серверне поділ в X, і мають приблизно ті ж вимоги до ресурсів, що X з KDE або GNOME. Велика частина накладних витрат у 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. Однак ці проекти не отримали практично ніякого розповсюдження.

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

Є й інші способи домогтися мережевої прозорості графічних служб:

Історія[ред.ред. код]

Попередники[ред.ред. код]

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

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

Витоки і ранні розробки[ред.ред. код]

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

Проект вирішив ці проблеми шляхом створення протоколу, який підтримував як локальні програми, так і виклик віддалених програм. У середині 1983-го початковий порт W на UNIX працював у п'ять разів повільніше, ніж в системі V. У травні 1984 року Шейфлер замінив синхронний протокол на асинхронний, а списки дисплеїв — на безпосереднє виведення графіки. Таким чином вийшла X Window System версії 1.x, одна з перших віконних систем, які забезпечують незалежність від апаратного забезпечення.

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

У другому кварталі 1985 року в X була реалізована підтримка кольорів для роботи під DEC VAXstation-II/GPX. Ця версія стала відома як версія 9. Раніше MIT ліцензував X6 деяким стороннім групами за плату. Однак тепер було вирішено поширювати X9 і майбутні версії вільно — на умовах, які отримали назву ліцензії MIT. X9 з'явилася у вересні 1985 року.

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

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

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

Консорціум X MIT і X Consortium, Inc.[ред.ред. код]

DECwindows CDE в OpenVMS 7.3-1

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

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

The Open Group[ред.ред. код]

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

The Open Group випустила X11R6.4 на початку 1998 року. У цій версії було вирішено відмовитися від традиційної ліберальної ліцензії, оскільки The Open Group бажала забезпечити фінансову підтримку розробки X.[10] Нові умови не дозволяли багатьом проектам (наприклад, XFree86) і навіть деяким комерційним постачальникам прийняти цю версію. Після погроз зробити форк з боку XFree86.[11] The Open Group змінила умови розповсюдження X11R6.4 назад на традиційну ліцензію у вересні 1998 року.[12] Останнім випуском під керівництвом The Open Group став X11R6.4 patch 3.

X. Org і XFree86[ред.ред. код]

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

У травні 1999 року The Open Group заснувала X. Org. X. Org контролювала випуск версій X11R6.5.1 і вище. У цей час розробка X практично зупинилася[14]; технічні інновації відбувалися в основному в рамках проекту XFree86.[15] У 1999 році команда XFree86 увійшла до складу X. Org в якості почесного члена[16], чому сприяли різні компанії-виробники апаратного забезпечення[17], зацікавлені у використанні XFree86 разом з GNU/Linux і в його статусі як найпопулярнішої версії X.

Аж до 2003 року, поки популярність GNU/Linux (і, як наслідок, поширеність X) зростала, X. Org не діяла[18], й основна розробка відбувалася в XFree86. Проект XFree86 страждав від занадто закритою моделі розробки: програмісти не могли отримати доступ на запис в CVS-репозитарій, і постачальникам доводилося підтримувати великі набори патчів.[19] У березні 2003 року організація XFree86 виключила Кейта Паккарда, який приєднався до XFree86 після розпаду Консорціуму X MIT; зроблено це було у вельми недружній обстановці.[20][21][22]

X. Org і XFree86 почали обговорювати реорганізацію, щоб забезпечити повноцінну розробку X.[23][24][25] Джим Геттіс наполягав на переході до відкритої моделі розробки принаймні з 2000 року. [9] Геттіс, Паккард і інші почали докладно обговорювати зміни, які потрібно внести для переходу до ефективної відкритої розробки X.

Нарешті, в лютому 2004 року проект XFree86 випустив версію 4.4 під обмеженішою ліцензією: у неї був доданий пункт, аналогічний рекламному пункту (англ. advertising clause) оригінальної ліцензії BSD. Багато проектів, що покладалися на X, вважають таку ліцензію неприйнятною. FSF та Debian визнали доданий пункт несумісним з умовами GNU GPL.[26] Інші групи (наприклад, OpenBSD) вважали, що накладення додаткових ліцензійних обмежень суперечить "споконвічному духу" X. Через ці ліцензійні проблеми, на тлі закритості XFree86 склалася відповідна атмосфера для створення форку.

X.Org Foundation[ред.ред. код]

На початку 2004 а представники X.Org та freedesktop.org заснували фонд X.Org Foundation. The Open Group передала йому управління доменним ім'ям x.org . Це стало корінною зміною в розробці X. У той час як розпорядники X з 1988 року (включаючи попередню X. Org) були організаціями постачальників, X. Org Foundation був заснований самими розробниками програмного забезпечення, і в ньому використовувалася відкрита модель розробки, що опирається на вклад ззовні. Було відкрито членство для приватних осіб, а корпоративне членство представлено у вигляді спонсорства. В наш час[Коли?] фонд X. Org Foundation підтримується декількома великими корпораціями, такими, як Hewlett-Packard та Sun Microsystems.

Фонд випустив X11R6.7 — X.Org Server — у квітні 2004 року. Ця версія була заснована на XFree86 4.4RC2 (останньої версії XFree86, випущеної під старою ліцензією), з доданими змінами X11R6.6. Завдяки впровадженню відкритої моделі розробки та збереженню сумісності з GNU GPL проект привернув багатьох колишніх розробників XFree86.[26]

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

Подальші розробки[ред.ред. код]

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

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

Планується, що в майбутньому X-сервер буде отримувати доступ до відеоапаратури виключно за допомогою OpenGL та Direct Rendering Infrastructure (DRI) на тих комбінаціях апаратного забезпечення та операційних систем, які підтримують такий доступ. Інфраструктура DRI вперше з'явилася в XFree86 версії 4.0 і стала стандартною в X11R6.7 та пізніших версіях.[30] Багато операційних системи почали додавати відповідну підтримку в ядро. Робота в цій галузі триває.

Назва[ред.ред. код]

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

Історія випусків[ред.ред. код]

Версія Дата релізу Основні зміни
X1 червень 1984 Вперше використовується назва «X». Фундаментальні зміни, що відрізняють продукт від W.
X6 січень 1985 Перша версія, ліцензована кількома зовнішніми компаніями.
X9 вересень 1985 Підтримка кольорів. Перший випуск на умовах ліцензії MIT.
X10 кінець 1985 IBM RT/PC, AT (під керуванням DOS) та інші.
X10R2 січень 1986
X10R3 лютий 1986 Перший випуск за межі MIT. uwm стає стандартним віконним менеджером.
X10R4 грудень 1986 Остання версія X10.
X11 15 вересня 1987 Перший випуск теперішнього протокола.
X11R2 лютий 1988 Перший випуск під керівництвом Консорціуму X MIT.[31]
X11R3 25 жовтня 1988 XDM.
X11R4 22 грудня 1989 XDMCP; twm стає стандартним віконним менеджером; покращення в додатках; розширення Shape; нові шрифти.
X11R5 5 вересня 1991 PEX; Xcms (керування кольором); сервер шрифтів; X386; розширення Xvideo.
X11R6 16 травня 1994 ICCCM версії 2.0; Inter-Client Exchange; X Session Management; розширення X Synchronization; розширення X Image; розширення XTEST; X Input; X Big Requests; XC-MISC; зміни в XFree86.
X11R6.1 14 березня 1996 Розширення X Double Buffer; розширення X keyboard; розширення X Record.
X11R6.2
X11R6.3 (Broadway)
23 грудня 1996 Функціональність WWW; LBX. Останній випуск під керівництвом X Consortium. X11R6.2 — це позначення підмножини X11R6.3, в якій єдиними відмінностями від R6.1 є Xprint та реалізація в Xlib вертикального письма та підтримки символів, заданих користувачами.[32]
X11R6.4 31 березня 1998 Xinerama.[33]
X11R6.5 Внутрішній випуск X.Org; не став доступним широкій публіці.
X11R6.5.1 20 серпня 2000
X11R6.6 4 квітня 2001 Виправлення багів; зміни в XFree86.
X11R6.7.0 6 квітня 2004 Перший випуск від фонду X.Org Foundation, включаючий XFree86 4.4RC2. Повний комплект для кінцевого пользователя. Видалення XIE, PEX та libxml2.[34]
X11R6.8.0 8 вересня 2004 Прозорість вікон; XDamage; Distributed Multihead X; XFixes; Composite; XEvIE.
X11R6.8.1 17 вересня 2004 Усунення вразливості в libxpm.
X11R6.8.2 10 лютого 2005 Усунення багів, оновлення драйверів.
X11R6.9
X11R7.0
21 грудня 2005 EXA, значний рефакторинг коду.[35] Із одного набору сирцевих кодів отримали модульну версію 7.0 та монолітну версію 6.9.
X11R7.1 22 травня 2006 Покращення EXA; інтеграція Kdrive; AIGLX; покращення в підтримці ОС та платформ.[36]
'X11R7.2' 15 лютого 2007 Видалення LBX.[37]
X11R7.3 6 вересня 2007 Xorg server 1.4 — see Server14Branch for more details. Highlights:
  • RandR 1.2: RandR 1.2 offers output hotplug, as well as on-the-fly output reconfiguration and mode switching.
  • Input hotplug: Input hotplug allows hotplugging of input devices, and also adds enhanced support for touchscreens and tablets, through either HAL or D-Bus.
  • KDrive: Numerous enhancements have been made to the KDrive codebase, including better support for multiple input devices.
  • DTrace: When running on OpenSolaris, DTrace support is available in the X server, allowing detailed accounting of operations inside the server.
  • EXA: A great deal of work has been done on the EXA framework to make it more usable.
  • New applications: xbacklight
  • New drivers: xf86-video-glide, xf86-video-vermilion
  • New man pages for API’s: libXinerama, libXcomposite, XKB functions in libX11, Xtest functions in libXtst
  • Support for font catalogue directories in font path
  • xdm: Xft support added.[38]
X11R7.4 23 вересня 2008 XServer 1.5.1, XACE, переробка PCI, оптимізація EXA, _X_EXPORT, GLX 1.4, прискорений запуск та вимкнення.[39]
X11R7.5 26 жовтня 2009 XServer 1.7.0[40]
X11R8.0 2 квітня 2010 XServer 1.8.0[41], перехід від керування пристроями з підсистеми HAL (Шар апаратних абстракцій) на використання бібліотеки udev, можливість створення файлів конфігурації для окремих пристроїв, змінились ABI інтерфесу, відповідальні за ввід/вивід відео та деякі розширення[42]

Примітки[ред.ред. код]

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


Литература[ред.ред. код]

  • Лінда Муі, Эрік Пірс. 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.

Посилання[ред.ред. код]

Помітні реалізації


Дивись також[ред.ред. код]