几个小时前,
Apache软件基金会(ASF)的网站上登出了一封致Sun CEO的
公开信,以及有关该公开信的
FAQ。公开信的主要目的,是要求Sun公司在30天内给ASF一个可以接受的Java SE JCK license, 或者对长期以来拒绝ASF的相关要求做出公开的解释。看官中有心者或许记得,三年前差不多同样时间,IBM的VP Rod Smith曾经发表过著名的
公开信请求Sun开源Java。三年之后,
OpenJDK莺啼初试,天下似已大定,广大Java民工翘首以盼 JavaOne2007之英雄大会,一片歌舞升平之际,为什么又出来一个开源Java的公开信呢?看官莫急,容我将爪哇演义细细道来。
话说天下大势,就像阿甘他妈的一盒巧克力。想当年Java携"一次编写,到处运行"之势粉墨登场,Applet何等玉树临风顾盼生姿,有席卷天下,包举宇内,囊括四海之意,并吞八荒之心,奈何所托非人,辗转反复竟几致夭折。谁料到世人嗟叹之声未已,Java就借Web大行其道之东风咸鱼翻身,三年不飞一飞冲天,竟一时蔚然成风,号称"
最成功的编程语言"。恰逢开源软件大行其道,与Java相关的开源软件层出不穷,那真是江山如画,一时多少豪杰(省去赤壁怀古0xCAFEBABE字...)愚之拙见, Java能有今天,开源社区实乃股肱,辅佐之功莫大耶。恰在Java如日中天之际,FSF和自由软件运动的精神领袖Richard Stallman发表了著名文章
The Java Trap,指出Java应用运行的基础-所有流行的JRE都是彻头彻尾的商业软件,建构在其上的众多开源软件和社区无异于无本之木无源之水皮之不存毛将焉附必须时刻警惕资本家背叛革命抢夺胜利果实云云,号召大家放弃使用商业Java实现支持FSF旗下的
GNU Classpath。自此,要求Sun开源Java之声日隆,尤以2004年IBM VP Rod Smith之公开信,最得一时之风流,是时Sun公司掌门却对此呼吁嗤之以鼻,答曰"司马昭之心昭然若揭,欲得开源Java先把DB2奉上再议...",然而自此之后, Java竟真的江河日下,鹰视狼顾的M$持.Net在前,昔日籍籍无名之草民举Ruby,PHP,AJAX在后,又逢互联网泡沫破裂,堂堂升阳公司竟四面楚歌,见者无不扼腕,如履薄冰,闻者无不伤心。此后升阳掌门和软件分舵副掌门先后离职,Sun终于顺应民意在2006年11月宣布了有史以来对开源社区最大的一次性捐献-以GPL开源所有Java SE/ME产品,一时间四海之内无不额首称快,皆称中兴有望...此一番爪哇英雄传,至此已经可以完美谢幕...stop,原来故事的另一面并不像这演义如此简单。
话说Java的标准叫做JSR,乃是由一个叫做
JCP的寡头组织商量决定的,每个JSR的推出,必伴随一个RI(Reference Implementation)和一个TCK(Technology Compatibility Kit),只有通过TCK的认证才能叫做该JSR的兼容实现,这就是"国际经济旧秩序"。特别的, Java SE相关JSR的TCK又被称为JCK,至今为止所有权全部在Sun手中,也只有通过了JCK才能打上Java注册商标。普通人欲一窥JCK之真面目皆不得,要练兼容,抱歉,花钱买license先。然而在2002年,ASF历史性的成为加入寡头俱乐部JCP的第一个开源软件基金会,并且极力促成了JCP通过
JSPA(Java Specification Participation Agreement),该条约的主要内容,类似于世贸协定,是规定了在JCP内部的知识产权使用规范,以及JSR/RI/TCK使用的 license等相关事宜,尤其重要的,是允许发放免费和无附加限制的license给非盈利组织,从而事实上允许了对JSR的独立开源实现,这就是现在的"国际经济新秩序"。自此之后,自由经济才在爪哇国大行其道终成正果。不过这都是背后的故事世人多不以为意也。
话说2004年,Java SE 5的JSR和RI/TCK发布,成为第一个允许开源实现的Java SE JSR,是时正是世人呼吁Sun开源Java最盛之际,一时间浮想联翩,然而一年过去,什么也没发生。失望之余开源社区终于揭竿而起,2005年5月, ASF正式宣布接纳
Harmony为incubator 项目,Harmony旨在Apache软件许可证下由开源社区开发一个模块化的兼容的Java SE实现,一时间朝野震动。尤其是Harmony这个名字,在开源社区引起诸多美好联想,皆认为"Harmony里有每个Javaer的生老病死,悲欢离合,我的也在里面"。可惜美好的愿望总是短暂的,到2005年末,原有的以FSF旗下的GNU Classpath和Kaffe为代表的GPL开源Java SE相关项目最终未能就GPL和ASL两个软件许可证的兼容性与ASF达成一致,竟分道扬镳。然而,Harmony相对商业友好的license以及旨在通过Java SE 5 JCK的目标吸引了诸多商业公司的关注,尤其是IBM和Intel先后捐献大批代码,并且投入全职员工参与Harmony项目,短短几个月时间, Harmony就取得了飞速的发展。在2006年5月Harmony一岁生日那一天的JavaOne英雄大会上,Harmony的Geir宣布 Intel捐献AWT/Swing/Java2D这一重磅(这三个模块占了Java SE类库的差不多一半),并且当场演示了在Harmony上运行Eclipse, JEdit等大型程序,此时距离Harmony得到第一个商业公司的代码捐献不过半年多一点。Harmony项目自诞生以来一直争议不断,曰重复发明轮子者有之,曰开源Java无用者有之,曰商业巨头阴谋者有之,但2006年这次演示无疑让所有人大跌眼镜,谁也没想到号称"500人年"工作量代码行上百万的Java SE在Harmony成立一年即基本成型。此后,Harmony持续吸引来自世界各地的公司,大学,个人的关注,社区和项目的健康发展得到了基金会的承认,遂在翌年10月被接纳成为ASF正式项目。更有甚者,塞外巨贾,MIDP 3.0 JSR的spec lead Motorola更是受Harmony和Tomcat等项目激励,欲在Harmony的基础上生成一个
Apache许可证的Java ME开源实现。
然而Harmony不为人知的辛酸血泪却有一大把,ASF自2006年8月便按照JSPA约定为Harmony向Sun申请JCK,话说ASF申请 TCK已是熟门熟路,旗下没有一筐也有10个不同JSR实现成功通过TCK的,最著名的莫过于J2EE1.4实现Geronimo,早已通过TCK认证打上了咖啡标签,所以ASF满心以为最多2006年底即可走完流程。没想到时移势易,按照公开信的说法,Sun这次竟然开出附加条件,要求Harmony如果要拿到JCK license,必须对其用户设置使用限制("limits on the 'field of use' available to users")。在ASF看来,这既不容于ASF理念,又违反Sun签署同意遵守的JSPA,甚至违反Sun自己标榜的所谓
Open Standard的定义,因此完全不能接受。双方自此争执不下,竟闹到今天公开叫板的地步。
为什么Sun连自己的Java SE都肯开源,却不肯哪怕只是按成例给Harmony一个可以接受的license呢?其中原委,似乎让人费解,也似乎在意料之中。Harmony虽然已经完成类库的96%,有了一个性能/稳定性均具竞争力的虚拟机,还有了IBM和BEA两大巨头提供的测试版兼容虚拟机,有超过20K的测试用例运行在数个Linux/Windows平台上,可以支持Eclipse, Geronimo, Derby, Tomcat等等几十个著名开源应用,却因此至今无法发布一个release,以至于还有预言
Death of Harmony,嘲笑Harmony社区无能。看官们若有耐心看拙作至此,欲对此事作何感想?不足30天之后,JavaOne英雄大会即将重开,Harmony社区还预约了一个session,且看后事如何...
Update:
Geir Magnusson Jr. on
this
Sam Ruby on
this
SD Times'
news, 看起来Sun已经开始反应...
也有
不屑一顾的
还有人认为是
勒索,不过他被认出来是
Sun Technical Director
Infoworld
报道包括了对Geir的访谈
Sun官方blog的
回应
eweek的
报道
Stefano Mazzochi借来了一个
比喻
TSS的
讨论
javalobby的
讨论 (谢谢diggywang帮助搜集)
Bob Lee看起来
站在ASF一边
Gao Weiqi的
观察,他预言Harmony为Java的第三次fork, 前两次是.Net和Eclipse