Seja um Perl core hacker
é (muito) mais fácil do que você pensa!




Breno G. de Oliveira
@garu_rj
Rituais de Passagem
Rituais de Passagem
“Alo, Mundo!”
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Fazer seu próprio sistema de templates
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Fazer seu próprio sistema de templates
Fazer seu próprio framework web
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Fazer seu próprio sistema de templates
Fazer seu próprio framework web
Fazer seu próprio tratamento de exceções
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Fazer seu próprio sistema de templates
Fazer seu próprio framework web
Fazer seu próprio tratamento de exceções
contribuir com o código do perl em si
Rituais de Passagem
“Alo, Mundo!”
Colocar um módulo no CPAN
Fazer seu próprio sistema de templates
Fazer seu próprio framework web
Fazer seu próprio tratamento de exceções
contribuir com o código do perl em si
Perl Core Hacking
Mitos do Core Hacking

Exige conhecimentos avançados de Perl
Precisa saber programar em C
Precisa dominar as entranhas do código
Precisa fazer parte do “clube”
FUD
Severidade dos tiquetes do Perl 5


                              5.1%
                               0.6%
        65.2%

                                 21.5%



                         7.6%




baixa    wishlist    outras           média            alta


                    https://rt.perl.org/rt3/NoAuth/perl5/Overview.html
Inalcançável? Nem tanto ;-)




                    perl5160delta
Minha primeira contribuição:

commit 959e56628cef2f8ac6555eee22b57e3ce02d9c7f
Author: Breno G. de Oliveira <garu@cpan.org>
Date: Sat May 19 09:29:11 2012 -0400

     minor tag consistency fixes for perldelta.pod
Você também pode
contribuir!
Você também pode
contribuir HOJE!
Repositório oficial:
% git clone git://perl5.git.perl.org/perl.git perl



ou... “Fork us on Github”!
https://github.com/mirrors/perl
% git clone git@github.com:mirrors/perl.git perl
% git pull
% perldoc Porting/todo.pod
Algumas Tarefas (todo.pod)
Corrigir erros de POD na documentação oficial
Automatizar geração do perldelta
Refatorar testes no t/ para usar o t/test.pl
Escrever descrição para todos os testes
code profiling no script “installman”
configurar instalações Windows usando PowerShell
...MUITO mais!
http://tiny.cc/perl5




“tíquetes que não precisam experiência
com C, perlguts ou sistemas operacionais”
Algumas Tarefas (RT)

Escrever diagnósticos não listados no perldiag.pod


registrar features experimentais no perlexperiment.pod


Escrever teste para cobertura do README


Criar hook no git commit para previnir mudanças na
“esquerda” de um merge
Já sei o que fazer!
Mas... e agora?
% git checkout blead
% git pull
% git checkout blead
% git pull
% git checkout -b meunome/descricao
% git checkout blead
% git pull
% git checkout -b meunome/descricao

<hack, hack, hack, ...>
% git checkout blead
% git pull
% git checkout -b meunome/descricao

<hack, hack, hack, ...>

% ./Configure -des -Dusedevel
% make test
% git checkout blead
% git pull
% git checkout -b meunome/descricao

<hack, hack, hack, ...>

% ./Configure -des -Dusedevel
% make test

Continue até os testes passarem :)
É a sua primeira vez?
Adicione-se no arquivo ‘AUTHORS’

% git diff AUTHORS
diff --git a/AUTHORS b/AUTHORS
index b448713..3a47bf2 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -149,6 +149,7 @@ Bradley Dean   <bjdean@bjdean.id.au>
 Bram                  <perl-rt@wizbit.be>
 Brendan O'Dea         <bod@debian.org>
 Brent B. Powers       <powers@ml.com>
+Breno G. de Oliveira <garu@cpan.org>
 Brent Dax             <brentdax@cpan.org>
 Brooks D Boyd
 Brian Callaghan       <callagh@itginc.com>

% make test_porting
% git commit -a
% git format-patch -M origin..

isso vai gerar um arquivo .patch
Envie seu .patch em um
email para perlbug@perl.org
Inclua uma descrição (em inglês!) das mudanças
SEU NOME AQUI
Mais informações (perldoc)

perlgit
- informações detalhadas sobre git e o repo Perl

perlhack
- como fuçar e editar o Perl

perlsource
- descreve a estrutura (árvore) do fonte do Perl
Obrigado!
Dúvidas?
    garu@cpan.org
  twitter.com/garu_rj
