Hệ thống X Window

Trong khoa học máy tính, **Hệ thống X Window** (còn được gọi tắt là **X11** hay **X**) là một windowing system dùng để hiển thị đồ họa bitmap. Nó cung ứng một bộ các công cụ và giao thức cho phép người dùng xây dựng các giao diện đồ họa (GUI) trong hệ điều hành Unix, Tương tự Unix, và OpenVMS.

X originated as part ofat Massachusetts Institute of Technology (MIT) in 1984. 

X cung cấp khuôn khổ cơ bản cho một môi trường GUI: vẽ và dịch chuyển các cửa sổ trên màn hình, tương tác với chuột và bàn phím. X không quy định giao diện người dùng - các trình khách làm việc này. Do vậy, kiểu cách biểu thị trên màn hình của các môi trường X rất đa dạng. Các chương trình khác nhau có thể trình bày các giao diện rất khác nhau.

Các tính năng xuyên dụng mạng của X bao gồm: máy tính nơi mà các chương trình ứng dụng (trình khách) đang chạy có thể khác với máy tính tại chỗ của người dùng (trình phục vụ với nhiệm vụ hiển thị). Cách sử dụng thuật ngữ "trình khách" (*client*) và "trình phục vụ" (*server*) của X ngược với cách nghĩ thông thường của nhiều người. X quan niệm "trình phục vụ" là phần hiển thị địa phương của người dùng (trình phục vụ việc hiển thị), chứ không phải nói đến một máy tính ở xa.

X bắt nguồn từ Project Athena tại MIT vào năm 1984. Giao thức X đã ở phiên bản 11 (do đó có tên là "X11") kể từ tháng 9 năm 1987. Tổ chức X.Org Foundation dẫn đầu dự án X, với phiên bản tham chiếu hiện tại, X.Org Server, có sẵn dưới dạng phần mềm tự do nguồn mở theo Giấy phép MIT và các giấy phép tương tự. http://www.x.org/X11R6.8.2/doc/LICENSE1.html#1

## Mô hình khách-phục vụ và tính năng xuyên dụng mạng

X sử dụng mô hình *client-server*: một *trình phục vụ X* có thể liên lạc với nhiều *trình khách* khác nhau. Trình phục vụ (hay trình chủ) thu nhận các yêu cầu xuất hiển thị đồ họa (các cửa sổ) và hồi âm thông tin vào của người dùng (từ bàn phím, chuột, hay màn hình cảm ứng (*touchscreen*)). Trình phục vụ có thể đóng một trong các vai trò sau:
* là một trình ứng dụng hiển thị trên một cửa sổ của một hệ thống hiển thị khác.
* là một chương trình hệ thống (*system program*) điều khiển việc phát hình của một máy tính cá nhân.
* là một phần cứng chuyên dụng.

Với thuật ngữ "khách-phục vụ" (*client-server*) được dùng ở đây phải hiểu theo cách – thiết bị đầu cuối của người dùng là "trình phục vụ", còn các ứng dụng từ xa lại là "trình khách" – quan niệm này thường gây sự khó hiểu cho những người mới dùng X, vì các từ có vẻ như bị đảo ngược. X chọn chỗ đứng của mình từ góc độ của chương trình ứng dụng, hơn là từ góc độ của người dùng, hay từ góc độ của phần cứng. Phần hiển thị địa phương của X cung cấp các dịch vụ hiển thị cho chương trình ứng dụng, và vì vậy nó hành động như một trình phục vụ. Bất cứ một chương trình ứng dụng từ xa nào dùng các dịch vụ này của nó, sẽ hành xử như một trình khách.

Giao thức truyền thông giữa trình phục vụ và trình khách vận hành với tính năng xuyên dụng mạng: trình phục vụ và trình khách có thể cùng hoạt động trên cùng một máy tính hoặc trên các máy tính khác nhau với các kiến trúc và hệ điều hành có thể khác nhau. Nhưng trong trường hợp nào chúng cũng vận hành như nhau. Trình phục vụ và trình khách thậm chí còn có thể liên lạc với nhau một cách bảo mật qua Internet bằng cách dùng giao thức đường hầm (*tunneling*) cho kết nối qua một phiên mạng (*network session*) được mã hóa.

Để khởi động một trình khách từ xa hiển thị tại một trình phục vụ địa phương, thông thường, người dùng sẽ mở một cửa sổ đầu cuối và dùng telnet hay ssh để kết nối với máy tính ở xa, ra lệnh cho nó hiển thị tại máy của người dùng (ví dụ, gọi câu lệnh export DISPLAY[*máy của người dùng*]:0 trên màn hình của máy từ xa - máy đang chạy trình bao BASH), sau đó, khởi động trình khách (ở máy tính từ xa). Trình khách khi đó sẽ kết nối với trình phục vụ tại máy địa phương và trình ứng dụng từ xa sẽ hiển thị tại máy địa phương, tiếp nhận dữ liệu vào thu được từ các thiết bị nhập dữ liệu tại địa phương. Một cách khác là, máy địa phương có thể chạy một chương trình giúp đỡ nhỏ để nối tới một máy từ xa và khởi động ứng dụng khách mà người dùng mong muốn tại đó.

Những thí dụ thực tế về các trình khách từ xa bao gồm:
* quản trị một máy từ xa bằng đồ họa 
* chạy một chương trình mô phỏng đòi hỏi năng lực tính toán cao trên một máy Unix ở xa và hiển thị kết quả trên một máy tính địa phương dùng hệ điều hành Windows.
* chạy phần mềm đồ họa trên nhiều máy tính cùng một lúc, kiểm soát hoạt động của chúng bằng một màn hình duy nhất, một bàn phím, và một con chuột.

## Các nguyên lý thiết kế của X

Vào năm 1984 Bob Scheifler và Jim Gettys đặt ra các nguyên lý ban sơ của X như sau:
* *Đừng thêm một chức năng mới nào trừ khi người thực hiện không thể hoàn thành một ứng dụng thật sự nếu thiếu chức năng đó.*
* *Việc quyết định hệ thống không phải là gì quan trọng không kém việc quyết định hệ thống là gì. Không phục vụ nhu cầu của cả thế giới, thay vào đó, tạo cho hệ thống có khả năng mở rộng được, sao cho các tính năng bổ sung về sau có thể được đáp ứng theo kiểu tương thích xuôi (tương thích với các phiên bản sau).*
* *Điều duy nhất tồi tệ hơn việc tổng quát hóa từ một ví dụ là tổng quát hóa không từ một ví dụ nào cả.*
* *Nếu không thể hiểu một vấn đề một cách trọn vẹn, thì có lẽ tốt nhất là đừng nên đưa ra một giải pháp nào hết."
* *Nếu ta có một giải pháp có thể đạt được 90% hiệu ứng mong muốn cho 10% công việc, thì ta nên chọn giải pháp đơn giản hơn." (Xin xem thêm Tồi hơn nhưng tốt hơn)
* *Cô lập các phức tạp một cách hết mức có thể."
* *Cung cấp cơ chế chứ không cung cấp qui chế. Cụ thể, đặt các qui chế về giao diện người dùng vào tay của trình khách."

Trong thời gian thiết kế X, nguyên lý đầu tiên đã được điều chỉnh thành: *Không bổ sung tính năng mới, trừ phi bạn biết một ứng dụng cụ thể nào đó sẽ đòi hỏi tính năng đó.*

