SlideShare uma empresa Scribd logo
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
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
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

Mais conteúdo relacionado

PDF
Metralhando o produto com tudo! TDC POA 2018
Flávio Pimenta
 
PPTX
Debug de cabo a rabo
Ricardo Moraleida
 
PDF
Seja burro e preguiçoso! v2
s4nx
 
PDF
Fabric
Ítalo Rossi
 
PDF
Flask e a sua primeira app web com python!
Ana Paula Gomes
 
PDF
Como Perder Peso (no browser)
Zeno Rocha
 
PPT
Testes de desempenho do WordPress através do uso de ferramentas de software l...
pichiliani
 
PDF
Web debugging proxies
Leonardo Quixada
 
Metralhando o produto com tudo! TDC POA 2018
Flávio Pimenta
 
Debug de cabo a rabo
Ricardo Moraleida
 
Seja burro e preguiçoso! v2
s4nx
 
Fabric
Ítalo Rossi
 
Flask e a sua primeira app web com python!
Ana Paula Gomes
 
Como Perder Peso (no browser)
Zeno Rocha
 
Testes de desempenho do WordPress através do uso de ferramentas de software l...
pichiliani
 
Web debugging proxies
Leonardo Quixada
 

Mais procurados (7)

PDF
Um site em 5 minutos com bottle.py
Giovane Liberato
 
ODP
Oficina postgresql avançado_consegi2010
Fabrízio Mello
 
ODP
Desmistificando web2py - #TDC2011
Bruno Rocha
 
PDF
Deploy Heroku
Creditas
 
PDF
Organizando a casa
Josino Rodrigues
 
KEY
A busca pelo deploy continuo
Lindolfo Rodrigues
 
PDF
Offline Web com Service Workers - Sérgio Lopes
Caelum
 
Um site em 5 minutos com bottle.py
Giovane Liberato
 
Oficina postgresql avançado_consegi2010
Fabrízio Mello
 
Desmistificando web2py - #TDC2011
Bruno Rocha
 
Deploy Heroku
Creditas
 
Organizando a casa
Josino Rodrigues
 
A busca pelo deploy continuo
Lindolfo Rodrigues
 
Offline Web com Service Workers - Sérgio Lopes
Caelum
 

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

PDF
Curso de perl
Regisnaldo Alencar
 
PDF
Perl Moderno, dia5
garux
 
PDF
Perl Moderno, dia1
garux
 
PDF
Desenvolvimento Rápido de Programas Linha de Comando
garux
 
PPTX
Expressões Regulares - Final
Jackson Veroneze
 
PDF
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
Danilo J. S. Bellini
 
PDF
Mercurial - Douglas Schilling Landgraf e Fábio Olivé
Tchelinux
 
KEY
Como colaborar com projetos opensource com o GitHub
Julio Monteiro
 
PDF
Aula de git luiza code - Slides git e github
LorrayneSilva26
 
PPTX
Git+github
Guilherme Lima Pereira
 
PDF
git fail --force (faça as pazes com seus pull requests)
Carlos Duarte do Nascimento
 
Curso de perl
Regisnaldo Alencar
 
Perl Moderno, dia5
garux
 
Perl Moderno, dia1
garux
 
Desenvolvimento Rápido de Programas Linha de Comando
garux
 
Expressões Regulares - Final
Jackson Veroneze
 
(2015-03-14) [Grupy-SP] Projetos Open Source, como colaborar?
Danilo J. S. Bellini
 
Mercurial - Douglas Schilling Landgraf e Fábio Olivé
Tchelinux
 
Como colaborar com projetos opensource com o GitHub
Julio Monteiro
 
Aula de git luiza code - Slides git e github
LorrayneSilva26
 
git fail --force (faça as pazes com seus pull requests)
Carlos Duarte do Nascimento
 

Mais de garux (12)

PDF
Introdução ao Perl 6
garux
 
PDF
Descobrindo a linguagem Perl
garux
 
PDF
Communities - Perl edition (RioJS)
garux
 
PDF
Game Development with SDL and Perl
garux
 
PDF
Perl Moderno, dia4
garux
 
PDF
Perl Moderno, dia3
garux
 
PDF
Perl Moderno, dia2
garux
 
PDF
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
garux
 
PDF
Perl Quiz 2009 (YAPC::BR)
garux
 
PDF
Jogos em Perl
garux
 
PDF
Logging e depuração enterprise-level com Log4perl
garux
 
PDF
Novidades no Perl 5.10
garux
 
Introdução ao Perl 6
garux
 
Descobrindo a linguagem Perl
garux
 
Communities - Perl edition (RioJS)
garux
 
Game Development with SDL and Perl
garux
 
Perl Moderno, dia4
garux
 
Perl Moderno, dia3
garux
 
Perl Moderno, dia2
garux
 
Orientação a Objetos Elegante e Eficiente: Brevíssima Introdução ao Moose
garux
 
Perl Quiz 2009 (YAPC::BR)
garux
 
Jogos em Perl
garux
 
Logging e depuração enterprise-level com Log4perl
garux
 
Novidades no Perl 5.10
garux
 

Último (17)

PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PPTX
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
PPTX
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
PPTX
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
PPTX
Curso de Java 8 - (Tratamento de Exceções, (try-catch-finally)).pptx
Anderson Maciel
 
PPTX
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
Curso de Java 8 - (Tratamento de Exceções, (try-catch-finally)).pptx
Anderson Maciel
 
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 

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