https://github.com/vietnh1009/ASCII-generator
- MIT协议:最宽松的许可协议,允许自由使用、修改和分发,但需保留原作者的版权声明。
- GPL协议:要求修改后的代码及衍生作品必须同样开源,被称为“传染性”协议。
- Apache协议:提供专利授权,并限制将原作者名义用于宣传。
- BSD协议:类似MIT,但早期版本有广告声明要求,新版已删除。
开源协议既鼓励技术共享,又明确保护原创作者的权益,使开源社区的合作得以持续。总之,开源协议的目的是在保护原创作者权益的同时,促进知识共享和技术发展。
- 允许使用、复制、修改和分发
用户可以任意地使用代码,包括将其用于个人项目、商业项目甚至闭源软件中。
- 需要保留版权声明和许可声明
MIT协议要求在软件或其衍生作品的任何分发中保留原作者的版权声明和协议文本。这是对作者知识产权的基本尊重。
- 没有担保条款
软件“按原样”提供,作者对其不承担任何形式的担保责任。这意味着使用者需要自行评估和承担软件的风险。
需要特别说明的是,开源协议是根据开源项目作者的意愿设置的,有的开源项目可能并不会声明开源协议,比如笔者的这个项目(https://github.com/repoog/loveyou3000):
- 违反MIT协议
MIT协议的核心条款之一是“保留版权声明和许可声明”,何同学将原代码中的作者声明移除,违反了MIT协议的这条核心条款,这一行为既侵犯了原创作者的权利,也损害了何同学自己的诚信。
- 未声明来源,误导观众
何同学将开源项目直接称为“原创软件”,未给予原作者应有的署名,属于不实陈述,误导了观众,同时损害了原作者的声誉。
- 潜在法律责任
违反MIT协议的行为使原创作者有理由通过法律途径要求侵权方停止使用其代码、公开致歉或索赔。
- 尊重原创作者的劳动成果
开源协议是原创作者与使用者之间的“契约”,使用者通过遵守协议来认可和尊重作者的劳动价值。这种尊重不仅是道德层面的义务,也是开源社区可持续发展的基石。
- 维护开源社区的健康生态
开源社区的核心在于合作与分享。如果协议频繁被忽视,开发者可能会对开源失去信心,从而转向闭源或设立更严格的使用条件。这将限制技术的传播和创新。
- 规避法律风险
尽管开源协议的维权诉讼在现实中(尤其是国内)并不多见,但这并不意味着使用者可以肆意违规。开发者完全有权利通过法律途径保护自己的权益,尤其是在代码被商业化或用于有害目的时。
- 提升个人和企业声誉
严格遵守开源协议不仅能体现个人或企业对知识产权的尊重,还能提升社会责任感与公信力。在技术圈中,这种声誉是长远发展的重要资产,何同学也是因为并非第一次做这类事,因而被人冠上“赛博丁真”的名头。
在使用任何开源代码之前,仔细阅读其协议条款。确保清楚其使用条件,尤其是版权声明、修改要求和分发限制。
不管协议多么宽松,保留原作者的版权声明是使用开源代码的基本要求。这通常包括在代码文件中保留许可证文本或在项目文档中注明出处。比如下图是笔者基于另一个开源项目做的修改(https://github.com/repoog/hexo-theme-apollo),即便原作者已经将项目归档(Archive),不再继续维护。
即使对代码进行了修改或扩展,也应承认原作者的贡献,声明“基于某某项目开发”是一种良好的习惯。比如笔者早年的一个开源项目(https://github.com/repoog/ReName)中,涉及到对于日期模块的修改,故特意在ReadMe中加以说明。
SCA的全称是Software Composition Analysis(软件成分分析),这类工具或产品可以帮助企业识别其软件项目中使用的开源组件,并评估这些组件的安全性、许可证合规性和质量状况,使企业能够主动管理开源组件的使用,降低安全和法律风险。正如下图所示的那样,它可以更清晰的、一目了然的看到开源协议的许可限制,图中的风险等级是无风险,主要是指商用方面的风险,可能产品方也没有预料到版权声明是如此重要。