这是一个开源软件盛行的时代,开源软件的共同的特点:源代码开放
、免费修改
、免费重新发布
。
相信很多小伙伴在解决同样问题的时候会发现存在多种解决方案。这时候我们怎么选择呢?
License授权
这点是重点,如果我们的软件是要用于商业的,在引用的开源方案中授权是受限的,搞不好就要惹上官司。因此,我们在选择开源软件的时候首要看的就是授权方式。下图给出引导:
GPL v2 | Linux | GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售 |
BSD | 包括Xwindows、freeBDS、apache(APL)、perl、python、ruby、zope等 | 特点就是虽然保留版权,免费修改、免费重新发布,而且允许商业使用,允许商业修改后不公布修改的软件代码。是对商业软件友好的授权方式。 (苹果的OS X 和IOS基于FreeBSD开发的。) |
GPL | linux、gcc、KDE、gnome等 | 允许免费修改、免费重发布,但要求修改代码必须也遵守GPL。因此是对商业不友好的授权。如果开源软件的开发要借助社区的力量,那么最好是用GPL授权,因为这样可以防止商业软件抢走用户而导致的开源软件的使用者和开发者都不足。(ubuntu、redhat) |
LGPL | 在GPL下面还有一种对商业更友好的方式就是LGPL,允许商业代码链接LGPL代码,这样商业软件在利用LGPL软件的同时能够很大程度上保留商业利益。 | |
MPL | mozilla、openoffice | 允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者,这样发起者和组织者具有更优越的地位。MPL也是对商业友好的。并且用一些优惠来鼓励商业软件开源。 |
Apache Licence | android | 和BSD类似。 |
开发语言的限制
以MQTT为例,在mqtt.org的网站上有所有MQTT开源版本的实现。可以根据需要选择对应语言的实现。
https://github.com/mqtt/mqtt.github.io/wiki/servers
技术限制-安全漏洞
在选择开源软件时,还应注意软件的安全性,我们可以通过安全漏洞网站查询
http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=mosquitto
社区热度
开源软件最怕的是后续无人维护,社区热度高的相对有保障。