От автора: В статье приведены мои слайды и заметки с выступления от 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 было два-три активных автора.

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

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


Выступление автора (на аглийском).
Поделиться с друзьями
-->

Комментарии (21)


  1. SamDark
    01.07.2016 16:06

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

    Хм… 156% и 132%?


    1. tytar
      01.07.2016 16:09
      +2

      думаю что раньше это было 39% и 33%


    1. splav_asv
      01.07.2016 16:10
      +1

      Это в 2015 году, в 2010 было примерно 39% и 33% соответственно.


    1. Bozaro
      01.07.2016 16:14
      +1

      Судя по тексту, это цифры за 2015 год.
      Я так понял, что в 2010 было где-то 39% и 33%.


    1. SazereS
      01.07.2016 16:15
      +1

      Вы перепрыгнули начало предложения:

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

      UPD: буду обновлять комментарии перед публикацией -__-


      1. 3fed
        02.07.2016 09:29

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


  1. mkarev
    02.07.2016 06:33
    +6

    Лицензия вообще мало кого интересует – у 80% проектов с Github лицензия отсутствует

    Сильно сказано.
    80% — это, видимо, тонны Hello World'ов, портящих общую статистику.
    Первое на что смотрю в заинтересовавшем меня проекте — лицензия.
    Пока что не встречал ни одного проекта, несущего практическую ценность, без лицензии.


    1. leMar
      05.07.2016 10:17

      Можно просветить меня (ну и тех, кто тоже любознательный) зачем она нужна. И что будет, если я ее нарушу? Я правда не знаю.


      1. mkarev
        05.07.2016 10:30
        +2

        зачем она нужна

        Цели разные, например, в СПО лицензия нужна в том числе для того, чтобы код не растащили проприетарщики. Поэтому для закрытых коммерческих проектов приходится искать проекты с либеральными лицензиями типа BSD/MIT и т.п.

        что будет, если я ее нарушу

        Как минимум заработаете минус в карму.
        Как максимум, если лицензия работает в рамках законодательства Вашего Государства, огребете люлей.


        1. leMar
          05.07.2016 12:14

          Спасибо.


          чтобы код не растащили проприетарщики

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


          1. mkarev
            05.07.2016 12:28
            +3

            Что владелец либы может сделать?

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

            Допустим это разные страны с разным законодательством

            Очевидно ничего, кроме минуса в карму (Alwinner, превед)


            1. leMar
              05.07.2016 12:34

              результатам экспертизы исходного кода

              Интересно было бы посмотреть на процесс и тех людей кто это будет делать. Не знаете, были ли прециденты?


              1. mkarev
                05.07.2016 12:40
                +1

                Бывает, что одна организация покупает закрытый проект «в сорцах» у другой, а перед этим смотрит, что там внутри.
                Других примеров из своей практики не могу привести.


      1. grossws
        05.07.2016 21:41
        +1

        Добавлю ещё другой пример к приведённому mkarev, чтобы другие open source проекты могли использовать вашу библиотеку.


        Например, у Apache Software Foundation есть списки лицензий, проекты под которыми можно свободно добавлять в зависимости: http://www.apache.org/legal/resolved.html#category-a, остальные либо запрещены (как всякие GPL, AGPL, LGPL и т. п.), либо со специальными условиями, либо требуют отдельного рассмотрения.


        У Eclipse Foundation процесс IP compliance ещё более сложный и весёлый: проверка осуществляется для каждой версии сторонней библиотеки (и её зависимостей, естественно).


  1. nvksv
    10.11.2016 18:38

    Фотоны всегда двигаются со скоростью света. Любые зеркала (да и вообще любые тела, обладающие массой покоя) всегда двигаются со скоростью строго меньшей скорости света.


    1. Areso
      02.07.2016 10:22
      +1

      Поддержка. Продают не продукт, продают поддержку.
      Есть еще краудфандинг, донат, продажа бинарников, спонсорство/грантоедство, но это все в незначительных объемах и работает с небольшим количеством проектов. Основной путь к коммерческому успеху — продавать поддержку.


      1. splav_asv
        02.07.2016 11:38
        +1

        Еще доработка под заказ, как подвид поддержки. И community edition с открытыми исходниками + версия за деньги с дополнительными фишками, почти что freemium по сути, довольно распространено — nginx тот же.


      1. h31
        02.07.2016 12:47
        +2

        На мой взгляд, сейчас самая оптимальная модель — open core. Просто нужно правильно выбрать разбиение на открытую и закрытую часть, чтобы и любителям было по душе, и компаниям был смысл покупать.
        Поддержка — тоже вариант, но это скорее для больших проектов, на которые уже «подсели». Если смотреть в процентном соотношении, то таких проектов очень немного, а кушать всем хочется…


    1. sameoldmadness
      02.07.2016 13:30

      Nadia Eghbal педантично описала множество способов монетизации: A handy guide to financial support for open source



  1. vxg
    04.07.2016 15:24

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