当.NET发布第一个版本时,微软公司也同时将.NET框架的一个子集以Rotor的形式发布为Shared Source。作为Rotor的2.0版本,Rumor将作为最后一个以源代码形式发布给开发者社区的.NET CLI。从那时开始,微软公司与
Novell公司以及Mono项目达成协议,以便让Mono能够继续发展。Mono是一个
开源版本的.NET框架以及.NET运行时的实现,它能够支持.NET应用程序跨平台地运行于U/Linux和OS X之上——就像运行于
Windows中一样。
0cgB8Q!T!s:e0ITPUB个人空间s"o*gs'U%N7cI)q 在支持Mono的同时,Novell公司又发起了若干个建立于Mono之上的
开源.NET应用程序。包括:Banshee、Beagle、F-spot、iFolder、Monodevelop。
inv|V0:Y[,k `jSgY,f:Ad;nP0 当然,上面的列表并没有停止增长。Jeff Atwood决定为一个优秀的.NET开源项目再赞助一万美元。所言一出,震惊四座。作为Jeff慷慨捐赠的回馈,很快这个列表中的.NET开源项目就增长到了74个。Jeff这样说道:
ITPUB个人空间}*QNqC U9RdITPUB个人空间!lD6G+?Z_7e:Z 我为什么会对.NET开源项目这么关心?简而言之,因为在微软
技术领域中,开源项目通常都被看作是二等公民。很多开源项目对.NET社区产生了巨大的推动作用,不过微软公司却并没有提供任何形式的支持。我希望这种状况能够得到改变。事实上,我不仅仅停留在“希望”上——若是微软公司希望以
开发工具提供商的身份走得更远的话,那么这种状况则必须要改变!
ITPUB个人空间'MX3p'UMd"j0U1co4~2E].H?0 可是,由于微软公司以及
其他类似ISV现有的商业模型,很多开源项目似乎根本无法在.NET社区中存活。Frans Bouma说道:开源项目并不需要金钱来维持,它们所需要的是关注。而微软公司近些年的做法却仅仅是将钱砸过去——结局自然毫无所获。因为在大多数微软平台开发者的眼中, 如果你想使用某个控件、类库或者工具,那么就必须要花钱来买;而若是你开发了这些产品,那么也自然能从中获取到金钱报酬。
b6I2k5I#q'Sv$N3U#?09T}+Cy-G0_wPGM"j0 这才是微软平台上缺乏开源项目的根本原因。即使你投入了再多的钱,其本质并没有改变。而之所以其本质没有改变,主要原因却是微软公司并不希望看到这种改变——原因很简单:若这种改变确实发生了的话,那么微软公司所剩的日子也不多了。
.a+_H1RpU%l0L)n6C.w0B#]T?0 Ted Dennison又指出了在.NET平台上开发开源项目所遇到的另一个问题:首先,在发起开源项目之前,开发者需要选择的各种.NET授权协议都与GPL相互兼容吗?出于某些目的,微软公司将其EULA设定为无法兼容GPL。虽然我相信有办法解决这些问题——因为我知道一个基于gcc的Ada编译器已经被成功移植到了.NET平台上。不过最近流行的Ajax Control Toolkit的协议却仍旧无法兼容GPL。在这儿 中可以看到,Ms-PL、Ms-CL、Ms-LPL以及Ms-LCL协议都是不兼容的。这样在开始项目之前,我还必须仔细阅读EULA以便确保我的所作所为是合法的。
&IIYp+mkqj0ITPUB个人空间,^m2s
oT
Juz.Z Phil Haack用一堆自底向上的盘子作为比喻,总结出了一个有趣的观点:让我们以看待休假的眼光来看待开源。虽然我希望一辈子都能什么都不做,一直休假,不过若是不行的话,那么只有一部分时间可以休假也是件好事。毕竟聊胜于无。
ITPUB个人空间_"nv/{g(X1K+G B8^ITPUB个人空间CM
jKwQ [!O 无论本文中“诅咒”选取的是希腊还是希伯来人的定义,在过去的几年中事实已经证实,开源
软件在.NET社区的发展确实是在停滞不前。