Từ đó trở đi, X hầu như giữ vững các nguyên lý của mình. Bản cài đặt tham khảo được phát triển với một tầm nhìn hướng tới sự mở rộng và cải thiện cài đặt, trong khi vẫn gần như hoàn toàn tương thích với giao thức nguyên thủy từ năm 1987.

## Giao diện người dùng

X cố ý không chứa đặc tả về giao diện người dùng của ứng dụng, chẳng hạn các nút (*button*), trình đơn (*menu*), thanh tên cửa sổ (*window title bar*). Thay vào đó, các chi tiết được cung cấp/xác định bởi các phần mềm người dùng, chẳng hạn các chương trình quản lý cửa sổ (*window manager*), các bộ công cụ điều khiển giao diện đồ họa (*GUI widget toolkit*) và các môi trường mặt bàn (*desktop environment*), hoặc các giao diện đồ họa đặc thù của chương trình ứng dụng, như phần mềm tính hóa đơn bán hàng thường thấy trong siêu thị hay các cửa hiệu lớn. Chính vì vậy mà trong những năm qua, giao diện đặc thù của X đã biến đổi rất nhiều.

Chương trình quản lý cửa sổ là điều hành sự bố trí và hình thức của các cửa sổ ứng dụng. Nó có thể có giao diện gần giống giao diện tương ứng của Microsoft Windows, hoặc của Macintosh (ví dụ Kwin trong KDE và Metacity trong GNOME), hoặc có thể có giao diện khác hẳn, chẳng hạn quản lý cửa sổ theo kiểu lát gạch (*tiling window manager*). Trình quản lý cửa sổ có thể là một phần mềm rất cơ bản chỉ bao gồm những bộ phận chủ chốt (ví dụ như twn - bộ quản lý cửa sổ cơ bản được cung cấp kèm theo X) hoặc là một phần mềm cung cấp nhiều chức năng gần như một môi trường mặt bàn toàn phần (thí dụ Enlightenment).

Rất nhiều người dùng sử dụng X với môi trường mặt bàn toàn phần, trong đó bao gồm một trình quản lý cửa sổ, nhiều chương trình ứng dụng khác nhau và một giao diện nhất quán. GNOME và KDE là những môi trường mặt bàn được nhiều người ưa chuộng. Môi trường chuẩn Unix là Môi trường mặt bàn chung (*Common Desktop Environment - viết tắt là CDE*).

Tổ chức freedesktop.org (*The freedesktop.org initiative*) đã đề xuất khả năng tương tác giữa các giao diện mặt bàn và những thành phần phần mềm cần thiết cho một giao diện mặt bàn X có khả năng cạnh tranh cao.

## Chương trình quản lý cho X
::*Xem thêm bài chi tiết [[Chương trình quản lý cửa sổ X|Chương trình quản lý X]]*
Số lượng chương trình quản lý cho X có rất nhiều hầu hết đều là miễn phí hay tự do. Trong số đó hai chương trình được nhiều người yêu thích và sử dụng nhất (chiếm trên 90% thị phần của các trình quản lý cho X) đó là GNOME và KDE.

### GNOME và KDE
Hai đối tượng này đều có đầy đủ các tính năng mặt mạnh và yếu:

**KDE:**
::*xem thêm bài chi tiết về [[KDE]]
* Nguyên thủy là lối chơi chữ từ "Kool Desktop Environment" (chữ Kool là chữ lóng đồng âm với chữ "cool" tức là "Môi trường Mặt bàn ngầu"). KDE ra đời từ 1996 bởi Matthias Ettrich.
* Được xây dựng bằng ngôn ngữ [[C++]]
* Giao diện đồ họa dựa trên bộ công cụ [[Qt]] của Trolltech. Chính do, Qt ban đầu không phải là nguồn mở đã gây ra nhiều vấn đề tranh cãi. Mặc dù sau đó, "Qt" đã được Trolltech mở rộng một giấy phép nguồn mở đặc biệt cho "Qt" nhưng sự việc cũng đã trễ, GNOME đã ra đời và trở thành đối thủ cạnh tranh quan trọng nhất.
* KDE thực tế có nhiều ứng dụng hơn là GNOME, tuy vậy, chất lượng phần mềm không chắc hơn được các ứng dụng của GNOME.

*'GNOME:*'
::*xem thêm bài chi tiết về GNOME
* Đề án khởi động từ năm 1997 Miguel de Icaza and Federico Mena, để giải quyết tình trạng KDE đã sử dụng một chương trình nguồn kín để phát triển phần mềm thay vì chương trình lấy từ nguồn mở. 
* Mã nguồn dựa trên OOP thời kỳ đầu, nên các chương trình thư viện vẫn còn dùng ngôn ngữ C thay vì C++
* Rất nhiều thành phần cơ bản của GNOME phát triển từ công cụ GIMP
* Các thành phần phát triển trên cơ sở kiến trúc CORBA

Hiện nay, hầu hết các hệ điều hành Linux mở đều cho phép người dùng lựa chọn giữa hai trình quản lý này

Xem thêm lịch sử cạnh tranh giữa hai phần mềm này từ trang GNOME vs KDE&nbsp;– the history.

### Một số chương trình quản lý X khác
Phần này chỉ giới thiệu một số trình quản lý X nào có giấy phép theo hình thức mở và còn sử dụng bởi nhiều người.

* IceWM: Tập trung trong mục tiêu cung ứng một chương trình quản lý X nhỏ gọn nhanh và linh hoạt. Ứng dụng chính của nó thường được dùng trong các thiết bị khởi động được vì nó chiếm chỗ rất ít. Trang Web tìm thấy ở IceWM. Giấy phép LGPL
* Fvwm phát triển bởi Robert Nation, là trình quản lý đầu tiên thỏa mãn tiêu chuẩn ICCCM. Nó được tạo ra nhằm giảm tối thiểu việc sử dụng bộ nhớ, cung ứng khả năng hiển thị 3-chiều và một mặt bàn ảo đơn giản. Trang Web tại Fvmwm. Giấy phép GPL
* Ctwm phát triển bởi Claude Lecommandeur, là một mở rộng của twm, nó có thể cung ứng đồng thời đến 32 màn hình ảo có thể có cấu hình riêng biệt, gọi là "workspace" (không gian làm việc). Người dùng có thể chuyển đổi không gian làm việc rất dễ dàng. Trang Web tại: Ctwm . Giấy phép BSD
* AfterStep dựa trên Fvwm, nhưng thiết kế để tạo cảm giác như là giao diện của NEXTSTEP. Trang Web tại AfterStep. Giấy phép GPL
* Window Maker do Alfredo Kojima, cũng để mô phỏng giao diện của NeXT, như AfterStep, nhưng với một cách tiếp cận hoàn thiện hơn. Trang Web Window Maker. Giấy phép GPL.
* Scwm (từ chữ "Scheme Constraints Window Manager"). Đây là trình quản lý X động và mở rộng được, đây cũng là công cụ văn lệnh cho hệ thống X window. Trang Web tại Scwm. Giấy phép GPL

## Các cài đặt

Cài đặt tham khảo của X.org được coi là cài đặt chuẩn mực của X. Do việc cấp giấy phép tự do, nhiều biến thể của nó đã xuất hiện, một số tự do và một số có bản quyền. Các nhà cung cấp UNIX thương mại có xu hướng lấy cài đặt tham khảo và chỉnh sửa nó để thích hợp với phần cứng, họ thường biến đổi nó theo tùy thích ở mức độ cao và bổ sung vào đó những phần mở rộng độc quyền của mình.

