Cikada 0.0.2 发布
声明:这里不再更新

X Window 系统与云计算

Garfileo posted @ 2012年1月08日 14:44 in 不理解我也没什么 with tags X Window 系统 X11 云计算 , 9443 阅读

不懂 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 系统则可以建立一个分布式的云环境,这意味着你既能拥有远程服务的能力,而且还可以将数据牢牢的攥在自己手中。

补充

昨晚 galeki 说 Windows 里有 rdp 协议,可以通过客户端与服务器端的桌面会话通信,并美其名曰这是 Windows 的 C/S 架构。我又看了一些资料,发现在 Windows2008 里,有一个 Terminal Services RemoteApp,它支持远程的执行单个应用程序,就好像这个应用程序是在本机运行的一样。好吧,我同意 MS 在公元 2008 年终于做到了 X Window 系统在上个世纪 80 年代已经做过的事情。

不懂 X Window 系统的人,注定最终还要重复发明一个蹩脚的 X Window 系统,然后在上面一层又一层的封装。

转载时,希望不要链接文中图片,另外请保留本文原始出处:http://garfileo.is-programmer.com

amao 说:
2012年1月08日 15:22

我也是觉得所谓云计算是回归。
PC之前,大家不都是用终端登录到主机上再操作嘛。

ming 说:
2012年1月08日 16:59

Wayland是针对普通桌面用户的,抛弃臃肿低效的C/S架构实在是明智之举。
既然“它对 X Window 的其他改进实际上是上个世纪 90 年代 MS 和 Apple 已经做过的”, 那为何20年过去了,X Window依然我行我素?

Avatar_small
Garfileo 说:
2012年1月08日 17:41

@ming: X WINDOW 最大的特点就是网络透明,它要是把这个阉割了,那就不叫与时俱进,那叫历史的倒退了。至于桌面应用的问题,X WINDOW 也已经做了许多改进,例如提高了 c/s 架构在本地的通信效率,提供了一些扩展可以绕过 c/s 机制。

不过,我对 wayland 没有否定,虽然它在技术上并不比 90 年代的 windows 和 mac os x 先进,但是它满足了那部分一直批评 x window 设计非常废柴的人的需求,这也挺好。

yyc 说:
2012年1月08日 19:56

wayland不是依然是C/S架构的吗?
而且我一直没有明白wayland的渲染到底是谁干的 按照官网上给的架构说明还是由那个集成了WM和CM的Server干, 不过它又说wayland的优点在于可以客户端直接渲染~~~

P.S. 怎么给我这么个验证码: wtfk~~~

http://garfileo.is-programmer.com/simple_captcha/simple_captcha?distortion=high&image_style=simply_green&simple_captcha_key=ae23a7a532bce64cb8b46932905c291d91cc7596&time=1326023341

yyc 说:
2012年1月08日 20:01

而且我也不是很明白为啥就有那么多人那么热衷于云操作系统. 我宁愿在家搭个服务器然后ssh(甚至vnc)上来也不放心把全部自己的东西放到(即使他保证是很安全的)公共服务器上.~~~~~~~~~~

Avatar_small
Garfileo 说:
2012年1月08日 20:17

@yyc: wayland 的 server 只是做窗口的相关计算,它不管窗口的绘制;窗口绘制是由 client 来做的。由于本地机上的 server 不可能直接得到远程机器上的 client 的渲染结果,所以 wayland 不可能像 x window 那样网络透明。除非是像 windows 或 mac os x 那样利用远程桌面来搞。

yyc 说:
2012年1月08日 20:32

@Garfileo: 就是说Wayland和X Window架构上的区别就是删掉了独立的WM/CM加上删掉了透过服务端渲染??? 怎么还是不觉得有什么先进的地方~~~~~~~~~~

Avatar_small
依云 说:
2012年1月08日 23:08

@Garfileo: 不是吧,窗口由 client 管理?那同时连接多个服务器怎么办?

yyc 说:
2012年1月09日 06:05

