Как начать участвовать в Open Source
Какое-то время назад я считал, что порог вхождения в OpenSource-разработку очень высок — ведь надо использовать git, отправлять пулл-реквесты. Это было чем-то незнакомым, далеким и останавливало меня. Тем более, что весь github.com на английском и многие слова и, соответственно, функции непонятны.

Однако сейчас я понимаю, как ошибался. Надеюсь, что после этой статьи вы согласитесь со мной и начнете вносить свой вклад в сообщество Open Source (и сообщество MODX в частности). Предлагаю на примере разобрать, как помочь разработчикам радовать нас дополнениями и уроками.
Я давно уже видел одно дополнение — modxSDK, но пользоваться им стал недавно. Заметил, что не все фразы и кнопки переведены. Мне особо не мешает, а новым пользователям может быть неудобно. Давайте, начнем наш вклад с малого — просто переведем поля и кнопки.
Если вы не зарегистрированы на сайте github.com, самое время это сделать. Кроме аккаунта на Gihub нам понадобится сайт на MODX и доступ к нему с помощью SSH. На Windows для подключения я пользуюсь утилитой Putty (скачать), а в Ubuntu достаточно терминала.
В первую очередь, заходим на страничку нужного нам репозитория и нажимаем кнопку Fork. Теперь у вас есть своя версия этого дополнения)
Теперь нам нужно исходный код дополнения выгрузить на сайт, чтобы мы могли его изменять и тут же проверять. Открываем терминал (подключаемся к нашему серверу по SSH) и переходим в папку сайта:
И в этой папке выполняем следующую команду:
После этого побегут циферки, указывающие на прогресс «скачивания» исходного кода в вашу папку. Когда все скачается, можно открыть админку нашего сайта и увидеть в файловой системе новую директорию. У меня это modxSDK.
Теперь нам надо сгенерировать пакет для установки, чтобы проверять, что мы там напрограммировали) Открываем http://sitename.ru/modxSDK/_build/build.transport.php. У меня ничего не сгенерировалось — просто белый экран. Обычно это происходит из-за того, что у разных разработчиков дополнения находятся в разных папках. Посмотрим, например, в файл modxSDK/_build/build.config.php:
Видимо, у автора есть отдельная папка для дополнений. А мы папку создали прямо в корне. Давайте, создадим новую папку и перенесем наш каталог в нее, чтобы автор потом не мучился с перепроверкой нашей писанины)
Чаще всего пакет генерируется уже сразу в папку /core/packages/, так что идем в Управление пакетами → Искать локально и устанавливаем дополнение. Некоторые разработчики настраивают автоматическую установку пакета после генерации. В таком случае устанавливать уже ничего не надо будет)
Все, подготовка закончена. Теперь мы можем менять код, открывать в браузере файл build.transport.php, переустанавливать пакет и проверять, что мы все поменяли правильно. Для перевода мы идем в папку /core/components/modxsdk/lexicon/ и вносим изменения в файл /core/components/modxsdk/lexicon/ru/default.inc.php
Не бойтесь вносить изменения в несколько файлов — потом мы разом отправим все файлы.
Исправьте версию дополнения в файле /_build/build.transport.php и напишите changelog в файл /core/components/modxsdk/docs/changelog.txt
Когда работа закончена, все проверено, пакет устанавливается, все работает как надо, нужно сохранить все изменения в своем аккаунте на Github. Кстати, сохраняться можно периодически, пока вы работаете — закончили с каким-то моментом, отправьте изменения на Github.
Чтобы это сделать, переходим внутрь рабочей папки:

Здесь в первой строчке нужно кратко описать, что за изменения вы внесли. Желательно, на английском. 5-7 слов)
Я напишу так:
Локально сохранились. Теперь отправим все изменения на github.com:
После этого у вас спросят пароль от Github'а и, если пароль правильный, отправят все, что мы накодили на сервер. Теперь можно зайти на страничку своего репозитория и проверить, что весь код на месте. Если все ОК, нажимаем на зеленую кнопку (Compare, review, create a pull request):

Вы увидите все изменения, которые вы внесли. Поверьте, это очень приятно, когда ты смотришь именно вот так на творение своих рук))) Нажимаем большую зеленую кнопку «Create Pull Request» и заполняем краткое описание — можно уже на русском (если разработчик говорит на русском)). Описание нужно, чтобы автор быстро понял, что именно вы сделали.
Осталось только дождаться, когда автор нажмет у себя кнопку Merge и ваше имя будет увековечено в сообществе Open Source.
Возможно несколько сумбурно написал и опять кажется сложно. В своем блоге я выложил краткую инструкцию, которую можно открывать каждый раз, когда вы захотите оставить свой вклад в развитии MODX: http://ilyaut.ru/tips-and-tricks/github-for-dummies/
Вот пулл-реквест, в котором можно увидеть измененные файлы. У вас скоро будет похожий, да не один))

