本公众号基本就是研究**开源软件**的是我们学习的**源泉**。 当我们想要开发一个软件的时候如果自己**从零开始**写那需要很深的从业背景的对功能完全了解大多数情况不具备。这时候首先就回去找找开源的可以利用的项目先学习然后**抄一点**变成自己的还可以博采众长的抄特别是想做一个自己的OS包含的东西太多了五花八门的技术这抄点那抄点很正常开源软件就是**让你抄的**。 但是开源软件并不意味着**为所欲为**还有很多**法律**的风险例如使用seL4的源码[seL4微内核入门-代码下载运行及资料](http://mp.weixin.qq.com/s?__bizMzUzMDMwNTg2Nwmid2247484193idx1sn4c2cb94228735261b32ee1b965c6e97echksmfa528505cd250c13fd6b1464111bfa41da2bc31c7af8640c503af4efc614a071bbe4172187b8scene21#wechat_redirect)进行了修改之后源码没有开源做了一个产品那么就**违法**了因为seL4源码使用了**GPL开源协议**如果有改动源码同样要开源。特别是商业软件卖给客户的时候一定不能有法律问题必要附带**开源声明**系统中用了那些开源软件那些源码是需要公开的那些源码是未经过修改的那些是修改完需要再次公开的。一般为了隔离修改需要再次公开的开源软件项目都会新建一个third\_party目录把要公开的开源软件放进去。1. GPLGNU General Public LicenseGNU通用公共许可协议。使用了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。后记“啥都懂一点啥都不精通干啥都能干干啥啥不是专业入门劝退堪称程序员杂家”。后续会继续更新纯干货分析无广告不打赏欢迎分享给朋友欢迎评论交流“那路谈OS与SoC嵌入式软件”欢迎关注个人文章汇总https://thatway1989.github.io