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

Почему сейчас ?

Почему именно сейчас, спросите вы. Ну это вопрос возможности.

Две недели, когда я разрабатывал решение проблемы появления кода для своего блога, я столкнулся с проблемой. Инструмент, который я использую, Cppcheck, чтобы добавить некоторые проверки статического анализа кода, написанного для моего решения на Advent of Code, выдал мне несколько предупреждений для кода, поступающего из библиотеки, которую я использовал (для информации, это удивительный библиотека JSON для современного C++).

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

От решения до вклада

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

Поскольку библиотека JSON for Modern C++ находится на Github, я собираюсь описать процесс добавления на GitHub.

Первый шаг: вилка

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

Это первый шаг к тому, чтобы внести какой-либо вклад в проект GitHub с открытым исходным кодом.

Так я и сделал, разветвил репозиторий библиотеки JSON for Modern C++.

Второй шаг: коммит

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

Действительно, я получил 29 предупреждений от Cppcheck на библиотеку, но я решил действовать только по двум из них: ненужный тест и использование алгоритма std::accumulate вместо сырого цикла.

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

Третий шаг: запрос на извлечение

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

Создать запрос на слияние очень просто! Вы нажимаете свою ветку, заходите на GitHub, нажимаете предложенную кнопку, чтобы создать Pull Request с вашей веткой в ​​репозитории библиотеки.

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

Вы спросите, а как же Pull Request, который я создал? Ну, мне пришлось сделать несколько исправлений, когда я его создал. Действительно, в JSON для современного C++ вам нужно запустить и зафиксировать результат их команды make amalgame, которая делает несколько вещей, таких как форматирование кода, а также генерирует некоторые файлы. После запуска этой команды и нажатия модификации тесты перестают проходить, поэтому я исправил код, который я написал, и заставил его соответствовать стандарту С++ 11, поскольку я использовал С++ 14 особенность. И вот после всех этих исправлений тесты, наконец, снова прошли 🤘😂🤘 И наконец, Pull Request был одобрен и объединен!

Четвертый шаг: наслаждайтесь и празднуйте

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

Вывод

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

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

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

Первоначально опубликовано на http://10xlearner.com 10 октября 2019 г.