Cho đến năm 2004, XFree86 cung cấp biến thể phổ biến nhất của X dùng trong các hệ thống với hệ điều hành tựa-UNIX miễn phí. XFree86 khởi đầu là phần mềm chuyển mã (*port*) của X cho các máy PC tương thích 386 (*386-compatible PC*), song đến cuối thập niên kỷ 1990, nó trở thành nguồn cải tiến kỹ thuật lớn nhất của X và là vị quản lý "de facto" của việc phát triển X http://www.xfree86.org/pipermail/forum/2004-February/003945.html. Tuy vậy, từ năm 2004 đến nay, cài đặt tham khảo của X.Org, một phân nhánh của XFree86, đã chiếm ưu thế.

Trong khi những người hâm mộ máy tính thường chỉ xem X như là một phần của Unix, trên thực tế, các trình phục vụ X còn được cung cấp sẵn trong các môi trường đồ họa khác. Hệ điều hành OpenVMS của Hewlett-Packard kèm một phiên bản của X với CDE - còn được gọi là DECwindows - làm môi trường mặt bàn chuẩn của nó. Hệ điều hành Mac OS X phiên bản 10.3 của Apple (còn gọi là Panther - con báo đen), và những phiên bản tiếp theo của nó, đều có kèm các trình ứng dụng X11.app được xây dựng trên nền của XFree86 4.3 và X11R6.6, với sự tích hợp tốt hơn với hệ điều hành Mac OS X. MacX là một trong các trình phục vụ X do các công ty bên ngoài xây dựng cho hệ điều hành Macintosh System phiên bản 7, 8 và 9.

Bản thân Microsoft Windows không hỗ trợ X, song có nhiều bản cài đặt do các hãng khác phát triển, dưới dạng tự do như Cygwin/X, Xming, WeirdMind và WeirdX, hoặc dưới dạng sản phẩm độc quyền như Xmanager, WiredX, Exceed và X-Win32. Chúng thường được dùng để điều khiển các trình khách ở xa của X.

Khi chạy X trong một hệ thống cửa sổ (hệ thống chủ) khác (chẳng hạn Microsoft Windows hay Mac OS), hệ thống X thường chạy trong chế độ "phi nguồn", có nghĩa là môi trường cửa sổ bản địa quản lý cửa sổ nguồn (hình nền và các trình đơn liên quan) và đồng thời quản lý các yếu tố hình học của cửa sổ X đang chạy, tuy một số trình phục vụ (chẳng hạn Exceed) còn có thể tạo cho trình khách ở xa một cửa sổ nguồn để hiển thị tại đó, cửa sổ này là một cửa sổ riêng biệt nằm trong hệ thống chủ.

### Thiết bị đầu cuối X

Một *thiết bị đầu cuối X* (*X terminal*) bao gồm một phần cứng chuyên dụng chạy một trình phục vụ X dưới dạng thin client. Kiến trúc này đã trở nên phổ biến cho việc xây dựng các khu thiết bị cuối giá rẻ cho nhiều người dùng cùng sử dụng một máy chủ cỡ lớn. Công dụng này rất hợp với chủ ý ban đầu của dự án MIT.

Các thiết bị đầu cuối X có thể thăm dò mạng (broastcast domain địa phương) bằng giao thức XDMCP (*X Display Manager Control Protocol - giao thức điều khiển quản lý hiển thị X*) để tạo một danh sách những máy chủ hiện có thể chạy trình khách từ đó. Máy chủ khởi đầu cần chạy chương trình quản lý hiển thị X.

Các thiết bị đầu cuối X chuyên dụng (phần cứng) càng ngày càng trở nên ít phổ biến. Một PC với một trình phục vụ X thường cung cấp các chức năng tương tự nhưng với giá thành thấp hơn.

## Các hạn chế và các phê phán

Cuốn "UNIX-HATERS Handbook" (*Sổ tay những người ghét UNIX*) đã dành toàn bộ chương "Thảm họa X Windows - The X-Windows Disaster" để nói về các vấn đề của X vào thời kỳ cuối thập niên 1980 đầu thập niên 1990. Cuốn "Tại sao X không phải là hệ thống cửa sổ lý tưởng - Why X Is Not Our Ideal Window System" (1990) của Gajewska, Manasse và McCormack đã miêu tả chi tiết những trục trặc trong giao thức kèm theo các đề nghị cải tiến.

### Thiết bị phần cứng Video
Giới hạn hiệu năng làm việc của đồ họa máy tính hiện nay nằm chủ yếu trong các hàm xử lý đồ họa cao cấp. Các nhà cung cấp thường cài đặt các hàm xử lý đồ họa này trong các phần mềm điều vận độc quyền của mình (*proprietary drivers*), và họ thường viết cho hệ điều hành Windows trước (vì nó chiếm thị phần cao nhất). XFree86 và X.org Server đã thực hiện kỹ nghệ ngược (*reverse engineering*) đối với các bộ điều vận phần mềm (*sofware drivers*) cho nhiều card đồ họa cổ hơn. Tuy nhiên, khi thị trường đồ họa cung cấp các sản phẩm thuộc loại "đỉnh cao kỹ thuật" (*state-of-the-art*), nhiều nhà cung cấp coi các chi tiết lập trình là bí mật thương mại hay các phát minh có thể cấp bằng sáng chế mà họ không muốn tiết lộ.

Nhiều cài đặt hiện nay của X trực tiếp điều khiển phần cứng đồ họa. Một trình phục vụ hoạt động có lỗi có thể làm cho việc hiển thị trên màn hình lệch lạc đến mức độ không sử dụng được nữa, thậm chí nếu hệ điều hành ở bên dưới vẫn tiếp tục vận hành. Tình huống này có thể cần đến việc khởi động lại máy. Giao diện Hạ tầng cơ sở dựng ảnh trực tiếp (*Direct Rendering Infrastructure*) làm giảm nhẹ tình trạng này.

### Các tính năng giao diện người dùng
X cố tình không chứa đặc tả về giao diện người dùng hay về phần lớn các giao tiếp giữa các trình ứng dụng. Điều này dẫn tới việc một số giao diện rất khác nhau và một số ứng dụng không phải lúc nào cũng hoạt động ổn thỏa với nhau. ICCCM (*Inter-Client Communication Conventions Manual - Chỉ dẫn về quy ước giao tiếp giữa các trình khách*), đặc tả về sự tương hoạt giữa các trình khách, có tiếng là khó cài đặt một cách đúng đắn. Những cố gắng về tiêu chuẩn sau này như Motif hoặc CDE cũng không giúp giải quyết được vấn đề. Điều này gây chán nản cho người dùng và các lập trình viên trong một thời gian dài http://lists.debian.org/debian-user/1996/11/msg00637.html. Hiện nay, các lập trình viên đồ họa thường giải quyết vấn đề nhất quán về diện mạo và cảm nhận (*look and feel*) cũng như về giao tiếp của trình ứng dụng bằng cách lập trình cho một môi trường mặt bàn cụ thể hoặc chỉ dùng một bộ công cụ khiển tố cụ thể. Với cách này, họ còn tránh được việc phải trực tiếp đối mặt với ICCCM.

