关于FOSS (free and open source software)

上一篇 / 下一篇  2012-08-05 19:47:17 / 个人分类:FOSS

这几年工作都是围绕FOSS来的,回头看看自己对FOSS的认识。FOSS现在很流行,是软件行业发展趋势,如下较图,这个趋势在云计算表现的更加明显(各大厂商都是基于FOSS来做的)。FOSS发展现在已经成熟,在国外已经成为一个成熟的产业。但是对于FOSS的认识,还是处于初级阶段,并且国内的本身FOSS的软件屈指可数。


()FOSS的定义

FOSS的定义分为四个层次:

1.      freedom 0 the freedom to run the program, for any purpose

2.      freedom 1 the freedom to study how the program works, and adapt it to your needs, Acess the source code is precondition for this.

3.      freedom 2 the freedom to re-distribute copies so you can help your neighbor.

4.      freedom 3 the freedom to improve the program, and release improvements to public, so that the whole community benefits. Acess to source code is per-condition for this.

而国内的一些号称FOSS软件,也只是简单一句就是开源免费的软件就完了。FOSS远没这么简单了。成熟的FOSS软件都详细license规定权利与义务。权利,FOSS的定义就不用说了,就谈谈义务吧

1.      你的改动,修改,发布是不是需要完整保留原作者的logo,以及license

2.      是不是允许在原来的license是附加新的license.

3.      是不是别人的改动与修改,分布也必须公布源代码。

4.      开源的软件,输入与输出产物是不是受原license限制。大家都知道大名顶顶的GCC,它是采用GPL,最初是要求它的输出也GPL,这样的打击面太大,后面的GPL条款改了,它的输出不受GPL限制。不然,所有用的GCC的编译的代码都得开源。

所以在采用FOSS软件的时候,尤其在开发具有IP保护的软件时候,要先先看看license吧。采用了该软件,就表示你接受了其license,在从法律意义上,就相当于与author之间签订了一门关于权利与义物的合同。如果不能遵守其license,就不要采用其软件。

 

(二)为什么要开源?

FOSS不仅仅是免费,开源。还有服务,交流,创新。

先来看看,采用开源有什么好处呢:

1.      可以避免重复造轮子,并有强大的support。只要不是第一个遇到这样的问题。就会有现成解决方案在等等你。如果你是第一个遇到这样的问题,也不用担心。加入那些社区与论坛。会无数的大牛与前辈为你免费提供帮助。实现不行,你有源码自己改源码来解决。但是如果是商业软件,遇到了问题,个人能得到这样的服务吧,他会为你的问题,立即修复一个bug,为你发布版本吗?就拿vim举例吧,就拿vim来说吧,它有四千多个插件可以帮你解决各种各样文本编辑工作。并且也可能使用做二次开发一些自己的插件(如果具有共性,你可以分享上传分享别人,体味那中分享的成就感)。而你要是使用UltraEdit这样的编辑器,恐怕就只能使用提供的有限的一些功能,并且对其二次开发远远没有vim容易。并且出了错误,也发现它的帮助文档是那么苍白无力。

2.      可以降低维护的成本。一旦软件开源以后,维护工作就不仅仅是靠你了。会有一大批具有相同的需求的人,会根据自己的需求,不断改进它。同时你也会有意想不到收获。所以许多公司与个人都会把产品项目中开发一些非产品的help工具开源出来。

3.      开源有利于技术的传承与人才的培养。你看看多少基础的优秀的软件是BSD,MIT license.这些软件科都是大学学术科研项目的成果。而国内的科研项目大部分都是躺在实验室或者只是某些人骗取国家科研经费发了几篇没有实质内容论文而结束。并且现在公司发现招一个合适的人不容易,个人找一个合适的工作不容易。你的公司的大部分东西是开源的,那么公司是不是可以去开源的社区找到大批大批合适的人才。并且都是可以找来都是可以直接可以干活的(这样的例子,你可以看看GOOGLE从开源社区招了多少技术大牛)同样个人想学哪方面的技术特别是学生,直接加入这些开源社区就可以开始了。再也不必要为实习练手找单位了。

 

FOSScommercial并不矛盾

FOSS并不反对商业化,并且并且也承认付出劳动应该有所回报,目前FOSS商业型式有种:

1.      卖服务与资询来赚钱:用过开源人的就知道,那些复杂的依赖关系有头疼,那些害怕使用开源的人,应该开源没服务,纯粹靠社区自愿者不太可靠。现在就靠大家解决解决这两个问题来赚钱,例如ubuntu,redhat等。

2.      通过间接后端链条赚取利润模式。例如GOOGLEandroid通过开源来与IPHONE来进行进行竞争的模式。并且通过抢占搜索市场,进而取得广告收入。

3.      产品本身分Free版与commercial版本。基本功能放在Free版,而一些高级功能放在commercial版本。这种模式利用Free版提高进入门槛与做广告(人人喜欢免费),除非你做的要比我的商业版还要你才能好,用户才会考虑切换产品。这种产品的竞争的是创新速度。如果你的创新速度没有对方快,竞争对手也很快在FOSS版基础上开发更好的产品。

 

(三)如何在产品中采用FOSS呢?

首先要去了解对FOSSlicense。要做到既不违反FOSSlicense,同时又保护自己的专利知识产权。License又分为几大类:

1.      Public domain software.这种软件没有任何限制。你随意的copy,修改,发布。但是确认是不是Public domain一定要得到书面license说明才行。不轻易认为没有license就是public domain的。

2.      licensing的,是有既有commercial licensecommunity license,然后需要采用你需要的license.

3.      licensing:

a)        BSD,MIT,Apache-1.1是存储你附加的自己的license.只要保留原始的license.

b)       apache-2.0,MPL,EPL,CPL是只允许对二进制文件进行附加license.

4.      GPL/LGPL/AGPL,不允许附加子license.并且GPL会代码污染的,只有动态连接GPL代码是允许的。其他情况下都要求要求开放所有与之的相关的代码。你如果你不打算开源的情况下,GPL的代码要慎用。

在项目的一开始,就要调研哪些功能模块要采用现成FOSS软件,哪些模块是要自主开发并开源的,哪些是自己的专利不能开源。定下来之后,对于采用FOSS软件,逐个去查其license,以确保你的使用符合其license.对于自己要开源部分,要准备好license.同时一定要把开源的部分与专利部分明确分离开来,以免引起混乱。然后在项目中直到项目结束的前,要定期的扫描检查你的代码的是不是符合规范(是不是有开发人员私自引用FOSS代码,以及所引用代码的license是否兼容)。。目前市场有扫描工具有:protex,IPAmplifier,protecode,Antelink,nextBFOSSology等等。

在项目结束前,这些检查必须做完,否则等到产品上线,被FOSS起诉的时候,就来不及,因为按照要求,FOSS会给你60天时间,把你的产品中不合规范的FOSS的代码去掉,要么把你的代码开源。但是在短短60天内把所有的FOSS代码换掉,一般是来不及的。还是未雨绸缪吧。


TAG: FOSS

 

评分:0

我来说两句

日历

« 2024-03-28  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 11565
  • 日志数: 11
  • 建立时间: 2012-04-18
  • 更新时间: 2012-08-06

RSS订阅

Open Toolbar