Tuesday, March 26, 2013

Wayland and Mir, Motivation

The announcement of Mir from Canonical upset some people. The same group of people also believe that Wayland, a project backed mostly by some guys in Intel, is only way to go.

I don't feel excited about Mir, at the same time, I don't think it is something bad.

It is worth noting that Canonical used to put their hope on Wayland [1]. Canonical didn't contribute much, if any, to Wayland, but contribution should not be an obligation.

How did other parties play with Wayland?
Let's see what did desktop environments do.

AFAIK, GNOME, a community project generally taken care by Red Hat employees, did almost nothing except accepting some code from Wayland developers. And they recently realized that the display stack need some love after the announcement of Mir [2].

KDE did something to an extent that a demo distribution can be created [3]. The days were good before Nokia switched to Windows Phone since there used to be an interest to put Wayland on MeeGo. Qt's support of Wayland may more or less related to Nokia's involvement at that time.

Enlightenment also did something with Wayland support. But note that E17 is release at late 2012, so it was not an option for normal users. Also note that Enlightenment has some Samsung sponsorship. As Samsung used EFL in Bada and plan to use EFL in Tizen, there may be an interest of Wayland from Samsung also.

Other DE/WM doesn't seem to bother with Wayland stuff.

It is clear from the above brief record that the pure community interest of Wayland is limited, even though proprietary OS has been working better for years. Corporate interest of Wayland generally comes from mobile platform, but a relevant Linux-based mobile platform other than Android hasn't appeared yet.

Put it in another way, heavy lifting is needed to make Wayland useful in real world applications. Before the announcement of Mir, it is not clear who will do the needed work in near future.

Should Canonical be the first party to massively use Wayland? Probably not.
Canonical has been focused on mobile platform recently. Before they can really be a threat to Android and iOS, they actually compete with Tizen, Firefox OS and Sailfish OS. But the other three Linux-based mobile platform all want to use Wayland actually. So Canonical may not want to help its competitors.

Some time is needed to see what Mir really is. But the good thing is that Mir is based by Canonical's motivation of dominance in desktop and mobile.

On the other hand, motivation is something not clear in the development timeline of Wayland. Pro-Wayland people is not affected by Mir technically. They just need enough motivation to push Wayland in timely manner.
  1. http://www.markshuttleworth.com/archives/551
  2. https://live.gnome.org/Wayland
  3. http://sourceforge.net/projects/rebeccablackos/
  4. http://www.enlightenment.org/p.php?p=news/show&l=en&news_id=77

Sunday, March 3, 2013

驳王垠《漫谈 Linux,Windows 和 Mac》一文

 以下蓝色部分为王垠原文。

好了,现在来一点技术性的。这段时间受到很多人的来信(大部分是菜鸟)。他们看了我很早以前写的推崇 Linux 的文章,想知道如何“抛弃 Windows,学习 Linux”。天知道他们在哪里找到那么老的文章,真是好事不出门。。。我觉得我有责任消除我以前的文章对人的误导,洗清我这个“Linux 狂热分子”的恶名。我觉得我已经写过一些澄清的文章了,可是怎么还是有人来信问 Linux 的问题。也许因为感觉到“舆论压力”,我把文章都删了

恩,继续看下去。

简言之,我想对那些觉得 Linux 永远也学不会的“菜鸟”们说:

1. Linux 和 Unix 里面包含了一些非常糟糕的设计。学不会有些东西不是你的错,是 Linux 的错,是“Unix 思想” 的错。不要浪费时间去学习它们的太多东西。那些貌似难的,复杂的东西,特别要小心分析。


2. Windows 避免了 Unix,Linux 和 Mac OS X 的很多问题。微软是值得尊敬的公司,是真正在乎程序开发工具的公司。我收回曾经对微软的鄙视态度。请菜鸟们吸收 Windows 设计里面好的东西。


真的吗?继续看下去。

