X Window System — Вікіпедія

X Window System
Типвіконна система
РозробникX.Org Foundation
Стабільний випускX11R7.7 (6 червня 2012 р.)
Операційна системарізні
ЛіцензіяMIT
Вебсайтx.org

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

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

У X Window System передбачена мережева прозорість: графічні програми можуть виконуватися на іншій машині в мережі, інтерфейс при цьому буде передаватися через мережу й відображатись на локальній машині користувача. У X Window System терміни «клієнт» і «сервер» мають незвичне багатьом значення: «сервер» означає локальний дисплей користувача (дисплейний сервер), а «клієнт» — програму, яка цей дисплей використовує (вона може виконуватися й на віддаленому комп'ютері).

Система X Window System була розроблена в Массачусетському технологічному інституті (MIT) 1984 року. Нинішня версія протоколу — X11  (на квітень 2016 р. — X11R7.7)— з'явилась у вересні 1987 р. Проєкт X очолюється фондом X.Org Foundation. Зразкова реалізація (англ. reference implementation) системи вільно доступна на умові ліцензії MIT і подібних до неї ліцензій[2].

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-го року.

Інтерфейси користувача

[ред. | ред. код]
GNOME 3.32 в середовищі 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. [3] Проте в 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-сервер складається з набору розширень, кожне з яких реалізує певні функції: від промальовування геометричних примітивів до прискорення обробки та виведення на екран тривимірної графіки з використанням можливостей відеоапаратури. Майже кожен з цих модулів можна відключити або налаштувати в конфігураційному файлі.

VESA Display Data Channel(DDC™) — стандарт обміну інформацією між монітором та графічною платою, що дозволяє монітору передавати дані про підтримувану роздільну здатність, частоти розгортки, виробника монітора і т. д. Модуль DDC підтримує версії 1 і 2 специфікації DDC. Відповідно до отриманих даних він встановлює основні параметри екрану або попереджує про невідповідність заданих користувачем параметрів.

X Resize, Rotate and Reflect Extension — розширення X-сервера, що реалізовує функції масштабування, повороту та відображення кореневого вікна. Використовується при зміні роздільної здатності, при динамічній заміні монітора (наприклад, при перемиканні з вбудованого екрану ноутбука на зовнішній монітор). Розсилає застосункам, що працюють, попередження про зміну конфігурації екрану.

X Rendering Extension надає функції для поєднання та виводу зображень на екран. Дозволяє обрізати зображення, накладати маску з кольорами з використанням альфа-каналу, використовувати різні фільтри, готувати й виводити текстову інформацію, а також відображати основні геометричні фігури.

Розширення Shape призначено для поліпшення вигляду інтерфейсу користувача. Серед його можливостей — відкидання тіні елементами інтерфейсу для створення ілюзії тривимірності, вікна та кнопки з округлими краями; можливість створювати різні фігури, відмінні від прямокутних.

Розширення Xinerama дозволяє представити декілька моніторів як один екран. З його допомогою можна виводити узгоджене зображення на великі екрани, складені з багатьох моніторів. Однак багато з існуючих в наш час віконних менеджерів не підтримують (або не повністю підтримують) специфікації Xinerama, і тому показують неадекватне зображення при використанні цього розширення.

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

Обмеження та критика X

[ред. | ред. код]

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

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

[ред. | ред. код]

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

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

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

[ред. | ред. код]

X Window System навмисно не включає в себе специфікації інтерфейсу користувача, так само, як і більшої частини міжпрограмної взаємодії. Завдяки цьому виникли різноманітні інтерфейси, а також застосунки, що не завжди правильно працюють один з одним. Існує специфікація взаємодії клієнтів ICCCM, але вона знана як важка для правильної реалізації. Подальші спроби стандартизації (такі, як інструментарій Motif і середовище CDE) не виправили становища. Все це заважає як користувачам, так і програмістам. [6] В наш час[коли?] розробники зазвичай домагаються єдиного стилю в застосунках, орієнтуючись на одне конкретне середовище стільниці або на конкретний інструментарій. Це також дозволяє уникнути безпосередньої роботи з 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 і вище функціонують нормально[7] і набирають популярність в інструментарії елементів інтерфейсу.

Мережа

[ред. | ред. код]

Станом на червень 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, і залишивши після себе зростаючий комерційний вплив у розробці.[9] [10]

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

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

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

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

Нарешті, в лютому 2004 року проєкт XFree86 випустив версію 4.4 під обмеженішою ліцензією: у неї був доданий пункт, аналогічний рекламному пункту (англ. advertising clause) оригінальної ліцензії BSD. Багато проєктів, що покладалися на X, вважають таку ліцензію неприйнятною. FSF та Debian визнали доданий пункт несумісним з умовами GNU GPL.[27] Інші групи (наприклад, 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.[27]

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

Подальші розробки

[ред. | ред. код]

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

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

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

Назва

[ред. | ред. код]

Комп'ютерні фахівці часто скорочують повну назву «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.[32]
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 вертикального письма та підтримки символів, заданих користувачами.[33]
X11R6.4 31 березня 1998 Xinerama.[34]
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.[35]
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, значний рефакторинг коду.[36] Із одного набору сирцевих кодів отримали модульну версію 7.0 та монолітну версію 6.9.
X11R7.1 22 травня 2006 Покращення EXA; інтеграція Kdrive; AIGLX; покращення в підтримці ОС та платформ.[37]
'X11R7.2' 15 лютого 2007 Видалення LBX.[38]
X11R7.3 6 вересня 2007 Xorg server 1.4 — see Server14Branch for more details. Highlights:
  • RandR 1.2 з підтримкою гарячого під'єднання монітора (з реконфігурацією «на льоту» і перемиканням режиму)
  • «Гаряче під'єднання» пристроїв вводу, підтримка тачскрінів і планшетів (за допомогою HAL або D-Bus)
  • KDrive: деякі покращення, підтримка множинних пристроїв вводу
  • Підтримка DTrace на OpenSolaris
  • EXA: покращення
  • Нова програма: xbacklight
  • Нові відео-драйвери: xf86-video-glide, xf86-video-vermilion
  • Нові сторінки довідника для API: libXinerama, libXcomposite, функції XKB у libX11, функції Xtest у libXtst
  • Підтримка каталогів шрифтів у font path
  • xdm: додано підтримку Xft[39]
X11R7.4 23 вересня 2008 XServer 1.5.1, XACE, переробка PCI, оптимізація EXA, _X_EXPORT, GLX 1.4, прискорений запуск та вимкнення.[40]
X11R7.5 26 жовтня 2009 XServer 1.7.0[41]
X11R8.0 2 квітня 2010 XServer 1.8.0[42], перехід від керування пристроями з підсистеми HAL (Шар апаратних абстракцій) на використання бібліотеки udev, можливість створення файлів конфігурації для окремих пристроїв, змінились ABI інтерфесу, відповідальні за ввід/вивід відео та деякі розширення[43]

Дивись також

[ред. | ред. код]

Примітки

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


Джерела

[ред. | ред. код]
  • Лінда Муі, Ерік Пірс. 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.

Посилання

[ред. | ред. код]
Помітні реалізації