Giao thức X không cung cấp tiện ích để xử lý âm thanh, nó để cho hệ điều hành tự cung cấp các hỗ trợ cho các phần cứng xử lý âm và chơi nhạc. Do nhu cầu sử dụng âm thanh của người dùng ngày càng tăng, điều đó dẫn đến nhiều hệ thống âm thanh con không tương thích. Trước đây, hầu hết các lập trình viên cố tình lờ đi các vấn đề về mạng mà chỉ dùng các API âm thanh đặc thù của hệ điều hành tại máy địa phương. Thế hệ đầu tiên của các hệ thống âm thanh có tính khách-phục vụ gồm có rplay và NAS (*Network Audio System*). Những nỗ lực gần đây hơn đã tạo nên EsounD (GNOME) và ARts (KDE). Một hệ thống khác cũng đã bắt đầu được phát triển, đó là MAS (*Media Application Server*).

Cho đến gần đây, X chưa có một phương pháp tốt nào để giải quyết việc in ra các hiển thị trên màn hình. Nhiều trình khách của X cho in ra ở dạng PostScript hoàn toàn khác với những gì nó gửi tới trình phục vụ. Xprint xuất hiện lần đầu tiên trong X11R6.3. Phía trình khách hoạt động khá tốt, song nhiều cài đặt bên trình phục vụ thì không. Các phiên bản từ X11R6.8 trở đi đã hoạt động tốt http://xprint.mozdev.org/docs/Xprint_FAQ.html#contra_xprint và nó tiếp tục nhận được sự hỗ trợ bộ công cụ (*toolkit support.*).

### Mạng

Hiện nay, không ai có thể tách một trình khách X hay một phiên làm việc X ra khỏi trình phục vụ và nối nó lại với một trình phục vụ khác, như người ta có thể làm với hệ thống mạng ảo VNC (*Virtual Network Computing*). Người ta đã bắt đầu làm việc để bổ sung tính năng này cho X.

Ở chế độ mặc định, giao thông mạng giữa một trình phục vụ X và một trình khách X ở xa không được mã hóa. Một kẻ tấn công với một phần mềm nghe trộm gói tin (*packet sniffer*) có thể chặn và đọc thông tin. Hầu hết người dùng giải quyết vấn đề này bằng cách nối X ngầm (*tunneling*) qua SSH; vì hầu hết các cài đặt của SSH đều hỗ trợ kết nối ngầm cho các trình ứng dụng X, mặc dù, ở chế độ mặc định, tính năng này bị vô hiệu hóa.

Tính độc lập thiết bị và sự tách biệt giữa trình khách và trình phục vụ gây ra những phụ phí (*overhead*) về tài nguyên. Tính xuyên dụng mạng của X đòi hỏi các trình khách và trình phục vụ hoạt động biệt lập. Trước đây, ảnh hưởng này gây thiệt hại đáng kể về hiệu năng vận hành đối với các hệ thống vận hành biệt lập (*standalone*) khi so với những phiên bản cùng thời của Microsoft Windows hay Mac OS, đây là những hệ thống có các điều hành cửa sổ nhúng sâu bên trong hệ điều hành. Những người ủng hộ X đề xuất việc sử dụng từ 4 tới 8 MB RAM để đạt được hiệu năng hoạt động chấp nhận được; cho đến thời điểm giữa thập niên 1990, số lượng này là quá lớn và phí phạm khi so sánh với Windows và Mac OS. (Microsoft Windows phiên bản 3.0 - ra đời tháng 5 năm 1990 vẫn còn có thể chạy được trên những máy chỉ có 640KB dung lượng bộ nhớ, tuy nó đã có tính năng hỗ trợ phần mở rộng của bộ nhớ, và có thể dùng những địa chỉ bộ nhớ ngoài giới hạn 640KB. Năm 1984, máy tính Macintosh dùng giao diện đồ họa, được cài đặt chỉ có 512KB dung lượng bộ nhớ, 1/8 của 4MB, hay 1/16 của 8MB).

Các phiên bản hiện hành của Windows và Quartz của Mac OS X phân tách các hệ thống con nội bộ tương tự như sự phân chia trình khách/trình phục vụ trong X. Hiệu năng hoạt động và lượng tài nguyên sử dụng của chúng cũng tương đương với X khi chạy KDE hay GNOME. Phần lớn những phụ phí là do thời gian trễ trọn vòng (*round-trip delay time*) trên mạng giữa trình khách và trình phục vụ (do độ trễ mạng chứ không phải do chính giao thức). Các giải pháp tốt nhất cho vấn đề về hiệu suất hoạt động bao gồm việc chú trọng vào thiết kế của trình ứng dụng http://keithp.com/~keithp/talks/lbxpost/paper.html. Những quan niệm lầm tưởng thường thấy là những quan niệm cho rằng các tính năng mạng của X gây ra sự phức tạp quá mức cần thiết trong trường hợp người ta chỉ sử dụng trên một máy địa phương, và rằng năng lực liên kết mạng của X gây ảnh hưởng không mong muốn lên hiệu năng làm việc; các cài đặt hiện đại của X dùng socket địa phương và bộ nhớ chia sẻ, nên đòi hỏi rất ít phụ phí tài nguyên.

## Đối thủ cạnh tranh với X

Hầu hết các hệ thống tựa-UNIX dùng X làm phần đồ họa của mình. Tuy thế, một số người cũng đã cố gắng viết các chương trình khác để thay thế cho X. Trong lịch sử, những phần mềm đó bao gồm NeWS của Sun Microsystems - một phần mềm đã thất bại trên thị trường, và Display PostScript của NeXT - sau này trở thành Quartz của Apple dùng cho Max OS X.

Các cố gắng hiện thời, nhằm khắc phục những nhược điểm đã bị phê phán của X với ý định thay thế nó hoàn toàn, bao gồm Berlin/Fresco và Hệ thống Y window. Tuy nhiên, những phần mềm thay thế này không gây được mấy sự chú ý và nhiều nhà bình luận tỏ thái độ nghi ngờ về khả năng tồn tại của bất cứ một phần mềm thay thế nào không giữ tính tương thích ngược với các phiên bản cũ của X.

Các đối thủ cạnh tranh khác đã cố gắng tránh phụ phí của X bằng cách làm việc trực tiếp với phần cứng. Các đề án như vậy bao gồm thư viện phần mềm DirectFB và FBUI - một thư viện có dụng lượng mã rất nhỏ. Giao thức DRI (*Direct Rendering Infrastructure*), 
với mục đích cung cấp một giao diện đáng tin cậy tại mức nhân của hệ điều hành 
(*kernel-level*) với vùng đệm khung (*framebuffer*), có thể biến các cố gắng này trở nên thừa.

Các phương pháp khác được sử dụng nhằm đạt được tính xuyên dụng mạng cho các dịch vụ đồ họa bao gồm:
* SVG Terminal, một giao thức dùng để cập nhật nội dung của SVG trong trình duyệt với hiệu quả gần như đạt được chế độ thời gian thực.
* Virtual Network Computing: Một hệ thống nằm ở mức rất thấp, nó gửi các bitmap dạng nén qua mạng. Cài đặt của nó trong Unix còn kèm theo một trình phục vụ X.
* Citrix MetaFrame: Một sản phẩm "tựa-X" dành cho Microsoft Windows.
* Tarantella: Cung cấp một trình khách Java để dùng trong các trình duyệt Web.
* NX technology: Một giao thức tiết kiệm băng thông đối với việc hiển thị từ xa.

## Lịch sử