3. 学习操作系统最好的办法是学会(真正的)程序设计,而不是去“学习”各种稀奇古怪的工具。所有操作系统,数据库,Internet,以至于 WEB 的设计思想(和缺陷),几乎都能用程序语言的设计思想简单的解释。


这话本身在理。

先说说我现在对 Linux 和相关工具(比如 TeX)的看法吧。我每天上班都用 Linux,可是回家才不想用它呢。上班的时候,我基本上只是“忍受”着它,尽我所能的改善它。Unix 有许许多多的设计错误,却被当成了圣经,传给了一代又一代的程序员。Unix 的 shell,命令,配置方式,图形界面,都是非常糟糕的。每一个新版本的 Ubuntu 都会在图形界面的设计上出现新的错误,让你感觉历史怎么会倒退。但是这只是表面现象。Linux 的图形界面(X window)在本质上几乎是不可治愈的恶疾。我不想在这里细说 Unix 的缺点,在它出现的早期,已经有人写了一本书,名叫 Unix Hater's Handbook,里面专门有一章叫做 The X-Windows Disaster。

说实话这段的观点是非常主观和空洞啊。
Shell/命令糟糕,请问CMD或者PowerShell是否比较优秀呢?优秀在哪呢?
想用Lisp?那我表示Scsh支持Unix和Windows(通过Cygwin)。
配置方式糟糕,这个我特别不理解。到底是GNOME/Unity没有提供图形的控制面板了呢?还是Apache的HTTPD安装在Windows下就不需要编辑配置文件了?
X糟糕我稍微可以认同,不过也有Wayland等尝试改进的工作在开展了,参见:https://lwn.net/Articles/415589/

这本书里汇集了 Unix 出现的年代,很多人对它的咒骂。我曾经以为这是一些菜鸟,他们肯定是智商太低,或者被 Windows 洗脑了,不能理解 Unix 的高明设计才在那里骂街。现在理解了程序语言的设计原理之后,我才发现,他们说的那些话里面居然大部分是实话!其实他们里面有些人在当年就是世界顶尖的编程高手,自己写过操作系统,功底不亚于 Unix 的创造者。在当年他们就已经使用过设计更加合理的系统,比如 Multics,Lisp Machine 等。可惜的是,在现在的操作系统书籍里面,Multics 往往只是被用来衬托 Unix 的“简单”和伟大。Unix 的书籍喜欢在第一章讲述这样的历史:“Multics 由于设计过于复杂,试图包罗万象,而且价格昂贵,最后失败了。” 可是 Multics 失败了吗?不。Multics,Oberon,IBM System/38, Lisp Machine,…… 在几十年前就拥有了 Linux 现在都还没有的好东西。Unix 里面的东西,什么虚拟内存,文件系统,…… 基本上都是从 Multics 学来的(有很多没有学得像)。Multics 的机器,一直到 2000 年都还在运行。Unix 不但“窜改”了历史教科书,而且似乎永远不吸取教训,到现在还没有实现那些早期系统早就有的好东西。最后 Unix 依靠自己的“宗教”和“哲学”,“战胜”了别的系统在设计上的先进,统治了程序员的世界。胜者为王,可是 Unix 其实是一个暴君,它不允许你批评它的错误。它利用其它程序员的舆论压力,让每一个系统设计上的错误,都被说成是用户自己的失误。其它系统里面某些优秀的系统设计,也许就要被历史掩埋……

一本年代久远(1994年),亚马逊上3星半的书,不必过分追捧。
http://www.amazon.com/dp/1568842031/
文中提到的至少十几年前就灭绝的系统, 好吧,我真没用过,就当他们是很牛X的吧,请问后发的Windows NT有没有继承他们的思想呢?如果没有是为什么呢?
至于Unix篡改历史,Unix是暴君……一个OS内核还有这样的能耐……
如果那些是说Unix用户,我觉得“以前的王垠”可能是大中华区最符合的了,呵呵。

