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

Читать в полной версии →

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

Зачем участвовать в опенсорс-проектах Хекслета

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

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

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

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

Если человек хочет участвовать в опенсорсе, с чего ему начать?

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

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

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

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

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

Читайте также: Андрей Ситник: программист не обязан становиться инфлюенсером

С каким минимальным уровнем подготовки можно идти в опенсорc

Как сказано выше, почти всегда есть задачи, которые под силу новичкам без знаний кода: можно по образцу добавить упражнения в СИКП, добавить задачу с решением на 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. Конкретика зависит от операционной системы пользователя и оболочки командной строки. Например, она может содержать специальные символы \u@\h \W\\$.

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

Поговорим о настройке PS1. Сначала расскажу, как происходит настройка PS1, если вы пользуетесь стандартным Bash и уже настроили bash completion. При этом на современных MacBook обычно по умолчанию стоит ZSH — про его настройку я расскажу чуть позже.

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

export PS1="\W\$(__git_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, или через взаимодействие с установленным по умолчанию ZSH. Если у вас стоит старая версия macOS с уже готовым Bash, то установите 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-команды, ключи опций и многое другое.

Но проще всего владельцам Mac работать с ZSH (Z-Shell), так как с недавних пор он по умолчанию установлен во всех устройствах на MacOS.

Если в Bash очень много вещей надо настраивать руками, то в ZSH все это идет уже из коробки. Существует гигантское количество пресетов с настроенными темами, и это позволяет за две команды сделать из терминала рабочую эффективную машину с кучей возможностей. Кроме того, если мощность ZSH объединить с альтернативным терминалом для macOS — iTerm2, то работа с ним станет еще удобнее и красивее.

Cейчас ZSH является оболочкой по умолчанию в терминале на macOS, тогда как Oh My Zsh — отдельный фреймворк для настройки ZSH, поэтому его необходимо специально устанавливать и настраивать. При этом устанавливается он одной простой командой:

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Подробнее почитать про Oh My Zsh можно на официальном сайте проекта или в его репозитории на GitHub. При этом Oh My Zsh из коробки поставляется с огромным количеством плагинов, полный список который можно увидеть на страничке на GitHub.

После установки Oh My Zsh вы сможете установить тему — сейчас у оболочки есть как минимум несколько десятков разных, как официальных, так и кастомных от пользователей.

Все актуальные темы можно найти в themes/каталоге в дистрибутиве Oh My Zsh. Чтобы включить определенную тему, нужно открыть файл фреймворка ~/.zshrc (открыть его можно будет через vim ~/.zshrc или nano ~/.zshrc) и установить в пункте ZSH_THEME название темы. Ее можно найти в описании к теме, которая вам понравилась. Например: ZSH_THEME=robbyrussell (это стандартная тема, с которой поставляется Oh My Zsh). Так выглядит стандартная тема robbyrussell:

А так выглядит модифицированная тема для Oh My Zsh — typewritten:

Или модифицированная тема Headline с использованием разных цветов:

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

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

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

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

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


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

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