Ruby Core

Сейчас отличное время, чтобы участвовать в разработке Ruby. С повышенным вниманием, которое получил Ruby в последние несколько лет, в сообществе возрастает потребность в талантах для улучшения Ruby самого по себе и его документации. Итак, где вам начать?

Темы, относящиеся к разработке Ruby, находятся здесь:

Использование Subversion для прослеживания разработки Ruby

Анонимно получить последние исходники Ruby можно из Subversion репозитория. В командной строке наберите:

$ svn co https://svn.ruby-lang.org/repos/ruby/trunk ruby

Папка ruby теперь будет содержать последние исходники development-версии Ruby (ruby-trunk). Патчи, применяемые к ruby-trunk так же портируются в стабильные 2.6, 2.5, и 2.4 ветки (смотри ниже).

Если вы хотите следить за патчингом Ruby 2.6, вы можете переключится на ruby_2_6 ветку:

$ svn co https://svn.ruby-lang.org/repos/ruby/branches/ruby_2_6

То же самое для Ruby 2.5:

$ svn co https://svn.ruby-lang.org/repos/ruby/branches/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’а о том, как сделать так, чтоб ваши патчи приняли.

Суммируя шаги создания патча:

  1. Скачайте копию исходного кода 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
    
  2. Добавьте ваши улучшения в код.

  3. Создайте патч.

    $ svn diff > ruby-changes.patch
    
  4. Создайте тикет в специальном форуме или вышлите свой патч в рассылку Ruby-Core mailing list с записью в Changelog, описывающую ваши изменения.

  5. Если с патчем не возникнет никаких проблем, программисты имеющие права на добавление кода в репозитории, добавят ваш патч.

Пожалуйста, обратите внимание: что патчи должны быть предложены как унифицированный дифф. Для большей информации о том как применяют патчи, пожалуйста читайте 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