当前位置: 首页 > 科技观察

程序员应该懂一点开源协议

时间:2023-03-22 16:26:55 科技观察

雷军感受到2000后CEO的压力,携手300名最小的才10岁出头的员工,豪言壮语:一些30多岁、40多岁的前辈不能再看懂互联网了。可就在被采访的短视频传递完的时候,剧情突然来了个360度大转弯。GitHub开源项目AndroidTvLauncher的作者义正言辞地痛斥这位令人羡慕的2000后CEO抄袭其作品。网络上的事情,似乎总有让人捉摸不透的情节。外行看热闹,内行看门道。在这里,先不说长江破浪前行的励志故事,也不说是非曲直的后续剧情发展,只说说和我们有关系的事情,开源协议。说到开源协议,首先要简单介绍一下自由软件这个名词。根据维基百科,自由软件是可以不受限制地使用、复制、研究、修改和分发的软件。请注意,自由并不意味着自由。正是这种开放和开源的精神,才使得计算机软件发展得如此迅速。开源协议,或称开源许可,是作者与用户之间为了保护自由软件原作者的相关知识产权而建立的一种虚拟合约,或者说是一种授权方式。本条款内容用于限制软件使用者的使用。如他人违反约定,作者有权提起诉讼维护自身权益。开源的定义中有数百种不同的开源协议,松散程度不同,以满足开源项目的各种使用场景。比如是否允许商业使用,是否允许修改,修改后是否继续开源,是否继续使用相同的license开源等。但是,作为普通用户,你是否在造轮子作为开源作者或者作为普通用户借轮子,我们只需要知道比较流行的类型,就能区分出来。否则,要细分成百上千个协议,绝非易事。早期,一位乌克兰程序员画了一张分析图,简单清晰地描述了六种流行的开源协议的使用区别。阮一峰老师的翻译如下:如果再简单一点,也可以参考GcsSloop博文的这张图,更容易理解:更多的开源协议,也可以参考这张图(目前只有英文版)versionisfound):至于使用的话,不妨使用GcsSloop出品的开源协议网站:http://choosealicense.online如图:选择需要的协议,一键复制。说了这么多,回头想想,估计很多人会有疑问:开源协议跟我有什么关系?但是,作为程序员,开源协议真的离你我很近。如果你是GitHub的重度依赖者,留心的话不难发现,基本上知名开源项目的根目录下都有一个协议文件:LICENSE.txt,许可证内容附在README.me描述文件的底部。这是需要注意的地方,在使用任何开源项目之前,记得阅读项目的开源协议。市面上有些应用在应用中使用第三方开源项目时也会添加版权声明,比如安卓版的支付宝。这也是查看优秀应用程序使用哪些开源项目的一种方式。如果你也是作者,在准备开源自己的项目时,应该多加注意,思考一下自己需要选择哪种开源协议更合适。比如著名的Linux系统就采用了GPL协议;作为Android程序员,我们当然知道我们赖以生存的Android开源系统的内核使用的是Linux内核。那么Android系统属于哪种开源协议呢?说来话长。如果您有兴趣,我建议您阅读这两篇文章:Android,开源还是封闭?说说Android许可协议(续)所以,不要说开源协议与你我无关。如果你还不相信我,你可以看看我这次在微信上的第二条推文公众号:不要总是说这件事与你无关没有关系。