Вы попали в эту историю в поисках совета, как начать работу с открытым исходным кодом? Таких историй в сети масса, не так ли?

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

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

Я пытаюсь внести свой вклад в открытый исходный код уже около двух лет.

да. Два года.

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

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

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

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

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

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

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

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

Я получил ответ: «Если вы не можете понять, как внести изменение, значит, вы не имеете права вносить изменения». Этот ответ сбил меня с толку и еще больше заставил меня бояться задавать вопросы, когда я чего-то не понимал в проекте.

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

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

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

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

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

Знакомство с Mozilla

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

Боже, я так рад этому прямо сейчас.

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

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

Это нормально - не знать всего и делать шаг за шагом, чтобы узнать что-то новое.

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

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

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

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

На данный момент я закрыл три проблемы в web-ext и получил патч для Firefox.

Мой вклад был замечен сообществом, и я также включил его в документ Addons Contribution Recognition.

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

Мой совет коллегам-начинающим разработчикам, которые хотят внести свой вклад в открытый исходный код:

Совет №1: не бойтесь задавать вопросы.

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

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

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

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

Совет №2: нормально иметь пробелы в своих знаниях.

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

Совет № 3: просто начните

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

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

Спасибо, разработчики ПО с открытым исходным кодом!

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

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

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

Особая благодарность Гвидо, Кумару Макмиллану и Луке за то, что они были замечательными наставниками на протяжении всего этого путешествия, каждый раз следили за мной и отвечали на мои вопросы. Я очень ценю все время и усилия, которые вы вложили в меня. :)

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

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

Спасибо Павану Дубею и Куинси Ларсону за помощь в доработке этой статьи.

Если вы сочли это полезным, нажмите «︎ ❤» , чтобы помочь продвинуть это произведение среди других.