(bonus track)
Mergulhando de cabeça
Atenção: contém código C!

 perlinterp - visão geral do interpretador Perl

 perlguts - introdução à API do Perl

 suplemento: perlguts ilustrado:
 http://cpansearch.perl.org/src/RURBAN/illguts-0.42/index.html

 perlhacktut - exemplo de um patch simples em C

 perlhacktips - dicas para Perl core hacking em C

Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa

  • 1.
    Seja um Perlcore hacker é (muito) mais fácil do que você pensa! Breno G. de Oliveira @garu_rj
  • 2.
  • 3.
  • 4.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN
  • 5.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN Fazer seu próprio sistema de templates
  • 6.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN Fazer seu próprio sistema de templates Fazer seu próprio framework web
  • 7.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN Fazer seu próprio sistema de templates Fazer seu próprio framework web Fazer seu próprio tratamento de exceções
  • 8.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN Fazer seu próprio sistema de templates Fazer seu próprio framework web Fazer seu próprio tratamento de exceções contribuir com o código do perl em si
  • 9.
    Rituais de Passagem “Alo,Mundo!” Colocar um módulo no CPAN Fazer seu próprio sistema de templates Fazer seu próprio framework web Fazer seu próprio tratamento de exceções contribuir com o código do perl em si
  • 10.
  • 11.
    Mitos do CoreHacking Exige conhecimentos avançados de Perl Precisa saber programar em C Precisa dominar as entranhas do código Precisa fazer parte do “clube”
  • 12.
  • 13.
    Severidade dos tiquetesdo Perl 5 5.1% 0.6% 65.2% 21.5% 7.6% baixa wishlist outras média alta https://rt.perl.org/rt3/NoAuth/perl5/Overview.html
  • 14.
    Inalcançável? Nem tanto;-) perl5160delta
  • 15.
    Minha primeira contribuição: commit959e56628cef2f8ac6555eee22b57e3ce02d9c7f Author: Breno G. de Oliveira <garu@cpan.org> Date: Sat May 19 09:29:11 2012 -0400 minor tag consistency fixes for perldelta.pod
  • 17.
  • 18.
  • 19.
    Repositório oficial: % gitclone git://perl5.git.perl.org/perl.git perl ou... “Fork us on Github”! https://github.com/mirrors/perl % git clone git@github.com:mirrors/perl.git perl
  • 20.
    % git pull %perldoc Porting/todo.pod
  • 21.
    Algumas Tarefas (todo.pod) Corrigirerros de POD na documentação oficial Automatizar geração do perldelta Refatorar testes no t/ para usar o t/test.pl Escrever descrição para todos os testes code profiling no script “installman” configurar instalações Windows usando PowerShell ...MUITO mais!
  • 22.
    http://tiny.cc/perl5 “tíquetes que nãoprecisam experiência com C, perlguts ou sistemas operacionais”
  • 23.
    Algumas Tarefas (RT) Escreverdiagnósticos não listados no perldiag.pod registrar features experimentais no perlexperiment.pod Escrever teste para cobertura do README Criar hook no git commit para previnir mudanças na “esquerda” de um merge
  • 24.
    Já sei oque fazer! Mas... e agora?
  • 25.
    % git checkoutblead % git pull
  • 26.
    % git checkoutblead % git pull % git checkout -b meunome/descricao
  • 27.
    % git checkoutblead % git pull % git checkout -b meunome/descricao <hack, hack, hack, ...>
  • 28.
    % git checkoutblead % git pull % git checkout -b meunome/descricao <hack, hack, hack, ...> % ./Configure -des -Dusedevel % make test
  • 29.
    % git checkoutblead % git pull % git checkout -b meunome/descricao <hack, hack, hack, ...> % ./Configure -des -Dusedevel % make test Continue até os testes passarem :)
  • 30.
    É a suaprimeira vez? Adicione-se no arquivo ‘AUTHORS’ % git diff AUTHORS diff --git a/AUTHORS b/AUTHORS index b448713..3a47bf2 100644 --- a/AUTHORS +++ b/AUTHORS @@ -149,6 +149,7 @@ Bradley Dean <bjdean@bjdean.id.au> Bram <perl-rt@wizbit.be> Brendan O'Dea <bod@debian.org> Brent B. Powers <powers@ml.com> +Breno G. de Oliveira <garu@cpan.org> Brent Dax <brentdax@cpan.org> Brooks D Boyd Brian Callaghan <callagh@itginc.com> % make test_porting
  • 31.
    % git commit-a % git format-patch -M origin.. isso vai gerar um arquivo .patch
  • 32.
    Envie seu .patchem um email para perlbug@perl.org Inclua uma descrição (em inglês!) das mudanças
  • 33.
  • 34.
    Mais informações (perldoc) perlgit -informações detalhadas sobre git e o repo Perl perlhack - como fuçar e editar o Perl perlsource - descreve a estrutura (árvore) do fonte do Perl
  • 35.
    Obrigado! Dúvidas? garu@cpan.org twitter.com/garu_rj
  • 36.
  • 37.
    Mergulhando de cabeça Atenção:contém código C! perlinterp - visão geral do interpretador Perl perlguts - introdução à API do Perl suplemento: perlguts ilustrado: http://cpansearch.perl.org/src/RURBAN/illguts-0.42/index.html perlhacktut - exemplo de um patch simples em C perlhacktips - dicas para Perl core hacking em C