Cuando se mira en META CPAN, o en search.cpan.org, verá que algunos módulos tienen un enlace a Github o algún otro lugar donde hospedan su proyecto.

En search.cpan.org, es un simple enlace junto al título del Repositorio, en Meta CPAN es un enlace o un pop-up bajo el título Repositorio clon dependiendo del tipo de repositorio. (Github obtiene pop-ups, repositorios privados tienden a enlaces simples).

Ambos sitios toman el enlace al sistema de Control de versiones de los archivos META incluidos en las distribuciones de CPAN. META.yml o el META.json más recientes. ( sólo difieren en su formato.)

Como los META archivos generalmente se generan automáticamente cuando se suelta la distribución por el autor, voy a mostrarte como puedes decir a los 4 sistemas de paquetes principales incluir el enlace del repositorio.

En los ejemplos utilizare el enlace al repositorio de Task::DWIM, que es una distribución experimental listado todos los módulos incluidos en una DWIM Perl distribución.

ExtUtils::MakeMaker

Si utilizas ExtUtils::MakeMaker agregar lo siguiente a tu Makefile.PL como parámetro en la función WriteMakefile:

META_MERGE => {
    'meta-spec' => { version => 2 },
     resources => {
         repository => {
             type => 'git',
             url  => 'https://github.com/dwimperl/Task-DWIM.git',
             web  => 'https://github.com/dwimperl/Task-DWIM',
         },
     },
},

Si su versión de ExtUtils::MakeMaker no admite todavía esto, simplemente actualizar ExtUtils::MakeMaker.

Module::Build

Si utilizas Module::Build, agregue lo siguiente al Build.PL, en la llamada Module::Build->new:

meta_merge => {
    resources => {
            repository => 'https://github.com/dwimperl/Task-DWIM'
    }
},

Module::Install

Si utilizas Module::Install agregar lo siguiente a Makefile.PL:

repository 'https://github.com/dwimperl/Task-DWIM';

Dist::Zilla

Si utilizas Dist::Zilla, el Dist::Zilla::plugin::Repository agregará automáticamente el enlace a su repositorio, aunque también se puede especificar manualmente.

[MetaResources]
Repository.URL = https://github.com/dwimperl/Task-DWIM.git

Una versión detallada incluye más detalles como en el ejemplo siguiente. Como puedo ver, estas piezas son solamente incluidas en el archivo META.json y no en el archivo META.yml. Para generar ese archivo, necesitará también incluir el MetaJSON plugin de Dist::Zilla.

[MetaResources]
Repository.web = https://github.com/dwimperl/Task-DWIM
Repository.URL = https://github.com/dwimperl/Task-DWIM.git
Repository.Type = git

[MetaJSON]

Hay otras maneras de añadir los enlaces de repositorio a los META archivos cuando se utiliza Dist::Zilla.

Probablemente la más simple forma es usar el GithubMeta plugin añadiendo la siguiente línea al archivo dist.ini:

[GithubMeta]

¿Por qué debo añadir este enlace?

Es simple. Es más fácil enviar parches a la versión más reciente de su módulo, más probable que los obtendrá.

También podría haber ya hecho algunos cambios a su módulo desde la última versión. Tal vez ya has solucionado el error que me gustaría arreglar. Si puedo ver tu repositorio podemos evitar duplicar trabajo.

Otros recursos

Si ya ha lidiado con esto, habría que agregar otros recursos también. El CPAN META Specification tiene todo lo que aparece. Si algo no está claro, sólo pregunta.

Licencias

En otro artículo mostré Cómo agregar la información de la licencia a los META archivos de distribuciones CPAN. Si tuvieras un repositorio público, sería más fácil para otros enviar ese parche también.