«Я думаю, вам следует закрыть проект и прекратить работать над ним. Я привлеку наших адвокатов в понедельник, если к тому времени вы не выполните условия. [...] Мы были крошечной компанией, когда вы стажировались у нас [...] К счастью, сейчас мы намного больше, и, что очень важно, у нас есть много денег, чтобы заплатить за лучших юристов, если мы будем вынуждены пойти по этому пути.»
— из переписки с CEO Replit
UPD: Я получил официальный ответ от Replit, и мой проект с открытым исходным кодом скоро вернется; пожалуйста, просмотрите нижнюю часть сообщения в посте для получения обновлений. Остальной контент здесь останется как исторический артефакт.
Привет, меня зовут Радон. В прошлом году я окончил колледж и теперь работаю программистом в DevOps/инфраструктуре. В свободное время я также поддерживаю ряд проектов с открытым исходным кодом.
Когда я учился в колледже, я стажировался в стартапе Replit. Это история о том, как Replit использует юридические угрозы и свое венчурное финансирование, чтобы заставить меня закрыть проект с открытым исходным кодом, который им не нравится.
Про Replit
Replit делает веб-приложение, которое вы можете использовать для запуска кода в Интернете на разных языках программирования. В этом нет ничего нового (загуглите «запустить python онлайн» для доказательства), поэтому ценностное предложение Replit — это дополнительные функции, такие как совместная работа, установка сторонних пакетов и размещение веб-приложений.
Я работал в Replit летом 2019 года, где меня попросили переделать стек управления пакетами Replit и сделать его open-source. Если вам нравится читать о технических вещах, вот мой пост для блога Replit, и вот код на GitHub.
Летом 2020 года я устроился на работу в другое место, но все еще время от времени общался с ними по электронной почте, когда они обращались ко мне, чтобы рассказать о чем-то крутом, разработанном Replit.
Про мой open-source проект
В Replit мне действительно понравилась поддержка множества различных языков программирования. (Я написал еще один пост в блоге Replit о том, как они это делают.) И я задумался: сколько языков программирования можно запихнуть в один веб-сайт?
Чтобы изучить этот вопрос, я собрал свое собственное небольшое веб-приложение, которое могло бы запускать код в Интернете. Примерно через день у меня появилось кое-что, что заработало. (Если вам интересно, почему это было так быстро — оказывается, вам нужно всего 30 строк кода, чтобы люди могли запускать Python в веб-приложении! Возможно, именно поэтому существует так много веб-сайтов для запуска Python в Интернете …)
После того, как это сработало, я начал добавлять столько различных языков программирования, сколько мог найти. Как вы можете видеть из этого отрывка истории версий моего проекта, я немного перевозбудился:
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 языков, включая все 38 языков из Replit, все 100 языков из «Quine Relay» Юсуке Эндо и многое другое. Вы можете спросить: почему я потратил так много времени на добавление непонятных языков программирования в веб-приложение, которое никто не собирался использовать? Ну, позвольте мне сказать так: это ли самое странное хобби 2020 года, которое вы видели?
Что произошло, когда я рассказал о своем проекте сотрудникам Replit
Однажды я получил от них электронное письмо, в котором они сообщили мне о новой функции, которую они выпустили. Я решил, что сейчас самое подходящее время поделиться с ними своим проектом с открытым исходным кодом, на случай, если они захотят черпать вдохновение в какой-либо из моих работ:
Сначала я получил позитивный оклик. Но потом, 30 минут спустя, из ниоткуда, Replit обвинил меня в неэтичном поведении и краже их дизайна:
Ни одна из идей, которые я использовал в своем проекте с открытым исходным кодом, не была «внутренними дизайнерскими решениями»: все они были опубликованы публично в блоге Replit (я знал это, потому что меня попросили написать некоторые из этих постов в блоге во время моей стажировки). И мой проект был похож на клон Replit, не больше, чем любой другой веб-сайт на первых нескольких страницах выдачи Google для «run python online», большинство из которых выглядят точно так же:
Но я подумал, что я что-то пропустил, поэтому запросил подробности:
(Остальная часть этого письма в основном повторяет предыдущий абзац этой статьи, но с гораздо более техническими подробностями. Вы можете прочитать всю переписку на Imgur, или в интернет-архиве.)
К сожалению, они отказались предоставить какие-либо конкретные сведения о том, что, по их словам, я сделал неправильно, повторили свои предыдущие заявления и пригрозили мне судебным иском:
А затем, вишенка на торте, Replit отправил мне еще одно электронное письмо, напомнив, что они только что привлекли 20 миллионов долларов от своих инвесторов в прошлом месяце, и они не боялись использовать это против меня. “you”, о котором идет речь, — это один из их предыдущих стажеров, который только что окончил колледж год назад и который вообще не занимается какой-либо коммерческой деятельностью.
Я хотел бы отметить две вещи об этом письме:
- Замечание о «commits like this» — это на самом деле вводит в заблуждение. В моем проекте есть только один коммит, в котором упоминается Replit, и это тот, который я уже показывал вам ранее, начиная с моего третьего дня кодирования, когда я только что добавил все 38 языков, поддерживаемых Replit, прежде чем перейти к 178 другим языкам, которые я хотел добавить.
- Замечание о том, что я «demanding» стажер — я на самом деле не уверен, что это означает, тем более, что Replit только что пытался завербовать меня ранее в тот же день (см. Скриншот их первого письма). Но я оставлю это в покое, потому что это не имеет отношения к рассматриваемому вопросу.
Что произошло после того, как Replit пригрозил подать на меня в суд
Естественно, я сразу скрыл свой проект, подождал некоторое время, чтобы чувства остыли, и послал Replit извинения. Я подумал, что, возможно, что-то было потеряно по электронной почте, поэтому попросил созвониться:
Увы, Replit проигнорировал это письмо, поэтому отправил им еще одно. На это я получил ответ, но не тот, на который я надеялся:
На всякий случай, если Replit не понял, что я доволен сложившейся ситуацией, я отправил три последующих письма с объяснениями в течение следующих нескольких недель, все из которых были проигнорированы.
Другими словами, позиция Replit прежняя: если я переопубликую свой проект с открытым исходным кодом, они подадут на меня в суд с «топовыми юристами».
Прав ли Replit
Replit утверждал, что мой проект с открытым исходным кодом был:
- клоном Replit
- основывался на их коммерческой тайне (внутреннем проектном решении)
- неэтичен
Разберем эти утверждения по частям:
- Разрабатывая свой проект, делал ли я клон Replit?
- Разрабатывая свой проект, я использовал какие-либо коммерческие секреты Replit?
- Было ли неэтично с моей стороны разрабатывать проект с открытым исходным кодом, похожий на Replit, после работы на них?
Вопросы 1 и 2 содержат довольно много технических деталей, поэтому я поместил их в отдельный пост. Вот TL;DR по этим вопросам:
- Мой проект не более похож на Replit, чем 15 других (коммерческих!) проектов, которые вы можете найти в Google, вбив в поиск “run python online” или “online programming environment”.
- Любое сходство между моим проектом и Replit можно объяснить, взглянув только на репозитории GitHub и сообщения в блогах, которые были опубликованы в Интернете самим Replit, что очевидно делает их не секретными.
Давайте ответим на вопрос 3 здесь:
Вопрос: Было ли неэтично с моей стороны разрабатывать проект с открытым исходным кодом, похожий на Replit, после работы на них?
На мой взгляд, ответ на этот вопрос «нет», на то есть ряд причин:
- Riju полностью некоммерческая организация. В отличие от Replit, я не искал финансирования из какого-либо источника, рекламы, пожертвований, сбора средств, подписки, чего угодно. Я не заинтересован в ведении бизнеса и никогда не хотел, чтобы Riju стал слишком популярным, так как именно я оплачивал счет за сервер.
- Riju не крал клиентов у Replit. Основываясь на моих аналитических данных, в феврале у Riju было 38 посещений. (Половина из них, вероятно, была моих.) Между тем, у Replit более 7 миллионов пользователей. Очевидно, нет никакого смысла в конкуренции Riju с Replit.
- Riju также не был построен как конкурент для Replit. Поскольку архитектура была ограничена запуском на одном сервере, любой мог вывести из строя всю систему, просто введя fork bomb — и один из моих друзей сделал это, просто чтобы посмотреть, что произойдет. (Система вышла из строя.) Если бы я разрабатывал продукт, чтобы конкурировать с Replit, я, конечно, не выбрал бы архитектуру, которую можно масштабировать до размера игрушечного проекта.
- Основная ценность Replit — не про запуск код онлайн (вы можете сделать это в десятках мест бесплатно). Их конкурентное предложение — это функции, которые они предлагают помимо запуска кода. Riju категорически не хватало всех этих функций, включая: наличие учетной записи пользователя, сохранение вашей работы, совместное использование вашей работы, публикацию веб-приложений, постоянные рабочие пространства, дискуссионные форумы, интеграцию с GitHub и так далее.
- У меня не было злого умысла по отношению к Replit, когда я разрабатывал Riju, и я не пытался ничего скрывать. В качестве доказательства этих утверждений я напоминаю, что я с самого начала опубликовал проект на своем GitHub. Обратите внимание, что Replit узнал о моем проекте, потому что я открыто поделился им с ними по собственной воле, предложив им черпать вдохновение из моей работы.
- Riju никогда не задумывался как продукт. Он был задуман как личное пространство для игры, или как произведение искусства. В качестве доказательства этого утверждения я предлагаю тот факт, что я потратил десятки часов на добавление таких языков, как Hexagony и SNOBOL, а не на то, чтобы вы могли сохранить свою работу(!).
Я не бизнесовый человек. Я просто open-source разработчик, который любит создавать странные вещи для удовольствия. (Если вы сомневаетесь в моем опыте создания вещей, которые не приносят денег, просто ознакомьтесь со списком на моем веб-сайте и обратите внимание на заметное отсутствие чего-либо, что когда-либо приносило хоть цент дохода.)
Я бы никогда не попытался украсть чей-то бизнес после того, как работал с ними. Причинение вреда Replit не входило в мои намерения при работе над Riju, и обвинять меня в обратном, особенно не задавая ни одного уточняющего вопроса и отказываясь от всех предложений провести дискуссию, на мой взгляд, свидетельствует о большой недобросовестности со стороны Replit.
Если вы хотите сами решить, кто прав, я с удовольствием выложу все доказательства в открытую (за исключением кода, потому что Replit все еще обещает подать на меня в суд, если я это сделаю). Опять же, у меня есть отдельный пост со всеми техническими деталями. И вы также можете прочитать всю переписку между мной и Replit, в полном и сокращенном виде, на Imgur, зеркало в Internet Archive). (Технические подробности о Replit были отредактированы, а также любое утверждения, которые могут косвенно раскрыть такие детали.)
Зачем Replit это сделал?
Replit заявляет следующие идеалы:
- поощрение разработки с открытым исходным кодом (например, части их технологии с открытым исходным кодом, добавление поддержки GitHub в Replit; цитата CEO Replit: "I owe my entire career to open-source")
- помощь сообществу (из сообщения в блоге Replit, которое попросил меня написать: «мы мигрируем [… ], чтобы внести свой вклад в улучшение экосистемы для разработчиков во всем мире»; «Возвращаем долг сообществу. Ядро нашей независимой-от-языка плаформы управления зависимостями теперь стала опенсорсной и доступна на GitHub»)
- проще делиться и делать ремиксы ваших творений (например, CEO Replit пишет об обучении программированию: “Я бы загрузил проекты, связанные с тем, что я хотел построить [… ], изменил и повозился бы с ними и получил вдохновение”; он советует другим тоже форкнуть и ремиксить, и продает эту философию как отличительную фичу Replit)
Однако действия Replit в данном случае свидетельствуют о лицемерии:
- они говорят, что они поощряют open-source разработку, но когда мой проект с открытым исходным обидел их, они закрыли его, впав в предрассудки
- они утверждают, что помогали open-source сообществу, постили сообщения в блоге, но когда я попытался использовать эти идеи в общественном проекте, они угрожали подать на меня в суд
- они говорят, что они позволяют легко распространять, перерабатывать, исправлять свои творения, но когда я попытался сделать ремикс Replit под себя, я стал персоной нон-грата
В письмах Replit ко мне их угрозы основывались на том факте, что я работал на них в прошлом. Однако я считаю, что это рассуждение — ширма. Чтобы понять почему, давайте взглянем на некоторые твиты, которые CEO Replit, Amjad, опубликовал сразу после того, как угрожал мне по электронной почте:
Позже Амджад удалил эти твиты, потому что они оказались противоречивыми:
В этих твитах Амджад указывает, что Athens Research было явно вдохновлено другой компанией, и утверждает, что поэтому их следует «высмеять» и запретить получать финансирование. Кроме того, он говорит: «Я придерживаюсь того, что я сказал о copycats в целом», то есть он презирает всех людей, которые, по его мнению, «copycat» существующие проекты, а не только конкретную компанию в своем твите.
Существует явное сходство между комментариями Амджада по поводу Athens Research и его юридическими угрозами в отношении моего собственного проекта. Он даже использовал в обоих случаях одно и то же слово — «copycat». В случае с Athens Research Амджад ничего не мог сделать, чтобы выразить свое презрение, кроме как очернить их в Твиттере. Но в моем случае, поскольку я раньше работал в Replit, у Амджада был повод бросить мне обвинения — обвинения, которые, если вы не знакомы с фактами, звучат так, как будто они могут быть законными.
Я также хотел бы повторить, что человек, которому Replit угрожает «лучшими юристами» и «большими деньгами», — это свежеиспеченный выпускник без компании, без финансирования и без коммерческих амбиций. Если бы кто-то с реальной коммерческой компанией обидел Replit, я содрогаюсь при мысли о том, какое ответ они могли бы получить.
Как Replit отреагировал на мой пост на HackerNews
После того, как я опубликовал статью утром, она широко обсуждалась в Hacker News. Около 17:00 Амджад опубликовал в Hacker News извинения.
Он также попросил запланировать звонок, на что я, естественно, согласился:
Во время созвона Амджад извинился за юридические угрозы, но повторил, что, по его мнению, я сделал клон Replit и действовал неэтично. В конце концов мы согласились не соглашаться, и он письменно пообещал, что не возражает против того, чтобы я вернул свой проект обратно:
Я счастлив, что мы смогли разрешить эту ситуацию по-хорошему, и я с нетерпением жду продолжения моей жизни — включая восстановление Riju, после того как я снова смогу строить вещи :)
Мир.
mikhailian
Под этим постом столько народу на Hacker News набежало, что он упал. И вот это действительно новость. Ещё не успели пролететь байты с тех пор, как покоцали репутацию основателям Basecamp, как теперь вот у Пола Грэма перья летят. Он несколько лет постил в Твиттере хвалебные отзывы на Replit.
MagisterLudi Автор
Грустно.
mikhailian
На Hacker News консенсус таков, что CEO Replit явно не прав. А пацанчик —
метеоррадон.0xd34df00d
Неправ, но, увы, это стандартная практика для США. Компания может (и будет) писать что угодно про поддержку опенсорса, миссию, и так далее, но, как только речь зайдет хотя бы о призрачной возможности конкуренции, начнётся вот такое.
mikhailian
Вся мякотка в том, что Амжад косил под мягкого, пушистого и ультралиберального, плюс история с ним затрагивает много по умолчанию хороших людей: того же самого Пола Грэма с женой, Роба Морриса, Сэма Альтмана… половина силиконового бомонда носила Амжада на руках.
Viacheslav01
Оказалось обычный иорданский гопник
T_Cirkla
Просто гопник.
rroyter
Вы же понимаете что одним из вопросов VCs был "в чём уникальность вашей идеи, насколько легко будет повторить её?"
Я уверен что этот иорданский мальчик клялся и ложился что его идея самая уникальная и никто не сможет скопировать его ноу-хау.
Когда он увидел что другой парень сумел повторить и переплюнуть, ему поплохело и он начал судорожно искать пути убрать конкурента.
0xd34df00d
Так другой парень не повторил, либо повторил сильно не первым, смотря какое подмножество фич вы рассматриваете.
Две причины, которые я тут вижу — личная инициатива работников (или конкретного работника) repl.it, обоснованная комбинацией из «кабы чего не вышло» и ЧСВ в произвольных пропорциях.
rroyter
Ну это он пока не повторил. Он же интернил у них, знает их внутреннюю кухню, в том числе куда они хотят двигаться и за что им подогнали денег.
Я никого не оправдываю, я всего лишь излагаю свою точку зрения на то что могло происходить в голове у иорданского мальчика.
denisshabr
Пол Грэм лично виноват, что какой-то индус Амджада мудак?
mikhailian
Пол Грэм ни за кого так не топил, как за этого самого Амжада и за его Replit.
MagisterLudi Автор
За lambda School топил, но у них тоже проблемы…
0xd34df00d
Поскроллил немного, и единственный твит с его упоминанием такой:
Не заметил тут топления за него.
denisshabr
Если он вложился в этот Replit, помоями что ли будет обливать их?
Каждый из нас в чём-то гений, а в чём-то мудак. Если всем мудакам запретить работать и что-то создавать, то боюсь бизнеса и коммерции, а также благ и удобств, вызванных этими бизнесами, больше не будет.
T_Cirkla
Да и то, что стартапер индиец, не играет роли. С тем же успехом мог быть кем угодно.
iboltaev
так он иорданец?
DmitryLTL
"А какая разница?" (c) брат