从事开源项目应该考虑的因素

2008年05月27日 08:23        摘自:百度    
你是否正在构思开发一个伟大的应用程序,并且打算用开源技术开发它呢?这篇文章将会给你介绍一些你从事开源项目应该考虑的一些因素,很多著名的开源团队也都将这些因素考虑在内了

 你是否正在构思开发一个伟大的应用程序,并且打算用开源技术开发它呢?这篇文章将会给你介绍一些你从事开源项目应该考虑的一些因素,很多著名的开源团队也都将这些因素考虑在内了。

  即使你没有考虑将自己的程序作为开源软件发布,这篇文章也会给你提供一些有用的建议和信息。不过,你应该仔细考虑一下,如果不走开源路线的话,你是不是有充分的理由。或者你可能会担心利润率以及保护自己的知识产权。尽管看起来开源技术是有点疯狂和与众不同,但是,走开源路线决对不意味着你赚不到钱。

  构想

  除非你知道你想要开发什么东西,否则,盲目的开发是没有意义的。我一直都坚信,最好的软件是因为有真正的需求。这并不是说,聪明的人不能够坐下来好好想想那些可能是一个有利可图的利基市场,但是,当我做这一切的时候,我可以想到的都是已经问世的产品,没有任何真正的出发点。也许我能够自己在心里盘算:“我知道了!我将开发一个功能强大的网络浏览器。 ”但是,除非我有一个清晰鲜明的构思和计划,否则,就没有任何说服力。

  比如,Firefox脱颖而出,是因为它是跨平台的并且符合行业标准,并且它使人们唤起了对于原始的Netscape网络浏览器的美好回忆。Opera也取得了巨大的成功,因为Opera是一个小巧但功能强大的跨平台互联网浏览器,包括网页浏览、下载管理、邮件客户端、RSS阅读器、IRC聊天、新闻组阅读、快速笔记、幻灯显示(Operashow)等功能。它还提供很多方便的特性,包括Wand密码管理、会话管理、鼠标手势、键盘快捷键、内置搜索引擎、智能弹出式广告拦截。Opera拥有一流的安全性,完美支持包括SSL 2/3以及TLS在内的各种安全协议,支持256位加密,可以抵御恶意代码攻击、钓鱼攻击等网络攻击。Opera网页渲染速度也是当今速度最快的并且它还能运行在移动设备上。甚至Lynx也大获成功,因为它是个纯文字网页浏览器,可以在具有强调文字功能的终端上使用的。而如果我要开发一个网络浏览器的话,它的独特性是什么呢?它存在的理由又是什么呢?

  问题不在于你是不是应该开发以个网络浏览器,而在于你应该预先知道你要达到什么目的。也许,你开发的网络浏览器的运行速度是目前所有产品中最快的。也许它对整个网络或者该网站与其它网站的关系有一个真正智能的三维可视化视图。

  或者,你的想法并不是目前存在的,而是你发现了一个市场潜在的真正需求。这也正是我认为成功可以通过纯粹的热情和工作积极性再加上产品在市场上的作用,可以实现的原因。

  Sausage Software的创始人Steve Outtrim就是利用这种办法获得了大量的金钱。早在万维网刚刚发展之初,作为一个失业的程序员,Outtrim决定自己给自己做宣传。当时他就认为,目前没有像样的网页编辑工具,于是,他就开始开发自己的网页编辑工具。

  不久,Outtrim就开发出了他的第一个版本的HotDog网页编辑工具,并把它挂在了互联网上供需要的人下载。这种工具在今天已纪是司空见惯的,但在那个时候却是很新奇。HotDog被大量下载。然而,下载者在使用完该软件后,并没有保持沉默。他们向Outtrim积极反馈使用后的感受,并提出改进建议。Outtrim将这些建议总结起来并体现到下一版本的HotDog中,没过多久,金钱就蜂拥而至。

  很多人都打趣说,自己没能像Outtrim那样取得成功的原因是把找工作摆在了首位---但有一点是正确地,Outtrim抓住了一个利基市场,并且给他们提供了可以满足需求的软件,那么,这就是好的软件。

  所以,当你有一个好的想法时,下一步应该怎么办呢?请继续阅读。

  编程语言

  另一个在早期设计时需要考虑的问题是编程语言的选择。这是绝对不能低估的。因为一旦选择了编程语言,在以后想要改变得话是很困难的。

  你选择德平台或者你想只持的平台对你选择编程语言有很大的影响。如果你知道你肯定是只针对Linux作操作系统,那么大可放心地使用C++/GTK编程语言或者类似的开发语言。如果你决定采用Windows操作系统,那么你可以选择Visual Basic.NET或Borland公司Delphi。

  不过,为了调试和扩展方便,跨平台工具和编程语言才是真正的最佳选择。令人高兴地是,即使你采用了C++或者GTK,也不意味着你被绝对锁住了。大多数的跨平台应用程序都有C/C++类库,尽管C/C++需要条件编译、单独建立的脚本或Makefile文件---而这是可以做到的。

  同样,GTK库在Windows环境下也能使用。或者你可能选择OpenGL作为图形处理平台---而不是DirectX,因为后者将使你局限在一个开发环境中。

  虽然.NET是一个非常“微软化”的具体技术,但是,Mono项目使开发者开发的.NET应用程序不仅能能在windows平台上运行,,也能在任何支持Mono的平台上运行,包括Linux、Unix. 

  而不仅仅是安装了.Net FramWork 3.0或3.5的平台。Borland的Kylix开发环境同样可以运行Delphi代码。

  Java因为倡导并实现了“一次编写,随处运行”,因而也被被大家广泛接受。Python 是高阶的, 即译式的, 面向对象的语言。巨蟒也是一个受欢迎的稳定。作为一种简单易学,功能强大的编程语言,Python也很受欢迎,它有着高效率的高层数据结构,简单而有效地实现面向对象编程。

  不管你选择什么编程语言,你一定要确保它既能在Windows异能在Linux环境下编译,如果还能支持MacOS那就更好了。这意味着,在使用解释型或者伪编译性语言时,比如Java或Python,要保证有一个运行时环境,并且在使用类似于GTK这样的图形开发工具时,要确保有可用的类库。

  你可能会遇到的另一个问题是,抵制安装外来的附加组件。Linux的每个发行套件上都带有Python,但是,对Windows而言,如果不是编程需要的话,一般是不会包含Python的。你可能会发现一些顽固的系统管理员拒绝装载Python或者Java。或者,你还可能会发现Linux纯粹主义者拒绝将其Linux工具库开发给微软.net解释器。

  不过,如果你的项目真的在做一些有益的事情,这些忧虑都是差没有实际意义的。目前很流行的多路由器流量图示仪(MRTG)没有受到任何的抵制即使它需要使用Perl脚本语言。这是因为,它填补了人们的需要。 

  另一个例子是SourceForge上下载次数最多的项目---Azureus ,它是一个Java BitTorrent客户端。设计时选择使用Java的原因是它可以运行于所有主要平台。Azureus的实用性使得人们为了使用它不在乎多安装一个Java运行时。

  还有什么需要考虑的因素吗?请接着阅读吧!

  收益性

  如何才能使开发的软件赚钱呢?对于许多开源开发者来说,这不是主要关注的问题,利他主义是一个了不起的事情,也是影响开源软件取得成功的一个大的因素。然而,同时,人们总是希望他们的努力得到回报,因而,对于高品质的开源软件,人们的观点基本都是:没有人可以真正免费地开发高质量的创新程序。

  事实上,如果开发人员编程水平很高并且决定免费发布开源软件,那么他会免费编写高品质的创新程序。然而,并非所有的开源软件都是免费的,将源代码发布给商业产品的情况并不少见。这意味着开发人员所花费的开发时间和开发工作仍然得到了报酬,并且如果开发人员对软件停止支持,那么厂商也可以对代码进行分析以尽快解决客户遇到的问题。

  然而,即使在免费的开源软件领域,也并不是没有任何收入。Firefox的使用、安装、发布没有任何成本。不过,2005年Mozilla公司的收入达到了5290万美元,而这些收入主要来自谷歌的广告!对于免费软件来说,这不算坏!这意味着Mozilla程序员虽然开发的软件施免费的,但是同样可以得到报酬。

  另外,通过发布免费软件,你可以奠定自己在该行业的专家身份,从而你可以对于使用你软件的用户提供有偿支持,在有些情况下,也可以根据用户的要求对软件进行修改,当然,这是收费的。众所周知,博客平台WordPress是免费的,但是,对于商业性主题和插件却有很清晰明确的市场。你甚至可以向使用你的开源软件的公司提供咨询服务和业务分析,这取决于你的产品。我自己开发的的开源招聘工具---OpenRecruitment也正处于发展阶段,我的目标是将它免费发布给任何人。但愿有公司将我视为招聘领域的专家,可以帮助他们优化这方面的业务。

  因此,开源软件在一开始的时候可以作为一种嗜好,但是,并不意味着它始终不会像正常工作那样重要---或者说,开源项目的质量一定会受到影响,因为每个人在有偿工作上太努力因而就不能在免费软件的开发上投入太多的精力和时间。

  关于开源项目,还有很多值得讨论的地方,比如是把项目挂在SourceForge上还是寻找其它发布方法,易于使用的安装程序的重要性等,在此就不一一讨论了。

 

客服:010-84467721  客服传真:010-84467712-805  Email:86to81#86to81.com
 
版权所有 中日之窗-中日人才信息交流中心  京ICP备08004862号-2
Copyright (C) 2000-2008 81to86.Net. All Rights Reserved