<div dir="ltr">Ao colocar o underline na versão, vc evita que os instaladores usem essa versão inadvertidamente, embora ela ainda seja instalável se for especificado o caminho completo para o pacote.<div><br></div><div>Assim, você pode usar a infra-estrutura do cpan testers pra testar o seu módulo antes de um release público, sem prejudicar quem já está usando uma versão estável do seu módulo.</div>

<div><br></div><div>O Dist::Zilla não é uma unanimidade, embora eu o utilize na maioria dos meus módulos públicos ou privados. Eventualmente pode ser chato lidar com alguns bugs em edge cases, mas normalmente ele tira muito boiler plate da sua frente.</div>

<div><br></div><div>A vantagem do dzil é que ele encapsula o acesso a ferramentas de várias fases do processo de desenvolvimento, desde o startup do módulo até o release no cpan.</div><div><br></div><div>Eventualmente você pode dividir esse processo em algo como:</div>

<div><br></div><div>1) Fase 1: Fazer o bootstrap do seu pacote.</div><div><br></div><div>Isso significa criar os diretórios padrão (/lib, /t, etc) bem como os arquivos auxiliares.</div><div><br></div><div>Além do dzil, um aplicativo que eu uso pra fazer o bootstrap dos meus módulos é o <a href="https://metacpan.org/pod/Module::Starter">https://metacpan.org/pod/Module::Starter</a></div>

<div><br></div><div>Com ele você pode escolher qual builder você vai utilizar pra montar o seu pacote.</div><div><br></div><div>2) Fase 2: code, code, code</div><div><br></div><div>3) Fase 3: Build</div><div><br></div><div>

No processo de build, uma peça de software é utilizada para juntar tudo que o seu pacote vai precisar para ser instalado em uma máquina qualquer.</div><div><br></div><div>Essa etapa pode ser baseada em vários builders como:</div>

<div><br></div><div><a href="https://metacpan.org/pod/ExtUtils::MakeMaker">https://metacpan.org/pod/ExtUtils::MakeMaker</a></div><div><a href="https://metacpan.org/pod/Module::Build">https://metacpan.org/pod/Module::Build</a><br>

</div><div><a href="https://metacpan.org/pod/Module::Install">https://metacpan.org/pod/Module::Install</a><br></div><div><br></div><div>Esses builders baseiam-se em arquivos perl (Makefile.PL, Build.PL, etc) para a partir de apontamentos que você faz, verificar as dependências, criar o Makefile e seus alvos,gerar o .tar.gz entre outras coisas necessárias para tornar o seu módulo instalável.</div>

<div><br></div><div>Quando vc instala um módulo manualmente, normalmente o processo é:</div><div><br></div><div>a) Baixar e descompactar o .tar.gz</div><div>b) perl Makefile.PL (ou perl Build.PL). Isso vai criar um arquivo Makefile adaptado pra sua máquina.</div>

<div>c) make. Isso vai fazer o build do seu módulo, eventualmente compilando XS, se for o caso, etc</div><div>d) make test. Lê o Makefile para executar os testes do seu módulo.</div><div>e) make install</div><div><br></div>

<div>Quando você cria um módulo, para montar o .tar.gz normalmente você faz:</div><div><br></div><div>a) perl Makefile.PL (ou perl Build.PL). Isso vai criar um arquivo Makefile adaptado pra sua máquina.</div><div>b) make manifest. Isso vai criar uma lista com todos os arquivos que precisam ser distribuídos dentro do seu .tar.gz</div>

<div>c) make dist. Isso vai criar um .tar.gz do seu módulo, dentro do qual, haverá um Makefile.PL (ou Build.PL), e *não* um Makefile.</div><div><br></div><div>Os arquivos *.PL precisam ser executados no momento da instalação para que o Makefile seja montado de acordo com a máquina onde ele está sendo instalado e não de acordo com a máquina onde o módulo foi criado.</div>

