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

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

Они не исключают друг друга, но я отвлекся.

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

Проблемы возникают, когда люди позволяют эмоциям влиять на их вклад.

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

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

Именно в этих беседах начинается настоящее обучение.

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

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

Но вы должны быть готовы слушать

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

Я понял.

Код - это отражение вашего мыслительного процесса. Можно сказать, отражение вашего интеллекта. Спрашивать об этом может быть деморализующим и оскорбительным.

По крайней мере, сначала.

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

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

Но что, если вы просто не готовы отправить код?

Начни с чтения

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

Прочтите все. Прочтите вопросы, о которых вы ничего не знаете. Чтение запросов на вытягивание - закрытые и объединенные. Читайте сообщения о фиксации, комментарии к коду и присоединяйтесь к спискам рассылки по проекту. Если есть Slack или Discord, зарегистрируйтесь и читайте там разговоры.

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

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

Если так, скорее всего, вокруг этого идет разговор.

А если нет…

Начать разговоры

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

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

Короче говоря, можно сосредоточиться на коде.

Сопровождающие не просто хотят вас, вы им нужны

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

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

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

Начать как стажер

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

Если вы не знаете, где себя занять в проекте, но хотите принять участие, есть несколько способов начать работу без кода:

  • Переписывание / корректура документации и метафайлов проекта (файлы Read Me, инструкции для авторов и т. Д.)
  • Тестирование патчей и пул реквестов
  • Использование программного обеспечения и создание проблем
  • Распространение проекта в ваши социальные сети
  • Участие в беседах на любых дискуссионных площадках

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

Почему?

Потому что код - это то, для чего мы все здесь, верно?

Вилка и прототип

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

Опять же, вы пишете код, который не будет объединяться. Фактически, вы даже не собираетесь открывать запрос на перенос в исходный проект для этого кода.

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

Что он делал по-другому? Как он решил проблемы, которые вы видели? Было ли у него решение или эти проблемы были признаком плохого выбора дизайна с вашей стороны?

Что еще более важно: что он сделал то же самое?. Это может быть наиболее внушающим доверие аспектом. Если ваши решения почти идентичны, это может сказать вам, что вы готовы внести свой код.

Всегда будет борьба

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

Ваш код так же действителен, как и любой другой.

Любой другой код так же действителен, как и ваш.

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

Не обижайтесь, если ваш код не объединен, а чужой код объединен. Даже если их код почти идентичен вашему.

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

В любом случае отправьте код.

И если ничего из этого не работает для вас

Разветвите проект и создайте свою собственную версию.

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

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

WordPress - крупнейшая система управления контентом в мире, изначально созданная как форк проекта b2 с открытым исходным кодом. Почему? Потому что исходный проект был заархивирован.

Совсем недавно мы стали свидетелями того, как популярный тестируемый проект с открытым исходным кодом Faker был закрыт его сопровождающим из-за огромного размера проекта и его неспособности поддерживать его дальше. Практически сразу же была создана организация FakerPHP, а FakerPHP / Faker был запущен как форк оригинального проекта Faker.

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

Что бы вы ни делали, выходите и вносите свой вклад.

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