Собственный open source проект. Часть 1: с чего все начинается

2
2131
views

Перевод статьи «Owning an Open Source Project: Part 1».

Вы когда-нибудь задумывались над созданием собственного проекта с открытым исходным кодом? Готов поспорить, что да — вы же читаете эту статью. Возможно, вы как раз обдумываете такой вариант. Возможно, вы открыли эту статью, чтобы получше разобраться, чего следует ожидать и с какими сложностями можно столкнуться, занимаясь open source проектом. Что ж, вы попали по нужному адресу.

Я намерен написать серию статей, в которых поделюсь своим личным опытом ведения собственного open source проекта. Подчеркиваю: собственного. То есть, речь не о том, чтобы стать контрибьютором какого-нибудь проекта с открытым кодом, а о том, чтобы самому вести такой проект. Это, как говорится, две большие разницы, и в своих статьях я объясню, почему.

Кто я такой

Меня зовут JeB. На протяжении пары лет я поддерживаю несколько проектов с открытым исходным кодом. Самый популярный из них — @angular-builders. Именно на этом проекте я очень многому научился. На момент написания этой статьи указанный проект имеет около 600 звезд на GitHub и примерно 400 тысяч скачиваний ежемесячно.

Да, это даже и близко не похоже на показатели огромных проектов вроде Angular или React, но я думаю, что у меня уже достаточно опыта, которым я могу поделиться. И я хочу это сделать, чтобы помочь читателям избежать совершенных мной ошибок и, что более важно, — рассказать, чего стоит ведение собственного проекта.

Что такое open source?

Давайте для начала определимся с терминологией. Что такое open source? Вот отличное общее определение из известной опенсорсной энциклопедии (т. е., Википедии):

«Open source — это информационная концепция, позволяющая воспроизводить или модифицировать что-то, открытое для общественности».

Или, если говорить конкретно о программном обеспечении,

«Открытое программное обеспечение (англ. open-source software) — программное обеспечение с открытым исходным кодом. Исходный код таких программ доступен для просмотра, изучения и изменения».

Один из главных принципов open source разработки — сотрудничество; любой желающий имеет свободный доступ к исходному коду, планам и документации.

Взяв в качестве примера Википедию, мы можем сказать, что есть люди, пишущие статьи (контрибьюторы), и люди, проверяющие эти статьи (более опытные члены сообщества, модераторы). Если мы перенесем этот шаблон на мир программного обеспечения, модераторы будут основной командой проекта (core team), а контрибьюторы будут… контрибьюторами.

Википедия это огромный open source проект, но начинался он с малого. Свободная энциклопедия произошла от Nupedia, и для ее появления были причины: написание статей для Nupedia продвигалось чрезвычайно медленно (за первый год было написано всего 12 статей).

Отсюда мы переходим к важному вопросу:

Зачем вообще нужен open source?

Как можно понять из предыдущего раздела, главным резоном открывать что-либо для более широкой аудитории является желание привлечь сотрудников.

На момент написания этой статьи Википедия имеет 37 899 499 зарегистрированных аккаунтов, из которых 134 022 активных.

Только задумайтесь: 134 022 активных участника. А, да — еще там 6 миллионов страниц с контентом!

Удалось бы достичь таких показателей, если бы Nupedia не перешла на модель open source? Сильно сомневаюсь.

Создание программного обеспечения ничем не отличается от ведения проекта, подобного Википедии. Чтобы решить какую-то проблему, вы пишете код. Чтобы решить большую проблему, вам приходится писать много кода. Чтобы решить проблему правильно, вы должны написать высококачественный код, сделать высококачественный дизайн и т. д. Все это требует значительных ресурсов, которых, честно говоря, у вас нет. Ведь вам нужно еще и на жизнь деньги зарабатывать.

Но, несмотря на то, что привлечение сотрудников это вполне достойный стимул для открытия кода, практически никто не начинает новый open source проект только ради этого. Причины появления проектов с открытым кодом бывают разными, так что давайте разберем самые распространенные.

Будьте осторожны со своими желаниями

Вот несколько сценариев, которые первыми пришли мне в голову:

  1. Вы сталкиваетесь с проблемой и не находите готового решения (или решение есть, но дорого стоит). Поэтому вам приходится разбираться со своей проблемой самостоятельно. Вам это удается, вы в восторге от своей работы и хотите, чтобы другие люди тоже могли извлечь пользу из нее.
  2. Вы хотите, чтобы вас знали как основателя проекта с открытым кодом, вы хотите добавить эту прекрасную строчку в свое резюме. В общем, вы хотите потешить свое самолюбие (все мы люди, в конце концов). Если это ваш главный мотив, я клянусь, что после чтения моей серии статей вы поймете: оно того не стоит.
  3. Вы сталкиваетесь с проблемой и находите проект с открытым кодом, который, собственно, решает эту проблему. Но проект недостаточно хорош (по вашему мнению) или не имеет именно такого функционала, какой нужен вам. Если вы собираетесь создать новый open source проект чисто из этих соображений, скорее всего, речь идет о п.2 (потешить самолюбие). Лучше станьте контрибьютором существующего проекта. Правда, если этот существующий проект имеет другое видение и сделать пул-реквест не представляется возможным, можно сделать форк этого проекта и расширить или изменить его, вместо того чтобы создавать новый. Это спасет вас от большой головной боли в будущем.
  4. Вы сталкиваетесь с проблемой, не находите готового решения и задумываете сразу создавать собственное решение в виде open source. Это плохая идея. Решите проблему, убедитесь, что решение работает, а потом переходите к п.1.

Эти четыре мотива создания новых проектов с открытым кодом я считаю наиболее популярными, но в своих статьях я сосредоточусь на первом сценарии.

Просто я уверен, что если основной причиной создания нового open source проекта не является желание делиться и вносить свой вклад в общее дело, проект не выгорит. Так что, если вами движет что-то другое, возможно, вам стоит остановиться прямо сейчас и не тратить свое время попусту.

Да, есть еще один довольно популярный сценарий, о котором стоит упомянуть.

Существуют компании, открывающие часть своего кода для сообщества. Например, Angular (поддерживается Google), React (поддерживается Facebook), VSCode (поддерживается Microsoft) и др.

Причины, которые движут компаниями, тоже различны, но среди них определенно есть желание найти сотрудников и внести свой вклад в развитие сообщества.

Это, безусловно, благородные устремления, но данный сценарий все же отличается от остальных, потому что сотрудники компаний, поддерживающие их проекты, получают зарплату за свою работу.

Если вы работаете на компанию, где рассматривается возможность создания open source проекта, мои статьи, в основном, будут для вас подходящими, несмотря на разницу в мотивах.

Заключение

Завершить первую часть своего цикла я хотел бы пожеланием:

Убедитесь, что ваши намерения согласовываются с вашими ожиданиями.

Думать, что хочешь иметь open source проект, это не то же самое, что в действительности вести таковой.


2 КОММЕНТАРИИ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here