在过去的时间里,基于Windows的开源软件物数量实在太少了。在网上查找一些开发相关的网站,内容也不外乎抄来抄去那几篇怎么做三角的Button啊,怎么做不规则的窗体啊,怎么把程序放到右下角的托盘中啊。当然不是Windows的程序员就是这种水平,当然也不是Windows程序员不团结,搞不出一个开源软件。
在Windows上的开源项目的阻力来源于:1.OS的封闭;MS做了太多的东东,束缚了程序员的创造力;3.开发语言和工具太多太杂了,各种程序员之间无法顺利的交流。Linux方面天生没有这些桎梏,系统源码开放,让你可以追宗溯源;很多东东都是白手起家,你可以自由的发挥你的创意(在Windows下很难写出Vi这么棒的编辑器);语言嘛,不用说了。Java的开源项目飞速增长的原因,也和上述条件有关。
现在不同了,.NET来了,机会来了。是让我们团结起来发展Windows下的开源软件的时候了。可这么做的意义是什么呢?首先是学习开源的精神,分享彼此的思想、成果,共同提高;其次,开发出我们自己爱戴的软件,高速、稳定、方便、免费。比如像Apache,我们喜欢用ASP,但受不了IIS的脆弱,那让我们也来做个跑ASP的Apache吧。有了这些软件,就可以不再只受MS一家的限制了,多了其它的选择。再次,光有.NET的类库是不够的,我们必须搞出一些类似于STL、boost、ATL等等专用库,别一提起这些东东就都是国外人搞的。
为什么说机会来了呢。.NET屏蔽了OS一级,让程序跑在一个虚拟环境,这样,你的程序可以获得类似Java的OS无关性(还不能完全无关,但已经够了)。让我们来在虚拟环境专心做好我们的软件,让MS去专心改善OS。在.NET中类库和API都是统一的,无论你用什么语言开发,最多只是语言的区别,其它的障碍都不存在了。基于此,在一个开源项目里用不同的语言写不同的模块变得很简单。各种语言的程序员可以像少数民族大团结一样一起做一个项目。
我总觉得Linux下的本地开源项目和Windows下的本地开源项目胜过Java。Java的OS无关性也等于无视OS的特点(Java程序员别生气,从辩证角度来说共性和个性本来就是矛盾的,这不是你的问题)。所以我大力提倡Windows下的开源项目,让我们把Windows下的软件做得更好、更稳定(易用方面还是有优势的)。