### Các phần mềm tiền bối của X

Trước khi X ra đời, nhiều hệ thống hiển thị đồ họa bitmap đã tồn tại, chẳng hạn như Alto (1973) và Star (1981) của hãng Xerox, Lisa (1983) và Macintosh (1984) của hãng Apple. Trong thế giới Unix thì có Andrew Project (1982) và thiết bị đầu cuối Blit của Rob Pike (1984).

X lấy tên của mình là phần mềm kế tục của một hệ thống cửa sổ đã có từ trước năm 1983 gọi là W (trong bảng ký tự Latin, chữ X đứng ngay sau chữ W). Hệ thống W window (*W Window System*) hoạt động dưới hệ điều hành V.

### Nguồn gốc và những phát triển ở thời kỳ đầu

Ý tưởng đầu tiên về X bắt nguồn từ MIT vào năm 1984 do sự cộng tác giữa Jim Gettys (từ Dự án Athena) và Bob Scheifler (từ Phòng thí nghiệm Khoa học Máy tính MIT). Lúc đó, Scheifler đang cần có một môi trường hiển thị có thể dùng được để soát lỗi (*debug*) hệ thống Argus. Dự án Athena (một dự án chung­ giữa DEC (*Digital Equipment Corporation*), MIT, và IBM nhằm mục đích tạo điều kiện cho tất cả các sinh viên khả năng truy cập dễ dàng các tài nguyên máy tính) cần một hệ thống đồ họa không phụ thuộc hệ nền (*platform-independent*) - có thể chạy trên các hệ điều hành và các cấu trúc máy khác nhau - để có thể liên kết các hệ thống đa dạng và không đồng nhất của nhiều nhà cung cấp. Hệ thống cửa sổ, lúc đó được phát triển bởi dự án Andrew tại Đại học Carnegie Mellon, không cấp giấy phép ra ngoài và tại thời điểm này không có một phần mềm nào khác có thể thay thế.

Dự án này giải quyết khó khăn trên bằng cách tạo ra một giao thức vừa có thể chạy các trình ứng đụng tại địa phương, vừa có thể sử dụng tài nguyên từ các nguồn ở xa. Vào khoảng giữa năm 1983, một bản chuyển mã đầu tiên của W cho Unix chạy chậm gấp 5 lần so với khi nó chạy trên hệ điều hành V. Đến năm 1984, Scheifler thay thế giao thức đồng bộ của W bằng giao thức không đồng bộ, và thay các danh sách hiển thị (*display list* - danh sách các lệnh vẽ hình đồ họa, hoặc các hình đồ họa dùng thường xuyên, để có thể dùng lại nếu cần mà không cần phải tính toán) bằng chế độ đồ họa hiển thị trực tiếp (*immediate mode graphics* - một chế độ trong kỹ thuật đồ họa vi tính cho phép trình ứng dụng thao tác và xử lý dữ liệu đồ họa trực tiếp trong bộ nhớ) để tạo nên phiên bản 1 của X. X trở thành môi trường hệ thống cửa sổ đầu tiên thực sự không phụ thuộc phần cứng và không phụ thuộc nhà cung cấp.

Scheifler, Gettys và Ron Newman tập trung vào việc và X tiến triển một cách nhanh chóng. Vào tháng 1 năm 1985, họ đã cho phát hành phiên bản 6. Khi đó, DEC đang chuẩn bị cho ra trị trường máy trạm Ultrix đầu tiên của mình, DEC phán đoán rằng X sẽ là hệ thống cửa sổ duy nhất có khả năng có sẵn kịp thời gian để sử dụng. Các kĩ sư DEC đã chuyển mã X6 (X phiên bản 6) sang cho hiển thị QVSS của DEC trên máy MicroVAX.

Trong quý 2 năm 1985, X đã được trang bị những hỗ trợ hiển thị màu sắc để hoạt động trên máy VAXstation-II/GPX của DEC, lập nên phiên bản 9 của X. Mặc dù MIT lúc này đã cấp giấy phép phát hành X6 cho một số nhóm bên ngoài với một lệ phí, họ quyết định cấp giấy phép cho X9 và các phiên bản trong tương lai dưới loại giấy phép mà sau này được gọi là giấy phép MIT. Phiên bản 9 của X (X9) ra đời vào tháng 9 năm 1985.

Một nhóm từ Đại học Brown chuyển mã phiên bản 9 của X cho máy IBM RT/PC (*[[RISC]] Technology Personal Computer - [[Máy tính cá nhân]] Công nghệ [[RISC]]*), song những vấn đề trong việc đọc dữ liệu trên RT đã buộc họ phải thay đổi giao thức một cách không tương thích, dẫn tới phiên bản 10 vào cuối năm 1985. Đến năm 1986, các tổ chức bên ngoài bắt đầu muốn lấy X. X10R2 đã được phát hành vào tháng 1 năm 1986, tiếp theo là X10R3 vào tháng 2 năm 1986. X10R3 trở thành phiên bản đầu tiên được triển khai rộng rãi khi hai công ty DEC và Hewlett-Packard phát hành các sản phẩm dựa trên phiên bản này. Các nhóm khác cũng chuyển mã X10 cho máy tính Apollo và máy trạm Sun, thậm chí cho cả máy IBM PC/AT. Ứng dụng thương mại đầu tiên của X (một hệ thống Thiết kế kỹ thuật cơ khí bằng máy tính (*mechanical computer-aided engineering*) chạy trên máy VAX và hiển thị trên PC với trình phục vụ X) đã được trình diễn tại triển lãm thương mại Autofact. Phiên bản cuối của X10, X10R4 ra đời vào tháng 12 năm 1986.

Mặc dù X10 cung cấp nhiều chức năng hay và mạnh, nhưng người ta đã thấy rằng đáng ra giao thức X đã có thể được thiết kế lại với tính trung lập phần cứng (*hardware-neutral*) cao hơn, trước khi nó được triển khai quá rộng rãi; nhưng một mình MIT không có đủ tài nguyên cho một cuộc thiết kế lại hoàn toàn như vậy. Tại thời điểm đó, Phòng thí nghiệm phần mềm miền Tây (*Western Software Laboratory - viết tắt là WSL*) của DEC đang bận với nhiều dự án. Smokey Wallace, lúc đó đang làm việc tại phòng thí nghiệm trên và Jim Gettys đề xuất rằng DEC WSL sẽ xây dựng X11 và làm cho nó trở thành phần mềm tự do sẵn có cho người dùng, dưới cùng các điều khoản về giấy phép tương tự như X9 và X10. Công trình được bắt đầu từ tháng 5 năm 1986, và đến tháng 8 thì giao thức đã được hoàn tất. Thử nghiệm Alpha của phần mềm được bắt đầu vào tháng 2 năm 1987, thử nghiệm Beta được bắt đầu vào tháng 5, và cuối cùng X11 được phát hành ngày 15 tháng 9 năm 1987.

Công trình thiết kế giao thức X11, được chỉ đạo bởi Scheifler, đã được bàn luận rất sôi nổi trên các danh sách thư mở trên mạng Internet mà lúc đó vẫn còn non trẻ. Do đó, X đại diện cho những dự án phần mềm tự do quy mô lớn đầu tiên.

### MIT X Consortium và tập đoàn X Consortium

