平台

Platforms Joel Spolsky

Friday, August 30, 2002

A part of Joel on Software, http://www.joelonsoftware.com

词汇表(Glossary)

  • software developer 软体开发者人员
  • application, software application 应用软体应用程式
  • language runtime 程式语言的执行环境
  • platform 平台
  • operating system, OS 作业系统
  • DBMS 资料库管理系统
  • server 伺服器
  • ISV (Independent Software Vendors) 独立软体供应商
  • built in 内建
  • license 授权,许可执照
  • dormroom 多人合宿的房间
  • juegos casino

正文

大部分软体开发者,包括Fog Creek Software,光是撰写应用软体就能获得无上的快乐。你知道的, 就是那些能做些什么事或解决特定问题的程式。 但是,在我们当中有些勇者想要更彻底地改变这个世界,于是他们选择致力于平台: 就像是巨大的软体板块(译注:就像建筑业在盖房子时会先铸好一些水泥板块,到现场再组合),光是板块本身并没有什么功用,但是却能让大家组合应用,造就了一个充满了新奇有趣应用程式的世界。所以,他们撰写作业系统,或资料库管理系统,或 Java 之类的程式语言执行环境,而且他们希望能吸引独立软体开发者在他们的平台之上创造一些很棒的新应用程式。

广义而言,一套作业系统就是一个平台。许多平台必须在作业系统之上运作,Java执行环境就是。还有别忘了Windows 一开始并不是一套作业系统,起初它是以在DOS 上执行的一套程式现身, 它(刚装好时)没有什么功能,但是却让软体开发者能在其上为便宜的Intel 机器制作 GUI 应用程式。

判断出你的产品是不是平台真的真的很重要,因为平台需要非常不一样的行销方式才能成功。理由是,平台最初且首先需要吸引的是开发者,不是一般使用者。

我有幸可以先读到Rick Chapman 关于软体业界的蠢事的超棒新书(预测会成为最畅销的书)。身为凡事都要分析的人,我总是寻找共通的论点。软体界失败案例最大的论点之一,就是平台商并不了解他们是平台商,以至于疏远他们的重要顾客:开发者。

案例:网威(NetWare) 太晚释出适合的NLM开发工具组,以至于当Unix 和Windows NT 挟带着更好更便宜的开发工具组出现之际,他们在伺服器软体开发人员的心中被扫地出门。

案例:苹果电脑(Apple) 花了数十年让他们的开发者的生活像场灾难。将近20年来,每一版新的作业系统都需要将应用软体的程式码东修修西改改。 如果你太成功了,苹果电脑就会跟你作对(不过有时会控制一个名为Claris 的掌上傀儡来跟你竞争,然后假装跟自己无关。)

案例:想要在OS/2 1.0版上开发软体,要先投资$3000 买SDK , 而且,如果列印对你来说很重要的话,那你就必须撰写你自己的印表机驱动程式。 列印的确重要,所以OS/2 没有应用软体。

但反例也一样有趣:

案例:第一版的Windows 包含了一个可以免费再次发布的执行环境,所以, 如果你写了一支Windows 软体,你可以卖给任何有DOS 的人, 而不限于那些少数有买Windows 1.0 版的怪胎(我!)。

案例:撇开升阳(Sun) 在Java 上犯的错误,它的执行环境一直都是免费的, 并且,好的Java 开发工具也很便宜或免费。没有其他开发平台能如此迅速地跃升主流(就算是Visual Basic,史上卖得最好的电脑语言,也花了几年才往上攀升。)

一个平台想要成功,需要被广泛大量的采用,那意味着你需要开发人员为它开发软体。害死一个平台最好的方式是让开发人员难以在其上建设。因为平台厂商往往要嘛不知道他们所有的是个平台(他们以为是个应用软体),要嘛就是变得贪婪(冀望所有的利益都归他们。)

贪婪的平台厂商没办法容忍所有各种的下等痞子可以从他们的平台赚钱, 所以任何人要为它开发东西都近乎该死的不可能。要阐释这点,最著名的失败例子大概是IBM 的PS/2, 挂着一大拖拉库的私有技术,例如新的Microchannel 架构设计成确保只有IBM 能制造扩充卡。这当然有够短视的。没人想要 PS/2,因为,呃,想要扩充卡时没得用,有得用时则太贵了。作为一个平台供应商,在其上开发的人们有多么成功,你才算那么成功。

更细微的问题是,平台供应商不认为他们所有的是一个平台, 而认为他们有个应用软体。为了阐释这点,我要再次地讲到 Groove

「为什么你不断地提到Groove,思博兄?」三个理由:

他们有个吸引人的架构,提供了重要的平台功能,可以实际用在我自己的产品中。 他们使得独立软体供应商无法在他们的平台之上开发(或至少是不切实际的),于是注定了被遗忘的命运,若非出于贪婪,就是因为他们把Groove 当作应用软体而非平台, 而且Groove 发明人Ray Ozzie 有写部落格(weblog),所以如果他认为我错了,他可以回答我。(他回答了。)

