Все статьи | Развитие

Как присоединиться к работе над опенсорсом, что такое PS1 и другие вопросы: отвечает разработчик Хекслета Андрей Мошков

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

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

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

Зачем участвовать в опенсорс-проектах Хекслета? В чём польза для контрибьюторов?

Для начала два слова об опенсорс-проектах — что это такое. Речь идёт о проектах с открытым исходным кодом, к разработке которых может присоединиться каждый желающий. Сообщество Хекслета работает над несколькими проектами, полный список будет ниже в одной из ссылок.

Это настоящие проекты или реальный продакшен. Они уже работают и приносят пользу людям. Хороший пример — Code Basics. На этом ресурсе каждый желающий может бесплатно изучать основы программирования и вёрстки.

Участие в опенсорсе даёт чувство причастности к большим и полезным проектам. Также участие в проектах с открытым исходным кодом даёт новичкам важный опыт:

  • учит работать с Git в команде, создавать ветки, оформлять и отправлять пулреквесты;
  • помогает наработать навыки общения в команде;
  • учит ответственности, планированию и тайм-менеджменту.

Есть ещё несколько важных и приятных моментов. Например, опыт в опенсорсе можно записать в резюме. Можно участвовать в Хактоберфесте и получать приятные подарки за вклад в проекты с открытым исходным кодом.

Хактоберфест — традиционный онлайн-марафон, участники которого контрибьютят в опенсорс-проекты.

Если человек хочет участвовать в опенсорсе, с чего ему начать? Куда пойти, где записаться, как взять первую задачу?

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

Обсудить любые вопросы, связанные с опенсорс-проектами Хекслета, можно в канале #hexlet-volunteers в слак-сообществе.

Чтобы участвовать в опенсорсе, надо в первую очередь выбрать проект или несколько проектов себе по душе. Это можно сделать по стеку технологий — если вы изучаете PHP, вам подойдёт Hexlet SICP, в котором используется PHP и Laravel, и так далее. Также можно выбирать по сути проекта — если вам нравится идея, начинайте работать и изучайте соответствующие технологии.

В выбранном проекте посмотрите открытые и закрытые issue, изучите структуру кода. Возможно, вы захотите и сможете взять в работу задачу, описанную в одном из issue. Желательно стать пользователем проекта — зарегистрироваться и попробовать использовать его. Этот опыт даст вам идеи по улучшению проекта. Их можно оформить в issue и обсудить с другими участниками.

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

Андрей Мошков


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

Как сказано выше, почти всегда есть задачи, которые под силу новичкам без знаний кода: можно по образцу добавить упражнения в СИКП, добавить задачу с решением на Codebattle, поправить опечатку, кривой отступ или перенос, переводы или описания, даже развернуть проект и поправить или добавить README — это уже большая полезная задача.

Если вы знаете основы вёрстки и Bootstrap, можно улучшать внешний вид сайтов. Для более серьёзной работы уже хорошо бы знать фреймворки, на которых написаны наши сайты, например, Laravel для Hexlet Sicp, Django для Hexlet Friends, Ruby on Rails для Hexlet CV и так далее.

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

Если студент прошёл хотя бы один проект на Хекслете, он уже знает, как работать с Git. Но одно дело — пушить в мастер своей репки, а другое — работать в проекте с несколькими людьми.

На Хекслете есть курс по работе с Git. Есть подборка курсов про Git от комьюнити. Также рекомендую пользоваться документацией Git, она очень подробная. В ней описаны основные моменты, с которыми человек сталкивается в опенсорсе: синхронизация форка и основного репозитория, работа с git pull/rebase и так далее.

Что такое PS1 и для чего используется?

PS — Prompt Statement. Переменная PS1 определяет, как будет выглядеть приглашение для ввода новых команд. И каждый пользователь может переопределять её как пожелает, например, в файле ~/.bashrc. Конкретика зависит от операционной системы пользователя и оболочки командной строки.

Нас интересует момент с выводом текущей ветки. Люди часто делают ошибки, да и я сталкивался с этим, когда коммитил не в ту ветку или делал новую ветку не от мастера и получалась каша. Конечно, в гите всё поправимо, но это маленькое изменение — настройка PS1 — упрощает работу. Я его советую всем. Когда программирую с кем-то парно, теряюсь, если вывод текущей ветки в PS1 не настроен.

Поговорим о настройке PS1.

Если у вас настроен bash completion, добавьте в файл .bashrc такой код:

export PS1="\W\$(__git_ps1) $ "

В терминале это выглядит так:

терминал, PS1


Я пошёл дальше и использую такой код:

export PS1="💻 \[\e[1;34m\]\W\[\e[m\]\[\033[32m\]\$(__git_ps1)\[\033[00m\] $ "

В терминале директории и ветки подсвечиваются разными цветами.

терминал, подсветка директорий и веток


Если у вас не установлен/не настроен bash completion, можно использовать такой код:

export PS1="\W ($(git branch 2>/dev/null | grep '^*' | colrm 1 2)) $ "

Если у вас операционная система Ubuntu, для использования bash completion добавьте в файл .bashrc код (см. ниже). Возможно, он уже есть в файле, но закомментирован, тогда его надо раскомментировать.

if ! shopt -oq posix; then
 if [ -f /usr/share/bash-completion/bash_completion ]; then
   . /usr/share/bash-completion/bash_completion
 elif [ -f /etc/bash_completion ]; then
   . /etc/bash_completion
 fi
fi

На Mac установите bash completion, добавьте в файл .bash_profile код:

if [ -f /usr/local/share/bash-completion/bash_completion ]; then . /usr/local/share/bash-completion/bash_completion fi

bash completion расширяет возможности автодополнения по нажатию TAB. Он позволяет дополнять не только команды и пути, а так же git-команды, ключи опций и многое другое.

команды

Какие ещё инструменты для работы с Git заслуживают внимания новичков?

Я бы посоветовал обновить Git до последней версии. Например, в стандартной версии гита на Ubuntu 18.04 отсутствуют команды git switch и git restore, которые более семантичны и понятны для новичка, чем checkout-комбайн.

Советую использовать git stash, алиасы для популярных команд. Но для начала рекомедовал бы выполнять полные команды, а если вы используете краткие, важно понимать, как они работают и какой флаг что делает. Например, git pull --rebase — это git fetch и rebase.

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

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

интерактивное и частичное добавление


Что можно запомнить:

  • в опенсорсе есть задачи для людей с разным уровнем подготовки, в том числе для тех, кто пока совсем не знаком с кодом;
  • участвовать в проектах с открытым исходным кодом полезно всем — это опыт работы в команде, умение решать реальные задачи и хорошая строчка в резюме;
  • чтобы начать, выберите проект по душе, изучите его и задайте вопросы в слаке.
Аватар пользователя Andrey Moshkov
Andrey Moshkov 15 июня 2020