Năm 1987, khi sự thành công của X càng ngày càng trở nên rõ ràng, MIT có ý định từ bỏ cương vị quản lý X, song trong kỳ họp với 9 nhà cung cấp vào tháng 6 năm 1987, họ đã nói với MIT rằng, để giữ cho X khỏi rơi vào tình trạng bị phân tán thành nhiều các phiên bản lẻ tẻ, không thống nhất trên thị trường, cần có một tổ chức trung lập đứng ra quản lý X. Do kiến nghị này, tháng 1 năm 1988, hội đồng MIT X Consortium đã được thành lập với danh nghĩa một tổ chức phi lợi nhuận của các nhà cung cấp với Scheifler là giám đốc, mục đích là định hướng các [ phát triển trong tương lai của X trong bầu không khí trung lập, vì quyền lợi của cả thương mại lẫn giáo dục. Tháng 1 năm 1988, Jim Fulton tham gia vào tổ chức và tiếp theo là Keith Packard vào tháng 3 năm 1988. Hai người tham gia với vai trò các nhà phát triển cao cấp, Jim tập trung vào Xlib, phông chữ, các trình quản lý cửa sổ, và các bộ công cụ, còn Keith cài đặt lại trình phục vụ. Cuối năm đó, Donna Converse và Chris Peterson cũng gia nhập, họ tập trung vào bộ công cụ và các bộ thành tố điều khiển, phối hợp chặt chẽ với Ralph Swick thuộc dự án Athena của MIT. MIT X Consortium đã tạo nhiều phiên bản quan trọng cho X11, bản đầu tiên (X11R2) vào tháng 2 năm 1988.

Vào năm 1993, tập đoàn X Consortium (một tổ chức phi lợi nhuận) được thành lập với tiền thân là tổ chức MIT X Consortium. Tổ chức này phát hành X11R6 vào 16 tháng 5 năm 1994. Vào năm 1995, nó tiếp nhận quyền quản lý bộ công cụ Motif và của Môi trường mặt bàn chung cho các hệ thống Unix. Cuối năm 1996, sau khi cho ra bản cuối cùng X11R6.3, X Consortium đã giải thể, để lại một di sản là ảnh hưởng thương mại ngày càng trong sự phát triển. http://www.advogato.org/article/844.html  http://www.usenix.org/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/

### Open Group

Đến giữa năm 1995, X Consortium trao quyền quản lý X cho Open Group (*Nhóm Mở*), một nhóm các nhà cung cấp hình thành từ đầu 1996 do sự sáp nhập của OSF (*Open Software Foundation*) và X/Open.

Đầu năm 1998, Open Group đã phát hành X11R6.4. Trong khi tìm cách đảm bảo nguồn tài chính cho việc tiếp tục phát triển X http://old.lwn.net/lwn/1998/0409/xstate.html , Open Group đã tách X11R6.4 ra khỏi các điều khoản cấp phép tự do truyền thống. Những điều khoản mới đã có thể ngăn cản việc X được thu nhận bởi các dự án (như XFree86) và thậm chí ngay cả bởi một số nhà cung cấp thương mại. Sau khi XFree86 đe dọa sẽ phân nhánh X http://www.cat.org.au/maffew/cat/xfree-dawes.html , tháng 9 năm 1998, Open Group đã buộc phải cấp phép X11R6.4 lại theo giấy phép truyền thống. http://cbbrowne.com/info/x11r6.4.html  Phiên bản cuối cùng của Open Group là X11R6.4 bản điều chỉnh 3.

### X.Org và XFree86

XFree86 ra đời vào năm 1992, bắt nguồn từ trình phục vụ X386 cho máy PC tương thích IBM phiên bản X11R5 năm 1991. Phiên bản này được viết bởi Thomas Roell và Mark W. Snitily và sau đó được công ty Snitily Graphics Consulting Services tặng cho MIT X Consortium. XFree86 tiến triển theo thời gian, từ chỉ chỗ chỉ là một bản chuyển mã của X cho đến vị trí của một bản cài đặt đứng hàng đầu nổi tiếng nhất và là một quản lý *[[de facto]]* của việc phát triển X http://www.xfree86.org/pipermail/forum/2004-February/003945.html.

Tháng 5 năm 1999, tổ chức Open Group thành lập X.Org. X.Org giám sát những phiên bản phát hành của X, từ phiên bản X11R6.5.1 trở đi. Sự phát triển của X tại thời điểm này đã trở nên suy tàn http://www.computerworld.com/softwaretopics/software/appdev/story/0,10801,67861,00.html . Kể từ khi X Consortium giải thể, hầu hết các cải tiến kỹ thuật đều đã được thực hiện trong dự án XFree86. http://keithp.com/~keithp/talks/Xarchitecture/Talk.htm. Năm 1999, do sự khuyến khích của nhiều công ty phần cứng http://slashdot.org/article.pl?sid=99/12/01/1342251 quan tâm đến việc sử dụng XFree86 trên hệ điều hành Linux và quan tâm đến vị thế của XFree86 là phiên bản nổi tiếng nhất, nhóm XFree86 đã gia nhập X.Org, http://xfree86.org/pipermail/forum/2003-March/000418.html  với cương vị là thành viên danh dự (làm việc không có lương).

Đến năm 2003, trong khi danh tiếng của Linux (cơ sở được cài đặt của X) tăng vọt, thì X.Org, tuy vẫn tồn tại, nhưng lại hầu như không hoạt động http://xfree86.org/pipermail/forum/2003-April/003127.html , và tất cả những nỗ lực phát triển hầu như chỉ xảy ra bên trong XFree86 mà thôi. Tuy vậy, bất đồng đáng kể đã xảy ra trong nội bộ XFree86. Đề án XFree86 bị ảnh hưởng nặng nề bởi mô hình phát triển quá theo kiểu mô hình nhà thờ và tình trạng các lập trình viên không thể truy cập vào CVS (*Concurrent Versions System*) - *một cơ sở dữ liệu lưu trữ các tập mã nguồn cùng chi tiết về những thay đổi của bảng mã nguồn đó* - và thực hiện lệnh commit để cập nhật những thay đổi trong bảng mã nguồn của mình http://www.xfree86.org/pipermail/forum/2003-March/002018.html  http://cygwin.com/ml/cygwin-xfree/2003-10/msg00328.html, và các nhà cung cấp phải bảo trì một số lượng khổng lồ các bộ điều chỉnh http://www.advogato.org/person/mharris/diary.html?start=5 . Tháng 3 năm 2003 tổ chức XFree86 đã khai trừ Keith Packard, người đã tham gia XFree86 sau khi X Consortium giải thể.http://www.xfree86.org/pipermail/forum/2003-March/001997.html  http://www.xfree86.org/pipermail/forum/2003-March/002165.html  http://www.xfree86.org/pipermail/forum/2003-April/003016.html 

X.Org và XFree86 bắt đầu thảo luận về việc tái tổ chức cho phù hợp với việc hướng dẫn sự phát triển của X một cách thích đáng http://www.xfree86.org/pipermail/forum/2003-March/000554.html  http://www.xfree86.org/pipermail/forum/2003-March/002415.html  http://xfree86.org/pipermail/forum/2003-April/003144.html . Từ muộn nhất là năm 2000, Jim Gettys đã cố gắng thuyết phục mọi người về một mô hình phát triển mở http://www.usenix.org/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm. Gettys, Packard, và một vài người nữa đã bắt đầu thảo luận một cách chi tiết các yêu cầu của một hệ thống quản lý hiệu quả (*effective governance*) cho X đối với sự phát triển mở của nó.

Cuối cùng, vào tháng 2 năm 2004, trong âm hưởng của cuộc tranh cãi về giấy phép của X11R6.4 đã nói ở trên đây, XFree86 đã phát hành phiên bản 4.4 dưới một giấy phép hạn chế hơn trước. Những điều khoản hạn chế này làm cho nhiều đề án đang phụ thuộc vào X cảm thấy không thể chấp nhận được http://yro.slashdot.org/article.pl?sid=04/02/18/131223. Những điều khoản mới được thêm vào dựa trên những điều khoản về quảng cáo của giấy phép BSD nguyên trước đây (*Berkeley Software Distribution license - Giấy phép phân phối phần mềm của Berkeley*), và bị Tổ chức phần mềm tự do (*Free Software Foundation*) và Debian xem là không tương thích với Giấy phép công cộng GNU (*GNU General Public License*) http://www.dwheeler.com/essays/gpl-compatible.html#xfree86 . Các nhóm khác cũng nhìn nhận rằng những điều khoản hạn chế tiếp theo có tính chất đi ngược lại với tinh thần ban đầu của X (chẳng hạn, OpenBSD đã đe dọa phân nhánh). Vấn đề về giấy phép, cộng với những khó khăn trong việc cập nhật các sửa đổi, làm cho nhiều người cảm thấy rằng thời điểm phải phân nhánh đã chín muồi http://www.osnews.com/story.php?news_id=6157.

### Sáng hội X.Org

Trong Đầu năm 2004 nhiều người từ X.Org và freedesktop.org đã nhóm lại và sáng lập ra Sáng hội X.Org (*X.Org Foundation*). Tổ chức Open Group trao quyền quản lý tên miền x.org cho hội này. Sự kiện này đã đánh dấu một sự thay đổi căn bản trong việc quản trị X. Trong khi những người quản lý của X từ năm 1988 (bao gồm cả Sáng hội X.Org trước đó) vốn là những tổ chức của các nhà cung cấp, thì Sáng hội X.Org này lại được sự chỉ đạo bởi các nhà phát triển phần mềm, sử dụng sự phát triển cộng đồng dựa trên mô hình chợ Bazaar. Mô hình phát triển này dựa trên sự tham dự của cộng đồng bên ngoài. Tư cách hội viên được mở cho từng cá nhân, và kết hợp cả tư cách hội viên dưới hình thức nhà tài trợ. Một vài tập đoàn lớn như Hewlett-Packard và Sun Microsystems hiện đang tài trợ cho Sáng hội X.Org.

Sáng hội giữ vai trò giám sát đối với sự phát triển của X: các quyết định kỹ thuật được đưa ra trên cơ sở thành tích bằng cách đạt được sự đồng thuận tương đối giữa các thành viên cộng đồng. Ban giám đốc không đưa ra các quyết định kỹ thuật; theo nghĩa đó, nó đã được thực hiện theo hình mẫu của Tổ chức GNOME - tổ chức gồm những người không can thiệp về mặt kỹ thuật. Sáng hội không thuê một nhà phát triển phần mềm nào.

Tháng 4 năm 2004, Sáng hội này đã cho phát hành X11R6.7, tức X.Org Server, dựa trên XFree86 4.4RC2 với các thay đổi được sáp nhập từ phiên bản X11R6.6. Gettys và Packard đã lấy phiên bản cuối cùng của XFree86 dưới giấy phép cũ, và đã đưa nhiều nhà phát triển cũ của XFree86 vào trong nhóm lãnh đạo http://www.dwheeler.com/essays/gpl-compatible.html#xfree86  bằng cách nhấn mạnh quan điểm về mô hình phát triển mở và việc gìn giữ tính tương thích với GPL.

X11R6.8 được phát hành vào tháng 9 năm 2004. Phiên bản này được bổ sung nhiều tính năng quan trọng, trong đó bao gồm sự hỗ trợ bước đầu đối với các cửa sổ trong suốt, cùng nhiều hiệu ứng hình ảnh tinh xảo khác, các phần mềm dùng để khuếch đại màn hình (*magnifiers*), các phần mềm dùng để tạo hình đại diện thu nhỏ (*thumbnailers*), và các tiện ích dùng để tích hợp với các hệ thống hiển thị 3D ấn tượng, như Croquet Project và Project Looking Glass của Sun. Các chương trình ứng dụng bên ngoài (được gọi là các chương trình quản lý tạo hình (*compositing managers*) cung cấp thể thức và quy cách cho hình ảnh bề ngoài của giao diện người dùng.

## Phương hướng trong tương lai

Với sự tồn tại của hai tổ chức X.Org và freedesktop.org, mạch phát triển chính của X lại bắt đầu tăng trưởng một cách nhanh chóng. Các lập trình viên có ý định là sẽ chỉ cho phát hành những phiên bản, hiện tại cũng như trong tương lai, khi chúng là những sản phẩm hoàn thiện, có thể dùng được, mà không chỉ là phần mềm nền tảng để cho các công ty buôn bán dựa vào mà gây dựng một sản phẩm của họ.

Ngày 21 tháng 12 năm 2005 http://xorg.freedesktop.org/wiki/PressReleases/X11R6970Released, X.Org đã cho phát hành phiên bản X11R6.9, dùng chi nhánh mã nguồn chính, ít thay đổi, cho những người vẫn còn dùng những sản phẩm cũ trước đây, và phiên bản X11R7.0, được lấy ra từ cùng một dòng mã nguồn như trên, nhưng được phân ra thành nhiều mô-đun (những phần có trách nhiệm giải quyết một vấn đề riêng trong phần mềm), mỗi phần có thể duy trì bởi một đề án riêng http://wiki.x.org/wiki/ModularizationProposal. Ngày 22 tháng 5 năm 2006, Sáng hội cho phát hành phiên bản X11R7.1, chỉ bốn tháng sau phiên bản 7.0. Phiên bản này có nhiều tăng trưởng về tính năng đáng quan tâm http://xorg.freedesktop.org/wiki/ChangesForX11R71.

Hầu cho phần mềm có đủ khả năng thích hợp được với nhiều hỗn hợp của phần cứng và hệ điều hành, X.Org dự tính sẽ chỉ cho phần mềm truy cập bộ điều hợp đồ họa thông qua OpenGL, và Hạ tầng cơ sở diễn hình trực tiếp (*Direct Rendering Infrastructure - viết tắt là DRI*). DRI xuất hiện lần đầu tiên trong phiên bản 4.0 của XFree86 và trở thành tiêu chuẩn từ phiên bản X11R6.7 trở đi http://keithp.com/~keithp/talks/xserver_ols2004/. Rất nhiều hệ điều hành bắt đầu cho thêm khả năng thao tác phần cứng trong bộ phận trung tâm của mình (*kernel*). Công việc này được tiến hành theo một chế độ gia tăng.

## Thuật ngữ
Người trong ngành vi tính thường rút ngắn cụm từ "Hệ thống X Window" thành "X11" hay đơn giản hơn là "X". Từ "X Windows" (theo tính cách của "Microsoft Windows") đã bị chính thức loại bỏ, và được coi là không chính xác, mặc dầu nó đã từng là một từ thông dụng trong những ngày đầu của lịch sử của X. Từ này cũng đã được dùng với một chủ tâm gây ấn tượng văn học, chẳng hạn như trong cuốn UNIX-HATERS Handbook*.

== Các công cụ thông dụng để phát triển ==
Các công cụ thông dụng để phát triển có rất nhiều ở đây chỉ đề cập đến những công cụ thường thấy nhất và có thể tải về để dùng từ trang nhà của các công cụ đó. Tùy theo khả năng, ý thích, và yêu cầu cụ thể người lập trình chỉ cần lựa chọn bộ công cụ thích hợp:

* GNU C/C++: người ta không còn hay rất ít dùng trực tiếp trình dịch này nhưng nó luôn luôn là bộ phận cơ bản cho các công cụ khác dùng để dịch từ mã riêng biệt ra các tập tin thực thi được. Trang nhà www.gnu.org/software/gcc/
* [[Bộ công cụ Motif]] và [[Lesstif]]: Đây là công cụ đầu tay cho lập trình GUI trên X. Nó hỗ trợ hầu hết các nguyên lý lập trình cho GUI. Trang nhà của Motif www.opengroup.org/openmotif và của Lesstif: www.lesstif.org/
* [[GTK]], GTK+, hay [[gtkmm]]: Đây là bộ công cụ đa nền dùng để tạo [[Giao diện người dùng đồ họa|GUI]]. Bộ công cụ này dựa trên [[GIMP]] dùng ngôn ngữ cơ sở là C/C++ cung cấp một [[Giao diện lập trình ứng dụng|API]] và thư viện các [[thành tố điều khiển|khiển tố]], rất tiện lợi và phổ biến khi dùng để phát triển phần mềm trên X. GDK là chữ viết tắt từ "The GIMP Toolkit". Trang nhà www.gtk.org/
* [[Qt]]: Qt là bộ công cụ khiển tố đa nền dùng để phát triển các chương trình GUI. Nó thường được dùng trên [[KDE]]. Qt được sản xuất bởi Trolltech, công ty Na Uy mà tên nguyên thủy là Quasar Technologies. Chữ "Q" được phát âm trong Anh ngữ là"cute" (tức là "dễ thương"). Trang nhà www.trolltech.com. Tuy nhiên, Qt chỉ miễn phí cho các ứng dụng không dùng để sinh lợi (*non comercial appplication*)
* [[FOX (bộ công cụ)|FOX]]: là bộ công cụ dựa trên C++ để phát triển GUI. FOX làm việc trên, IRIX, Solaris, HP/UX, AIX, Tru64 Unix, Windows 9x,NT,2K (VC++, GNUWIN32, Borland, VisualAge C++), FreeBSD, và Sequent. FOX cung cấp tương đối đầy đủ các khiển tố và các tính năng khác. Trang nhà www.fox-toolkit.com
* [[FLTK]] (đọc theo Anh ngữ là "fulltick") là một bộ công cụ GUI có khả năng [[Trình biên dịch#Trình biên dịch cùng bản và trình biên dịch chéo bản|dịch chéo bản]] dùng được UNIX/Linux (X11), Microsoft Windows, và Mac OS X. Nó được thiết kế nhỏ gọn và có tính mô-đun. Bao gồm một bộ xây dựng giao diện người dùng là FLUID có thể giúp tạo một ứng dụng trong hàng phút. Trang nhà www.fltk.org
* [[Tcl]]/[[Tk]]: Đây là 1 bộ gồm hai phần - Tcl là môi trường văn lệnh di chuyển được dùng được cho Unix, Windows, và Macintosh. Nó hỗ trợ nhiều đặc tính mà các shell (trình bao) thường có. Trong khi đó, Tk cung ứng các GUI di chuyển được cho GUI trên UNIX, Windows, và Macintosh. Các giao diện văn lệnh giúp cho Tk đặc biệt dễ phát triển các ứng dụng.Trang nhà www.tcl.tk/ 
* Hầu hết các bộ công cụ đều sử dụng các thự viện có sẵn để phát triển ứng dụng cho X trong đó đáng kể là [[GDK]], [[GIMP]](www.gimp.org/)...

== Lịch sử phát hành ==
:*Xem thêm XFree86#Lịch sử phát hành.*



== Xem thêm ==


* [[Lịch sử của Giao diện đồ họa người dùng]]
* [[Các tên màu X11]]

== Tham khảo ==

* Hania Gajewska, Mark S. Manasse and Joel McCormack, [http://www.std.org/~msm/common/protocol.pdf Why X Is Not Our Ideal Window System]  ([[PDF]]), *Software — Practice & Experience* vol 20, issue S2 (tháng 10 năm 1990)
* Linda Mui and Eric Pearce, *X Window System Volume 8: X Window System Administrator's Guide for X11 Release 4 and Release 5, 3rd edition* (O'Reilly and Associates, tháng 7 năm 1993; softcover ISBN 0-937175-83-8)
* [http://www.art.net/~hopkins/Don/unix-haters/x-windows/disaster.html The X-Windows Disaster] (*UNIX-HATERS Handbook*)
* Robert W. Scheifler and James Gettys: *X Window System: Core and extension protocols: X version 11, releases 6 and 6.1*, Digital Press 1996, ISBN 1-55558-148-X
* [http://keithp.com/~keithp/talks/Xarchitecture/Talk.htm The Evolution of the X Server Architecture] ([[Keith Packard]], 1999)
* [http://www.cat.org.au/maffew/cat/xfree-dawes.html The means to an X for Linux: an interview with David Dawes from XFree86.org]  (Matthew Arnison, CAT TV, tháng 6 năm 1999)
* [http://www.usenix.org/publications/library/proceedings/usenix2000/invitedtalks/gettys_html/Talk.htm Lessons Learned about Open Source] ([[Jim Gettys]], [[USENIX]] 2000 talk on the history of X)
* [http://cbbrowne.com/info/xbloat.html On the Thesis that X is Big/Bloated/Obsolete and Should Be Replaced] (Christopher B. Browne)
* [http://freedesktop.org/~jg/roadmap.html Open Source Desktop Technology Road Map]  (Jim Gettys, 09 tháng 12 năm 2003)
* [http://www.osnews.com/story.php?news_id=6157 X Marks the Spot: Looking back at X11 Developments of Past Year] (Oscar Boykin, *OSNews*, [[25 February]] [[2004]])
* [http://keithp.com/~keithp/talks/xserver_ols2004/ Getting X Off The Hardware] (Keith Packard, tháng 7 năm 2004 [[Ottawa Linux Symposium]] talk)
* [http://developers.slashdot.org/comments.pl?sid=75257&cid=6734612 Why Apple didn't use X for the window system] (Mike Paquette, Apple Computer)
* [http://www.dwheeler.com/essays/gpl-compatible.html#xfree86 The Cautionary Tale of XFree86]  (from *Make Your Open Source Software GPL-Compatible. Or Else.'' by David A. Wheeler, 16 February 2005)
* Motif Programming
* GUI Toolkits for The X Window System

## Liên kết ngoài
* X.Org Foundation (Trang chủ)
* Window managers for X .
* The State of Linux Graphics  (Jon Smirl, 30 August 2005)
* Writing a Graphics Device Driver and DDX for the DIGITAL UNIX X Server

### Những sự xác lập đáng chú ý
* XOrg Foundation Open Source Public Implementation of X11 — Thiết lập mẫu chính thức
* XFree86 — phiên bản được phổ biến nhất trong nhiều năm, đặc biệt trên các nguồn mở của nền tựa-Unix. 
* X11 for Mac OS X — X11.app, được tích hợp với Mac OS X