让我说说我是怎么发现Groove的问题的。 我有个简单的桌上网站内容管理程式CityDesk,可以用于部落格(Weblog),公司的网站,小型组织等等, 是给那些需要内容管理却负担不起大系统,或者无法随处控制伺服器,或是不打算浪费工夫在伺服器上按装perl脚本系统的人。

我们的1.0版有些弱点。最大的一个问题是:人们想要透过网际网路(Internet)在CityDesk网站上共同合作。这是很合理的要求。 我们必须在下个大版本释出时做点事情来解决此限制。基本上有两个选择。传统上的选择是做成主从式架构(client- server):搞出一个CityDesk伺服器,让你安装在某处,然后每个人就可以共同合作。

但另一个选择是利用安全的点对点架构,可以保持CityDesk不需要放任何东西在伺服器上的优点。而这正好就是Groove所提供的。

因此我考虑着移植CityDesk到Groove上。接着发现:

1. 没有免费的Groove执行环境。我每一个客户都必须购买Groove。2. 没人有Groove。

Groove这个点子的命运从一开始就被注定要完蛋。我向几个据称正在为Groove开发软体的Groove “合作伙伴“请教, 问说"与Groove的关系有任何好处吗?” “哈!” 他们说道:“付了$1500,仅从他们网页得到每月少于10次的点阅连结(也就是经由Groove网站连过来的访客数)。 真是浪费钱。我们甚至没办法要求Groove分享顾客名录。”

这不是我想用来开发的平台。虽然技术上它确实是我想用来开发的平台,但却被一家贪婪(或无知)的公司所控制。它正在切断自己的命脉:那些在Groove 上跑的应用程式. Ray Ozzie 正热衷于酷毙的网志,但 Groove 的网志在哪里?又有谁会想帮它写一个?是Blogger 的创造者Evan Williams 吗?就算是Blogger Pro 一年也只要付35 美元,而这还不够付Groove 一个使用者的使用许可99 美元呢。

如果Groove执行环境是免费的又将如何?顺着Windows的轨迹, 一开始以免费的执行环境出现,一次能让你跑一个GUI应用程式。 最终,为了Windows的档案管理,在不同应用程式间剪贴资料等好处,很多人买下完整版,然后Windows 3.0版现身了,这么受欢迎,有着这么多的应用程式,以致于每台个人电脑都搭售Windows。如今的Windows就像英国的电视税。除了开发者以外所有人都得付钱。只要你在撰写Windows的软体,就不用再付一分钱。事实上在Windows的历史上,开发人员从来不用担心Windows本身的费用。

任何曾经是过贩卖软体元件(ActiveX 控制元件, beans等等)的人,都知道执行环境必须免权利金,否则开发者绝对是敬而远之。 微软(Microsoft)甚至让你免费地再散布Jet这个完整的关联式资料库引擎,这相当于微软Access程式的十分之九。而且更夸张的是,这个引擎已经事先安装进Windows 2000了。

Groove平台想要成功就要做相同的事情。 让Groove执行环境可免费再散布,意谓着会冒出上百个应用程式,进一步使得执行环境又远又广地传播出去。很多使用者会看到购买内建合作功能的Groove完整版之价值所在。如hosted reflectors之类的Groove服务,应会拥有更大的潜在观众群。

当然啦,他们可以延着Notes的轨迹,假定卖出软体的唯一途径就是,用酷酷的投影片让 CEO们发出哇噢的叫声,然后卖价值百万但无用而冷门的企业软体(corporate shelfware)授权。 这样做的确是有帮莲花公司(Lotus)赚钱,因为Notes有一个吸引人的应用程式:电子邮件软体。而且还是内建的!

不过想像一下,如果Notes的执行版本是免费的,如果Notes从80年代起在这个软体之上形成一个软体产业, 某些小小的新创公司很可能已经为Notes制作出令人激赏的超文件应用程式,并取代现在的Web网路了。 巨大的Notes公众网路之梦或许早就实现,那么Notes在个人电脑上就会和接龙游戏一样普遍了。 如今,Notes仍只不过是又一个邮件系统而已,而且是一套没什么未来的邮件系统。

我是一直在找Groove的碴,不过这只是因为在其中存在有趣的地方,因为吸引人的技术少之又少,而它是其中之一。是的,Groove工程师是架构太空人(architecture astronauts)。那并不成问题,他们正在建立一套架构。可是目前他们将它定位成应用程式,而我认为如果他们那么做的话,Groove是红不起来的。 总会有某人将会带着一套P2P架构打进来,并且以元件(component)的方式来销售, 或是做作开发源码的程式库形式(是的,我察觉到JXTA),而那将是软体开发者会去用的。