@依云: 给我感觉就像是默认启用(不晓得能不能关掉) client 用opengl... 绘制某些窗口内容, 顶级窗口什么的应该还是由服务端内置的wm和cm管理的

Avatar_small
Garfileo 说:
2012年1月09日 07:49

@依云: 窗口不是由 wayland client 来管理,只是窗口渲染是由它来做。这个事情在 X 中通常是由 X Server 来完成的。

另外 wayland 本身是无法像 X 那样具备 client 远程连接 server 的能力,只不过它可以将 x server 作为一个 wayland client 来用,这与在 Windows 或 Mac OS X 上安装一个 x server 也没多少区别。

Avatar_small
Garfileo 说:
2012年1月09日 08:13

@yyc:

> 就是说Wayland和X Window架构上的区别就是删掉了独立的WM/CM加上删掉了透过服务端渲染??? 怎么还是不觉得有什么先进的地方

有关 Wayland 不支持网络透明性的资料见 [[http://lists.freedesktop.org/archives/wayland-devel/2010-November/000097.html]],它的设计者说 Wayland 将来可以支持远程渲染,这需要将 Client 的渲染结果作为像素数据发送到远程机器。这种办法显然是与 Windows 那边的 Rdp 技术相似。

单纯从技术上与现在的 Windows 与 Mac OS X 的图形架构相比,我觉得 Wayland 的确没啥先进性,而 X Window 在架构上与现在所有非 X Window 相比,前者依然很先进。我认为 Wayland 实际上是放弃了 X Window 的道路去走 MS 和 Apple 走过的路,企图通过这种方式来振兴 Linux 桌面。

Mike 说:
2012年1月09日 17:40

赞成。实际上现在所谓的云,还不如90年代Plan9做得好。

还有很多编程语言,现在无非在一直向60年代的Lisp学习。

包括机器自己,都在向曾经的PDP机学习(分段寻址 -> 平面内存空间)。

yyc 说:
2012年1月10日 07:47

@Garfileo: 还有一个一直没有明白的问题, 在Wayland的官网上面也没有找到.

Wayland说要振兴Linux桌面, 不过我怎么没有找到他解释桌面落后(如果真的落后的话)跟图形服务的架构/速度有啥关系啊 (我怎么觉得主要是显卡驱动+没什么人编应用啊~~~~~~~~)

Avatar_small
Garfileo 说:
2012年1月10日 08:31

@yyc: Wayland 可以删减许多的技术末节。X Window 经历这么多年,各种各样的扩展和改进,把架构变的看上去比较繁杂,并且存在许多冗余的地方。Wayland 架构显得更清晰,更容易让大家理解,其实挺好的。如果它也能像 X Window 那样原生就具有网络能力,那么我对它一点意见都没有。

可能有人会说 Wayland 如果也像 X Window 那样具有网络能力,那效率依然会低。我不认为会这样。例如 X Window 的 GLX 扩展是有一个总开关的,即 LIBGL_ALWAYS_INDIRECT,通过它可以让 X Client 通过 C/S 栈(间接渲染)或者绕过它(直接渲染)实现窗口显示。由于 Wayland 已经是假定所有显卡都支持 3D 硬件加速了,它如果也采用 GLX 这种处理方式,那么就可以既兼顾本地快速渲染又能兼顾网络渲染。

当 Wayland 革除了 X Window 的网络功能的时候,这表示着开发者是认为这种 C/S 架构对与窗口系统而言一点用处都没有,但事实上其他非 X Window 都是因为窗口系统不支持网络功能而不得不开发一些外围软件层来掩盖这方面的弱点。我认为 N 年后即便 Wayland 能成功,它顶多是第二个 Mac OS X Lion 或第二个 Window 8。

至于 Linux 桌面用户较少的问题,我的看法与你一致,硬件驱动 + App 匮乏是根本原因。并非是因为 X Window 技术落后。

JSK 说:
2012年1月10日 12:59

FYI with digrassion:
The X.Org Foundation requests that the following names be used when
referring to this software:

X
X Window System
X Version 11
X Window System, Version 11
X11

autoxbc 说:
2012年1月10日 16:57

Linux 的问题是整个社区的核心文化排斥收费软件,排斥不收费的商业软件,排斥闭源软件,排斥协议不对胃口的开源软件,排斥搞开源软件的商业化运行的公司,并且这个核心文化吸引来的用户也都是这个心态,导致这个群体越来越极化,广大的需要吃口饭的开发者就不来玩了。至于 X.org,这个真不是瓶颈,五六年前 Xgl 出来时就很流畅了。

Avatar_small
依云 说:
2012年1月10日 18:21

@autoxbc: never knew that...

Avatar_small
Garfileo 说:
2012年1月10日 19:48

@JSK: 多谢,我将 X Window 替换成了“X Window 系统”。

yyc 说:
2012年1月10日 23:27

@autoxbc: 并不是很关心协议, 不过非开源(或者某些你所提到的其他被排斥的情况之一)的软件常常与其它的软件风格很不统一, 于是有时候用起来怪怪的~~~~ (我所关心的主要是主题和快捷键, 他们常常不遵循主流gui程序(这里指gtk/qt, tk之类的不好意思了~~~)的一些习惯, 用java的就更不用说了(这里也没有贬低java的意思, 只是看不惯java的自带界面还有它的本地化支持)) 偶尔也会有桌面环境的整合问题(主要是dbus相关)

不过话说回来, 我到目前为止正常可能用到的软件在Linux(是不是应该写成GNU/Linux~~~)下找不到的(Win下也只有破解版用的其的除外->特指ABBYY和acrobat pro)好像其实并不多, 而且以国内网银/聊天软件为主, 偶尔还有就是某些公司(日本为主)的硬件(录音笔/相机什么的)的驱动和个是转化程序 + 词典软件的屏幕取词(据我所知这个好像倒是的确跟Linux桌面下无障碍框架不完善有关, 不知道对不对)

(当然我不关心各种游戏, 估计对于很多人这个算一大块~~~)

如果有其它的话欢迎补充 =D

@Garfileo: 不好意思, 好像拉跑题了~~~~~

yyc 说:
2012年1月10日 23:44

@JSK: LOL 唉, 至少说X Windows*的少多了(虽然还有)

autoxbc 说:
2012年1月10日 23:56

@yyc: 我上面说的各种排斥的结果是:在桌面系统发展的早期,在今天随处可见的各种跨平台开源软件极大丰富之前,Linux 因为上面的原因没有迎来爆炸式发展,没有获得足够支撑一个生态系统的占有率。在这之后,窗口期已经关闭了,上面出现的好东西再多,也回天乏力了。至于各种闭源软件 UI 适应性不良,还是 GTK vs Qt 导致的,往更前一点算,还是因为搞 GTK 那一帮人不爽 Qt 的协议,又回到我说的各种排斥上了。

冷风一夜 说:
2012年1月14日 23:18 我一直感觉奇怪,为什么会有人对在线编辑那么崇拜。个人感觉无论是Google Docs还是MS的Live Office,使用起来体验比本地程序差远了;而且不放心把自己的数据放在别人的服务器上。 另外X Windows 不流行,同宽带以及服务器性能有关吧。现在的宽带不足以支撑X Client流畅的显示;服务器性能有限,不大可能同时为多个用户(同Web程序相比)提供服务。 云的特点应该是跨平台,以及商业驱动。你把所有的个人数据都放在别人提供的服务器上,就相当于别人抓住了你的命脉,让你很难迁移到别地方,不得不依靠提供服务的商业机构,失去了一定的自主性。 如果所有程序都有统一的GUI库~~所有程序都可能通过一个统一的标准与服务器交互。那么就用不着什么云了吧。
yyc 说:
2012年1月15日 01:10

@冷风一夜: 我感觉现有的在线编辑的好处还是共享方便+与邮箱/网页的界面统一, 在浏览网页/邮件的时候比较方便. 如果是私有/保密的东西还是算了吧~

P.S. ~~~这个~~~ 还是不要自己中枪啊~~ http://garfileo.is-programmer.com/posts/31657.html#comment161798

Avatar_small
依云 说:
2012年1月15日 13:43

@yyc: 没觉得在线编辑哪里界面统一了。共享方便是事实,被墙也方便。

yyc 说:
2012年1月15日 14:40

@依云: 不好意思, 表达的又不是很准确.
我说的界面与邮箱/网页统一指的是整合的好(比如说查看邮件附件的时候) 如果用gmail的web界面的话, 用一下google doc还是很方便的 (用google搜索(pdf为主的)文档的时候也是一样)

被墙也方便 +1 ~~~ -_-||

shirt 说:
2012年1月18日 23:55

@autoxbc: 不是linux排斥,是gnu,或者说richard排斥。

layton 说:
2012年2月03日 10:55

略显偏颇。云计算并非只是将计算交由云端执行这么简单的概念。iCloud,Google doc背后有着更多东西。
X window系统当然也可以实现以下的功能。但是实现以后就和现在的云计算平台也差不离。参考AWS。

SLA
DataCenter
HW Agnostic
HA, Redundency
Grid Computing
Distribute Computing
Hosting
Networking
BIG Data & Low Latency
Secuirty
NoSQL
Load Balancing
Cloud Message Queue
Centralized Management
Bucket Storage/Block Storage

tree 说:
2012年2月22日 15:37

其实人们就是要远程访问文件,x window 不懂是不是因为客户端没有好的软件还是带宽的因素没有实现方便的远程访问,服务器端成本也大,每个人都要有个相当于VPS的一个系统。现在的云服务虽然都是相对单一的服务比如是处理图片,是处理文件存储,但是这样相对就廉价许多,客户端用web来操作,现在的云应用大多有API接口,这样应用就可以互通,如果是在一个私有系统上,对普通用户太难了。这就是为什么现在的云功能不强却受欢迎的原因。x window也就用处不大了,消费者并不想要远程访问一台计算机,消费者要的是要看图片,看电影,处理办公文件,要聊天,要社交,要买东西,但是这一切并不需要远程访问一个自己操作系统,那x window又有什么用呢

poet 说:
2012年6月06日 09:31

很难解释认为 X Window 优秀的人是个什么样的心态。从设计上来讲这无疑很 geek 很天才。但是,100M 的办公室局域网尚且无法流畅运行一些常见应用,那这个架构的实用价值何在?

要知道很多 KDE/GNOME 应用并没有大量的针对 X Window client/server 分离的情况进行测试的。所以在网络情况下用户体验非常不理想。

弄了这么久,ssh -X 目前也仅仅被我用于一些很简单的对界面需求不高的应用(例如用 meld 做文件比较之类),要想有合理的效果,不但要求 CS 两端是相同的桌面(例如都是 GNOME,或者都是 KDE),而且还要求没有使用一些比较特别的技术(例如top menu)。实际上这个架构已经跟现在的应用程序设计思想很多情况下背道而驰了。

在网络结构下,你还是必须将自己的核心数据用网络传输,而把绝大多数计算放在客户端,这样才会有合理的效率。而不是渲染出整个界面然后把整个界面传输给客户端,现在的 X Window 就是这种杯具。

Avatar_small
Garfileo 说:
2012年6月06日 10:48

@poet: 虽然劣币驱逐了良币,但是良币依然是良币。我的心态嘛,就是承认 X11 是一种良币而已

mythyear 说:
2012年8月06日 22:40

嗯……值得探讨的话题!不过我觉得一切还是需要时间来验证吧,过几年看是个什么情况。虽然我对Xwindow也很不满意,但是搞到最后我也承认,Xwindow的废柴其实主要还是驱动的问题……
另,我个人认为GUI还是努力做好单机的问题,至于网络透明这块还是专门开发新的协议、新的库来专门支持比较好一点。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter