В прошлом месяце я создал простой проект, разошедшийся по различным техническим сообществам и социальным сетям. В Github он за 7 дней получил с 0 до 4 тысяч звёзд и более 200 форков. Github примерно в течение пяти дней рекламировал его в разделе Trending repositories of day.
Clone Wars
70 с лишним open-source-клонов или альтернатив популярных сайтов наподобие Airbnb, Amazon, Instagram, Netflix, Tiktok и т.д. В списке содержится исходный код, ссылки на демо, технологический стек и количество звёзд в GitHub.
Ссылка на проект
Ссылка на Github
Trending в Github — 13 марта 2021 года
Что меня мотивировало на создание этого проекта
Я технарь и часто сижу в популярных сообществах программистов на Reddit, таких как r/webdev, r/reactjs и т.п., следя за тем, что создают другие разработчики и узнавая о новых JS-фреймворках. Я заметил, что многие разработчики для изучения программирования создают клоны популярных сайтов наподобие Instagram, Trello, Spotify, и т.п., а потом делятся с другими, чтобы получить отзывы о качестве кода и рекомендации.
Разработчики делятся своими проектами в r/reactjs
Такие клоны разбросаны по множеству сообществ. Поэтому я подумал: почему бы не создать общий список всех этих клонов, который люди мы могли добавить в закладки и возвращаться к ним в будущем. Честно говоря, тогда я не был уверен, будет ли такой список полезен другим. Мне представилась возможность узнать это, создав его самостоятельно!
Как я составил список
1. Скрейпинг Reddit
Я хотел найти все посты, содержащие ключевое слово «clone». Сначала я пользовался стандартным поиском Reddit:
reddit.com/r/reactjs/search/?q=clone&source=recent&restrict_sr=1&sort=new
(это значит искать все посты в сабреддите reactjs
с ключевым словом «clone» и отсортировать по новизне). Этот запрос возвращал все посты, в том числе и низкокачественные, с рейтингом 0, вопросами о том, как создать клон какого-то сервиса, и т.д. Из этого дампа сложно было бы найти хорошие проекты клонов. Поэтому я воспользовался сайтом redditsearch.io, предоставляющим расширенные возможности фильтрации Reddit, например, возврат постов, имеющих хотя бы 10 «лайков», опубликованных в определённый промежуток времени, и т.д.Далее я создал список из всех этих клонов, их репозиториев на Github, ссылок на демо, технологического стека. Всё делалось вручную.
Также я загуглил запрос «open-source alternatives» и нашёл несколько полнофункциональных клонов Slack, Airtable, Bit.ly, Evernote, Google analytics, и т.п. Их я тоже добавил в список.
Итак, в списке есть два типа проектов. Первые выглядят очень похожими (с точки зрения UI), но не полнофункциональны, вторые полнофункциональны, но с другим UI (чтобы избежать проблем с авторскими правами и т.п.).
Придумываем название проекту
Я назвал свой проект в честь телевизионного мультсериала 2008 года Star Wars: The Clone Wars («Звёздные войны: Войны клонов») и сохранил похожую цветовую схему.
Мультсериал Star Wars: The Clone Wars
Github-проект Clone Wars
2. Красивое отображение таблицы
Я уже работал с markdown раньше, но мне впервые довелось создавать markdown-таблицы и оказалось, что таблица на странице проекта Github выглядит ужасно. Особенно если это длинная таблица с множеством столбцов. Я хотел сделать её красивее (с постоянно висящим сверху заголовком), то есть проект нужно было развернуть где-то ещё. Но он всё равно должен был находиться на Github, чтобы с ним могли удобно работать другие люди. Я решил хостить его на своём личном сайте https://gourav.io.
Мой сайт создан с помощью NextJS, и я уже использовал markdown (mdx) для написания постов, поэтому достаточно было просто скопипастить markdown-файл из моего Github-проекта на новую страницу https://gourav.io/clone-wars. Кроме того, я использовал Tailwind CSS с плагином «typography», повышающим удобство чтения таблиц и другого текста.
Я думал над повышением автоматизации до следующего уровня, например, при внесении изменения в Github-проект или слиянии пулл-реквестов (PR) можно было бы обновлять таблицу на моём сайте https://gourav.io/clone-wars. Но я решил не переусложнять систему, потому что изменения были не такими уж частыми.
Делаем проект виральным
Я опубликовал пост в 2-3 сабреддита, и он взлетел.
reddit.com/r/reactjs
reddit.com/r/webdev
Последствия
После того, как проект получил определённую популярность, многие разработчики начали использовать PR для добавления в список своих проектов-клонов. Когда я запустил проект, там было примерно 75 клонов, но теперь их больше 120, и я часто получаю новые PR.
От друга я узнал, что проект попал в рассылку React Newsletter. Очень неожиданный и приятный момент.
Люди начали писать твиты о Clone Wars. @nickbulljs предложил идею для разработчиков, ищущих работу.
Рекрутёры устали от погодных приложений и калькуляторов расходов.
Вот более умная идея для разработки:
- Выберите один сайт из 70 с лишним open-source-клонов популярных сайтов типа Netflix, Instagram и прочих по ссылке ниже.
- Изучите кодовую базу.
- Создайте собственный клон.
gourav.io/clone-wars
После этого твита у меня появилось больше 150 новых подписчиков.
А ещё один человек задонатил мне 5 долларов по ссылке BuyMeACoffee, которую я добавил в своей проект. Спасибо тебе, незнакомец.
За 30 дней после запуска проекта мой личный сайт посетило более 40 тысяч человек, а проект получил более 80 тысяч просмотров.
Вот часть статистики по пользователям (первые 30 дней после запуска, т.е. после поста в Reddit):
Реферальные сайты
Пользователи по странам
Пользователи по ОС
Пользователи по браузерам
На данный момент проект имеет и .
На правах рекламы
VDS для проектов и задач любых масштабов — это про наши эпичные серверы! Новейшие технологии и оборудование, качественный сервис. Поспешите заказать!
hottabxp
Самое интересное то, что большинство клонов, во-первых, — выглядят красивее, а во вторых — работают во много раз быстрее, при это не разогревают ноутбук как ядерный реактор.
Да, на некоторых клонах используются меньше данных, или вообще демо контент, но при написании данного комментария, разумеется это учел.
Иногда задумываюсь, у facebook вроде бы немало денег(или они просто рисуют левые циферки для инвесторов), а такое ощущение, что код пишут индусы-фрилансеры за 5$ в день. Еще 10 лет назад он вроде бы работал с более-менее скоростью, сейчас же по функционалу ничего не изменилось, но если полистать условных 15-20 страниц, им уже практически невозможно пользоваться(хотя немного вру — добавили много мегабайт js-кода для отслеживания пользователей).
HellWalk
Наблюдаю такой интересный эффект, не встречал, чтобы его кто-то научно описал, но он точно есть.
Его суть в том, что чем больше людей работает над проектом, тем меньше каждый из них отвечает за проект в целом и, закономерно, заинтересован в проекте в целом (зачем забивать себе голову тем, что не является твоими должностными обязанностями). Простыми словами: в команде из 2 человек каждый из них, условно, отвечает за 50% проекта и несет ответственность в размере 50%. Когда на проекте 1000 человек — то конкретно каждый отвечает лишь за очень-очень небольшой кусочек, и может делать его отлично, но вот за проект в целом, уже как бы никто и не отвечает (или люди, которые, казалось бы должны отвечать — думаю в основном о деньгах)
И нередко получается, что проект сделанный одним человеком и лучше и качественнее проекта, который делало 50 человек.
Oleg_Dolbik
«Мифический человеко-месяц, или Как создаются программные системы» (англ. The Mythical Man-Month: Essays on Software Engineering) — книга Фредерика Брукса об управлении проектами в области разработки программного обеспечения. 1975 год.
HellWalk
Читал эту книгу, там про другое — про то, что если одному программисту делать проект год, то нельзя утверждать, что 12 программистов сделают этот проект за месяц. А также про такой интересный эффект, когда добавление новых программистов под конец разработки не ускоряют, а замедляют релиз.
helgevans
Сотню лет назад описали.
Qestlar
*Рассеивание ответственности
Tangeman
Это пока они на ноутбуке работают. Дайте им нагрузку в миллионы пользователей плюс весь контент ими созданный и посмотрите как они масштабируются.
Ivanhoe
Скейлить бэкенд top tier компании умеют и под сотни миллионов пользователей, а тормозит там как правило фронтенд.
Finesse
У меня на ноутбуке сильно тормозит сайт Twitter, даже простой скроллинг лагает. Как только отключаешь JavaScript, сайт начинает работать очень плавно.
Я предполагаю, что люди, которые разрабатывают подобные сайты, используют для работы самые производительные ПК, и не хотят или не имеют возможность проверять результаты своей работы на обычных ПК.
hellamps
и показывает пустую страницу? ;)
Finesse
После отключения браузер показывает страницу, которая была открыта и загружена до выключения