嵌入式技术
当我们想要开发一个软件的时候,如果自己从零开始写,那需要很深的从业背景的,对功能完全了解,大多数情况不具备。这时候首先就回去找找开源的可以利用的项目,先学习然后抄一点变成自己的,还可以博采众长的抄,特别是想做一个自己的OS,包含的东西太多了,五花八门的技术,这抄点那抄点,很正常,开源软件就是让你抄的。
但是,开源软件并不意味着为所欲为,还有很多法律的风险,例如使用seL4的源码seL4微内核入门-代码下载运行及资料,进行了修改,之后源码没有开源,做了一个产品,那么就违法了,因为seL4源码使用了GPL开源协议,如果有改动源码同样要开源。特别是商业软件,卖给客户的时候一定不能有法律问题,必要附带开源声明,系统中用了那些开源软件,那些源码是需要公开的,那些源码是未经过修改的,那些是修改完需要再次公开的。一般为了隔离修改需要再次公开的开源软件,项目都会新建一个third_party目录,把要公开的开源软件放进去。
1. GPL
(GNU General Public License):GNU通用公共许可协议。
使用了GPL协议的开源软件,也必须开源。
俗话说“吃水不忘挖井人”,如果大家都只吃水不挖井,大家把开源代码一抄进行了闭源,这样最开始开源那个人不就吃亏了,好不容易搞出来公开,别人用了不开源了,所以希望其他人更多的人也开源,服务更多的人。但是其对商业软件不友好,商业软件使用了GPL的开源软件并不想对外公开,公开公司的核心机密就没有了啊,特别是驱动跟硬件相关的软件包。
2. LGPL
和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
3. Mozilla
也是MPL(The Mozilla Public License),允许使用者对于MPL作品进行二次开发和发布,但MPL的部分、以及修改的部分,需要遵循MPL协议,并对修改部分作出说明,但允许衍生项目中有私有模块的存在。
4. MIT
除了必须包含许可声明外,再无任何限制。
5. BSD
和MIT一样宽松,多了一条“不能用开源代码的作者/机构名字和原来产品的名字做市场推广”。
6. Apache
如果修改了代码,需要在被修改的文件中说明。在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !