如何制定主动混源战略

<span class="Apple-style-span" style="font-family: " stheiti="" light';="">做者: 顾宏军 出处:软件世界
浏览器

在过去这几年里,软件产品数量急剧增加。现今设备不只包含愈来愈多的软件,并且愈来愈多的功能经过软件实现了。这种爆炸式的增加也抬高了软件开发的成本。外包(部分)软件开发只提供了一种不彻底的解决方案,而对适当的部件进行开源能够有效地节约开发成本,缩短产品开发周期,所以,某些软件开发上就采起部分组件开源,部分组件闭源的战略,从而造成了独特的混源架构。 服务器

抛开开源和闭源各自的立场不谈,混源实际是一种实用主义,即一切从效用出发。因此,企业须要了解开源风险、并有效控制开源风险,充分发挥开源和闭源的长处。 架构

要采用混源架构,须要实施分两步走的战略。首先,将软件或系统的功能、组件区分为独有功能、基本功能和无关紧要功能,而且对每一个功能组件进行判别,其使用开源架构或者闭源软件是不是最佳选择;其次,软件架构设计应该和法律条款同步设计。这须要软件架构师、工程师与知识产权和法律专家进行通力合做。 ide

了解开源风险 网站

开源所指的是软件开发模式,是程序的源代码在某种受权下公开,以提供用户修改和重新发布该程序的权利,并指望(不是必须的)用户所做出修改和改进也可归入官方版本。 spa

开源软件的受权适用条款可能比较奇特。例如,有受权要求若是你的软件要包含开源软件,那么你开发的新软件也须要进行开源。若是采用使用这种受权的开源软件,那么整个软件栈的全部软件产品,可能都必须以开源方式进行发布。(这些条款只在把这些软件出售或转让给第三方时适用)。对专利持有人额外风险多是在发布第三方开源软件时须要提供一个免费的专利受权,而这有可能侵犯了别人的专利。这一专利许可问题可只限于在开源组件中,可是在某些状况下甚至会影响整个软件栈。 操作系统

公司可能因这些风险对开源的诱惑敬而远之,这并非一种从商业角度作出的理性决定。在商业环境中使用开源软件正愈来愈流行,甚至在商业产品中。忽略了这些,公司将与全部可能的高质量软件无缘,而且没法享受开源带来的削减开支和时间的好处。有时一个商业产品简直无法保持和开源软件同样丰富的功能。所以,惟一可行的是要了解风险,并懂得如何管理它们。 架构设计

开源许可证 设计

如今有40多种不一样的开源许可证,每种都有其约束条件和影响力。他们大体可分为3类: 对象

1.Free-for-all 许可证:这类许可只须要将荣誉归功原做者便可。衍生做品,能够保持专有。有时这类许可被称为学术许可典型的就是所谓BSDMIT许可,以及用于Apache服务器的Apache许可证。

2.Keep-open 许可证: 根据采用这类许可的软件进行的修改,必须也采用这类许可进行开源化。大的包含该软件的新软件,则可使新软件保持专有。LGPLLinux系统库采用)受权和Mozilla Public License受权(Firefox浏览器采用)就是Keep-open受权。

3.Share-alike 许可证: 当软件采用这种许可时,不管软件被修改或是被扩展,全部的成果都必须进行开源化。有时用术语“Copyleft”来描述这种受权。最有名的例子是GPL受权,它被Linux操做系统采用。另一个例子是 Open Software License (OSL)

公司为了不出现必须开放其专有软件的问题,可能会禁止使用 Share-alike甚至Keep-open许可的开源软件,但这会严重限制使用开源的效用。由于约65%的开源软件使用GNU ,有另外20%的采用LGPL协议。所以,开源策略应该是在哪里应用以及如何应用,而不是如何将不一样种类的开源软件应用在一个产品中。

选择合适的混源策略

采用开源策略的公司经常作出非黑即白的选择:一个产品要么开源,要么闭源。其实能够用一种更微妙的方法—“混源可得到更大的好处。 若是能对如上所述的受权进行有效的管理,公司能够对某些部件使用开源软件,而对其它部件进行封闭开发或者商业受权,最终目标应该是最能保证产品的价值。专有的组件或者方案应该被可供选择的开源产品替代,以体现出更大的价值,而不是保持该组件私有或闭源。除了可使用已有的开源实现,公司也能够以开源方式公开它本身的实现。

产品按功能进行分类,有三类功能:

1.特有的功能: 这类功能给产品带来附加值。它们使产品可和竞争对手区分开来,而且给出了客户乐意购买它们的理由。

2.基本功能: 这类功能是客户须要和指望的功能。它们提供价值,但没有给产品增长附加值。举例来讲,今天没有人买便携式的音乐播放器,是由于它支持MP3格式。 另外一方面看就是,若是不支持MP3格式,就没有人买这样的播放器。

3.无关紧要功能:这类是隐藏的、不感兴趣的功能。产品须要它们才能工做,但客户并不关心它们。

对每一个分类,最基本的问题本身开发仍是购买?变成了本身开发、购买仍是采用开源?要回答这个问题,第一步就是要区别它是哪一类功能部件,特有的,基本的仍是无关紧要的?第二步,判别每种选择对各个功能部件产生的影响。图1显示了每种选择的影响。


1:选择开发/购买/开源

通常而言,特有功能应内部开发,以确保最大的市场优点。外包()这类功能组件,是一种选择,可是这意味着公司产品最关键部分依靠第三方。若是第三方出现问题,将形成重大的风险。固然,对这类功能进行开源也不是个好的决定,开源会使该功能部件成为基本功能。

对于无关紧要功能,公司不该该花时间和精力在内部开发或维护这类功能。 这部分使用开源节约时间、精力和金钱,并且这一般是正确的选择。一个例子就是使用Linux做为一个嵌入式操做系统。

居于中间的是基本功能。这类功能须要逐个的做出决定,是开发、购买仍是使用开源合适。 公司可能采用一个策略,例如若是该功能不向其它人收费,咱们采用开源。技术考虑可能阻碍某个基本功能采用开源。举例来讲,若是对基本功能进行开源,就也须要对特有功能进行开源,显然,基本功能应该依然闭源。

在某些状况下采用开源可能不合适。一个常常听到的问题是,开源许可的条款对一个特定的产品过于繁琐。这里可能也有技术缘由使得公司须要进行闭源。例如,在一个小型嵌入式装置里,Linux未必就是最佳选择,由于它的系统需求较大。另一个缘由是,有些客户要求不用使用开源。

软件的合法问题

软件的合法问题理论上讲很简单,实际却有些复杂。源代码能够被复制和拷贝,库能够被连接,或被远程进程调用。用面向对象语言像JavaWeb Services可能的事件变得更多。这会形成软件组件间复杂的相互依赖关系。对这样一个复杂的软件栈进行开源组件法律影响评估,有至关大的困难。

为确保实现被妥善管理,知识产权专家应当在产品设计的早期介入,在项目开始时就顾及,并贯穿软件设计和实施的整个过程。

总之,对开源的态度,不该是明令禁止,而应该是做为战略的一部分,采用实用主义的混源策略,对开源进行有效充分的利用。

<span class="Apple-style-span" style="font-family: " stheiti="" light';="" font-size:="" 13px;"="">

相关文章
相关标签/搜索