Сейчас отличное время, чтобы участвовать в разработке Ruby. С повышенным вниманием, которое получил Ruby в последние несколько лет, в сообществе возрастает потребность в талантах для улучшения Ruby самого по себе и его документации. Итак, где вам начать?
Темы, относящиеся к разработке Ruby, находятся здесь:
- Использование Subversion для прослеживания процесса разработки Ruby
- Как использовать Git для работы с главным репозиторием Ruby
- Улучшаем Ruby, патч за патчем
- Правила для разработчиков ядра
Использование Subversion для прослеживания разработки Ruby
Анонимно получить последние исходники Ruby можно из Subversion репозитория. В командной строке наберите:
Папка ruby
теперь будет содержать последние исходники
development-версии Ruby (ruby-trunk). Патчи, применяемые к ruby-trunk
так же портируются в стабильные
2.6, 2.5,
и 2.4 ветки (смотри ниже).
Если вы хотите следить за патчингом Ruby 2.6, вы можете переключится
на ruby_2_6
ветку:
То же самое для Ruby 2.5:
Эти команды скачают соответствующее дерево разработки в папку
ruby_2_6
или ruby_2_5
.
Разработчики, работающие над поддерживаемыми ветками,
ожидают применения их изменений в ruby-trunk, так что зачастую обе ветки
очень похожи, за исключением изменений, сделанных Matz’ем и Nobu в языке
в целом.
Если вы предпочитаете, вы можете открыть Subversion репозиторий Ruby в браузере.
Для информации по поводу Subversion, пожалуйста смотрите the Subversion FAQ и книгу the Subversion book. Еще вы можете найти полезной для начала изучения Subversion книгу Pragmatic Version Control with Subversion.
Как использовать Git для работы с главным репозиторием Ruby
Для тех, кто предпочитает использовать Git вместо Subversion, инструкции могут найдены в зеркале репозитория на GitHub. Их две, одна для тех, кто имеет право коммитить и другая – для всех остальных.
Улучшаем Ruby, патч за патчем
Разработчики ядра поддерживают специальный форум для приема патчей и сообщений о багах для Matz’а и команды. Эти сообщения также попадают в Ruby-Core mailing list для обсуждения, так что вы можете быть уверены, что ваше сообщение не останется без внимания. Вы также можете отправлять свои патчи прямиком в почтовую рассылку. В любом случае, вам предлагается принять участие в последующей дискуссии.
Пожалуйста, посмотрите Patch Writer’s Guide. Вы найдете там некоторые подсказки и приемы непосредственно от Matz’а о том, как сделать так, чтоб ваши патчи приняли.
Суммируя шаги создания патча:
-
Скачайте копию исходного кода Ruby из Subversion. Обычно, патчи которые исправляют баги или добавляют новые конструкции, должны быть применены к trunk ветке исходного кода Ruby. Даже если вы хотите добавить конструкцию к 2.5, это должно быть сначала проверено в trunk.
$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby
Если вы исправляете баг, который специфичен для одной из поддерживаемых веток, выберите эту ветку, например,
2.5
.$ svn co https://svn.ruby-lang.org/repos/ruby/branches/ruby_2_5
-
Добавьте ваши улучшения в код.
-
Создайте патч.
$ svn diff > ruby-changes.patch
-
Создайте тикет в специальном форуме или вышлите свой патч в рассылку Ruby-Core mailing list с записью в Changelog, описывающую ваши изменения.
-
Если с патчем не возникнет никаких проблем, программисты имеющие права на добавление кода в репозитории, добавят ваш патч.
Пожалуйста, обратите внимание: что патчи должны быть предложены как унифицированный дифф. Для большей информации о том как применяют патчи, пожалуйста читайте the diffutils reference.
Обсуждение разработки Ruby происходит в почтовой рассылке Ruby-Core mailing list. Таким образом, если вы размышляете о том, будет ли ваш патч полезен, или вы хотите начать обсуждение о будущем Ruby, не медлите начать общение. Учтите также, что обсуждения не по теме не приветствуются в данной рассылке. Уровень шума должен быть низок, темы должны быть точными, продуманными и хорошо написанными. Так как рассылка приходит создателю Ruby, давайте будем вежливы.
Держите в уме, несмотря на то, что разработчики ядра Ruby большинством своим живут в Японии и многие из них владеют английским очень хорошо, присутствует значительная разница во времени. Разработчики ядра также имеют большое количество обсуждаемых на японском языке вещей, которые происходят параллельно с задачами, обсуждаемыми на английском. Будьте терпеливы и, если ваша проблема не решена, будьте настойчивы в следующей попытке через несколько дней.
Правила для разработчиков ядра
Обычно, разработчики Ruby должны быть знакомы с исходным кодом и стилем разработки, используемым командой. Но на всякий случай, следующие правила должны уважаться, когда вы что-то изменяете:
- Все добавления должны быть описаны в
ChangeLog
файле, следуя GNU конвенции. (Многие разработчики ядра используют режим Emacs’аadd-log
, который может быть включен командойC-x 4 a
.) - Даты изменений должны быть представлены в формате Japan Standard Time (UTC+9).
- Буллиты из вашего ChangeLog должны также быть представлены в комментарии к вашему коммиту в Subversion. Сообщение будет автоматически выслано в рассылку Ruby-CVS после вашего коммита.
- Прототипы функций используются в исходном коде Ruby и его расширениях.
- Пожалуйста, не используйте C++ комментарии (
//
), разработчики ядра предпочитают стиль многострочных комментариев C (/* .. */
).
Также, для большей информации читайте Ruby’s issue tracker