Однако сейчас я понимаю, как ошибался. Надеюсь, что после этой статьи вы согласитесь со мной и начнете вносить свой вклад в сообщество Open Source (и сообщество MODX в частности). Предлагаю на примере разобрать, как помочь разработчикам радовать нас дополнениями и уроками.
Я давно уже видел одно дополнение — modxSDK, но пользоваться им стал недавно. Заметил, что не все фразы и кнопки переведены. Мне особо не мешает, а новым пользователям может быть неудобно. Давайте, начнем наш вклад с малого — просто переведем поля и кнопки.
Если вы не зарегистрированы на сайте github.com, самое время это сделать. Кроме аккаунта на Gihub нам понадобится сайт на MODX и доступ к нему с помощью SSH. На Windows для подключения я пользуюсь утилитой Putty (скачать), а в Ubuntu достаточно терминала.
В первую очередь, заходим на страничку нужного нам репозитория и нажимаем кнопку Fork. Теперь у вас есть своя версия этого дополнения)
Теперь нам нужно исходный код дополнения выгрузить на сайт, чтобы мы могли его изменять и тут же проверять. Открываем терминал (подключаемся к нашему серверу по SSH) и переходим в папку сайта:
cd modextra.ilyaut.ru/public_html/И в этой папке выполняем следующую команду:
git clone https://github.com/ilyautkin/modxSDK(вместо ilyautkin пишем свой логин, а вместо modxSDK — название репозитория)После этого побегут циферки, указывающие на прогресс «скачивания» исходного кода в вашу папку. Когда все скачается, можно открыть админку нашего сайта и увидеть в файловой системе новую директорию. У меня это modxSDK.
Теперь нам надо сгенерировать пакет для установки, чтобы проверять, что мы там напрограммировали) Открываем http://sitename.ru/modxSDK/_build/build.transport.php. У меня ничего не сгенерировалось — просто белый экран. Обычно это происходит из-за того, что у разных разработчиков дополнения находятся в разных папках. Посмотрим, например, в файл modxSDK/_build/build.config.php:
...
/*
* Include MODX config
*/
require_once dirname(dirname(dirname(dirname(__FILE__)))).'/core/config/config.inc.php';
...Видимо, у автора есть отдельная папка для дополнений. А мы папку создали прямо в корне. Давайте, создадим новую папку и перенесем наш каталог в нее, чтобы автор потом не мучился с перепроверкой нашей писанины)
mkdir extras
mv modxSDK/ extras/У меня после этого файл build.transport.php запустился нормально и показал сообщение об успешной генерации пакета.Чаще всего пакет генерируется уже сразу в папку /core/packages/, так что идем в Управление пакетами → Искать локально и устанавливаем дополнение. Некоторые разработчики настраивают автоматическую установку пакета после генерации. В таком случае устанавливать уже ничего не надо будет)
Все, подготовка закончена. Теперь мы можем менять код, открывать в браузере файл build.transport.php, переустанавливать пакет и проверять, что мы все поменяли правильно. Для перевода мы идем в папку /core/components/modxsdk/lexicon/ и вносим изменения в файл /core/components/modxsdk/lexicon/ru/default.inc.php
Не бойтесь вносить изменения в несколько файлов — потом мы разом отправим все файлы.
Исправьте версию дополнения в файле /_build/build.transport.php и напишите changelog в файл /core/components/modxsdk/docs/changelog.txt
Когда работа закончена, все проверено, пакет устанавливается, все работает как надо, нужно сохранить все изменения в своем аккаунте на Github. Кстати, сохраняться можно периодически, пока вы работаете — закончили с каким-то моментом, отправьте изменения на Github.
Чтобы это сделать, переходим внутрь рабочей папки:
cd extras/modxSDK/Индексируем все изменения в файлах:git add -AИ сохраняем изменения локально:git commitПосле этих действий у вас откроется консольный редактор, в котором будет перечислен список измененных файлов. Например, такой:
Здесь в первой строчке нужно кратко описать, что за изменения вы внесли. Желательно, на английском. 5-7 слов)
Я напишу так:
Added lexicons and translatesНажимаем Ctrl+O (сохранить), Enter («да»), Ctrl+X (закрыть редактор).Локально сохранились. Теперь отправим все изменения на github.com:
git push https://ilyautkin@github.com/ilyautkin/modxSDKНе забываем менять логин на свой и указывать нужный репозиторий.После этого у вас спросят пароль от Github'а и, если пароль правильный, отправят все, что мы накодили на сервер. Теперь можно зайти на страничку своего репозитория и проверить, что весь код на месте. Если все ОК, нажимаем на зеленую кнопку (Compare, review, create a pull request):

Вы увидите все изменения, которые вы внесли. Поверьте, это очень приятно, когда ты смотришь именно вот так на творение своих рук))) Нажимаем большую зеленую кнопку «Create Pull Request» и заполняем краткое описание — можно уже на русском (если разработчик говорит на русском)). Описание нужно, чтобы автор быстро понял, что именно вы сделали.
Осталось только дождаться, когда автор нажмет у себя кнопку Merge и ваше имя будет увековечено в сообществе Open Source.
Возможно несколько сумбурно написал и опять кажется сложно. В своем блоге я выложил краткую инструкцию, которую можно открывать каждый раз, когда вы захотите оставить свой вклад в развитии MODX: http://ilyaut.ru/tips-and-tricks/github-for-dummies/
Вот пулл-реквест, в котором можно увидеть измененные файлы. У вас скоро будет похожий, да не один))
Комментарии: 11
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Я сначала пробовал на Windows визуальный клиент для Github'а, но он на самом деле сложнее (по крайней мере, для меня), чем работа через консоль.
Это так что резко в глаза бросилось, чтобы проще потом было работать (:
Также стоит упомянуть, что если правка очень простая и затрагивает один файл, можно сделать изменения прямо на сайте Github в целевом репозитории, что приведет к прозрачному созданию пул-реквеста :)