三年前写的,因为觉得我的旧博客所在的服务器的命运不可预测,所以将它迁移至此。我现在依然坚持此文的观点。
————
不懂 Unix 的人,注定最终还要重复发明一个蹩脚的 Unix。这句话对于 X Window 系统可能也很合适。
当 Google 刚推出在线办公软件的时候,许多人就开始准备昂首挺胸的进入云计算/云服务时代了。当 google 推出 Chrome OS 系统的时候,许多人赞叹在一个像浏览器的系统中就可以做很多传统桌面的事情了。当 Apple 的 ipad 和 iphone 大行其道的时候,热衷于谈论云计算的人越来越多。就像当年的大型机降格为 PC 一样,无数人认为 PC 终将降格为 ipad。在未来,大家只需要拿着一个很小很小的终端设备在机场、车站、大街上走来走去就利用云服务来完成所有曾经在 PC 上完成的事情。
一切看上去都很美好!
让我们将目光回转到上个世纪的 80 年代,那时 X Window 系统已经问世。假设全世界所有的计算机都安装了 X Window 系统,而且这些计算机也都在同一个网络上。那么我们可以在任意一个计算机 A 中通过网络去运行任意一个计算机 B 上的程序。比方说有一个叫做 Xoogle 的人,他在计算机上安装了 LibreOffice 软件,那么我可以在我的计算机中使用他机器中的 LibreOffice 来撰写文档,并且文档也可以保存在他的机器上。如果别的人也连接到了 Xoogle 的计算机上,那么他们可以做与我相似的事情。
了解 X Window 系统的人应该都知道,X Window 系统之所以有这种能力是因为它是 C/S 架构,即一个 X Window 系统系统由 X Server 与 X Client 两部分构成。如果我们将 X Server 看作是现代的 Web 浏览器(Firefox, Chrome 等),而将 X Client 看作是目前网络上所有的在线服务……看吧,上个世纪的 80 年代我们已经可以通过 X Window 系统来完成目前所有的云计算/云服务所处理的任务,而且更高效。要知道现在的 Google 的在线办公软件所具备的功能远不及 LibreOffice。但是,X Window 系统被许多类 Unix 系统的 GUI 用户批评,因为即使在同一台机器上的 X Client 与 X Server 之间也需要进行网络通讯方可完成所有 GUI 操作。于是,这些批评者翘首期待取消了 X Window 系统的这种网络架构的替代品——Wayland。
我觉得 Wayland 能直接利用显卡三维硬件加速进行窗口绘制算是一点进步(事实上 X Window 系统可以通过 GLX 扩展来做这件事情),它对 X Window 系统的其他改进实际上是上个世纪 90 年代 MS 和 Apple 已经做过的,这一点通过考察后两者的架构就可以知道。但是 MS 和 Apple 在做法上是有区别的,MS 一开始所做的仅仅是重写了一个不带 C/S 的“X Window 系统”,而 Apple 是重写了一个不带 C/S 并且包含许多 X Window 系统所不具备的功能的“X Window 系统”。
Bill Gates 在 2000 年发布 .Net 时说:“网络将由呈现式的平台转为完全的平台”,而 Google 的 Chrome OS 说的比他更直白:“将网络变成操作系统,让人类可以方便的各种各样的网络服务,就像人类在传统操作系统中所做的那样”。Mac OS X 都不甘寂寞弄了个像 FTP 服务器的 icloud ……这些非 X Window 系统系统在网络方面变的越来越像 X Window 系统了,它们似乎在偿还当初为了效率而删除的 C/S 架构所欠的债,偿还的方式就是在现有系统的基础上不断的打补丁。即便如此,它们与 X Window 系统相比依然存在一段距离。
拿 Google 的 Chrome OS 来说,你要想使用一个云服务,那么必须要将你的数据也要放到云端,例如你没有办法在自己的办公室里搭建一个 Google Docs,你只能是将数据放到 Google 的服务器上。X Window 系统则可以建立一个分布式的云环境,这意味着你既能拥有远程服务的能力,而且还可以将数据牢牢的攥在自己手中。
Windows 里有 rdp 协议,可以通过客户端与服务器端的桌面会话通信,并美其名曰这是 Windows 的 C/S 架构。我看了一些资料,发现在 Windows2008 里,有一个 Terminal Services RemoteApp,它支持远程的执行单个应用程序,就好像这个应用程序是在本机运行的一样。好吧,我同意 MS 在公元 2008 年终于做到了 X Window 系统在上个世纪 80 年代已经做过的事情。
也许不懂 X Window 系统的人,注定最终还要重复发明一个功能不健全的蹩脚的 X Window 系统,然后在上面一层又一层的封装,最后发现它竟然还是 X Window 系统……
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。