为什么我的代码进入闭源状态

简介:

我做出了一个可能让很多人遗憾的决定。从今天开始,我曾经开源放在 GitHub 上的代码,除了教育性质的代码,全部进入私有状态。这些代码包括 PySonar2,RubySonar 等等。从今以后,除非用于教育目的,我将不再开源任何代码。当然,你们已经下载的那些代码,仍然可以按照开源许可证免费使用,然而最新的改进以及将来的新产品,将全部闭源。做出这个决定的大部分原因,是因为多次对人心的失望。

为什么我的代码进入闭源状态

PySonar2 一度处于开源状态,使用宽松的 BSD 和 Apache 版权。PySonar 的用户包括了 Google,Sourcegraph,还有其它几个我不能透露名字的做专业代码管理工具的公司。很多人崇尚 BSD 这样的宽松版权,因为这样可以最大限度的传播代码。他们甚至把这作为了一种信仰,对于 GPL 这类严格限制商业用途的版权嗤之以鼻。甚至遮住眼睛对你说:“你的代码是 GPL 的,我不能看!看了之后写出一样的代码来,你会起诉我!” 然而多年的经历之后,我才发现 BSD 并不是好的开源版权,而 GPL 才是真正保护软件“自由”的。这个故事要从 Sourcegraph 讲起……

Sourcegraph 是一家做代码管理工具的公司。他们初期的系统,其实只是 PySonar 之上做了一个简单的 web 包装。把 PySonar 分析出来的信息倒到数据库里面,然后通过 web 方式显示给用户。PySonar 本身早就有一个演示程序,可以生成互动的 HTML,所以其实 Sourcegraph 能做的事情,我很容易就可以做到,只不过多一些杂活而已。Sourcegraph 并没有在 PySonar 之上增添很多的新东西,也无法做出 PySonar 这样的核心技术。但是因为我一直不在乎 Python 这语言,也没觉得这种工具有什么市场,所以一直没有动手开发一套完整的服务。不是不能做,而是没有动力去做。

BSD 的版权使得 Sourcegraph 的两个创始人可以完全免费,无限制的使用 PySonar。这样的结果,使得我无法为 PySonar 收到任何的回报。后来 Sourcegraph 的两个人找到我,想招我进去,帮助他们制造 RubySonar 和改进 PySonar。这样就开始了经济的不平衡。Sourcegraph 使用了 PySonar,按理我不需要另外做什么,就应该有一定的回报。然而现在他们把我招进去作为员工,我必须要做点其它事情,才能得到回报,也就是说我反倒成为了他们的打工仔。几个月之后,我逐渐发现这两个人的肤浅和不尊重。最后在得到了最重要的技术改进之后,两个创始人翻脸不认人,把我赶出了公司。

新的 PySonar2 里面已经没有了 Google 的代码。由于对人心的失望,我曾一度把 PySonar2 的版权改为 AGPL。这是 GPL 的增强版,它要求任何使用这些代码的人和公司,在对它做出改进之后,必须把改进的代码能让人下载。就算你在自己的服务器上运行这些代码,不把它作为产品提供给人,也一样需要让人能够下载到改进的代码。

把版权改为 AGPL 之后,出现了一个奇怪的事情。申请美国绿卡的时候,我找以前 Google 的上司要一封“工作经历证明”。这本应是一种公司应该无条件提供给任何前员工的文件,然而我的旧上司却对我说:“我可以给你这个证明,然而我想让你给我一个好处。你的 PySonar2 现在改成了 AGPL 版权,我们想用你的代码,却因为这个版权没法用。你能否把版权改为 BSD 一类的,这样很多人都可以用它?” 面对这样的无理要求,我很鄙视。所以干脆没要 Google 的工作经历证明,直接找其它公司开了证明。

