谈谈我是怎么利用开源软件的

来源:互联网 发布:方舟子 中医 知乎 编辑:程序博客网 时间:2024/04/29 10:13
最近看见.net版的许多人对开源软件不怎么了解,甚至对它有些误解,我想谈谈我对开源软件的看法。

开源软件的详细定义比较复杂,简单点说,就是一种源代码可以任意获取的计算机软件,这种软件的版权持有人在软件协议的规定之下保留一部分权利并允许用户学习、修改、增进提高这款软件的质量。
开源软件的许可证比较繁多和复杂,对于我们来说,经常遇到的开源许可证大多是GPL和BSD两种,此外还有Adobe经常使用的MPL许可证。简单来说,GPL许可证具有相当强的传染性,如果你想要把一份采用GPL许可证的代码经过修改后再次发布二进制版本,那么你同时也必须再次开放其源代码。而BSD许可证则相对宽松许多,它允许对源代码的修改后再次发布时仅包含许可证而不必再次开放源代码,且可以将修改后的版本专为商业用途(如微软的产品中引入了BSD网络部分的源码,修改后则作为专有软件出售)。 

由于java是最早拥抱开源的语言之一,它的开源项目数不甚数。最常见的就是web框架了,比如struts。以前没有struts的时候,做一个网站是一项非常复杂的任务,开发人员要懂得web运作的原理,订制各种网页模板,一个页面交互也够忙活个半天,如果客户要求加个文件上传之类的功能,这在当时就是个考验人技术的难点。现在呢,使用了开源框架,程序员的工作简化了许多,struts很容易上手,有java 基础的话,1到2天就学会了,它内置各种功能丰富的插件,比如文件上传,ajax交互表单,实用的HTML textarea,用这些插件的只要在页面上增加一个相应的标签就行了,无需关心后台怎么实现。这些东西都是免费使用的,有了它一个菜鸟花几天时间,也能拥有不输给老鸟的开发能力。

你用这些现成的东西为自己创造财富的同时一定会有疑问?这些开源软件作者,吃饱了撑,送钱给你?开源软件并不是一个人开发的,他是开源团队共同开发的,任何人都可以创建一个开源项目,比如apache,如果你有一个很好的idea,你也可以上去创建一个项目,提交一些代码,会有人提出他的看法,甚至会有人帮你完善你的代码。这帮人为什么这么高尚,乐于无私奉献?我也没法理解,也许这些程序员希望自己的idea发扬光大,希望自己的技术传承给更多的人,也许这就是他们的初衷,这只是我的猜测。你创建的这个小项目就是一个孵化器项目,至于它能否成功孵化,就靠你了。

开源软件并不是免费的午餐,它是你赚钱的工具,但是赚钱还是靠你自己的辛勤劳动。它能做的只是提高你的工作效率,加快你赚钱的速度,增强你的信心。不用担心其他软件公司有技术积累,而你没有,众多的开源软件就是技术宝库,任你使用。

开源的另一个好处就是你可以随意修改和扩展它,还用struts举例,如果你发现它的插件满足不了你的需求,你可以自己做一个插件帮他扩展功能,这时就可以参考它的源代码了,如果你认为你的插件是个杰作,你也可以把它的源代码贡献给struts社区,这样你就为他做了件好事,也算报答它作为赚钱工具了。就算你去开源社区里面提提意见,帮他们做做测试,帮他们做个logo,也算一件可以报答他们的好事,你把它推荐给更多的人使用也算一件报答它的好事。

开源软件还能帮助我学习,比如我想学图像处理编程,就会有ImageJ这个开源组件供我研究其中的算法。我想学嵌入式开发,就会有许多嵌入式数据库项目供我学习。等赚够了钱,有时间我可以更深入的学习其中的算法,实现更远大的理想。

开源已经成为一种趋势,IBM贡献了eclipse,在众多开源爱好者的努力下,如今它已经成为功能强大的平台,会有越来越多的人使用它。我想今后也会有越来越多的人使用开源软件。毕竟使用开源软件,比使用盗版软件更有安全感,不用担心哪天会过期,不用担心使用盗版软件做出的产品将来会有版权问题。你想帮家人修个照片,你也不用去购买庞大的Photoshop,开源的GIMP完全可以满足你的要求,如果你把它用于专业的印刷行业,GIMP达不到你的要求了,这时再考虑购买Photoshop。

你了解开源软件了吗?你开始利用它们为你创造财富了吗?