我曾经强烈的推崇 FVWM,TeX 等工具,可是现在擦亮眼睛看来,它们给用户的界面,其实也是非常糟糕的设计,跟 Unix 一脉相承。他们把程序设计的许许多多的细节,无情的暴露给用户。让用户感觉有那么多东西要记,仿佛永远也没法完全操纵它。实话说吧,当年我把 TeXbook 看了两遍,做完了所有的习题(包括最难的“double bend”习题)。几个月之后,几乎全部忘记干净。为什么呢?因为 TeX 的语言是非常糟糕的设计。它的设计者几乎完全不明白程序语言设计的基本原则,不明白什么叫做“抽象”。

TeX好不好用和Unix有什么关系?我在Windows下装TeX Live,用了下TeX觉得很难用,就可以证明Windows很糟糕了吗?(CTeX甚至只支持Windows,呵呵)
FVWM类似的道理。
(我最早接触的Linux是Red Hat Linux 8.0,那时候还没有Fedora,默认桌面是GNOME,预装了OpenOffice.org,没预装TeX)

一个好的工具,应该只有少数几条需要记忆的规则,就像象棋一样。而这些源于 Unix 的工具却像是“魔鬼棋”或者“三国杀”,有太多的,无聊的,人造的规则。有些人鄙视图形界面,鄙视 IDE,鄙视含有垃圾回收的语言(比如 Java),鄙视一切“容易”的东西。他们却不知道,把自己沉浸在别人设计的繁复的规则中,是始终无法成为大师的。就像一个人有能力学会各种“魔鬼棋”的 规则,却始终无法达到象棋大师的思维高度,因为魔鬼棋本身就无法跟象棋的设计相提并论。所以,容易的东西不一定是坏的,而困难的东西也不一定是好的。学习 计算机(或者任何其它领域)的东西,应该“只选对的,不选难的”。记忆一堆的命令,乌七八糟的工具用法,最后脑子里什么也不会留下。学习“原理性”的东 西,才是永远不会过时的。

象棋流行还是三国杀流行?就算是象棋流行吧,呵呵。
“有些人”也完全可以是在Windows捣鼓C/C++的嘛,比如:
http://blog.codingnow.com/2008/09/replacement_of_ide_1.html
“魔鬼棋”式的工具只源于Unix吗?为了公平比较得把Windows NT发布之前出现的工具给去掉吧?比如TeX,想源于优秀的Windows NT也没机会啊。
我觉得这个世界被最多人使用的“魔鬼棋”式工具正是Microsoft Office,收到别人的doc文件,我放在微软自己的Office Web App里编辑都会变成一团乱麻,实在无法理解。

我并不是说 Windows 好很多。技术设计上的很多细节,也许它在早期是同样糟糕的。但是它却向着更加结构化,更加简单的方向发展。到 Windows XP 的时候,已经很不错了。我认识一个 Adobe 的高级设计师。他告诉我,当年他们把 Photoshop 移植到 Intel 构架的 Mac,花了两年时间。Xcode 比起 Visual Studio 真是差太多了。而 Mac OS X 的很多设计,让他们的移植实在太痛苦。只不过系统换了个处理器,移植个程序居然花了两年时间。不过他很自豪的说,当年很多人等了两年也没有买 Intel 构架的 Mac,就是因为他们在等待 Photoshop 的移植。最后他直言不讳的说,微软其实才是真正在乎程序员的公司。相比之下,Apple 虽然对用户显得友好,但是对程序员的界面却差很多。Apple 尚且如此,Linux 对程序员就更差了。可是有啥办法呢,有些人就是受虐狂。自己痛过之后,还想让别人也痛苦。就像当年的我。

