作者 | Radon Rosborough譯者 | 彎月,責編 | 鄭麗媛去年我從大學畢業,現在一家公司擔任開發運維及基礎設施工程師。工作之餘,我還利用空閒時間維護了一些開源項目。在大學期間,
2021-06-21 14:04:16
去年我從大學畢業,現在一家公司擔任開發運維及基礎設施工程師。工作之餘,我還利用空閒時間維護了一些開源項目。
在大學期間,我曾在一家創業公司 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 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 種語言。你可能會問:為什麼我要花這麼多時間,在一個沒什麼人使用的 Web 應用中新增如此之多鮮為人知的程式語言?我只能說:這算不算是 2020 年你所見過的最奇怪的個人愛好?
有一天,我收到了一封來自 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 聲稱我的開源項目是:
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 新增 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,我不敢想象他們會受到怎樣對待。
在我釋出這篇博文之後,在 Hacker News 上引起了廣泛的討論。後來,Amjad 在 Hacker News 上發表了道歉聲明,又引發了新一輪的討論。
後來,他還聯絡我,想與我通話,我自然同意了:
在通話過程中,Amjad 向我道歉了,但他重申他認為我克隆了 Replit,而且認為我的行為不道德。最終,我們無法在這件事上達成一致,但他以書面形式承諾,同意我重新啟動我的項目:
回想起來,我對 Amjad 有點失望:
他沒有因為威脅我的事情而向我道歉(甚至沒有提及),也沒有在電話結束後更新帖子;
他沒有因為公開轉發指控我「竊取和釋出 IP」而道歉(甚至沒有提及),儘管他刪除了轉發;
他沒有因為對我進行人身攻擊而道歉(甚至沒有提及),儘管前面曾提到十分需要我;
在電話中,在「道歉」之後,他覺得就好像他邀請我去他家,而我卻背叛了他的信任;
即使我在電話中多次詢問,他依然拒絕了詳細說明我究竟複製 Replit 的哪一部分,他堅持聲稱我複製 Replit 的行為很不道德,無論是私下還是公開場合;
他斷章取義,引用我說過的話,讓人看起來好像是我同意他的指控。
總而言之,我以為我們本可以更好地處理這件事。
儘管如此,我仍然很高興我們能夠和解,而且我也非常期待接下來的生活,包括重啟我的項目 Riju。
怎麼感覺你被一個 CEO 欺負了。他指責你行為不端,還威脅要請律師告你。他只不過是連哄帶嚇唬,迫使你關閉項目,結果真奏效了。
我想對所有讀者說,不要害怕律師。律師不喜歡敗訴,也不喜歡接會敗訴的案子。然而,他們必須按照客戶的要求行事,因此他們會調查問題,甚至傳送惡意郵件。但是這些都沒有關係。只有當律師真正接下案子,才有意義。在此之前的一切都是裝腔作勢和欺凌。
如果遇到相同的情況,我絕不會承認錯誤,不道歉,無視他們的郵件(尤其是人身攻擊),然後任由事態發展,直到他們採取某種實際的行動。
同時,也需要有心理準備,如果真的打起官司來,無疑是勞民傷財,對雙方都沒有好處。最好看一看僱傭合同,有無這方面的明確聲明。一方面遵紀守法,一方面也不要被別人不成熟的行為嚇到。
Replit 好歹也是一家資金雄厚的公司,怎麼就被一個實習生的業務項目給嚇到了,真是有趣。如果他們的護城河這麼低,幾天之內就可以複製,那麼恐怕他們需要擔心的不止是這一個開源項目了。
原文:https://intuitiveexplanations.com/tech/replit/
本文為 CSDN 翻譯,轉載請註明來源出處。
相關文章
作者 | Radon Rosborough譯者 | 彎月,責編 | 鄭麗媛去年我從大學畢業,現在一家公司擔任開發運維及基礎設施工程師。工作之餘,我還利用空閒時間維護了一些開源項目。在大學期間,
2021-06-21 14:04:16
在上個月的SIDDisplayWeek2021上,維信諾釋出了全新的屏下攝像解決方案InVseePro,官方介紹,該Pro方案除具備更高畫素密度、更高透過率外,維信諾首次揭示InVsee屏下攝像解決方案的
2021-06-21 14:03:24
黑暗、破曉 隱藏在挫敗的洗禮之後 創造、突破 隱藏在時局的變換之中 我不能證明歲月有腳,但確信他們在奔跑,曾經的榮耀已成為未來的預告。9年,見過你帶著誠摯
2021-06-21 14:03:14
在日常工作中,經常會用到word編輯文件,有時需要在文件中輸入平均值符號,方法有很多種,今天就來分享一種用公式輸入平均值符號的方法。1、開啟需要輸入平均值符號的文件,或新建一
2021-06-21 14:02:38
「深水才能養大魚,安防還沒出現大魚,是因為水不夠深。」幾年前胡揚忠在接受AI掘金志專訪時如此表示。此後幾年,海康不斷進化,逐步完成軟化轉型、組織架構、成長主線三大質變,一步
2021-06-21 14:01:59
現如今基本每家每戶都安裝的有光纖寬頻,為我們的生活提供了眾多方便。這本是一件好事,但總有那麼幾戶人家是沒有安裝寬頻的。尤其是在外租房的環境下,被蹭網的現象格外嚴重,對於
2021-06-21 14:01:27