Ruby Core

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

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

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

Текущий основной репозиторий с самым свежим исходным кодом Ruby — git.ruby-lang.org/ruby.git. Также существует зеркало на GitHub. Обычно следует использовать это зеркало.

Вы можете получить последнюю версию исходного кода Ruby с помощью Git. Из командной строки:

$ git clone https://github.com/ruby/ruby.git

Директория ruby теперь будет содержать последнюю версию исходного кода разрабатываемой версии Ruby (ruby-trunk).

Смотрите также Руководство для не-коммиттеров по присоединению к нашей разработке.

Если у вас есть доступ на коммит, и вы хотите запушить что-то, вам следует использовать основной репозиторий.

$ git clone git@git.ruby-lang.org:ruby.git

Улучшаем Ruby, патч за патчем

Команда разработчиков ядра использует систему отслеживания задач для приема патчей и сообщений об ошибках для Matz и остальной команды. Эти отчеты также отправляются в почтовую рассылку Ruby-Core для обсуждения, так что вы можете быть уверены, что ваш запрос не останется незамеченным. Вы также можете отправлять свои патчи прямиком в почтовую рассылку. В любом случае, мы призываем вас принять участие в последующем обсуждении.

Пожалуйста, просмотрите Руководство по написанию патчей, чтобы получить несколько советов от самого Matz о том, как добиться рассмотрения ваших патчей.

Подводя итог, шаги для создания патча:

  1. Клонируйте копию исходного кода Ruby с GitHub. Обычно патчи для исправления ошибок или новые функции должны отправляться для trunk (основной ветки) исходного кода Ruby.

    $ git clone https://github.com/ruby/ruby.git
    

    Если вы исправляете ошибку, специфичную только для одной поддерживаемой ветки, переключитесь на соответствующую ветку.

    $ git checkout ruby_X_X
    

    X_X следует заменить на версию, на которую вы хотите переключиться.

  2. Добавьте ваши улучшения в код.

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

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

  5. Если к патчу не будет вопросов, коммиттеры получат одобрение на его применение.

Пожалуйста, обратите внимание: патчи должны предоставляться в формате unified diff. Для получения дополнительной информации о том, как объединяются патчи, см. справочник diffutils.

Обсуждение разработки Ruby происходит в почтовой рассылке Ruby-Core. Так что, если вам интересно, стоит ли ваш патч внимания, или вы хотите начать обсуждение будущего Ruby, не стесняйтесь присоединиться. Учтите, что обсуждения не по теме не допускаются в этой рассылке, уровень шума должен быть очень низким, темы должны быть конкретными, хорошо продуманными и грамотно написанными. Поскольку мы обращаемся к создателю Ruby, давайте проявим уважение.

Имейте в виду, что многие из основных разработчиков Ruby живут в Японии, и, хотя многие из них очень хорошо говорят по-английски, существует значительная разница в часовых поясах. У них также есть целый набор японских списков разработчиков, которые существуют параллельно с английскими аналогами. Будьте терпеливы; если ваша заявка не рассмотрена, будьте настойчивы — попробуйте еще раз через несколько дней.

Заметка о ветках

Исходный код Ruby управлялся в репозитории Subversion до 22 апреля 2019 года. Таким образом, некоторые ветки всё ещё могут управляться в Subversion. Вы можете посмотреть репозиторий SVN.

Однако вам не нужно об этом беспокоиться (если вы не мейнтейнер ветки). Вы можете переключаться на ветки в вашей рабочей копии Git. Например, выполните следующую команду:

$ git checkout ruby_X_X

X_X следует заменить на версию, на которую вы хотите переключиться.

Если вы хотите изменить ветки, пожалуйста, откройте задачу в нашей системе отслеживания задач. Смотрите также следующий раздел.