<div><br></div><div><br></div><div>4) Release.</div><div><br></div><div>Consiste em enviar o seu módulo para o CPAN.</div><div><br></div><div>***</div><div><br></div><div>O Module::Make eu vou desconsiderar, porque ele só tem uma versão antiga lançada e nenhum outro módulo do cpan o utiliza (<a href="https://metacpan.org/requires/distribution/Module-Make?sort=[[2,1]]">https://metacpan.org/requires/distribution/Module-Make?sort=[[2,1]]</a>).</div>

<div><br></div><div>***</div><div><br></div><div>Com o dzil você tem uma ferramenta, que em conjunto com plugins cobre todas as etapas listadas acima e mais algumas outras, como integração com o seu sistema de controle de versão e simplificação da criação de POD, por exemplo.</div>

<div><br></div><div>Já se você preferir fazer sem ele, você pode fazer tudo manualmente, ou usar qualquer dessas ferramentas citadas acima pra cobrir uma fase ou outra, ou ainda combiná-las entre si.</div><div><br></div>
<div>
Eu particularmente tenho módulos que usam o dzil (<a href="https://github.com/blabos/Dancer2-Plugin-Paginator">https://github.com/blabos/Dancer2-Plugin-Paginator</a>) e módulos que não usam (<a href="https://github.com/blabos/Paginator-Lite">https://github.com/blabos/Paginator-Lite</a>).</div>

<div><br></div><div>E quando não uso, tenho preferência por criar o módulo com o Module::Starter (não confundir com <a href="https://metacpan.org/pod/Module::Start">https://metacpan.org/pod/Module::Start</a>) usando como builder o Module::Install.</div>

<div><br></div><div>***</div><div><br></div><div>Finalizando, só preste atenção no que você deseja fazer e escolha a ferramenta que achar mais adequada, tendo em mente que embora seja relativamente simples criar um módulo e botar no CPAN, há várias etapas envolvidas, que na maioria das vezes já são até instintivas, mas que se você misturar as coisas, pode dar a maior confusão.</div>

<div><br></div><div>[]'s</div><div><br></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-20 16:12 GMT-03:00 Aureliano Guedes <span dir="ltr"><<a href="mailto:guedes_1000@hotmail.com" target="_blank">guedes_1000@hotmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr"><div class="">>Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa Dist::Zilla e lembro que os 2 metodos mais recomendados eram >Module::Build e Module::Make.<div><br></div></div><div>

Posso estar enganado, mas esses 'eram' os mais recomendados. O Dist::Zilla é mais recente porem creio que seja o melhor e atualmente o 'mais recomendado'.<br><br><div><hr>Date: Tue, 20 May 2014 11:52:43 -0700<br>

From: <a href="mailto:samircurys@gmail.com" target="_blank">samircurys@gmail.com</a><br>To: <a href="mailto:rio-pm@pm.org" target="_blank">rio-pm@pm.org</a><br>Subject: Re: [Rio-pm] Release de modulo Beta no CPAN<div><div class="h5">

<br><br><div dir="ltr">Sim, passei o olho nisso, mas meio que ignorei pois o mesmo usa Dist::Zilla e lembro que os 2 metodos mais recomendados eram Module::Build e Module::Make.<div><br></div><div>Lendo melhor, parece que rola uma discussao entre usar as flags oficiais do CPAN ou _ na versao. Hum. <br>


<br>Meio tosco que as flags oficiais do CPAN sao mais inuteis do que um _ na versao. Mas o argumento da confusao no metacpan faz sentido. </div><div><br></div><div>De qualquer jeito quando visito a pagina um modulo nao vejo a flag la : </div>


<div><br></div><div><a href="http://search.cpan.org/~ingy/Module-Make-0.01/lib/Module/Make.pm" target="_blank">http://search.cpan.org/~ingy/Module-Make-0.01/lib/Module/Make.pm</a><br></div><div><br></div><div>Entao de repente o melhor e fazer como o "ingy" e colocar uma nota no POD.</div>


<div><br></div><div>Abs</div></div><div><br><br><div>2014-05-20 11:39 GMT-07:00 Renato Santos <span dir="ltr"><<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>></span>:<br>
<blockquote style="border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">* <a href="http://blogs.perl.org/users/oliver_gorwits/2011/10/releasing-trialdevbeta-versions-with-distzilla.html" target="_blank">http://blogs.perl.org/users/oliver_gorwits/2011/10/releasing-trialdevbeta-versions-with-distzilla.html</a><div>




<br><div>#fastreply</div></div></div><div><br><br><div>2014-05-20 15:35 GMT-03:00 Samir Cury <span dir="ltr"><<a href="mailto:samircurys@gmail.com" target="_blank">samircurys@gmail.com</a>></span>:<br>


<blockquote style="border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Pessoal,<div><br></div><div>Outro dia na lista, li alguem dizendo : manda pro CPAN logo como "beta"<br>


<br>Como estou no passo intermediario para o meu primeiro modulo "decente", com testes e tudo mais, talvez nao tenha visto essa opcao ainda. Pesquisando um pouco esbarrei com todas essas definicoes : </div>
<div><br></div><div><a href="http://search.cpan.org/dlsip?bpmOp" target="_blank">http://search.cpan.org/dlsip?bpmOp</a><br></div><div><br></div><div>Ja que o modulo funciona, esta documentado e passa no "prove", achei interessante subir como beta, e lancar novas releases quando fizer mais refatoracoes.</div>





<div><br></div><div>Enfim. Queria confirmar com a galera que ja trilhou este caminho, que quando eu for realmente subir o modulo vou ter a opcao de marcar como beta.</div><div><br></div><div>Pra quem estiver curioso este e o modulo :<br>





<br><a href="https://github.com/samircury/HTCondor--Queue--Parser" target="_blank">https://github.com/samircury/HTCondor--Queue--Parser</a></div><div><br></div><div>Abs,</div><div>Samir<br><br><br></div></div>
<br></div></div>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><span><font color="#888888"><br></font></span></blockquote></div><span><font color="#888888"><br>
<br clear="all"><div><br></div>-- <br><div><span style="color:rgb(51,51,51);font-size:x-small">Saravá,</span></div>

<div><span style="color:rgb(51,51,51);font-size:x-small">Renato CRON</span></div><div><div style="text-align:right"><font size="1" color="#333333"><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a></font></div>




</div><div style="text-align:right"><font size="1" color="#333333"><a href="http://twitter.com/#%21/renato_cron" target="_blank">@renato_cron</a></font></div>
</font></span></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br></div>
<br>_______________________________________________
Rio-pm mailing list
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a></div></div></div></div>                                       </div></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br></div>