且不说这种论证有多弱。要是以移植处理器作为比较对象,那我觉得Linux怎么都算是第一了,多少软件包都是N个架构可以编译可以用的?(去看看Debian吧)强大的Visual Studio的移植性在哪里?怎么Windows RT只支持Windows Store应用呢?
Windows XP被限制在IE8,很多用户甚至还在用IE6,搞得Web开发者苦不堪言,这就是“在乎程序员”?相比之下Ubuntu的各种版本只要支持期不结束,会不断给用户升级到Firefox的最新版。例如Ubuntu 10.04现在也会升级到Firefox 19.0。
http://packages.ubuntu.com/search?keywords=firefox
Windows RT都不支持SliverLight,之前搞个插件,现在又推HTML5,这就是“在乎程序员”?

我当然不是人云亦云。微软在程序语言上的造诣,我看得很清楚。我只是通过别人的经历,来验证自己早已存在的看法。所以一再宣扬别的系统都是向自己学习的 Apple 受到这样的评价,我也一点不惊讶。Mac OS X 毕竟是从 Unix 改造而来的。我在家里有一个 Macbook Air,一个 iPhone 5,和一个退役的,装着 Windows 7 的 T60。我不得不承认,虽然我很喜欢 Macbook 和 iPhone 的硬件,但我发现 Windows 在软件上的很多设计其实更加合理。举个简单的例子,我至今没有发现有什么不自虐的方式,可以改变 Mac 浏览器里面的中文字体!所有的论坛都说要改什么 .plist 配置文件,还有人打包分享了他自己的配置文件。怎么跟 Linux 当年一个德行?一个公司的偏执,真的可以阻碍它向别人学习,设计出更好的东西。微软也许在当年是傲慢轻狂的公司,但是我觉得它现在已经度过青春期,长大成熟了。

Windows在软件设计上更加合理因为提供了一个Windows改中文字体的UI?呵呵,要不我截图给大家看看,用微软官方的Windows 7 IE9虚拟机,默认的中文字体丑到了何种程度?
大概作者觉得改注册表要比改配置文件先进、优秀多了?有这样的个人观点本身没问题,不过我听说,只是听说,.Net也采用了.config文件的配置方式,这世界是怎么了呢?

说实话,我真的搞不懂为什么我当年会鄙视微软。现在我身边还有一些人鄙视微软。甚至在 Indiana 的时候有个教授口头上说“鼓励”,实际上想强迫学生离开 Windows 和 Visual Studio,而使用 Unix 和 Emacs。微软到底犯着谁了啊?不要忘了 Unix 是 AT&T 的产品。微软和 AT&T,到底谁更邪恶呢?公司不都是追逐利益的吗。现在看来 Apple, Google,…… 也都是一个样。不过现在,骂 Unix 和骂 Windows 不大一样的地方是,如果骂 Windows,几乎没有人跟你还口。最多有人跟你说,不就是个有点毛病的东西吗,有啥好骂的(埋头继续玩他的游戏)。而如果一旦有人骂 Unix,立刻有人会起来说:“菜鸟不理解 Unix 的哲学。人笨怪刀钝。” 哎,不吭声的就是容易被欺负。

有个教授和作者的观点不一,作者就看不下去了,呵呵。
至于所谓的“公司不都是追逐利益的吗”:
原来售价不菲(不然中国为什么盗版横行,请问)的私有软件(如Windows)和以GPL或BSD协议发表的自由开源软件(如Linux、FreeBSD、Darwin)是可以混为一谈的。
原来一个公司为了追逐利益,在操作系统中留下后门也没什么关系(忘了黑屏事件了吗)。

当然我不是在这里打击 Linux 和 Mac 而鼓吹 Windows。这些系统的纷争基本上已经不关我什么事。我只是想告诉新人们,去除头脑里的宗教,偏激,仇恨和鄙视。每一次仇恨一个东西,你就失去了向它学习的机会。

我觉得本文作者头脑中充满了“偏激,仇恨和鄙视”,呵呵。

总结一下,我只想对本文说“呵呵”。Unix并不是没有缺点,麻烦作者批评到点子上,不要扯了这么多结果什么实质内容都没有。