热门话题
#
Bonk 生态迷因币展现强韧势头
#
有消息称 Pump.fun 计划 40 亿估值发币,引发市场猜测
#
Solana 新代币发射平台 Boop.Fun 风头正劲
如果有人对软件许可证感到困惑,就像我曾经一样,这里是我现在对它们的看法。软件许可证控制人们可以对你的代码做什么。
MIT许可证允许人们做任何事情。假设你构建了一个使用MIT许可证的JSON解析库。一个初创公司可以拿你的代码,修改它,并将其作为他们付费API服务的一部分出售,而不需要给你任何回报。他们只需在代码注释中保留你的版权声明。React使用MIT,因此Facebook本可以将其变为专有,但他们选择保持开放。这是“随便你想做什么”的许可证。
GPL强制共享。想象一下你在GPL下创建了一个Web框架。如果有人修改你的框架以添加新功能,他们必须将这些修改也以GPL发布。他们不能出售专有版本。WordPress使用GPL,因此所有WordPress主题和插件也必须是GPL。如果你在WordPress上构建一个商业CMS,你的整个CMS将变为GPL。这保持了一切都是开源的。
Apache 2.0更好地处理专利。你编写了一个机器学习库,有人贡献了一个算法。后来,他们试图因该算法的专利侵权起诉用户。根据Apache许可证,他们自动失去使用你库的权利。这是对专利流氓的保护。Kubernetes使用Apache 2.0,因为云公司担心专利问题。
BSD基本上是MIT的不同说法。你在BSD下创建了一个网络库。与MIT相同的规则,人们可以随心所欲。FreeBSD使用这个,这就是为什么Apple可以拿BSD代码并将其放入macOS而不发布macOS源代码。大多数开发者现在只使用MIT,因为它更清晰。
LGPL是库的GPL。你在LGPL下构建了一个PDF生成库。公司可以在他们的专有软件中使用你的库,而不需要让他们的整个应用程序变为LGPL。但如果他们修改你的库代码,这些更改必须是LGPL。VLC媒体播放器使用LGPL,因此其他应用程序可以包含视频播放而不变为GPL。
专有意味着你控制一切。你构建了一个数据库引擎并保持其专有。公司支付你许可证费用以使用它。他们无法查看源代码,无法修改它,无法重新分发它。Oracle数据库就是这样工作的。你通过许可赚钱,但限制了谁可以使用它。
双重许可提供选择。你同时以GPL和商业许可证发布一个数据库。开源项目使用GPL版本免费。那些不想要GPL限制的公司支付商业许可证。MySQL就是这样做的。初创公司使用免费的MySQL,大公司通常购买商业许可证。
公有领域放弃所有权利。你创建了一个哈希函数并将其放入公有领域。任何人都可以对其做任何事情,没有限制,也不需要归属。SQLite就是这样做的。政府机构喜欢它,因为没有法律风险。
想要构建一个希望每个人都使用的库?选择MIT。想要确保改进回馈社区?使用GPL。担心企业软件中的专利?选择Apache。围绕你的代码建立业务?保持专有。想要用户的最大自由?尝试公有领域。
关键是将你的目标与许可证限制相匹配。不要仅仅复制其他项目的做法,而不理解他们选择该许可证的原因。
22.17K
热门
排行
收藏