0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>7 окт 2021</li>
2
<ul><li>7 окт 2021</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Влад Шилов рассказал, как создать популярный open-source-проект и зачем это нужно.</p>
4
</ul><p>Влад Шилов рассказал, как создать популярный open-source-проект и зачем это нужно.</p>
5
<p>Альберто Блинчиков для Skillbox Media</p>
5
<p>Альберто Блинчиков для Skillbox Media</p>
6
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
6
<p>Журналист, коммерческий автор и редактор. Пишет про IT, цифровой маркетинг и бизнес. Сайт:<a>darovska.com</a>.</p>
7
<p>Влад Шилов</p>
7
<p>Влад Шилов</p>
8
<p>Среди фреймворков и библиотек, на которых строится современный веб, кажется, нет ни одного решения с закрытым исходным кодом. Это доказывает, что Open Source в этой отрасли победил. Я тоже написал и поддерживаю два популярных open-source-проекта:<a>react-colorful</a>и <a>colord</a>.</p>
8
<p>Среди фреймворков и библиотек, на которых строится современный веб, кажется, нет ни одного решения с закрытым исходным кодом. Это доказывает, что Open Source в этой отрасли победил. Я тоже написал и поддерживаю два популярных open-source-проекта:<a>react-colorful</a>и <a>colord</a>.</p>
9
Скриншот: сайт<a>react-colorful</a><p><a>react-colorful</a> - это лёгкий компонент для выбора цвета для React- и Preact-приложений. Очень небольшая тулза - всего 2,5 КБ, но спрос на неё высокий. Проект вырос из рабочей задачи - как и большинство open-source-решений: они, как правило, возникают, когда ты решаешь какую-то проблему, выясняешь, что качественного готового инструмента для неё пока нет, в итоге делаешь собственный и выкладываешь его под свободной лицензией.</p>
9
Скриншот: сайт<a>react-colorful</a><p><a>react-colorful</a> - это лёгкий компонент для выбора цвета для React- и Preact-приложений. Очень небольшая тулза - всего 2,5 КБ, но спрос на неё высокий. Проект вырос из рабочей задачи - как и большинство open-source-решений: они, как правило, возникают, когда ты решаешь какую-то проблему, выясняешь, что качественного готового инструмента для неё пока нет, в итоге делаешь собственный и выкладываешь его под свободной лицензией.</p>
10
<p>Так вышло и у меня. Когда у нас в resume.io возникла задача дать пользователям возможность перекрашивать свои резюме, мы не смогли найти подходящего колор-пикера: да, был react-color с двумя миллионами загрузок в неделю, и меня, как, наверное, и многих, подкупила его популярность. Однако на деле он вообще не соответствовал современным требованиям к UI-компоненту: очень много весил, тормозил, не работал на телефонах, не был доступным и устанавливал больше десятка других пакетов - правда, выяснил я это, только когда взял его к себе в проект.</p>
10
<p>Так вышло и у меня. Когда у нас в resume.io возникла задача дать пользователям возможность перекрашивать свои резюме, мы не смогли найти подходящего колор-пикера: да, был react-color с двумя миллионами загрузок в неделю, и меня, как, наверное, и многих, подкупила его популярность. Однако на деле он вообще не соответствовал современным требованиям к UI-компоненту: очень много весил, тормозил, не работал на телефонах, не был доступным и устанавливал больше десятка других пакетов - правда, выяснил я это, только когда взял его к себе в проект.</p>
11
<p>Разочаровавшись в существующих решениях, я вдохновился создать<a>react-colorful</a>. Код написал за несколько дней. А вот продвижение оказалось сложной задачей. В работе над open-source-проектами это, наверное, самая сложная часть. Я потратил несколько месяцев - только после этого пакет стал по-настоящему популярным, а разработчики начали использовать его в своих проектах без опасений. Я призвал на помощь коллег, и мы вместе сделали добрую сотню твитов о react-colorful, написали несколько статей и публикаций на Reddit и dev.to, связались с администраторами десятка тематических Telegram-каналов и попросили их рассказать о нашей библиотеке.</p>
11
<p>Разочаровавшись в существующих решениях, я вдохновился создать<a>react-colorful</a>. Код написал за несколько дней. А вот продвижение оказалось сложной задачей. В работе над open-source-проектами это, наверное, самая сложная часть. Я потратил несколько месяцев - только после этого пакет стал по-настоящему популярным, а разработчики начали использовать его в своих проектах без опасений. Я призвал на помощь коллег, и мы вместе сделали добрую сотню твитов о react-colorful, написали несколько статей и публикаций на Reddit и dev.to, связались с администраторами десятка тематических Telegram-каналов и попросили их рассказать о нашей библиотеке.</p>
12
<p>Также в работу по продвижению я включаю ещё и процесс поиска и "продажи" своего пакета потенциальным "клиентам": я искал проекты, которые используют react-color, показывал их авторам цифры и объяснял, что колор-пикер может быть легче, быстрее и лучше во всех смыслах. Если им нравилась идея и они соглашались на миграцию, я заменял react-color на свой react-colorful в их кодовой базе. Таким образом мой пакет получил первые скачивания и начал вызывать доверие у разработчиков.</p>
12
<p>Также в работу по продвижению я включаю ещё и процесс поиска и "продажи" своего пакета потенциальным "клиентам": я искал проекты, которые используют react-color, показывал их авторам цифры и объяснял, что колор-пикер может быть легче, быстрее и лучше во всех смыслах. Если им нравилась идея и они соглашались на миграцию, я заменял react-color на свой react-colorful в их кодовой базе. Таким образом мой пакет получил первые скачивания и начал вызывать доверие у разработчиков.</p>
13
<p>Всё это - довольно большая и кропотливая работа, она потребовала много сил. Но в итоге время и ресурсы окупились: проект положительно сказался на моей популярности: за последний год меня позвали гостем в несколько известных подкастов, пригласили вести коллективный твиттер<a>jsunderhood</a>и включили в состав программного комитета<a>HolyJS</a>. Вообще, вся эта история довольно поучительная, поэтому я выступил с докладом "<a>Do not choose dependencies blindly, do open source</a>" - рассказал, как запустил свой колор-пикер и почему популярные open-source-проекты часто оказываются не самыми качественными.</p>
13
<p>Всё это - довольно большая и кропотливая работа, она потребовала много сил. Но в итоге время и ресурсы окупились: проект положительно сказался на моей популярности: за последний год меня позвали гостем в несколько известных подкастов, пригласили вести коллективный твиттер<a>jsunderhood</a>и включили в состав программного комитета<a>HolyJS</a>. Вообще, вся эта история довольно поучительная, поэтому я выступил с докладом "<a>Do not choose dependencies blindly, do open source</a>" - рассказал, как запустил свой колор-пикер и почему популярные open-source-проекты часто оказываются не самыми качественными.</p>
14
<p>По большей части<a>react-colorful</a>я делал своими силами, но плотно советовался с другими ребятами - если ты занимаешься open-source-проектом, полезно иметь open source buddy, то есть коллегу, у которого тоже есть open-source-проекты. У меня такой коллега был, и я часто советовался с ним по разным вопросам: как организовывать API, как лучше оформить документацию. Это было классно, потому что работать в вакууме и двигаться вслепую тяжеловато.</p>
14
<p>По большей части<a>react-colorful</a>я делал своими силами, но плотно советовался с другими ребятами - если ты занимаешься open-source-проектом, полезно иметь open source buddy, то есть коллегу, у которого тоже есть open-source-проекты. У меня такой коллега был, и я часто советовался с ним по разным вопросам: как организовывать API, как лучше оформить документацию. Это было классно, потому что работать в вакууме и двигаться вслепую тяжеловато.</p>
15
<p>В результате нашей активной работы над продвижением проект заметило много людей и в итоге к нам присоединились другие ребята, которым понравилась философия проекта и которые тоже вносят свой вклад в его развитие. Например, сейчас у меня есть постоянный контрибьютор, студент из США. Он пришёл и переписал весь код на TypeScript - а это достаточно большое изменение, которое серьёзно увеличило стабильность компонента.</p>
15
<p>В результате нашей активной работы над продвижением проект заметило много людей и в итоге к нам присоединились другие ребята, которым понравилась философия проекта и которые тоже вносят свой вклад в его развитие. Например, сейчас у меня есть постоянный контрибьютор, студент из США. Он пришёл и переписал весь код на TypeScript - а это достаточно большое изменение, которое серьёзно увеличило стабильность компонента.</p>
16
Скриншот: сайт<a>colord</a><p>Создавая react-colorful, я разобрался в самых разных цветовых пространствах, в методах конвертации из одного пространства в другое и вообще в теории цвета. И в какой-то момент подумал: "А ведь я мог бы сделать не только колор-пикер, но и библиотеку, которая низкоуровнево отвечает за конвертацию и манипуляции с цветами".</p>
16
Скриншот: сайт<a>colord</a><p>Создавая react-colorful, я разобрался в самых разных цветовых пространствах, в методах конвертации из одного пространства в другое и вообще в теории цвета. И в какой-то момент подумал: "А ведь я мог бы сделать не только колор-пикер, но и библиотеку, которая низкоуровнево отвечает за конвертацию и манипуляции с цветами".</p>
17
<p>Я изучил существующие популярные пакеты color и TinyColor и быстро понял, что они тоже не удовлетворяют современным требованиям - слишком много весят, не очень производительны и мало что умеют. В итоге сел и написал новую библиотеку<a>colord</a>, которая оказалась в три раза быстрее и легче аналогов - а развивал и продвигал её по уже отработанной ранее схеме.</p>
17
<p>Я изучил существующие популярные пакеты color и TinyColor и быстро понял, что они тоже не удовлетворяют современным требованиям - слишком много весят, не очень производительны и мало что умеют. В итоге сел и написал новую библиотеку<a>colord</a>, которая оказалась в три раза быстрее и легче аналогов - а развивал и продвигал её по уже отработанной ранее схеме.</p>
18
<p>Сейчас у colord и react-colorful суммарно почти 4 млн скачиваний в неделю (а это довольно много) и они используются в ряде очень известных проектов, таких как Storybook, Grafana, WordPress и cssnano. Так что я могу считать себя немножечко успешным опенсорсером :)</p>
18
<p>Сейчас у colord и react-colorful суммарно почти 4 млн скачиваний в неделю (а это довольно много) и они используются в ряде очень известных проектов, таких как Storybook, Grafana, WordPress и cssnano. Так что я могу считать себя немножечко успешным опенсорсером :)</p>
19
<p>Но помощь никогда не бывает лишней, потому что нельзя быть талантливым во всём. В <a>colord</a>, кстати, тоже есть постоянный молодой контрибьютор, который приносит много классных фич, для разработки которых у меня не хватает времени или экспертности.</p>
19
<p>Но помощь никогда не бывает лишней, потому что нельзя быть талантливым во всём. В <a>colord</a>, кстати, тоже есть постоянный молодой контрибьютор, который приносит много классных фич, для разработки которых у меня не хватает времени или экспертности.</p>
20
<p>Если ты единственный мейнтейнер open-source-проекта, то всегда находишься в некоем вакууме. Например, ты реализовал набор функций, которые тебе нужны по работе, и таким образом покрыл свои юзкейсы, а у других людей может быть свой опыт, задачи, с которыми ты не сталкиваешься. Поэтому они могут предлагать такие идеи, о которых ты даже подумать не мог.</p>
20
<p>Если ты единственный мейнтейнер open-source-проекта, то всегда находишься в некоем вакууме. Например, ты реализовал набор функций, которые тебе нужны по работе, и таким образом покрыл свои юзкейсы, а у других людей может быть свой опыт, задачи, с которыми ты не сталкиваешься. Поэтому они могут предлагать такие идеи, о которых ты даже подумать не мог.</p>
21
<p>Конечно, если контрибьюторов станет слишком много, обрабатывать поток нововведений в одиночку станет слишком сложно. Но я пока не сталкивался с предложениями, которые не хотелось принимать. Люди в основном приносят полезные идеи.</p>
21
<p>Конечно, если контрибьюторов станет слишком много, обрабатывать поток нововведений в одиночку станет слишком сложно. Но я пока не сталкивался с предложениями, которые не хотелось принимать. Люди в основном приносят полезные идеи.</p>
22
<p>Классно то, что обычно они создают issue и спрашивают, нужно это продукту или нет. У меня и в <a>react-colorful</a>, и в <a>colord</a>прилетают подобные issue: "Я видел новый метод проверки разницы между цветами. Давай реализуем". И я отвечаю: "Да, давай". Автор идеи реализует её, создаёт pull request, мы проверяем код - и всё.</p>
22
<p>Классно то, что обычно они создают issue и спрашивают, нужно это продукту или нет. У меня и в <a>react-colorful</a>, и в <a>colord</a>прилетают подобные issue: "Я видел новый метод проверки разницы между цветами. Давай реализуем". И я отвечаю: "Да, давай". Автор идеи реализует её, создаёт pull request, мы проверяем код - и всё.</p>
23
<p>Любое действие, которое человек совершает, - неважно, программист он или кто-то другой, - приводит к какому-то результату. Этот результат даёт новые возможности для новых действий. То есть возникает настоящая цепная реакция.</p>
23
<p>Любое действие, которое человек совершает, - неважно, программист он или кто-то другой, - приводит к какому-то результату. Этот результат даёт новые возможности для новых действий. То есть возникает настоящая цепная реакция.</p>
24
<p><strong>Респект от работодателей.</strong>Например, ты делаешь новый open-source-проект с нуля - и получается отличный кейс для портфолио. Но если ты новичок и у тебя пока пустое портфолио, ты можешь написать, что участвовал в существующем популярном open-source-проекте, помог довести до ума документацию и исправил несколько багов. Это тоже плюс при трудоустройстве. Любая работа в Open Source - это похвальное дело, которое положительно скажется на профессиональной оценке.</p>
24
<p><strong>Респект от работодателей.</strong>Например, ты делаешь новый open-source-проект с нуля - и получается отличный кейс для портфолио. Но если ты новичок и у тебя пока пустое портфолио, ты можешь написать, что участвовал в существующем популярном open-source-проекте, помог довести до ума документацию и исправил несколько багов. Это тоже плюс при трудоустройстве. Любая работа в Open Source - это похвальное дело, которое положительно скажется на профессиональной оценке.</p>
25
<p><strong>Прокачка навыков.</strong>Участие в Open Source - неважно, в новом или уже существующем проекте - помогает развиваться. Для нового проекта лучше выбирать интересную тему, которую ты не можешь полноценно изучить в рамках рабочих задач. Например, по работе ты создаёшь лендинги, а хочешь разобраться в шифровании. Тогда можно сделать свой открытый проект по шифрованию данных или присоединиться к готовому проекту, посмотреть, как он сделан. Я так прокачался в работе с цветами, хотя по работе мне такие знания не нужны.</p>
25
<p><strong>Прокачка навыков.</strong>Участие в Open Source - неважно, в новом или уже существующем проекте - помогает развиваться. Для нового проекта лучше выбирать интересную тему, которую ты не можешь полноценно изучить в рамках рабочих задач. Например, по работе ты создаёшь лендинги, а хочешь разобраться в шифровании. Тогда можно сделать свой открытый проект по шифрованию данных или присоединиться к готовому проекту, посмотреть, как он сделан. Я так прокачался в работе с цветами, хотя по работе мне такие знания не нужны.</p>
26
<p><strong>Личный бренд.</strong>Участие в Open Source влияет на популярность и личный бренд. У меня именно так и вышло: благодаря Open Source я набрал тысячу подписчиков - просто рассказывая про свой проект.</p>
26
<p><strong>Личный бренд.</strong>Участие в Open Source влияет на популярность и личный бренд. У меня именно так и вышло: благодаря Open Source я набрал тысячу подписчиков - просто рассказывая про свой проект.</p>
27
<p><strong>Нетворкинг.</strong>Работая над открытыми проектами, можно познакомиться с новыми интересными людьми. Например, в уже существующем проекте легко общаться с другими участниками, вместе решать проблемы. И этими знакомствами потом вполне можно воспользоваться: получить приглашение на конференцию или поучаствовать в каком-то интересном проекте.</p>
27
<p><strong>Нетворкинг.</strong>Работая над открытыми проектами, можно познакомиться с новыми интересными людьми. Например, в уже существующем проекте легко общаться с другими участниками, вместе решать проблемы. И этими знакомствами потом вполне можно воспользоваться: получить приглашение на конференцию или поучаствовать в каком-то интересном проекте.</p>
28
<p>Не стоит бояться участия даже в крупных open-source-проектах. Важно понимать, что мейнтейнеры - очень загруженные люди, особенно если их проект пользуется популярностью. На них валятся десятки, а то и сотни разных issue - и всё это приходится разгребать. При этом они пытаются выпускать новые фичи, оформлять документацию. И если мейнтейнер пилит новую фичу, то у него может не остаться времени на исправление мелких багов, обновление или перевод документации на другой язык. А значит, полезным окажется даже новичок: например, можно среди issue, которые есть в проекте, отобрать те, с которыми вам под силу справиться. Или просто найти в репозитории issue с отметкой good-first-issue и попытаться закрыть их.</p>
28
<p>Не стоит бояться участия даже в крупных open-source-проектах. Важно понимать, что мейнтейнеры - очень загруженные люди, особенно если их проект пользуется популярностью. На них валятся десятки, а то и сотни разных issue - и всё это приходится разгребать. При этом они пытаются выпускать новые фичи, оформлять документацию. И если мейнтейнер пилит новую фичу, то у него может не остаться времени на исправление мелких багов, обновление или перевод документации на другой язык. А значит, полезным окажется даже новичок: например, можно среди issue, которые есть в проекте, отобрать те, с которыми вам под силу справиться. Или просто найти в репозитории issue с отметкой good-first-issue и попытаться закрыть их.</p>
29
<p>Если же вы решите что-то улучшить, рекомендую сперва сделать небольшое issue, спросить в нём, стоит ли этим заниматься. Если мейнтейнер одобрит, то вперёд. Иначе есть риск сделать что-то ненужное, что потом не включат в релиз продукта. В итоге можно две недели писать код, а потом выбросить его, потому что, по мнению мейнтейнера, он не соответствует философии проекта.</p>
29
<p>Если же вы решите что-то улучшить, рекомендую сперва сделать небольшое issue, спросить в нём, стоит ли этим заниматься. Если мейнтейнер одобрит, то вперёд. Иначе есть риск сделать что-то ненужное, что потом не включат в релиз продукта. В итоге можно две недели писать код, а потом выбросить его, потому что, по мнению мейнтейнера, он не соответствует философии проекта.</p>
30
<p>При входе в существующий проект придётся потратить немало времени, чтобы разобраться в его устройстве, поковыряться в коде, почитать документацию. Но, как я упоминал раньше, это отличный опыт, потому что вы исследуете и перенимаете лучшие практики и инструменты, которыми пользуются сильные разработчики.</p>
30
<p>При входе в существующий проект придётся потратить немало времени, чтобы разобраться в его устройстве, поковыряться в коде, почитать документацию. Но, как я упоминал раньше, это отличный опыт, потому что вы исследуете и перенимаете лучшие практики и инструменты, которыми пользуются сильные разработчики.</p>
31
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
31
<a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>