✨✨ Вдохновение ✨✨

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

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

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

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

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

Я хотел быть Робин Гудом с открытым исходным кодом.

☠☠ Страхи ☠☠

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

Смотреть на репозиторий, содержащий 2000 коммитов, было довольно сложно, особенно когда мои хобби-проекты превысили 40 коммитов.

Когда я начал перемещаться по лесу файлов с загадочными именами, о которых я никогда не слышал (.snyk, .varci.yml, pm2Start.js), быстро закрались мысли о синдроме самозванца. Я спросил себя: «Действительно ли я квалифицирован прикоснуться к этому коду? »

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

Меня душил страх, когда я думал о своем первом разговоре с разработчиком ПО с открытым исходным кодом. В моей голове их ответы варьировались от «лол ты серьезно?» на «может быть, веб-разработка не для вас».

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

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

Несмотря на эти опасения, я решил начать свое приключение с открытым исходным кодом.

🔎🔎 В поисках проекта 🔎🔎

Первым шагом был поиск проекта с открытым исходным кодом для работы. В статье Шубекши Как найти свою первую ошибку с открытым исходным кодом, которую нужно исправить рекомендовалось посмотреть Готово для кандидатов в проекты. После быстрого просмотра списка проектов JavaScript я не нашел ни одного, что привлекло мое внимание.

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

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

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

Поэтому, просмотрев их список открытых проблем на GitHub, я выбрал Free Code Camp в качестве своего первого проекта с открытым исходным кодом.

🐜🐜 Обнаружение ошибки 🐜🐜

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

Но, как и при просмотре фильма на Netflix, иногда вы тратите больше времени на то, чтобы выбрать что-то для просмотра, чем на просмотр.

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

Я не обнаружил проблем, с которыми можно было бы сразу приступить к работе, поэтому продолжил поиск.

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

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

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

Я подумал про себя: «Я немного разбираюсь в регулярных выражениях».

Затем сопровождающий прокомментировал, что это действительно проблема, и добавил к ней пометку «требуется помощь». Мое сердце забилось, когда я перечитал выпуск еще 3 раза, чтобы убедиться, что ничего не пропустил.

Тогда я подумал про себя: «Я могу это сделать!»

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

И, наконец, кто-то ответил: «Вы можете поработать над этим».

Пора на работу.

🚶🚶🏃 Начало работы 🚶🚶🏃

Я начал с просмотра README.md в репозитории. К счастью, Free Code Camp имеет очень подробные инструкции о том, как вносить свой вклад и создавать запросы на вытягивание. У них также есть канал Gitter только для участников.

Я раздвоил репозиторий и начал.

🚷🚷 Спотыкаться 🚷🚷

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

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

Когда я запустил «gulp», чтобы начать, внутри gulpfile произошла ошибка. Он выделил строку кода, в которой использовался синтаксис стрелки ES6, и сказал, что не распознал ее. Я просмотрел оставшуюся часть файла и не увидел другого использования синтаксиса стрелок ES6. Мог я забыть шаг в процессе сборки?

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

Благодаря этому успеху я быстро наткнулся на еще один блокпост. Я зашел на свой локальный хост и увидел домашнюю страницу Free Code Camp, за исключением того, что она не работала. Нажатие на ссылку «карта», которая обычно отображает все задачи, ничего не дало. В консоли было несколько ошибок, в первую очередь отсутствовал файл «bundle.js».

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

Когда я впервые зашел на канал Gitter, я увидел много сообщений о новых обновлениях Free Code Camp. Справа меня встретил отчет о недавней активности на этом канале, в том числе о бане четырех человек. Были ли эти люди виновны в том, что их файлы gulp не работали? Они небрежно спросили, где их пропавший файл bundle.js?

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

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

Я ждал и ждал, пока не пришло спасение. Сопровождающий по имени Дилан сказал мне, что мне нужно обновить свой узел и npm. Я снова посмотрел на руководство и понял, что в нем четко указана версия, которую я должен использовать. Как я это проглядел ?!

Я поблагодарил Дилана за его доброту и тихо поблагодарил Гиттера за то, что он не запретил меня.

Я сразу установил последнюю версию Node и npm. Вещи уже выглядят ярче.

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

Я столкнулся с той же ошибкой с отсутствующим файлом «bundle.js» и спросил об этом в канале Gitter. Кто-то ответил, что его должна была создать команда «gulp». Я создал «bundle.js», выполнив самостоятельно команду «webpack», и, наконец, среда выглядела так, как будто она работает. Наконец-то я смог начать работать над актуальной проблемой!

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

Я прочитал документацию с инструкциями по запросу на перенос. В Free Code Camp есть потрясающий предварительно заполненный контрольный список, когда вы отправляете запрос на перенос.

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

🏋🏋 Pull Request объединен! 🏋🏋

На следующий день я получил электронное письмо о статусе моего pull request. Кто-то прокомментировал LGTM.

Я быстро поискал в Google и обнаружил, что это означает «Мне нравится». Тогда я почувствовал большое облегчение. Они объединили мой запрос на перенос!

Мой первый шаг к открытому исходному коду оказался успешным!

🤓🤓 Что я узнал 🤓🤓

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

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

Другое преимущество состоит в том, что мне стало намного удобнее использовать GitHub.

👶👶 Слова новым участникам открытого исходного кода 👶👶

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

Совет №1: работайте усердно и упорно

Я бы сказал, что в 60% случаев, когда вы работаете, все работает без проблем. Но именно те 40%, когда все ломается, определят, кем вы являетесь как разработчик.

Примите эти препятствия и преодолейте их.

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

Измените свое мышление, чтобы приветствовать ошибки. Рассматривайте их как уроки.

Совет №2: Сообщите как можно больше деталей.

Это особенно важно, когда вы задаете вопросы в асинхронном режиме связи (например, в Gitter или по электронной почте).

Представьте, что вы используете API для запроса информации о погоде в вашем городе. Вы можете сделать это:
1. Вы спрашиваете API о погоде
2. API отвечает, запрашивая местоположение
3. Вы отвечаете «Нью-Йорк»
4. API спрашивает, хотите ли вы его в градусах Цельсия, Фаренгейта или Кельвина
5. Вы отвечаете «по Фаренгейту»
6. API отвечает «72 градуса по Фаренгейту в Нью-Йорке»

Или вы можете сделать это:
1. Вы спрашиваете API о погоде в Нью-Йорке по Фаренгейту.
2. API отвечает: «72 градуса по Фаренгейту в Нью-Йорке».

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

Совет №3. Не пугайтесь разработчиков открытого исходного кода.

У них может быть больше опыта, чем у вас, но они понимают, что в какой-то момент они тоже были в вашей ситуации. Просто они пережили больше ошибок, чем вы.

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

👤👤 Слова разработчикам ПО с открытым исходным кодом 👤👤

Сообщество Free Code Camp потрясающее, и оно мне очень помогло, когда мне это было нужно.

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

Продолжайте в том же духе!

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

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

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

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

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