В качестве вклада в проект с открытым исходным кодом наша команда решила побаловать меня и поработать над Pokemon Showdown.

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

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

Процесс настройки и установки был невероятно простым и понятным. Частично благодаря прекрасно поддерживаемому репозиторию/README/руководству по внесению вклада. Сначала я начал с разветвления репозитория в моей учетной записи GitHub. После этого я пошел дальше и клонировал репозиторий на свой локальный компьютер. После клонирования и перехода в каталог все, что мне нужно было сделать, это запустить npm install, чтобы установить все его зависимости. У одного из моих товарищей по команде возникли проблемы с установкой, но это было из-за того, что он использовал более старую версию на Node.js. После обновления он тоже был в чистоте.

Кодовая база не была незнакомой в том смысле, что они использовали неизвестные языки и фреймворки. Скорее это было незнакомо, потому что мы никогда раньше не работали над таким большим проектом JavaScript. К счастью, в репозитории GitHub есть хорошо задокументированные проблемы, особенно проблемы, отмеченные good first issue. У них был целый файл, посвященный хорошим проблемам с первого раза, что позволяло любому сразу же вступить в игру.

Среди этих проблем я заметил жемчужину, с которой моей команде было бы здорово справиться. Это был запрос на тестовый рефакторинг. В ходе своего развития они внесли важный вклад в то, как разыгрываются сражения с покемонами. Раньше у них был интерфейс, который требовал от вас вызова отдельных функций для каждой части битвы, таких как choose, chooseSwitch, chooseMove, commitDecision. Они перешли на использование только makeChoices, упростив боевой интерфейс для тестов. Их запрос состоял в том, чтобы изменить старые тесты, которые все еще полагались на старый интерфейс, чтобы использовать новый интерфейс. Достаточно просто, и это также позволило нам ознакомиться с набором тестов.

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

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

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

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

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