欢迎回来
登录你的知识库账户
忘记密码?
还没有账户?立即注册
创建账户
注册你的专属知识库
已有账户?去登录
找回密码
输入注册邮箱获取验证码
返回登录
请输入图片中的验证码以继续注册
加载中...
取消
新建收藏
手动添加你喜欢的内容
取消
编辑头像与昵称
上传新头像或修改你的显示昵称
支持 JPG/PNG,最大 2MB
取消

问题反馈

notebasewww.notebase.cn
控制台
内容库
动态
管理
账户
U
用户
--
在线
v0.8.7 · 知识库
笔记
KnowledgeBase
网络无边,知识有迹。
0笔记
0工具
30推荐

分类导航

按主题直达

编辑精选

站内用户贡献 · 真实笔记

最新收录

每日更新
继续浏览全部内容 →
>
笔记
0
加载中...
工具
0
此页用于记录用户反馈问题后的每一次改进
笔记用法

“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。

md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。

要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。

工具用法

在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。

要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。

工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。

隐藏笔记

写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。

适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。

数据安全

你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。

技术

全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。

理念

这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。

原则

不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。

更多

产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。

举报

如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。

趋势
// 点击导航加载发现
归档
// 归档为空
最近浏览
// 暂无浏览记录
发布
// 加载中...
用户发布
// 加载中...
用户管理
// 加载中...
访问统计
// 加载中...
内容审核
// 加载中...
个人信息
// 加载中...
返回首页

Replit 如何用法律威胁扼杀我的开源项目

1970/1/1创业商业

一名前实习生指控 Replit 利用法律威胁和风投资金,迫使自己下架一个与其功能相似但独立开发的 216 语言开源项目。

背景:我是谁

大家好,我叫 Radon。去年刚从大学毕业,目前在一家公司的 DevOps/基础设施团队担任软件工程师。业余时间,我维护着不少开源项目。大学期间,我曾在一家名叫 Replit 的初创公司实习。这篇博文,就是讲述 Replit 如何利用法律威胁和它们拿到的风险投资,来霸凌我、迫使我关停一个他们不喜欢的开源项目的故事。

Replit 是什么?

Replit 提供了一个网页应用,让你可以在线运行各种编程语言的代码。这本身不是什么新鲜事(Google 搜一下 "run python online" 就能看到一堆),所以 Replit 的价值主张在于附加功能,比如:分享你的代码、安装第三方包、以及托管 Web 应用等。

我于 2019 年夏天在 Replit 实习,当时被安排的任务是重建 Replit 的包管理栈并将其开源。如果对技术细节感兴趣,这里是我为 Replit 博客写的文章(注:原文链接已失效),这里是 GitHub 上的代码。我于 2020 年夏天换了一份工作,但偶尔还是会通过邮件和他们聊几句,通常是他们告诉我 Replit 又做了什么酷炫的东西的时候。

我的开源项目是什么?

我真正喜欢 Replit 的一点,是它对大量编程语言的支持。(我为此也为 Replit 写过另一篇博文,介绍他们是怎么做到的。)这让我思考一个问题:一个网站究竟能塞进多少种编程语言?

为了探索这个问题,我自己动手做了一个能在线运行代码的小型 Web 应用。大约一天后,我就做出了一个能跑的版本。(你可能好奇为什么这么快——事实证明,只需要 30 行代码就能让人们在网页里运行 Python 代码!这可能也是为什么网上有那么多网站在线运行 Python 的原因……)

当它运行起来之后,我开始尽可能多地添加编程语言。从我的项目版本历史摘录中可以看到,我当时有点过于兴奋:

languages ---------
2020-06-05 df9ba38 Initial commit 0
2020-06-05 5e3a4a4 Install some packages into a Docker image 0
2020-06-05 e937c8f Simple Express server with "Hello world" 0
2020-06-06 0961498 Embed terminal on frontend app 0
2020-06-06 c66cf63 Embed Monaco editor on frontend 0
2020-06-06 27ab1f7 Add "run" button 0
2020-06-06 f417858 You can run Python code now 1
2020-06-07 d543081 You can run many languages now 8
2020-06-07 e2a3e71 All languages 17 working now 17
2020-06-07 473c50c ALL THE LANGUAGES 25
2020-06-08 3718315 even more languages 33
2020-06-08 548c1c1 repl.it superiority!! 38
2020-06-08 1ae424f More languages, we need all the languages 48
2020-06-09 c34ccf2 A lot more languages 77
2020-06-09 846caf2 At this point the number of languages is absurd 79

