Núcleo do Ruby

Agora é um momento fantástico para seguir o desenvolvimento do Ruby. Com a atenção cada vez maior que o Ruby tem recebido nos últimos anos, existe uma necessidade crescente de bom talento para ajudar a melhorar o Ruby e documentá-lo. Então, por onde começar?

Os tópicos relacionados com o desenvolvimento do Ruby cobertos aqui são:

Utilizando Subversion para Seguir o Desenvolvimento do Ruby

Obter a versão mais recente do código fonte do Ruby é uma questão de fazer um checkout anônimo do repositório Subversion. Na sua linha de comando:

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

O diretório ruby conterá o código fonte mais recente da versão de desenvolvimento do Ruby (ruby-trunk). Os patches atualmente aplicados ao trunk são portados para os branches estáveis 2.3, 2.2 e 2.1 (veja abaixo).

Se você gostaria de seguir os patches aplicados ao Ruby 2.3, você deve usar o branch ruby_2_3 ao fazer o check out:

$ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_2_3

A mesma coisa para o Ruby 2.2:

$ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_2_2

Isto fará o check out da árvore de desenvolvimento em um diretório ruby_2_3 ou ruby_2_2. Espera-se que os programadores que trabalham nos branches de manutenção migrem as suas alterações para o trunk do Ruby, tão regularmente que os dois branches estejam muito similares, com a exceção das melhorias feitas diretamente à linguagem por Matz e Nobu.

Se você preferir, você pode navegar pelo repositório Subversion do Ruby pela web.

Para mais informações sobre o Subversion, por favor consulte o FAQ do Subversion e o livro do Subversion. Alternativamente, você pode achar útil o livro introdutório Pragmatic Version Control with Subversion.

Como usar o Git com o Repositório Principal do Ruby

Aqueles que preferem usar o Git ao invés do Subversion, podem encontrar as instruções no mirror no GitHub, tanto para quem tem permissão de commit quanto todos os demais.

Melhorando o Ruby, Patch a Patch

A equipe do core mantém um issue tracker para submeter patches e reportar bugs para Matz e os demais. Essas informações também são enviadas para a lista de e-mails do core do Ruby para discussão, então você pode ter certeza de que o seu pedido não passará despercebido. Você também pode enviar os seus patches diretamente para a lista de e-mails. De qualquer forma, você é encorajado a participar na discussão que segue.

Por favor dê uma olhada no Patch Writer’s Guide para ver algumas dicas, diretamente do Matz, sobre como fazer com que seus patches sejam considerados.

Para resumir, os passos para criar um patch são:

  1. Faça o check out de uma cópia do código fonte do Ruby a partir do Subversion. Geralmente os patches para correções de bugs ou novas funcionalidades devem ser enviados para o trunk do código do Ruby. Mesmo que você queira adicionar uma funcionalidade ao Ruby 1.9.3, ele deve ser provado no trunk primeiro.

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

    Se você estiver corrigindo um bug que é específico de um branch de manutenção, faça o check out do respectivo branch, por exemplo ruby_2_2.

    $ svn co http://svn.ruby-lang.org/repos/ruby/branches/ruby_2_2
    
  2. Faça as suas melhorias no código.

  3. Crie um patch.

    $ svn diff > ruby-changes.patch
    
  4. Crie um ticket no issue tracker ou envie seu patch por e-mail para a lista de e-maisl do core do Ruby com uma entrada no ChangeLog descrevendo o patch.

  5. Se não forem levantados quaisquer problemas sobre o patch, quem fez o commit receberá a permissão para aplicá-lo.

Nota: os patches devem ser enviados como um unified diff. Para saber mais sobre como os patches são fundidos, consulte o manual do diffutils.

A discussão do desenvolvimento do Ruby converge na lista de e-mails Ruby-Core. Por isso, se está curioso se o seu patch vale a pena ou deseja animar uma discussão sobre o futuro do Ruby, não hesite e entre a bordo. Esteja avisado desde já que as conversas fora do contexto não são toleradas nesta lista. Os níveis de ruído deverão ser muito baixos, os tópicos deverão ser mencionados, bem concebidos e bem escritos. Já que nos dirigimos ao criador do Ruby, sejamos reverentes.

Lembre-se de que os programadores do núcleo do Ruby vivem no Japão e, enquanto muitos falam muito bem o inglês, existe uma diferença significativa no fuso horário. Também existe um corpo inteiro de listas de e-mail em japonês que existem em paralelo às contrapartes em inglês. Seja paciente, e se o seu pedido não for atendido, seja persistente – tente outra vez alguns dias mais tarde.

Regras para os Programadores do Core

Em geral, os programadores de Ruby deverão estar familiarizados com o código fonte e o estilo de programação utilizado pela equipe. Para ficar mais claro, as seguintes diretrizes deverão ser respeitadas quando submeter código no repositório Subversion:

  • Todas as submissões deverão ser descritas no ChangeLog, seguindo as convenções GNU. (Muitos programadores de Ruby usam o modo add-log no Emacs, que poderá ser ativado como o commando C-x 4 a.)
  • Datas de submissão deverão ser dadas na Fuso Horário Japonês (UTC+9).
  • Os tópicos listados no seu ChangeLog também deverão ser colocados na mensagem de submissão do Subversion. Esta mensagem será automaticamente enviada para a lista Ruby-CVS depois da sua submissão.
  • Protótipos de funções são utilizadas por todo o código fonte Ruby e em todos as suas extensões embutidas.
  • Por favor, não use comentários no estilo do C++ (//). Os programadores do Ruby preferem os comentários de múltiplas linhas do C (/* .. */).

Veja também as informações no issue tracker do Ruby.