"Вносите вклад в открытый исходный код, это лучшее, что со мной случилось!" - все чаще и чаще слышу я в Twitter в последнее время. Хотя я не возражаю против самого высказывания, мне кажется, что в нем непреднамеренно (или намеренно) упускается приличная часть правды о вкладе и авторстве открытого кода. Это похоже на то, как если бы вы рекомендовали туристический маршрут, с которого в конце концов открывается незабываемый вид, но при этом вы не упоминаете о том, сколько трудностей и подготовки требует этот поход.
Я знаю, что найдутся люди, которые пойдут по этому маршруту и окажутся ошеломленными, если не сказать неподготовленными, перед лицом того, что на самом деле представляет собой жизнь сопровождающего открытый код. Поскольку я создал этот блог с целью писать о вещах, о которых, по моему мнению, люди должны говорить чаще, пришло время и мне прикоснуться к обширной и манящей плоскости открытого исходного кода.
Проверка статуса
Я буду писать с точки зрения автора открытого кода. Отчасти потому, что именно здесь у меня больше всего опыта и я могу осветить проблемы, с которыми сталкивался сам. Но главным образом потому, что я считаю, что вопрос превращения контрибьютора в автора решается всего лишь одним коммитом.
Существует значительная разница между опытом контрибьютора и автора, когда речь идет об открытом исходном коде. Посещение парка в выходные дни для добровольного обслуживания - это не совсем то же самое, что быть смотрителем этого парка, каждый день косить траву, организовывать ремонт, ухаживать и лечить животных, обитающих на его территории. Это как жить в двух разных мирах, которые рано или поздно столкнутся.
Должен заметить, что у меня нет цели отговорить вас от погружения в open source и стать тем, кем вы хотите быть. Открытый исходный код - это отличное место для обучения и поиска друзей, это вам правильно сказали. Это мой основной способ обучения уже полдесятка лет, и с моей стороны было бы глупо мешать вам учиться самим. Так что, если вы подумываете о том, чтобы сделать свой первый вклад - делайте это непременно. Увидимся в конце статьи.
Наслаждайтесь тем, что вас не раскрыли.
Я говорю это без малейшего намека на сарказм. Наслаждайтесь тем временем, когда ваши проекты остаются только вашим, ведь это поистине волшебно. Как только их обнаружат и подхватят, все изменится в зависимости от скорости принятия, так что не упустите возможность подышать свежим воздухом нового проекта, о котором никто не знает.
Здесь я склонен сказать: "Создайте что-то великое, и люди пойдут за вами", но это очень далеко от истины. Это как сделать имя в музыкальной индустрии: оно не имеет никакого отношения к жанру и качеству музыки, которую вы пишете. Это вопрос везения - раз, два, а потом еще пару раз. Потому что требуется огромное количество усилий, чтобы убедить людей посмотреть на то, что вы создаете, не говоря уже о том, чтобы принять это и внести в него свой вклад.
Еще раз повторю: наслаждайтесь тем, что вас не открыли. Есть что-то уникальное в том, чтобы играть свои песни в гараже, возможно, даже с группой друзей. Не всем нужно собирать большие стадионы или продавать платиновые пластинки. Жизнь знаменитого музыканта - это не только накопление кучи денег и выпивание огромных пинт вина. Есть трудности и борьба, так что наслаждайтесь, пока их нет в вашем ежедневном списке.
Если в конце концов вы решите добиваться внимания, используйте все доступные вам инструменты: социальный маркетинг, выступления на конференциях, вступление в существующие сообщества и поиск друзей в сети. Последнее сработало для меня лучше всего, и мне несказанно повезло, что мои работы неоднократно освещались невероятными людьми из сообщества. Однако ваш путь - только ваш.
Вы узнаете много нового о маркетинге, продвигая свои работы с открытым исходным кодом. Что ж, неудивительно. Если быть откровенным, вы будете продвигать не открытый исходный код, а...
Это продукт, а не функция
Подумайте о проекте с открытым исходным кодом, который ассоциируется у вас с понятием "успешный". А теперь скажите, какова вероятность того, что этот проект:
Приобретен;
Принадлежит корпорации;
Служит точкой входа в платный продукт;
Выиграл лотерейный билет, получив достаточное количество добровольных спонсоров;
Любая комбинация вышеперечисленного.
В экосистеме JavaScript вероятность этого примерно равна 100%. И если вам кажется, что вы придумали исключение, то оно наверняка направляется в одну из этих сторон без вашего ведома.
Библиотеки с открытым исходным кодом являются продуктами.
Их даже принято брендировать, рисовать логотипы, разрабатывать уникальные стили и заниматься другими видами брендинга продукта. Это не плохо, просто это то, что может проскользнуть мимо ваших увлеченных глаз, и то, о чем я редко вижу упоминание авторов таких проектов.
Многие из таких проектов по-прежнему создаются энтузиастами и бесконечно творческими людьми, но, несмотря на это, всем им так или иначе суждено стать продуктом.
Энтузиазм - это здорово, но из него не сваришь обед.
Кроме того, любой энтузиазм необходимо поддерживать. И поэтому, стремясь сохранить угольки своего вдохновения, авторы, естественно, ищут способы поддержать свои проекты финансово. Есть только одна загвоздка.
Если вы посмотрите на список выше, то ни один пункт не имеет отношения к реальной работе с открытым исходным кодом, которую вы делаете. Финансовая стабильность авторов обеспечивается за счет внешних источников, зачастую созданных ими самими в дополнение к тем титаническим усилиям, которые они уже вложили в свои проекты.
Деньги в открытом коде
Стоит мне упомянуть в одном предложении слова "деньги" и "открытый исходный код", как в комнате вдруг становится тихо. По какой-то ненормальной причине это негласное табу - ассоциировать то, что по закону и безгранично бесплатно, с такой грязной вещью, как деньги. Я, честно говоря, не понимаю этого. Как можно табуировать то, чего нет?
Потому что в open source нет денег
Конечно, никто из соавторов не участвует в проектах с единственной целью - получить от них финансовую выгоду. Открытый исходный код тоже никогда не был связан с деньгами. Но для вас, как автора, отсутствие средств на поддержание ваших идей и оплату хотя бы малой части времени, которое вы на них тратите, является, не буду врать, губительным. Поначалу это может вас не волновать, но неизбежно станет проблемой, когда ваши идеи обретут популярность и потребуют значительно больше времени, чем есть в сутках.
Тем не менее, есть проекты-"единороги", которые существуют благодаря поддержке своих пользователей. Станет ли ваш проект одним из них - отдельный разговор. Я бы сказал, что у вас больше шансов выиграть несколько лотерей подряд, чем получить стабильную финансовую поддержку за счет добровольного спонсорства. Вся культура открытого кода построена так, чтобы не было ни необходимости, ни желания спонсировать создателей, и за десятилетия не произошло ни одного сдвига в этом направлении. Как неподвижная ветряная мельница в безветренный день, финансовое положение open source висит в воздухе, нерешенное, невостребованное, стагнирующее.
Вот почему почти все создают продукт в рамках или вокруг своих идей с открытым исходным кодом. Не могу сказать, что я разделяю это направление, но оно, безусловно, единственное, которое доступно всем. Я действительно считаю, что продуктивизация идей приводит к смещению приоритетов, что часто заканчивается решениями, которые лучше для продукта, а не для его пользователей. В конечном счете, когда речь заходит о продукте, его движущей силой становится доход, и поэтому все застревают в бесконечном перетягивании каната, чтобы привлечь пользователей к своему продукту и только к своему продукту.
Планируйте свой выход
Чем раньше вы начнете думать о своих идеях как о продуктах, тем здоровее станет ваша жизнь в open source (и личная). И с любым продуктом стоит рассмотреть варианты выхода из него. В контексте открытого исходного кода это те варианты, которые позволят вашему продукту оставаться на плаву, а вашему творчеству - подпитываться.
Не случайно большинство проектов, которые я могу вспомнить, имеют четкую стратегию сопровождения. Я не призываю вас писать SaaS параллельно с другими вашими идеями, но если вы можете, то, конечно, действуйте. В остальных случаях подумайте о будущем вашего проекта и о том, как сделать так, чтобы это будущее не стало вашей второй работой. Если мне удалось донести до вас хотя бы часть своей мысли, изложенной в предыдущем разделе, то вы сами сможете ответить, насколько хорошо будет оплачиваться эта работа.
Что еще больше усложняет ситуацию, не все идеи превращаются в платные продукты. Вы можете придумать фантастические инструменты, которые не будут продаваться ни сами по себе, ни в составе другого продукта, что поставит вас в тупик. Не ждите, пока это произойдет, разработайте разумный план сопровождения ваших проектов на ранних этапах и придерживайтесь его.
Я бы с радостью порекомендовал вам конкретные вещи или дал бы вам направление, которого следует придерживаться, когда речь идет об устойчивом открытом коде. Но я не могу. Не потому, что хочу скрыть от вас секреты вселенной, а потому, что сам еще не до конца разобрался в этом (привет из лимбо!'). Мои проекты стагнируют, и я сгораю от того, что трачу на них так много свободного времени. Как только я разберусь во всем этом, я напишу еще одну статью, а пока лучшее, что я могу сделать, это предупредить вас и надеяться, что вы будете лучше подготовлены, чем я.
Установите здоровый баланс
Даже с самых ранних дней, когда вы создаете что-то для удовольствия, не намереваясь и не надеясь, что это когда-нибудь будет обнаружено кем-то, соблюдайте здоровый баланс во времени, которое вы тратите на открытый исходный код. Когда о вашем проекте узнают, и люди начнут требовать большего, будет слишком поздно думать о подобных вещах.
Открытый исходный код - это огромное море возможностей, и в нем легко утонуть, наблюдая, как пролетают часы и недели, а ваши идеи постепенно обретают форму. Заниматься открытым исходным кодом увлекательно и, честно говоря, затягивает, но будьте осторожны и не жертвуйте своим личным и семейным временем ради этой зависимости. Возможно, это покажется вам глупым, но я знаю, как легко впасть в легкую панику, когда я вижу, что кто-то сообщает о проблеме в моем проекте. А еще меня нервирует осознание того, что я не могу продвигаться со своими идеями так быстро, как мне хотелось бы, просто потому, что их слишком много. Психическое здоровье - это не то, с чем стоит шутить, и это разные вещи, которые делают нас счастливыми, грустными, нервными или приподнятыми. Именно здесь очень важен правильный баланс и отношение к открытым источникам.
Честно говоря, я бы порекомендовал просто установить временные ограничения на деятельность с открытым исходным кодом, которую вы делаете в течение дня. "Так, сейчас 17:00, значит, у меня есть полтора часа, чтобы внести свой вклад в открытый исходный код", - вот с чего начинается хороший баланс. Конечно, вы можете позволить себе больше времени, но именно идея четких границ деятельности делает ее здоровой. Не работайте по вечерам и ночам. Не забывайте о друзьях и любимых. Поверьте, они важнее всех кодов в мире.
А как только вы станете "большим", попробуйте сохранить простоту. Не позволяйте этому завладеть вашим вниманием. Не напрягайтесь по поводу глупых вещей. И да, код, который мы пишем, в конечном счете, просто глупая вещь. Это не делает его неинтересным или бессмысленным, но это просто байты в компьютере. Забавно, но изменение вашего отношения на более отстраненное также положительно скажется на вашей работе. Все выигрывают, когда творец здоров.
Заключительные мысли
Нет лучшего места для обучения инженерии, чем открытый исходный код. Также нет лучшего места для жертвования своей личной жизнью и психическим здоровьем, чем open source. И то, как вы балансируете между этими двумя понятиями, зависит только от вас и от культуры, которую вы устанавливаете в отношении своей работы с открытым исходным кодом. Воплощайте свои идеи в жизнь. Помогайте другим. И, прежде всего, не забывайте время от времени брать недельный отпуск от работы с открытым исходным кодом - это окупится.
Artem Zakharchenko - автор библиотеки для тестирования MSW с 15К звезд на GitHub.