作者 | Radon Rosborough
译者 | 弯月
出品 | CSDN(ID:CSDNnews)
去年我从大学毕业,现在一家公司担任开发运维及基础设施工程师。工作之余,我还利用空闲时间维护了一些开源项目。
在大学期间,我曾在一家创业公司 Replit 实习。本文主要讲述了 Replit 胁迫我关闭他们不喜欢的开源项目的经过。
Replit 是什么?
Replit 开发了一款 Web 应用,你可以通过这款应用在线运行使用不同的编程语言编写的代码。这并不是什么新的点子,但 Replit 的价值在于附加功能,比如分享工作成果、安装第三方软件包以及托管 Web 应用等等。
2019 年夏天,我在 Replit 工作期间,曾负责重建 Replit 的包管理技术栈,并将其开源了(源代码地址:https://github.com/raxod502/upm)。
2020 年夏天,我进入了另一家公司工作,但有时 Replit 会告诉我他们开发了一些非常酷的功能,我也会通过电子邮件与他们聊天。
我的开源项目
Replit 能够支持许多不同的编程语言,这一点我非常喜欢。我经常思考一个问题:一个网站可以容纳多少种编程语言?
为了研究这个问题,我构建了一个很小的可以在线运行代码的 Web 应用。我花了一天的时间,这款应用的雏形就构建好了。为什么我的这款应用如此之快?其实,在 Web 应用中运行 Python 代码只需要 30 行代码就可以了!这可能就是为什么在线运行 Python 代码的网站如此之多……
在这款小应用可以正常运行之后,我开始陆续加入各种不同的编程语言。如下是该项目的部分版本历史记录,我超级兴奋:
languages---------2020-06-05 df9ba38 Initial commit 02020-06-05 5e3a4a4 Install some packages into a Docker image 02020-06-05 e937c8f Simple Express server with "Hello world" 02020-06-06 0961498 Embed terminal on frontend app 02020-06-06 c66cf63 Embed Monaco editor on frontend 02020-06-06 27ab1f7 Add "run" button 02020-06-06 f417858 You can run Python code now 12020-06-07 d543081 You can run many languages now 82020-06-07 e2a3e71 All languages 17 working now 172020-06-07 473c50c ALL THE LANGUAGES 252020-06-08 3718315 even more languages 332020-06-08 548c1c1 repl.it superiority!! 382020-06-08 1ae424f More languages, we need all the languages 482020-06-09 c34ccf2 A lot more languages 772020-06-09 846caf2 At this point the number of languages is absurd 79
最终,我一共添加了 216 种语言,包括 Replit 支持的 38 种语言。你可能会问:为什么我要花这么多时间,在一个没什么人使用的 Web 应用中添加如此之多鲜为人知的编程语言?我只能说:这算不算是 2020 年你所见过的最奇怪的个人爱好?
与 Replit 分享了我的开源项目
有一天,我收到了一封来自 Replit 的电子邮件,通过邮件我得知他们发布了一项新功能。我认为这是与他们分享我的开源项目的好时机,也许他们可以从我的工作中获得一些灵感:
起初,我获得了一些积极的回应。然而,30 分钟后,Replit 突然开始指责我,说我不道德,还说我抄袭他们的设计:
首先,我的开源项目用到的所有想法均不是他们的“内部设计决策”(internal design decisions):他们的设计决策都发布到了 Replit 的博客上(我知道这一点是因为在我实习期间也写了一些博文)。其次,我的项目并非 Replit 克隆版,你去网上搜索一下“在线运行 Python”(或者搜索英文 run python online)就知道了,大部分代码都是大同小异:
但是,我觉得这中间可能有一些误会,因此我询问了细节:
然而,不幸的是,Replit 拒绝提供任何细节详细说明我究竟做错了什么。他们只是重申了之前的陈述,并威胁会起诉我:
接着,Replit 发来了另一封电子邮件,提醒我上个月他们刚刚从投资者那里筹集到了 2000 万美元,有必要的话,他们会利用这笔资金来对付我。然而,我曾是他们公司的一名实习生,一年前刚从大学毕业,并且没有经营任何商业机构。
关于这封邮件,我想指出两点:
邮件中提到“类似这样的代码提交”(commits like this),实际上是一种误导。我的项目中只有一次代码提交提到了“Replit”,就是我上面展示的那个,在写代码的第三天,我就添加完了 Replit 支持的 38 种语言,然后又继续添加了 178 种其他语言。
邮件中还说他们非常需要我这样的实习生,但我不明白这是什么意思。尤其是在第一份邮件中,他们还说希望我能回去。但是无所谓了,因为这与眼前的问题并没有什么关系。
Replit 威胁要起诉我
于是,我立即撤了我的项目,我觉得需要一些时间冷静下来,而且我还向 Replit 发了邮件道歉。我觉得有些东西在邮件中说不清楚,所以我问他能不能通个电话:
然而,不幸的是,Replit 无视了我的邮件,所以我又发送了邮件。这一次虽然我得到了回应,但是与我的希望有所出入:
为了让 Replit 明白,我并不满意眼前的情况,在接下来的几周内我又先后发送了三封电子邮件,但都被无视了。
换句话说,Replit 非常坚定:如果我重新发布我的开源项目,他们就会聘请“顶级律师”起诉我。
Replit 做的对吗?
Replit 声称我的开源项目是:
1. 抄袭 Replit;
2. 抄袭他们的商业秘密(“内部设计决策”);
3. 不道德。
下面,我们来逐个看看他们的这些说法:
1. 在开发项目的时候,我克隆 Replit 了吗?
2. 在开发项目的时候,我利用任何 Replit 的商业秘密了吗?
3. 在他们公司工作过一段时间后,我开发一个类似于 Replit 的开源项目,就是不道德?
问题 1 和问题 2 涉及很多技术细节,总的来说:
1. 如果说我的项目抄袭了 Replit,那么网上的其他项目呢?网上搜索的结果有 15 个之多(而且是商业项目!)。你只需要搜索一下“在线运行 python”(run python online)或“在线编程环境”(online programming environment)就知道了。
2. 通过 GitHub 代码库和 Replit 在线发布的博客文章就可以找出我的项目和 Replit 之间的每一个相似之处,这显然不是什么秘密。
下面,我们再来说一说问题 3:在他们公司工作过一段时间后,我开发一个类似于 Replit 的开源项目,就是不道德?
在我看来,这个问题的答案是“否”,原因有以下几个:
我的项目 Riju 完全是非商业性质的。与 Replit 不同,我没有从任何资金来源:广告、捐赠、集资、订阅等等。我对商业经营没有兴趣,而且也从来没想过有一天我的项目会非常流行,因为服务器的费用都是我个人支付的。
我的项目 Riju 并没有挖走任何 Replit 的客户。根据我的分析数据,2月份 Riju 共收到了38次访问(其中一半可能是我自己)。然而,Replit 拥有 700 多万用户。显然,Riju 不可能与 Replit 竞争。
我的项目 Riju 的建立初衷根本不是为了成为Replit 的竞争对手。由于我的架构仅限于在单个服务器上运行,因此只要任何人向我扔一个 fork 炸弹,我的整个系统都会崩溃。如果我想设计一个能与 Replit 竞争的产品,绝不会选择如此儿戏的架构。
Replit 的核心价值主张不是在线运行代码(许多网站都有此类免费的服务),而是提供附加功能。而我的项目 Riju 根本没有这些功能,比如:用户账号、保存工作成果、分享工作成果、发布 Web 应用、永久的工作空间、论坛、与 GitHub 集成等等。
在开发 Riju 的时候,我对 Replit 没有任何恶意,也没有试图隐藏任何东西。从一开始,我就通过 GitHub 公开了该项目,而 Replit 发现这个项目,也是因为我主动与他们分享了我的项目,希望他们能够从我的产品中获得一些灵感。
我从未想过将 Riju 打造成一款产品,这只不过是我个人的实验或艺术品。我甚至花了几十个小时添加了 Hexagony 和 SNOBOL 等语言。
我不是一个商人,我只是一个开源开发者,喜欢为了好玩而构建奇怪的东西。只要翻看一下我的网站项目列表(https://intuitiveexplanations.com/about/projects),就可以发现我没有构建过任何赚钱的产品。
我从未想过抄袭任何人的商业构思。伤害 Replit 并不是我构建 Riju 的目的,但他们却对我妄加指责(尤其是没有澄清问题,并拒绝讨论),在我看来,Replit 有很大的恶意。
为什么 Replit 会有如此行为?
Replit 所倡导的思想包括:
鼓励开源开发。例如,部分开源技术,为 Replit 添加 GitHub 支持;Replit 的 CEO还声称:“我的整个职业生涯都应归功于开源”(https://web.archive.org/web/20210108083314/https://amasad.me/github)。
回馈社区(https://web.archive.org/web/20210504051428/https://blog.replit.com/upm)。
降低分享与创作的难度。例如,Replit 的 CEO 在学习编程时曾说:“我会下载相关的项目……并进行相应的修改,以及获取灵感。”(https://web.archive.org/web/20210522215545/https://blog.replit.com/github)
然而,此次事件暴露了 Replit 的虚伪:
他们说他们鼓励开源开发,但是当我的开源项目冒犯了他们时,他们就采用极端偏激的手法要求我立即关闭项目。
他们声称通过希望开源和博客文章回馈社区,但是当我在社区项目中使用这些想法时,他们威胁要起诉我。
他们说他们希望降低分享与创作的难度,但是当我尝试借鉴 Replit 构建新项目时,却成为了他们的眼中钉。
在 Replit 给我的电子邮件中,他们的威胁基于这样一个事实:我曾在他们公司工作。但是,我认为这又是一个烟雾弹。为什么?我们来看看在我收到威胁的电子邮件后,Replit 的首席执行官 Amjad 发布的推文:
后来,由于引发了争论,Amjad 删除了这些推文:
在这些推文中,Amjad 指出 Athens Research 受到了另一家公司的启发,并认为因此他们应该被诟病,并禁止接受资助。此外,他说:“我对于抄袭者的看法非常坚定”,他鄙视所有他认定的“抄袭者”,而不仅仅是他推文中的某个公司。
Amjad 对 Athens Research 的评论,与我的项目收到的威胁有明显的相似之处。他甚至使用了同一个词:“copycat”(抄袭者)。对于 Athens Research,除了在推特上诋毁他们之外,Amjad 也别无他法。但就因为我曾在 Replit 工作过,所以 Amjad 就能对我提出起诉了。对于不了解此事情前后的人来说,这些指控看起来像是很合法。
最后,我还要重申一次:Replit 利用“顶级律师”和“大量资金”威胁一个没有公司、没有资金、没有商业野心、刚刚从大学毕业的人。如果是一个真正的商业企业冒犯到 Replit,我不敢想象他们会受到怎样对待。
Replit 给予这篇博文的回应
在我发布这篇博文之后,在 Hacker News 上引起了广泛的讨论。后来,Amjad 在 Hacker News 上发表了道歉声明,又引发了新一轮的讨论。
后来,他还联系我,想与我通话,我自然同意了:
在通话过程中,Amjad 向我道歉了,但他重申他认为我克隆了 Replit,而且认为我的行为不道德。最终,我们无法在这件事上达成一致,但他以书面形式承诺,同意我重新启动我的项目:
回想起来,我对 Amjad 有点失望:
他没有因为威胁我的事情而向我道歉(甚至没有提及),也没有在电话结束后更新帖子;
他没有因为公开转发指控我“窃取和发布 IP”而道歉(甚至没有提及),尽管他删除了转发;
他没有因为对我进行人身攻击而道歉(甚至没有提及),尽管前面曾提到十分需要我;
在电话中,在“道歉”之后,他觉得就好像他邀请我去他家,而我却背叛了他的信任;
即使我在电话中多次询问,他依然拒绝了详细说明我究竟复制 Replit 的哪一部分,他坚持声称我复制 Replit 的行为很不道德,无论是私下还是公开场合;
他断章取义,引用我说过的话,让人看起来好像是我同意他的指控。
总而言之,我以为我们本可以更好地处理这件事。
尽管如此,我仍然很高兴我们能够和解,而且我也非常期待接下来的生活,包括重启我的项目 Riju。
网友评论
评论 1:
怎么感觉你被一个 CEO 欺负了。他指责你行为不端,还威胁要请律师告你。他只不过是连哄带吓唬,迫使你关闭项目,结果真奏效了。
我想对所有读者说,不要害怕律师。律师不喜欢败诉,也不喜欢接会败诉的案子。然而,他们必须按照客户的要求行事,因此他们会调查问题,甚至发送恶意邮件。但是这些都没有关系。只有当律师真正接下案子,才有意义。在此之前的一切都是装腔作势和欺凌。
如果遇到相同的情况,我绝不会承认错误,不道歉,无视他们的邮件(尤其是人身攻击),然后任由事态发展,直到他们采取某种实际的行动。
同时,也需要有心理准备,如果真的打起官司来,无疑是劳民伤财,对双方都没有好处。最好看一看雇佣合同,有无这方面的明确声明。一方面遵纪守法,一方面也不要被别人不成熟的行为吓到。
评论 2:
Replit 好歹也是一家资金雄厚的公司,怎么就被一个实习生的业务项目给吓到了,真是有趣。如果他们的护城河这么低,几天之内就可以复制,那么恐怕他们需要担心的不止是这一个开源项目了。
原文:https://intuitiveexplanations.com/tech/replit/
本文为 CSDN 翻译,转载请注明来源出处。
☞万物互联的千亿级通信云市场,开发者机会在哪里
☞乔布斯当年是这样面试我的,你能挺到哪一步?
☞40 万年薪招应届生?OPPO 狂揽芯片人才,应届生招聘行情究竟如何?
☞腾讯迈出反内卷第一步:强制员工 6 点下班,周末双休,你羡慕了吗?
☞“搏一搏,单车变摩托!”华为天才少年耗时四个月,将自行车强势升级为自动驾驶