Bài này không có nguồn tham khảo nào. |
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 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ừ MIT vào năm 1984. Phiên bản giao thức hiện hành của X11 là phiên bản từ năm 1987. Tổ chức lãnh đạo đề án X là X.Org Foundation. Bản cài đặt tham khảo hiện hành, phiên bản X11R7.1, được cung cấp dưới dạng phần mềm tự do theo giấy phép của MIT và các giấy phép tương tự. [1]
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:
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:
Vào năm 1984 Bob Scheifler và Jim Gettys đặt ra các nguyên lý ban sơ của X như sau:
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.
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.
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.
Hai đối tượng này đều có đầy đủ các tính năng mặt mạnh và yếu:
KDE:
GNOME:
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 – the history.
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.
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 [2]Lưu trữ 2005-09-07 tại Wayback Machine. 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ủ.
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.
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.
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.
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 [3]. 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 [4]Lưu trữ 2010-11-26 tại Wayback Machine và nó tiếp tục nhận được sự hỗ trợ bộ công cụ (toolkit support.).
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 [5]. 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.
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:
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.
Ý 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.
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. [6] Lưu trữ 2010-12-15 tại Wayback Machine [7]
Đế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 [8] Lưu trữ 2007-12-14 tại Wayback Machine, 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 [9] Lưu trữ 2006-09-16 tại Wayback Machine, 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. [10] Phiên bản cuối cùng của Open Group là X11R6.4 bản điều chỉnh 3.
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 [11]Lưu trữ 2005-09-07 tại Wayback Machine.
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 [12] Lưu trữ 2005-01-14 tại Wayback Machine. 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. [13]. Năm 1999, do sự khuyến khích của nhiều công ty phần cứng [14] 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, [15] Lưu trữ 2005-02-12 tại Wayback Machine 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 [16] Lưu trữ 2005-02-12 tại Wayback Machine, 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 [17] Lưu trữ 2005-02-12 tại Wayback Machine [18], 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 [19] Lưu trữ 2011-01-16 tại Wayback Machine. 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ể.[20] Lưu trữ 2005-02-12 tại Wayback Machine [21] Lưu trữ 2005-02-12 tại Wayback Machine [22] Lưu trữ 2005-02-12 tại Wayback Machine
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 [23] Lưu trữ 2004-12-22 tại Wayback Machine [24] Lưu trữ 2005-01-06 tại Wayback Machine [25] Lưu trữ 2004-12-27 tại Wayback Machine. 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ở [26]. 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 [27]. 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) [28] Lưu trữ 2002-04-23 tại Wayback Machine. 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 [29].
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 [30] Lưu trữ 2002-04-23 tại Wayback Machine 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.
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 [31], 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 [32]. 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 [33].
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 [34]. 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.
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ó 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:
Phiên bản | ngày phát hành | Các thay đổi quan trọng nhất |
---|---|---|
X1 | Tháng 6 1984 | Lần đầu tiên dùng tên "X"; các thay đổi nền tảng tạo ra sự khác biệt với W. |
X6 | Tháng Giêng 1985 | Phiên bản đầu tiên cấp phép cho các công ty ngoài hữu hiệu. |
X9 | Tháng 9 1985 | Màu. Lần phát hành đầu tiên dưới giấy phép MIT. |
X10 | cuối 1985 | IBM RT/PC, AT (dùng DOS), và các OS khác |
X10R2 | Tháng Giêng 1986 | |
X10R3 | Tháng 2 1986 | Lần đầu tiên phát hành bên ngoài MIT. uwm trở thành trình quản lý cửa sổ chuẩn. |
X10R4 | Tháng 12 1986 | Phiên bản cuối cùng của X10. |
X11 | 15 tháng 9 năm 1987 | Lần phát hành đầu tiên của giao thức hiện thời |
X11R2 | Tháng 2 1988 | X Consortium phát hành lần đầu. [35] |
X11R3 | 25 Tháng 10, 1988 | XDM |
X11R4 | 22 tháng 12 1989 | XDMCP, twm đem vào như là một tiêu chuẩn của trình quản lý cửa sổ, các nâng cao ứngđụng, mở rộng SHAPE, nhiều phông chữ mới. |
X11R5 | 5 tháng 9, 1991 | PEX, Xcms (bộ quản lý màu), máy phục vụ phông chữ, X386 |
X11R6 | 16 tháng 5 1994 | ICCCM v2.0; Inter-Client Exchange; Quản trị X Synchronization; Mở rộng đồng bộ của X; Mở rộng X Image; mở rộng XTEST; X Big Requests; XC-MISC; nhiều thay đổI trong XFree86. |
X11R6.1 | 14 tháng 3, 1996 | mở rộng X Double Buffer; mở rộng X Keyboard; mở rộng X Record. |
X11R6.2 X11R6.3 (Broadway) |
23 tháng 12, 1996 | Chức năng Web, LBX. ấn bản cuối cùng của X Consortium. X11R6 là thẻ cho một bộ phận của X11R6.3 với chỉ có một số tính năng mới qua R6.1 là sự xây dựng của XPrint và Xlib với hỗ trợ về in dọc và ký tự định nghĩa bởi người dùng.[36] |
X11R6.4 | 31 tháng 3, 1998 | Xinerama. [37] |
X11R6.5 | X.org phát hành nội bộ, không phổ biến có mặt. | |
X11R6.5.1 | 20tháng 8, 2000 | |
X11R6.6 | 4 tháng 4, 2001 | Sửa các trục trặc, các thay đổi trong XFree86. |
X11R6.7.0 | April 6, 2004 | Phát hành đầu tiên của X.Org, sử dụng XFree86 4.4rc2. Hệ thống phát hành toàn diện đến tay người dùng. Bỏ XIE, PEX, và libxml2 ra (khỏi phiên bản)[38] |
X11R6.8.0 | 8 tháng 9, 2004 | cửa sổ xuyên suốt, XDamage, Distributed Multihead X, XFixes, Composite, XEvIE. |
X11R6.8.1 | 17 tháng 9, 2004 | sửa sự an toàn trong XPM. |
X11R6.8.2 | 10 tháng 2, 2005 | sửa các trục trặc, cập nhật các bộ điều vận |
X11R6.9 X11R7.0 |
21 tháng 12, 2005 | Từ cùng một mã nguồn cơ bản, phiên bản có tính mô-đun trỏ thành 7.0 và phiên bản đơn nhất 6.9 |
X11R7.1 | 2006 | Những thay đổi rộng lớn hơn không có trong 6.9/7.0 [39]. |