“Eu acho que você deveria fechar o projeto e parar de trabalhar nele. Vou chamar nossos advogados na segunda-feira, se você não atender às condições até lá. [...] Éramos uma empresa pequena quando você estagiou conosco [...] Felizmente, somos muito maiores agora e, o que é mais importante, temos muito dinheiro para pagar os melhores advogados se tivermos que ir assim caminho. "
- da correspondência com o CEO Replit
UPD: recebi uma resposta oficial do Replit e meu projeto de código aberto estará de volta em breve; por favor, veja o final da postagem na postagem para atualizações. O resto do conteúdo permanecerá aqui como um artefato histórico.
Olá, meu nome é Radon. Eu me formei na faculdade no ano passado e agora trabalho como programador de DevOps / infraestrutura. Em meu tempo livre, também mantenho vários projetos de código aberto .
Quando eu estava na faculdade, estagiei em uma startup chamada Replit. Esta é a história de como o Replit usa ameaças legais e seu financiamento de risco para me fazer fechar um projeto de código aberto que eles não gostam.
Sobre Replit
Replit faz um aplicativo da web que você pode usar para executar código na Internet em diferentes linguagens de programação. Isso não é nenhuma novidade (google "execute python online" como prova), então a proposta de valor do Replit são recursos adicionais, como colaboração, instalação de pacotes de terceiros e hospedagem de aplicativos da web.
Eu estava trabalhando na Replit no verão de 2019, onde me pediram para refazer a pilha de gerenciamento de pacotes Replit e torná-la open-source. Se você gosta de ler sobre coisas técnicas, aqui está minha postagem no blog Replit e aqui está o código no GitHub .
No verão de 2020, aceitei um emprego em outro lugar, mas ainda mandava e-mails de vez em quando quando me procuravam sobre algo legal que o Replit havia desenvolvido.
Sobre meu projeto de código aberto
No Replit, gostei muito do suporte para muitas linguagens de programação diferentes. (Eu escrevi outro post no blog Replit sobre como eles fazem isso.) E me perguntei: Quantas linguagens de programação você pode enfiar em um site?
Para investigar essa questão, criei meu próprio pequeno aplicativo da web que poderia executar código na Internet. Cerca de um dia depois, recebi algo que funcionou. (Se você está se perguntando por que foi tão rápido - acontece que você só precisa de 30 linhas de código para fazer as pessoas executarem Python em um aplicativo da web! Pode ser por isso que existem tantos sites para executar Python na Internet. .)
Depois que isso funcionou, comecei a adicionar tantas linguagens de programação diferentes quanto pude encontrar. Como você pode ver neste trecho do histórico de versões do meu projeto, fiquei um pouco superexcitado:
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
No final, adicionei 216 idiomas, incluindo todos os 38 idiomas do Replit , todos os 100 idiomas do Quine Relay de Yusuke Endo e muito mais. Você pode perguntar: por que eu gastei tanto tempo adicionando linguagens de programação obscuras a um aplicativo da web que ninguém iria usar? Bem, deixe-me colocar desta forma: este é o hobby mais estranho de 2020 que você já viu?
O que aconteceu quando contei a Replit sobre meu projeto
Certa vez, recebi um e-mail deles informando sobre um novo recurso que eles lançaram. Decidi que agora é o melhor momento para compartilhar meu projeto de código aberto com eles, caso queiram se inspirar em algum de meu trabalho:
recebi uma resposta positiva no início. Mas então, 30 minutos depois, do nada, Replit me acusou de comportamento antiético e de roubo de seu design:
Nenhuma das ideias que usei em meu projeto de código aberto foram "decisões de design interno": todas foram postadas publicamente no blog Replit (eu sabia disso porque fui convidado a escrever algumas dessas postagens de blog durante meu estágio). E meu projeto parecia um clone do Replit, não mais do que qualquer outro site nos primeiros SERPs do Google para "executar python online", muitos dos quais parecem exatamente iguais:
Mas pensei que estava faltando alguma coisa. Portanto, pedi detalhes:
( O resto deste email repete basicamente o parágrafo anterior deste artigo, mas com muito mais detalhes técnicos.Você pode ler toda a correspondência no Imgur . ou arquivo online .)
Infelizmente, eles se recusaram a fornecer quaisquer detalhes específicos sobre o que disseram que eu fiz de errado, reiteraram suas declarações anteriores e me ameaçaram com uma ação legal:
E então, cereja no topo, Replit me enviou outro e-mail lembrando-me que eles acabaram de levantaram $ 20 milhões de seus investidores no mês passado e eles não tiveram medo de usá-los contra mim. O “você” em questão é um de seus estagiários anteriores que acabou de se formar na faculdade há um ano e que não está envolvido em nenhuma atividade comercial.
Eu gostaria de apontar duas coisas sobre esta carta:
- «commits like this» — . , Replit, , , , 38 , Replit, 178 , .
- , «demanding» — , , , Replit (. ). , .
, Replit
Naturalmente, escondi meu projeto imediatamente, esperei um pouco até que meus sentimentos esfriassem e enviei um pedido de desculpas a Replit. Achei que talvez algo tivesse sido perdido por e-mail, então pedi para ligar:
Infelizmente, o Replit ignorou esse e-mail, então enviei outro. A isso obtive uma resposta, mas não a que esperava:
caso o Replit não percebesse que eu estava feliz com a situação, enviei três e-mails de acompanhamento com explicações nas semanas seguintes, todos eles que foram ignorados.
Em outras palavras, a posição de Replit é a mesma: se eu republicar meu projeto de código aberto, eles vão me processar com os "melhores advogados".
O Replit está correto
Replit afirmou que meu projeto de código aberto era:
- clone Replit
- com base em seu segredo comercial (decisão de design interno)
- Antiético
Vamos analisar essas afirmações peça por peça:
- Durante o desenvolvimento do meu projeto, fiz um clone do Replit?
- Ao desenvolver meu projeto, usei algum segredo comercial da Replit?
- Foi antiético para mim desenvolver um projeto de código aberto como o Replit depois de trabalhar nele?
As perguntas 1 e 2 contêm muitos detalhes técnicos, portanto, coloquei-as em uma postagem separada . Aqui está o TL; DR sobre essas questões:
- Meu projeto não é mais parecido com o Replit do que 15 outros projetos (comerciais!) Que você pode encontrar no Google digitando “executar python online” ou “ambiente de programação online”.
- Quaisquer semelhanças entre meu projeto e o Replit podem ser explicadas observando-se apenas os repositórios do GitHub e as postagens de blog que foram postadas online pelo próprio Replit, o que obviamente os torna não secretos.
Vamos responder à pergunta 3 aqui:
Pergunta: Foi antiético para mim desenvolver um projeto de código aberto semelhante ao Replit depois de trabalhar nele?
Em minha opinião, a resposta a esta pergunta é "não", por uma série de razões:
- Riju é uma organização totalmente sem fins lucrativos. Ao contrário de Replit, não procurei financiamento de nenhuma fonte, publicidade, doação, arrecadação de fundos, assinatura, qualquer coisa. Não estou interessado em dirigir um negócio e nunca quis que Riju se tornasse muito popular, já que fui eu quem pagou a conta do servidor.
- Riju Replit. , Riju 38 . ( , , .) , Replit 7 . , Riju Replit.
- Riju Replit. , , fork bomb — , , . ( .) , Replit, , , , .
- Replit — ( ). — , . Riju , : , , , -, , , GitHub .
- Replit, Riju, . , GitHub. , Replit , , .
- Riju . , . , , Hexagony SNOBOL, , (!).
Eu não sou um empresário. Sou apenas um desenvolvedor de código aberto que adora criar coisas estranhas para se divertir. (Se você estiver em dúvida sobre minha experiência em fazer coisas que não rendem dinheiro, basta verificar a lista no meu site e notar a ausência conspícua de qualquer coisa que já tenha gerado um centavo da receita.)
Eu nunca tentaria roubar a renda de alguém negócios depois de trabalhar com eles. Prejudicar Replit não era minha intenção enquanto trabalhava em Riju, e me acusar do contrário, especialmente sem fazer uma única pergunta esclarecedora e recusar todas as ofertas para manter uma discussão, na minha opinião, indica uma grande má-fé por parte de Replit.
Se você quiser decidir por si mesmo quem está certo, eu ficaria feliz em divulgar todas as evidências (exceto o código, porque o Replit ainda promete me processar se eu o fizer). Novamente, tenho uma postagem separada com todos os detalhes técnicos . E você também pode ler toda a correspondência entre mim e Replit, de forma completa e resumida, no Imgur , um espelho do Internet Archive ). (Os detalhes técnicos sobre o Replit foram editados, bem como quaisquer declarações que possam revelar implicitamente tais detalhes.)
Por que o Replit fez isso?
Replit afirma os seguintes ideais:
- (, , GitHub Replit; CEO Replit: "I owe my entire career to open-source")
- ( Replit, : « [… ], »; « . -- GitHub»)
- mais fácil de compartilhar e remixar suas criações (por exemplo, o CEO da Replit escreve sobre aprender a programar: “Eu faria upload de projetos relacionados ao que eu queria construir [...], modificar e mexer com eles e obter inspiração” ; ele aconselha outros também garfo e remixes , e vende que a filosofia como uma característica distintiva do Replit )
No entanto, as ações de Replit neste caso indicam hipocrisia:
- eles dizem que encorajam o desenvolvimento de código aberto, mas quando meu projeto de código aberto os ofendeu, eles o fecharam, caindo em preconceito
- eles afirmam ter ajudado a comunidade de código aberto, postado em blogs, mas quando tentei usar essas ideias em um projeto comunitário, eles ameaçaram me processar
- dizem que tornam mais fácil distribuir, reciclar, consertar minhas criações, mas quando tentei remixar o Replit para mim, me tornei persona non grata
Nas cartas de Replit para mim, suas ameaças se baseavam no fato de eu ter trabalhado para eles no passado. Porém, acredito que esse raciocínio seja uma tela. Para entender por quê, vamos dar uma olhada em alguns dos tweets que o CEO da Replit, Amjad, postou logo depois de me ameaçar com um e-mail:
Mais tarde, Amjad excluiu esses tweets porque eles se revelaram contraditórios:
Nesses tweets, Amjad aponta que a Athens Research foi claramente inspirada por outra empresa e argumenta que eles deveriam ser “ridicularizados” e proibidos de receber financiamento. Além disso, ele diz: “Eu continuo com o que disse sobre imitadores em geral”, o que significa que ele despreza todas as pessoas que, em sua opinião, “imitam” projetos existentes, não apenas uma empresa específica em seu tweet.
Existem claras semelhanças entre os comentários de Amjad sobre a Athens Research e suas ameaças legais contra meu próprio projeto. Ele até usou a mesma palavra em ambos os casos - "imitador"... No caso da Athens Research, Amjad não podia fazer nada para expressar seu desprezo a não ser caluniá-los no Twitter. Mas, no meu caso, como eu trabalhava na Replit, Amjad tinha um motivo para lançar acusações contra mim - acusações que, se você não conhece os fatos, parecem legítimas.
Também gostaria de reiterar que a pessoa que Replit ameaça com “melhores advogados” e “muito dinheiro” é um recém-formado, sem empresa, sem financiamento e sem ambição comercial . Se alguém com uma empresa comercial de verdade ofendeu Replit, estremeço ao pensar no tipo de resposta que eles receberão.
Como o Replit reagiu à minha postagem no HackerNews
Depois que publiquei o artigo pela manhã, ele foi muito discutido no Hacker News. Por volta das 17h, Amjad postou um pedido de desculpas no Hacker News.
Ele também pediu para agendar uma ligação, com a qual concordei naturalmente:
Durante a ligação, Amjad se desculpou pelas ameaças legais, mas repetiu que, em sua opinião, fiz um clone do Replit e agi de forma antiética. No final, concordamos em discordar e ele prometeu por escrito que não se importaria se eu trouxesse meu projeto de volta:
Estou feliz por termos sido capazes de resolver essa situação de forma amigável e espero continuar minha vida - incluindo recuperação Riju, depois que eu puder construir coisas novamente :)
Paz.