我最终集成了 216 种语言,包括 Replit 支持的全部 38 种语言、Yusuke Endoh 的“Quine Relay”项目里的全部 100 种语言,此外还有更多。

你可能会问:为什么我要花那么多时间,把各种冷门编程语言塞进一个根本没人会用的网站里?嗯,让我这么说吧:这是你 2020 年见过最奇怪的爱好吗?

当我将开源项目分享给 Replit 时发生了什么?

某天,我收到一封 Replit 的邮件,告诉我他们发布了一项新功能。我觉得这是个好时机,或许可以把这个开源项目分享给他们看看,万一他们想从我的工作中获取一些灵感呢:

起初,我得到了积极的回应。但 30 分钟后,Replit 却毫无征兆地指责我行为不道德,并窃取了他们的设计:

(这里邮件截图的内容是:"我认为你应该把它下架并停止开发。如果到周一它还挂着,我会联系我们的律师。当我们还是小公司时,你是我们的实习生……幸运的是我们现在变大了,而且关键的是,如果我们不得不走法律途径,我们现在有很多钱可以请顶级律师。")

现在,我在我的开源项目中使用的任何想法,都不是他们的“内部设计决策”:这些想法都已经公开地发布在 Replit 的博客上(我知道这一点,因为我在实习期间就被要求写过一些这样的博文)。而且,我的项目说到底不比 Google 上搜索 "run python online" 前几页结果中任何其他网站更像 Replit 的克隆——实际上,那些网站看起来几乎一模一样:

但我猜想我可能遗漏了什么,于是我发邮件询问细节:

(这封邮件剩下的部分,基本就是在重复我上文所述的论点,但包含更多的技术细节。你可以在 Imgur 上阅读完整邮件,也可通过互联网档案馆访问镜像。)

不幸的是,Replit 拒绝提供任何关于我做错什么的具体细节,只是重申了他们之前的说法,并用法律诉讼威胁我:

(邮件截图:"我们已审查你的项目,结论不变。请不要继续开发或传播这个项目。这封信就是正式通知,如果项目继续存在,我们将采取法律行动。")

然后,作为压轴,Replit 又给我发了另一封邮件,提醒我说他们上个月刚从投资者那里筹集了 2000 万美元,并且他们不介意用这笔钱来对付我。

而这里的“我”,只是他们的一名前实习生,一年前刚大学毕业,完全没有经营任何商业性质的业务。

我想指出这封邮件的两点问题:

  • 关于“像这样的提交”的评论——这其实具有误导性。 我的项目中只有一个提交提到了 Replit,就是我在前面展示的那个,那是在我编码的第三天,我刚刚添加完所有 Replit 支持的 38 种语言,之后我还继续添加了 178 种其他语言。
  • 关于我是一个“苛刻”实习生的评论—— 我不太确定这想暗示什么,尤其是 Replit 当天早些时候还试图招揽我回去(见他们第一封邮件的截图)。但我不打算对此多做纠缠,因为这和当前问题并不直接相关。

在 Replit 威胁起诉我之后发生了什么?

自然而然,我立刻下架了我的项目,留出一些时间让情绪冷静,然后给 Replit 发了一封道歉信。我猜想可能是邮件沟通出了误会,于是请求安排一次通话:

不幸的是,Replit 无视了这封邮件,所以我再次发了一封邮件跟进。这封得到了回复,但并不是我期望的回复:

(邮件截图:"我们的立场没有改变。基于你的项目结构和你对 Replit 内部知识的了解,我们认为你的项目侵犯了我们的权利。任何进一步的沟通请通过我们的法律部门进行。")

为了确保 Replit 明白我对这种情况无法接受,我在接下来的几周内又发了两三封跟进邮件说明,但均被无视。

换句话说,Replit 坚持其威胁:如果我重新发布我的开源项目,他们将用“一流律师”起诉我。

Replit 是对的吗?

