<p>I<br />
think you should take it down and stop working on it. I’ll be engaging<br />
our lawyers on Monday if it’s still up by then. […] We were a tiny company when you interned<br />
with us […] Luckily we’re bigger now,<br />
and crucially have a lot of money to pay for top lawyers now if we’re<br />
forced to go that route.<br />
Hi, my name is Radon. I graduated college last year and now work as a<br />
software engineer in DevOps/Infrastructure. In my free time, I also<br />
maintain a number of open-source<br />
projects.<br />
While I was in college, I interned at the startup Replit. This blog<br />
post is the story of how Replit is using legal threats and their<br />
venture-capital funding to bully me into shutting down an open-source<br />
project they don’t like.<br />
Table of contents </p>
<p>What’s Replit?<br />
Replit makes a webapp you can use to run code online in different<br />
programming languages. This is nothing new (just Google “run python<br />
online” for<br />
proof), so Replit’s value proposition is extra features like sharing<br />
your work, installing third-party packages, and hosting webapps.<br />
I worked for Replit in Summer 2019, where I was asked to rebuild<br />
Replit’s package management stack and make it open-source. If you like<br />
reading about tech stuff, here’s the post I wrote for Replit’s<br />
blog,<br />
and here’s the code on GitHub.<br />
I took a job elsewhere in Summer 2020, but still chatted with them<br />
occasionally by email when they reached out to tell me about something<br />
cool Replit had developed.<br />
What was my open-source project? </p>
<p>The aspect of Replit that I really enjoyed was how it supported lots<br />
of different programming languages. (I wrote another blog post for<br />
Replit<br />
about how they do that.) That got me thinking: how many programming<br />
languages could you possibly cram into a single website?<br />
To explore that question, I put together my own little webapp that<br />
could run code online. After about a day, I had something that worked.<br />
(If you’re wondering why it was so fast—it turns out you only need<br />
30 lines of code to let<br />
people run Python code in a webapp! This may be why there are so many<br />
websites for running Python online…)<br />
After it was working, I started adding as many different programming<br />
languages as I could. As you can see from this excerpt of my project’s<br />
version history, I got a little overexcited:<br />
languages<br />
———<br />
2020-06-05 df9ba38 Initial commit 0<br />
2020-06-05 5e3a4a4 Install some packages into a Docker image 0<br />
2020-06-05 e937c8f Simple Express server with “Hello world” 0<br />
2020-06-06 0961498 Embed terminal on frontend app 0<br />
2020-06-06 c66cf63 Embed Monaco editor on frontend 0<br />
2020-06-06 27ab1f7 Add “run” button 0<br />
2020-06-06 f417858 You can run Python code now 1<br />
2020-06-07 d543081 You can run many languages now 8<br />
2020-06-07 e2a3e71 All languages 17 working now 17<br />
2020-06-07 473c50c ALL THE LANGUAGES 25<br />
2020-06-08 3718315 even more languages 33<br />
2020-06-08 548c1c1 repl.it superiority!! 38<br />
2020-06-08 1ae424f More languages, we need all the languages 48<br />
2020-06-09 c34ccf2 A lot more languages 77<br />
2020-06-09 846caf2 At this point the number of languages is absurd 79 </p>
<p>I eventually ended up with 216 languages, including all 38 languages<br />
from<br />
Replit,<br />
all 100 languages from Yusuke Endoh’s “Quine<br />
Relay”, and a good deal more<br />
besides. You might ask: Why did I spend so much time adding obscure<br />
programming languages to a webapp nobody was going to use? Well, let<br />
me put it this way: Is it the weirdest 2020 hobby you’ve seen?<br />
What happened when I shared my open-source project with Replit?<br />
One day, I got an email from Replit letting me know about a new<br />
feature they released. I figured this was a good time to share my<br />
open-source project with them, in case they wanted to take inspiration<br />
from any of my work: </p>
<p>At first, I got a positive response. But then, 30 minutes later, out<br />
of nowhere, Replit accused me of unethical behavior and stealing their<br />
design: </p>
<p>Now, none of the ideas I used in my open-source project were “internal<br />
design decisions”: they’ve all been published publicly on Replit’s<br />
blog (I knew this because I’d been asked to write some of those blog<br />
posts during my internship). And my project also wasn’t any more of a<br />
Replit clone than any of the other websites on the first few pages of<br />
Google results for “run python online”, most of which look exactly the<br />
same: </p>
<p>But I figured I might have missed something, so I asked for details: </p>
<p>(The rest of this email is basically me repeating the previous<br />
paragraph of this article, but with a lot more technical details. You<br />
can read the whole email on Imgur,<br />
mirrored on the Internet<br />
Archive.)<br />
Unfortunately, Replit refused to provide any specifics on what they<br />
were saying I had done wrong, reiterated their previous statements,<br />
and threatened me with a lawsuit: </p>
<p>And then just to put a cherry on top, Replit sent me another email<br />
reminding me that they just raised $20 million from their investors<br />
last<br />
month,<br />
and they weren’t afraid to use it against me. The “me” in question<br />
being one of their previous interns who just graduated from college a<br />
year ago, and who isn’t running any kind of commercial operation<br />
whatsoever. </p>
<p>I’d like to point out two things about this email: </p>
<p>The remark about “commits like this”—this is actually misleading.<br />
There’s only one commit in my project that mentions Replit, and it’s<br />
the one I already showed you earlier, from my third day of coding,<br />
when I’d just added all 38 languages that Replit supported, before<br />
moving onto the 178 other languages I wanted to add.<br />
The remark about me being a “demanding” intern—I’m not actually<br />
sure what this is meant to imply, especially since Replit had just<br />
tried to recruit me earlier that day (see the screenshot of their<br />
first email). But I’ll leave it alone because it’s not really<br />
relevant to the issue at hand. </p>
<p>What happened after Replit threatened to sue me?<br />
Naturally, I took down my project right away, gave it some time for<br />
feelings to cool, and sent Replit an apology. I figured something<br />
might have been lost over email, so I asked to get on a call: </p>
<p>Unfortunately, Replit ignored this email, so I sent them another one<br />
following up. This one got a response, but not the one I was hoping<br />
for: </p>
<p>Just in case Replit didn’t understand that I wasn’t OK with this<br />
situation, I sent three follow-up emails explaining as such over the<br />
next few weeks, all of which were ignored.<br />
In other words, Replit stands by its threat: if I re-publish my<br />
open-source project, then they will sue me with “top lawyers”.<br />
Is Replit right?<br />
Replit claimed that my open-source project was: </p>
<p>a clone of Replit<br />
based on their trade secrets (“internal design decisions”)<br />
unethical to build </p>
<p>Let’s examine this claim, part by part: </p>
<p>In developing my project, was I making a clone of Replit?<br />
In developing my project, did I make use of any trade secrets of<br />
Replit?<br />
Was it unethical for me to develop an open-source project that’s<br />
similar to Replit, after working for them? </p>
<p>Questions 1 and 2 have a fair number of technical details, so I’ve put<br />
them in a separate post. The TL;DR is: </p>
<p>My project isn’t any more similar to Replit than the 15 other<br />
(commercial!) ones you can find on Google by searching “run python<br />
online” or “online programming environment”.<br />
Every similarity between my project and Replit can be explained by<br />
looking only at GitHub repositories and blog posts that were<br />
published online by Replit itself, making them obviously not any<br />
kind of secret. </p>
<p>Let’s address question 3 here: </p>
<p>Q: Was it unethical for me to develop an open-source project that’s<br />
similar to Replit, after working for them? </p>
<p>In my opinion, the answer to this question is no, for a number of<br />
reasons: </p>
<p>Riju is entirely non-commercial. Unlike Replit, I didn’t seek<br />
funding from any source—advertising, donations, fundraising,<br />
subscriptions, whatever. I have no interest in running a business,<br />
and never really wanted Riju to become too popular, since I was<br />
the one paying the server bill.<br />
Riju wasn’t stealing customers from Replit. Based on my analytics<br />
data, there were 38 visits to Riju during the month of February.<br />
(Half of those were probably me.) Meanwhile, Replit had over 7<br />
million<br />
users.<br />
There’s obviously no sense in which Riju was competing with Replit.<br />
Riju wasn’t built as a competitor to Replit, either. Since the<br />
architecture was limited to running on a single server, anyone could<br />
bring the entire system down just by typing in a fork<br />
bomb—and one of my<br />
friends did, just to see what would happen. (The system crashed.) If<br />
I were designing a product to compete with Replit, I certainly<br />
wouldn’t have picked an architecture that could only scale to<br />
toy-project size.<br />
Replit’s core value proposition isn’t letting you run code online<br />
(you can do this in dozens of places for free), it’s the features<br />
they offer on top of running code. Riju categorically lacked all of<br />
these features, including: having a user account, saving your work,<br />
sharing your work, publishing webapps, persistent workspaces,<br />
discussion forums, integration with GitHub, etc. etc.<br />
I had no bad intentions towards Replit when developing Riju, and<br />
wasn’t trying to hide anything. As proof of these claims, I offer<br />
the fact that I had the project public on my GitHub from the<br />
beginning, and the fact that Replit found out about the project<br />
because I openly shared it with them of my own volition, extending<br />
an offer for them to take inspiration from my work.<br />
Riju was never intended to be a product, it was intended to be a<br />
personal playground / art piece. As proof of this claim, I offer the<br />
fact that I spent dozens of hours adding languages like<br />
Hexagony and<br />
SNOBOL rather making it so you could<br />
save your work(!). </p>
<p>I’m not a business person. I’m just an open-source dev who likes to<br />
build weird things for fun. (If you doubt my track record of building<br />
things that don’t make money, just check out the list on my<br />
website, and note the conspicuous absence of<br />
anything that’s ever made a cent of revenue.)<br />
I would never try to steal someone’s business after I worked with<br />
them. Hurting Replit was not my intent in working on Riju, and to<br />
accuse me otherwise—especially without asking a single clarifying<br />
question, and refusing all offers to have a discussion—shows a great<br />
deal of bad faith on the part of Replit, in my opinion.<br />
If you’d like to decide for yourself who is in the right, I’m happy to<br />
put all of the evidence out in the open (except the code, because<br />
Replit’s standing by its promise to sue me if I do). Again, I have a<br />
separate post with all the technical details. And you can<br />
also read all communications between me and Replit, in full and<br />
unabridged form, on Imgur, mirrored on<br />
the Internet<br />
Archive).<br />
(Technical details about Replit internals redacted, as well as any<br />
statement that could reveal such details indirectly.)<br />
Why would Replit do this?<br />
Replit’s stated ideals include: </p>
<p>However, Replit’s actions in this case reveal hypocrisy: </p>
<p>they say they encourage open-source development, but when my<br />
open-source project offended them, they shut it down with extreme<br />
prejudice<br />
they claim to be giving back to the community through their<br />
open-source and blog posts, but when I tried to use those ideas in a<br />
community project, they threatened to sue me<br />
they say they make it easy to share and remix your creations—but<br />
when I tried to remix Replit itself, I became a persona non grata </p>
<p>In Replit’s emails to me, their threats were based on the fact that I<br />
had worked for them in the past. However, I believe this reasoning is<br />
a smokescreen. To see why, let’s take a look at some tweets that<br />
Replit’s CEO, Amjad, posted just after threatening me by email: </p>
<p>Amjad later deleted these tweets because they proved<br />
controversial: </p>
<p>In these tweets, Amjad points out that Athens Research was clearly<br />
inspired by another company, and argues that they should therefore be<br />
“ridiculed” and banned from receiving funding. Furthermore, he says:<br />
“I stand by what I said about copycats in general”, i.e. he disdains<br />
all people that he thinks are “copying” existing ones, not just the<br />
specific company in his tweet.<br />
There is a clear resemblance between Amjad’s comments on Athens<br />
Research and his legal threats towards my own project. He even used<br />
exactly the same word, “copycat”, in both. In the case of Athens<br />
Research, there was nothing Amjad could do to express his disdain<br />
besides denigrate them on Twitter. But in my case, since I had worked<br />
for Replit before, Amjad had an excuse to throw accusations my<br />
way—accusations that, if you aren’t familiar with the facts, sound<br />
like they could be legitimate.<br />
I’d also like to reiterate that the person Replit is threatening with<br />
“top lawyers” and “a lot of money” is a new grad with no company,<br />
no funding, and no commercial ambitions. If someone with an actual<br />
commercial enterprise were to offend Replit, I shudder to think what<br />
treatment they might receive. </p>
<p>Radon Rosborough, May 2021 </p>
<p>Adblock test (Why?)</p>