又过了一段时间,我感觉 AGPL 似乎确实限制了 PySonar 的应用,所以又把版权给换成了 BSD,进而换成了 Apache,一种比 BSD 还要宽松的版权。刚换成 BSD,我就发现有一家代码工具公司 fork 了 PySonar,最新的 commit 正好是改为 BSD 版权的时候。这个公司从来没联系过我,从来没感谢我,只是本地里在用 PySonar 来赚钱。曾经一直在用 PySonar 的另一家公司的创始人 Z,当天也发信来跟我说:“正在考虑给你版税呢,结果你就换成 BSD 了。哈哈哈!” 这是什么意思呢?本来都要付钱给你了,结果你换了 BSD,所以我就不给你钱了,就是这个意思。不过他最后还是象征性的给了一千美元。

我一直把 Z 作为朋友。平时如果他报告点 PySonar 的 bug,我乐意免费给他改进。我给他介绍投资人,甚至给他介绍妹子…… 我并没有图他什么,并没有要求回报。我只是想积点德,将来总有好的后果吧。然而,前几天当我宣布离开美国的时候,我才发现我的好心,其实并没有好报。Z 发信息来,说看我想回国,所以想招我进他的公司。给我开了一个价,具体的数字我就不说了,不过这个工资,现在国内是个程序员都能拿到。我想给那点钱,给他当个顾问,关键时刻给点方向,隔几个月改改 PySonar 的代码也就算了,结果他要求我全职给他工作。嘲笑了他开得太低,结果得到的回答是:“你做出过什么真正的产品吗?” 是的,PySonar 不是真正的产品。你在外面做个包装界面,然后功劳都是你的了,我还得给你打工?哎,我再也不相信任何免费用我代码的人了。

这就是我用 BSD 版权发行有价值的代码的辛酸史。由于这个原因,从今天起,我的代码完全进入闭源状态。没有人再能免费得到 PySonar 最新的改进,没有人再能看见我最新的技术。另外,PySonar 其实一直以来都有一个为开源的分支,里面含有对于静态分析逻辑的重大改进。从今以后,这一切都只能属于我私有,它们其中一些将会成为我未来产品立于不败之地的支柱。


作者:佚名

来源:51CTO

相关文章
|
2月前
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
278 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
7月前
|
API 运维
开发与运维工具问题之开源的大语言模型能够自由与外部工具交互如何解决
开发与运维工具问题之开源的大语言模型能够自由与外部工具交互如何解决
59 2
|
7月前
|
程序员 数据库连接 Python
解锁Python新姿势:上下文管理器的自定义技巧,让你的编程之路更顺畅
【7月更文挑战第7天】Python上下文管理器简化资源管理,确保异常时资源正确释放。通过实现`__enter__`和`__exit__`或使用`contextmanager`装饰器自定义管理器。示例展示了类定义和装饰器方法。自定义管理器提升代码可读性,防止资源泄露,是高效编程的关键。**
61 1
|
8月前
|
C#
详细解读C#系列五《多样化的程序分支》
详细解读C#系列五《多样化的程序分支》
27 0
|
9月前
|
数据采集 人工智能 算法
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
|
自然语言处理 数据可视化 图形学
SolidUI社区-提示词自我一致性
SolidUI社区-提示词自我一致性
255 0
|
安全 Shell 网络安全
OpenHarmony系统贡献代码流程
通过这段时间的学习,我想你肯定有想为OpenHarmony贡献代码的冲动吧,今天带大家学习一下贡献代码的流程,话不多说,开始了哦~~
198 0
OpenHarmony系统贡献代码流程
|
安全 Java API
微软发布面向 Java 开发者的 VS Code 更新路线图:改善开发体验、远程开发、安全性
微软发布面向 Java 开发者的 VS Code 更新路线图:改善开发体验、远程开发、安全性
161 0
WIN10升级的做法有待友好设计
WIN10升级的做法有待友好设计
118 0
|
项目管理 数据挖掘 数据可视化
企业总是找不到好用的项目管理软件?这点值得注意!
大家都知道项目管理软件的应用对于企业管理项目的重要性,但选择好的软件却不是一件简单的事。很多时候企业花费一大笔价钱买进一套软件,从需求分析、开发、培训到上线,耗费极大的人力、财力及时间,但在实际应用中效果却不尽人意,项目的难题得不到真正解决,这让人不禁苦恼:这到底是为什么? 购买项目管理软件不同于...
987 0