Replit 声称我的开源项目是:

  1. 基于他们商业机密(“内部设计决策”)的 Replit 克隆。
  2. 构建它是不道德的。

让我们分部分来审视这个说法:

  1. 在开发我的项目时,我是否在制作 Replit 的克隆?
  2. 在开发我的项目时,我是否使用了 Replit 的商业机密?
  3. 在我为他们工作之后,开发一个与 Replit 类似的开源项目是否不道德?

问题 1 和 2 涉及相当多的技术细节,我将它们放在另一篇单独的文章中阐述 (链接已失效)。结论是:我的项目并不比你在 Google 上搜索“run python online”或“online programming environment”能找到的其他 15 个(商业性的!)项目更像 Replit。 我的项目与 Replit 之间的每一个相似之处,都可以仅通过查看 Replit 自己在网上公开的 GitHub 仓库和博客文章来解释,这些显然不是任何形式的秘密。

让我们在这里解决第三个问题:

问:在我为他们工作之后,开发一个与 Replit 类似的开源项目是否不道德?

首先,我用的是在实习期间自己学到和发现的通用知识,同时也没有违反任何我在 Replit 签署的协议(我在那里实习的标准雇佣协议里没有任何竞业禁止或保密条款,涵盖非公开信息以外的内容,而且这些项目所用的技术都是公开的、普遍存在的)。其次,我的项目不是为了与 Replit 竞争,它只是一个个人爱好项目。我和 Replit 没有任何商业竞争关系。我把它公开,只是认为其他人也会觉得它有趣,甚至可能从中学到点什么。

Replit 为什么要这么做?

问得好。让我们来看看可能的最坏情况。

最坏的情况是:有一个看起来像 Replit 的开源项目,由一位前实习生维护,可能会吸引一些原本可能使用 Replit 的用户。考虑到我的项目花了一天时间才构建起来(而 Replit 已经开发了好几年),很难说它会是个威胁——任何人复制粘贴基础功能都是可能的,那些基础功能是常识。

这是一个典型的"我们有大把钱和律师,而你只有一个人和一份业余爱好"的例子。他们的核心策略很简单:让你害怕,让你屈服。当像 Replit 这样的公司有钱请顶级律师时,开源项目维护者的成本高得让人望而却步——即使你是完全正确的。

在开源世界,这种恐吓并不少见。通常,大型公司或资金雄厚的初创公司会用法律模糊性来恫吓独立开发者,因为诉讼的威胁本身就是一种强大的武器,不管你的代码实际上有多干净。

Replit 之所以能这么做,是因为聘请律师并威胁诉讼的成本对我的项目来说,要付出巨大的代价——就算最后我赢了,我也已经输了。这就是为什么我希望把这个故事公开。

更新:Replit 的回应与项目恢复

更新(2020年6月): 我收到了 Replit 的官方回复,我的开源项目很快就会重新上线。下面是这篇博客文章底部新增的更新内容。其余内容将作为历史记录保留。

(注:原文底部更新的具体内容已不可考,但根据作者描述和 HN 讨论,Replit 在公开压力下撤回了法律威胁,作者随后恢复了项目。)

相关链接

  • 原文链接:https://intuitiveexplanations.com/tech/replit/

一些想法

这个案例揭示了当前开源生态中一个令人不安的现实:一个大公司可以用法律系统作为武器,将个人开发者碾压。即使你的代码是 100% 干净、独立编写的,即使你没有任何恶意,只要对方有足够的资金和律师团队,他们就能让你陷入可能倾家荡产的诉讼泥潭。在这种威慑下,很多开发者会选择退缩。

但 Radon 选择将整个邮件往来公开。这不仅是对 Replit 行为的曝光,更是对开源社区团结力量的一次展示——当足够多的人关注并讨论时,即使是大公司也不得不重新评估自己的立场。最终,Replit 的让步证明了舆论压力的有效性,也提醒了所有开发者,当我们面临不公正的对待时,公开透明地记录和分享,可能才是最强大的防御武器。

编写使用方法
Markdown 格式 · Ctrl+Enter 确定
新建笔记
预览
数据表格
点击单元格编辑 · Tab 移动
A1fx
Sheet1
BIH1H2≡🔗</>
隐私提醒

取消
编辑工具
取消