От автора: В статье приведены мои слайды и заметки с выступления от 25 июня 2016 года на конференции WordCamp Europe. Говорил я примерно то же самое.



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

Программное обеспечение поедает мир


Известна фраза от Марка Андреессена, создателя браузера Netscape: «программное обеспечение поедает мир». Я хочу уточнить, что мир поедает ПО с открытым кодом, и у меня есть парочка аргументов в пользу моей версии.

Во-первых, результаты опроса 2015 года «будущее открытого ПО»: «78% анкетируемых сказали, что частично работают при поддержке ОПО, и 66% сказали, что создают ПО для клиентов на основе ОПО. Эти цифры почти удвоились с 2010 года».

Во-вторых, Надья Эгбал [Nadia Eghbal], проводящая интересные исследования экономики ОПО, подсчитала, что «Доля ОПО в приобретённом за $1 миллиард Instagram составляла не менее $143 миллионов».

Мне кажется, у этого кембрийского взрыва ОПО есть несколько причин:

  1. ОПО бесплатно, что означает, что компания может потратить деньги на людей (инновации) а не на софтовые лицензии.
  2. Существует критическая масса надёжных компонентов, ускоряющая выход вашего продукта на рынок.
  3. ОПО производит лучший софт.
  4. И что мне особенно близко, ОПО позволяет компаниям вместе решать общие задачи без сложных переговоров и соглашений.


Так что, ОПО – это очень круто. Но что это такое?

Открытый код – это больше, чем просто лицензия


Сейчас это понятие означает две вещи.

Понятно, что есть официальное определение – лицензия, позволяющая некоторые вольности пользователю ПО. Но обычно сейчас это понятие используется для обозначения совместного и публичного создания ПО. Лицензия вообще мало кого интересует – у 80% проектов с Github лицензия отсутствует.

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

В создании ОПО можно участвовать по-разному.

Поддержка — это больше, чем вклад


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

Пройдёмся по эмоциональному пути человека, поддерживающего проект.

Мне стыдно за мой код


Допустим, вы хотите поддерживать проект, но вы стыдитесь своего кода слишком сильно, чтобы выкладывать его в онлайн. Маленький секрет: все стыдятся своего кода. Это не повод не выкладывать проект и не начинать его поддержку.

Публикация проекта – отличный повод для обучения

Публикация проекта – отличный повод для обучения. Размещение кода в онлайне приводит к обсуждению этого кода, которое иначе просто не состоялось бы. Когда люди и��пользуют ваш проект, они дают вам новые задачи для решения, что помогает вам расти как разработчику.

Важно отметить, что дорога к мастерству долгая и трудная, а также бесконечная.

Меня бесит, что я не могу закончить релизы


Новоиспечённого человека, поддерживающего свой проект, может сильно расстраивать тот факт, что он не может закончить релизы. И я чувствовал себя так же. Я планировал релиз, добавляя кучу задач, и работал, пока не решал их все. Но одна, или несколько, или десяток задач задерживали мой октябрьский релиз до декабря, января или февраля.

Релизы по календарю; отмечайте всё подряд


Новые версии моего проекта WP-CLI я выпускаю по календарю, отмечая все шаги, сделанные в процессе. С философской точки зрения мне кажется, что пользователей не должна заботить конкретная версия, которой они пользуются – главное, чтобы она была самой свежей и самой лучшей. Я вообще стараюсь не назначать этапам задачи, пока не завершаю их, только если их ужасно необходимо решить.

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

Важно отметить, что окончание релиза занимает несколько часов, которые вам придётся выкраивать из вашего расписания.

Я подавлен количеством открытых задач


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

Сортируйте, расставляйте приоритеты, принимайте решения


Поддерживая WP-CLI, я всегда стараюсь сортировать, расставлять приоритеты и принимать решения. Я периодически почитываю список задач, уточняю задачи до необходимой детализации, назначаю метки, и т.п. Приоритеты я расставляю путём назначения небольшого количества задач одновременно. И наконец, я принимаю решения – если задача открыта два года и не двигается, значит, она не важна.

Важно отметить, что вы никогда не дойдёте до нул�� открытых задач, поэтому вам надо привыкнуть к нормальному количеству открытых задач в вашем проекте.

Меня бесит, когда обсуждения задач превращаются в споры


Как ведущего проекта ОПО, вас могут расстраивать превращающиеся в войны обсуждения задач. У текста очень небольшая эмоциональная плотность. Наш с вами личный разговор достаточно наполнен эмоциями, поскольку мы используем язык тела, мимику, и интонацию для поддержания речи. Текстовое общение, не наполненное эмоциональным содержимым, может легко привести к недопониманию…

Будьте сочувствующим, твёрдым и уважайте других


При поддержке своего проекта я стараюсь быть сочувствующим, твёрдым и уважать других.

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

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

Наконец, я твёрд, поскольку я — глава проекта, что задаёт тон общению и уменьшает двусмысленность.

Важно отметить, что вам всё равно придётся отрастить толстую шкуру.

Я слишком увлечён своей работой над ОПО


При поддержке проекта ОПО вы можете почувствовать, что слишком увлеклись участием в нём. Люди просят вас сделать что-то, и вы соглашаетесь. Слишком много «yes» – и вот он, стресс.

Добейтесь счастья и установите границы


Поддерживая свой проект, я обнаружил, что мне нужно добиться собственного счастья и установить границы вовлечённости. Больше всего мне понравился баланс в 2-5 часов в неделю, укладывающийся в нормальный график моей работы. Это поддерживает страсть к проекту, и не даёт ему превращаться в работу. Так как я расставляю приоритеты в задачах, я постепенно продвигаюсь в решении тех задач, что считаю важными.

Важно отметить, что уровень вовлечённости приходится постоянно подстраивать.

Я одинок


Поддерживая проект, вы можете почувствовать себя одиноким. Сейчас я борюсь с этим и пытаюсь представить долговременное будущее моего проекта, которое не зависит полностью от меня. Здорово, конечно, быть благожелательным диктатором, но фактор автобуса меня весьма волнует.

Сконцентрируйтесь на руководстве и приглашайте других участников


В моём проекте я стараюсь концентрироваться на руководстве, и показываю другим возможности принимать решения по проекту. Конкретно, я:

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


Важно отметить, что достаточное количество участников вы не найдёте, и вам придётся мириться с тем, что у вас есть – а это может быть трудным делом.

И к чему я это веду?

WP-CLI поедает WordPress


WP-CLI становится всё более включённым в разработку WordPress. Такое ощущение, что на каждом мероприятии WordCamp есть сессия, посвящённая WP-CLI. Командная строка позволяет делать больше, прикладывая меньше усилий. Вы также можете помочь WP-CLI поедать WordPress, добавляя и поддерживая новые команды.

Вы также можете стать человеком, поддерживающим WP-CLI!


У WordPress есть плагины, и у WP-CLI в будущем появятся пакеты команд. И ради него я пытаюсь решать проблемы, которые наблюдаются у WordPress с плагинами:

В WordPress плагины имеют второстепенный статус, в отличие от включённого в ядро кода. Я хочу, чтобы пакеты WP-CLI имели такой же статус, как и команды.
Слишком часто у плагинов WordPress автор один. Я хотел бы, чтобы у каждого из пакетов WP-CLI было два-три активных автора.

Мы все чувствуем, что роль ОПО в глобальной экономике постепенно растёт. В своём выступлении я надеялся передать, что, несмотря на эмоциональные встряски, поддержка ОПО может быть весьма полезной для вашей карьеры.

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


Выступление автора (на аглийском).