El Comprehensive Perl Archive Network ( CPAN ) es un repositorio de más de 250.000 módulos de software y la documentación que acompaña a 39.000 distribuciones, escritas en el Perl lenguaje de programación de más de 12.000 colaboradores. [1] CPAN puede indicar la red de archivos o el programa Perl que actúa como una interfaz a la red y como un instalador de software automatizado (algo así como un administrador de paquetes ). La mayor parte del software de CPAN es gratuito y de código abierto . [2]
Historia
CPAN fue concebido en 1993 y ha estado activo en línea desde octubre de 1995. [3] Se basa en el modelo CTAN y comenzó como un lugar para unificar la estructura de archivos Perl dispersos. [4]
Papel
Como muchos lenguajes de programación , Perl tiene mecanismos para usar bibliotecas de código externas , haciendo que un archivo contenga rutinas comunes utilizadas por varios programas. Perl llama a estos módulos . Los módulos de Perl se instalan típicamente en uno de varios directorios cuyas rutas se colocan en el intérprete de Perl cuando se compila por primera vez ; en sistemas operativos similares a Unix , las rutas comunes incluyen / usr / lib / perl5 , / usr / local / lib / perl5 y varios de sus subdirectorios.
Perl viene con un pequeño conjunto de módulos principales . Algunos de estos realizan tareas de arranque, como ExtUtils :: MakeMaker, [5] que se usa para crear Makefiles para construir e instalar otros módulos de extensión; otros, como List :: Util, [6] son de uso común.
El objetivo principal de CPAN es ayudar a los programadores a localizar módulos y programas no incluidos en la distribución estándar de Perl. Su estructura está descentralizada. Los autores mantienen y mejoran sus propios módulos. Es común bifurcar y crear módulos competidores para la misma tarea o propósito. Existe un sistema de seguimiento de errores de terceros que se configura automáticamente para cualquier distribución cargada, pero los autores pueden optar por utilizar un sistema de seguimiento de errores diferente, como GitHub . De manera similar, aunque GitHub es una ubicación popular para almacenar el código fuente para distribuciones, puede almacenarse en cualquier lugar que el autor prefiera, o puede que no sea de acceso público en absoluto. Los encargados del mantenimiento pueden otorgar permisos a otros para mantener o hacerse cargo de sus módulos, y los administradores pueden otorgar permisos para aquellos que deseen hacerse cargo de los módulos abandonados. Las versiones anteriores de las distribuciones actualizadas se retienen en CPAN hasta que el cargador las borra, y una red espejo secundaria llamada BackPAN retiene las distribuciones incluso si se borran de CPAN. [7] Además, el historial completo del CPAN y todos sus módulos está disponible como proyecto GitPAN, [8] lo que permite ver fácilmente el historial completo de todos los módulos y facilitar el mantenimiento de las bifurcaciones. CPAN también se utiliza para distribuir nuevas versiones de Perl, así como proyectos relacionados, como Parrot y Raku .
Estructura
Los archivos de CPAN se denominan distribuciones . Una distribución puede constar de uno o más módulos, archivos de documentación o programas empaquetados en un formato de archivo común, como un archivo tar comprimido con gzip o un archivo ZIP . Las distribuciones a menudo contienen scripts de instalación (normalmente llamados Makefile.PL o Build.PL ) y scripts de prueba que se pueden ejecutar para verificar que el contenido de la distribución funcione correctamente. Las nuevas distribuciones se cargan en el servidor de carga de autores de Perl o en PAUSA (consulte la sección Carga de distribuciones con PAUSA ).
En 2003, las distribuciones comenzaron a incluir archivos de metadatos, llamados META. yml , que indica el nombre de la distribución, la versión, las dependencias y otra información útil; sin embargo, no todas las distribuciones contienen metadatos. Cuando los metadatos no están presentes en una distribución, el software de PAUSE intentará analizar el código en la distribución para buscar la misma información; esto no es necesariamente muy confiable. En 2010, se creó la versión 2 de esta especificación [9] para ser utilizada a través de un nuevo archivo llamado META. json , con el archivo de formato YAML a menudo también incluido para compatibilidad con versiones anteriores .
Con miles de distribuciones, CPAN debe estructurarse para que sea útil. Los autores a menudo colocan sus módulos en la jerarquía natural de los nombres de los módulos de Perl (como Apache::DBI
o Lingua::EN::Inflect
) de acuerdo con el propósito o el dominio, aunque esto no se aplica.
Las distribuciones de módulos CPAN generalmente tienen nombres en forma de CGI-Application-3.1 (donde el :: usado en el nombre del módulo se ha reemplazado con un guión y el número de versión se ha agregado al nombre), pero esto es solo una convención ; muchas distribuciones prominentes rompen la convención, especialmente aquellas que contienen múltiples módulos. Las restricciones de seguridad evitan que una distribución sea reemplazada por un nombre de archivo idéntico, por lo que prácticamente todos los nombres de distribución incluyen un número de versión .
Componentes
La infraestructura de distribución de CPAN consiste en su red mundial de más de 250 espejos en más de 60 países. [10] Cada espejo completo aloja alrededor de 31 gigabytes de datos. [11]
La mayoría de los espejos se actualizan por sí mismos cada hora, diaria o bidaly desde el sitio maestro de CPAN. [12] Algunos sitios son servidores FTP importantes que reflejan muchos otros programas, pero otros son simplemente servidores propiedad de empresas que utilizan Perl en gran medida. Hay al menos dos espejos en todos los continentes excepto en la Antártida.
Se han escrito varios motores de búsqueda para ayudar a los programadores de Perl a clasificar el CPAN. La búsqueda
Los probadores de CPAN son un grupo de voluntarios que descargarán y probarán las distribuciones a medida que se cargan en CPAN. Esto permite a los autores probar sus módulos en muchas plataformas y entornos a los que de otro modo no tendrían acceso, lo que ayuda a promover la portabilidad, así como un grado de calidad. Los probadores de humo envían informes, que luego se recopilan y se utilizan para una variedad de sitios web de presentación, incluido el sitio principal de informes, las estadísticas y las dependencias.
Los autores pueden cargar nuevas distribuciones al CPAN a través del servidor de carga de autores de Perl (PAUSA). Para hacerlo, debe solicitar una cuenta PAUSA.
Una vez registrados, pueden usar una interfaz web en pause.perl.org o una interfaz FTP para cargar archivos en su directorio y eliminarlos. Los módulos en la carga solo se indexarán como canónicos si el nombre del módulo no se ha utilizado antes (otorgando permiso de orden de llegada al cargador), o si el cargador tiene permiso para ese nombre, y si el módulo es una versión superior a cualquier otra. entrada existente. [15] Esto se puede especificar a través de la interfaz web de PAUSE.
CPAN.pm, CPANPLUS y cpanminus
También hay un módulo principal de Perl llamado CPAN; generalmente se diferencia del repositorio en sí mediante el nombre CPAN.pm. CPAN.pm es principalmente un shell interactivo que se puede utilizar para buscar, descargar e instalar distribuciones. También se proporciona un shell interactivo llamado cpan en el núcleo de Perl, y es la forma habitual de ejecutar CPAN.pm. Después de un breve proceso de configuración y selección de espejo, utiliza herramientas disponibles en la computadora del usuario para descargar, descomprimir, compilar, probar e instalar módulos automáticamente. También es capaz de actualizarse a sí mismo.
Un esfuerzo por reemplazar CPAN.pm con algo más limpio y moderno resultó en el conjunto de módulos CPANPLUS (o CPAN ++). CPANPLUS separa el trabajo de back-end de descargar, compilar e instalar módulos del shell interactivo utilizado para emitir comandos. También es compatible con varias funciones avanzadas, como la verificación de firmas criptográficas y los informes de resultados de pruebas. Finalmente, CPANPLUS puede desinstalar una distribución. CPANPLUS se agregó al núcleo de Perl en la versión 5.10.0 y se eliminó en la versión 5.20.0.
Se desarrolló una alternativa moderna más pequeña y más delgada a estos instaladores de CPAN llamada cpanminus. cpanminus fue diseñado para tener una huella de memoria mucho más pequeña, como se requiere a menudo en entornos de memoria limitada, y para ser utilizable como un script independiente de modo que incluso se pueda instalar por sí mismo, requiriendo que solo esté disponible el conjunto esperado de módulos principales de Perl. También está disponible en CPAN como el módulo App :: cpanminus, que instala el secuencia de comandos cpanm . No mantiene ni depende de una configuración persistente, sino que solo se configura mediante el entorno y las opciones de la línea de comandos. cpanminus no tiene un componente de shell interactivo. Reconoce el formato cpanfile para especificar requisitos previos, útil en proyectos de Perl ad-hoc que pueden no estar diseñados para la instalación de CPAN. cpanminus también tiene la capacidad de desinstalar distribuciones.
Cada uno de estos módulos puede verificar las dependencias de una distribución e instalar de forma recursiva cualquier requisito previo, ya sea automáticamente o con la aprobación del usuario individual. Cada uno admite FTP y HTTP y puede funcionar a través de firewalls y proxies.
Influencia
Los programadores experimentados de Perl a menudo comentan que la mitad del poder de Perl está en el CPAN. Se la ha llamado la aplicación asesina de Perl . [16] Es aproximadamente equivalente a PECL y PEAR para PHP ; el repositorio de PyPI (índice de paquetes de Python) para Python ; RubyGems para Ruby ; CRAN para R ; npm para Node.js ; LuaRocks para Lua ; Maven para Java ; y Hackage para Haskell . El uso de CPAN de espacios de nombres arbitrados, un régimen de prueba y un estilo de documentación bien definido lo hace único.
Dada su importancia para la comunidad de desarrolladores de Perl, el CPAN da forma y está formado por la cultura de Perl . Su "maestro bibliotecario autoproclamado", Jarkko Hietaniemi , a menudo participa en las bromas del Día de los Inocentes ; el 1 de abril de 2002, el sitio fue nombrado temporalmente CJAN , donde la "J" significaba "Java". En 2003, el www.cpan.org
nombre de dominio fue redirigido a Matt's Script Archive , un sitio infame en la comunidad de Perl por tener un código mal escrito. [17] [18] [19]
Algunas de las distribuciones en el CPAN se distribuyen como bromas. La Acme::
jerarquía está reservada para módulos de broma; por ejemplo, Acme::Don't
agrega una don't
función que no ejecuta el código que se le dio (para complementar el do
incorporado, que sí lo hace). Incluso fuera de la Acme::
jerarquía, algunos módulos todavía se escriben principalmente para divertirse; un ejemplo es Lingua::Romana::Perligata
, que se puede utilizar para escribir programas Perl en un subconjunto del latín.
En 2005, un grupo de desarrolladores de Perl que también estaban interesados en JavaScript se reunieron para crear JSAN , JavaScript Archive Network. JSAN es un puerto casi directo de la infraestructura CPAN para su uso con el lenguaje JavaScript, que durante la mayor parte de su vida útil no tuvo una "comunidad" cohesiva.
En 2008, después de una reunión casual con el administrador de CPAN, Adam Kennedy, en la Conferencia de Desarrolladores de Código Abierto, el desarrollador del kernel de Linux Rusty Russell creó CCAN, la Red Integral de Archivos C. El CCAN es un puerto directo de la arquitectura CPAN para usar con el lenguaje C .
CRAN, la red integral de archivos de R, es un conjunto de espejos que alojan la (s) distribución (es) del lenguaje de programación R , la documentación y las extensiones aportadas. [20]
Administradores
Adam Kennedy
Adam Kennedy es un programador australiano de Perl y uno de los varios administradores de CPAN. Bajo su ID de autor de CPAN de ADAMK, es el responsable de mantenimiento de más de 200 distribuciones de módulos en CPAN, lo que lo coloca en la cima de la tabla de clasificación de contribuciones de CPAN. [21] Kennedy es el primer mantenedor de más de 200 módulos CPAN, muchos de los cuales ha adoptado de otros autores e incluidos en su Repositorio Abierto, que está disponible para su uso por cualquier autor CPAN registrado. Es un presentador frecuente en conferencias de código abierto como OSDC , OSCON y YAPC , así como en los hackatones de control de calidad de Perl.
Kennedy ha desarrollado algunos módulos importantes para el lenguaje de programación Perl, particularmente en el área de herramientas para mejorar el desarrollo y la construcción de la cadena de herramientas, como PPI [22] (un analizador de Perl), CPAN :: Metrics [23] (generar métricas en el 16 m + líneas de código en CPAN), Portable Perl [24] (también conocido como "Perl on a Stick") y Padre (un IDE de Perl) . También ha sido un firme defensor de la igualdad de plataformas para Perl en Windows, y comenzó tanto Win32 Perl Wiki como la distribución Strawberry Perl para Windows.
- PPI
Perl PPI Parser ha proporcionado un bloque de construcción esencial para las herramientas de análisis, documentación y refactorización de código de Perl 5. Perl :: Critic [25] utiliza PPI para criticar el código fuente de Perl según los criterios de las mejores prácticas de Perl ; el Padre IDE usa PPI para el análisis de código y la refactorización. La documentación de PPI hace referencia a la perogrullada de que "Sólo perl (el intérprete) puede analizar Perl (código fuente)" porque es un lenguaje dinámico ; una publicación en PerlMonks plantea una prueba formal. [26]
- Perla de fresa
Strawberry Perl es una distribución binaria de Perl para el sistema operativo Windows. A diferencia de la mayoría de las distribuciones de Perl basadas en Windows, Strawberry Perl también incluye un compilador de C, una herramienta de creación y algunos módulos preconfigurados para mejorar la compatibilidad con el entorno de Windows. El objetivo de esta distribución es proporcionar un entorno práctico para probar y utilizar los últimos módulos disponibles de CPAN. Larry Wall , creador de Perl, lo ha respaldado como un buen puerto para Windows. [27]
- Perl portátil (también conocido como "Perl en un palo")
Portable Perl [28] es la primera distribución de Perl adecuada para su instalación en dispositivos portátiles de memoria flash, iPods, teléfonos móviles, cámaras, etc. La primera versión se distribuyó en memorias USB en OSCON 2008. [29] Se financió el trabajo inicial para este proyecto gracias a una subvención de la Fundación Perl.
- Charla bibliografía
Adam Kennedy ha hablado en varias conferencias técnicas en todo el mundo, incluso en OSCON , OSDC , Linux.conf.au y numerosos eventos de YAPC . Estas charlas incluyen:
- PITA - Pruebas ridículamente a gran escala , YAPC :: NA 2006 [30]
- Nada puede salir mal , Linux.conf.au 2007 [31]
- Strawberry Perl, Lograr la igualdad de la plataforma Win32 , OSCON 2008 [32]
- Padre - El IDE de Perl para personas normales , OSDC 2009 [33]
- Trabajo actual
Adam se mudó a San Francisco , California en los Estados Unidos en 2012. Trabajó para Kaggle de 2012 a 2015 y comenzó a trabajar como ingeniero con Apple en 2016. [34] Actualmente ocupa el puesto de Gerente de Ingeniería de Datos, Siri Search en Apple [35]
Referencias
- ^ "Portada de CPAN" . Consultado el 27 de enero de 2016 .
- ^ "¿Cómo se licencian Perl y los módulos CPAN?" .
La mayoría, aunque no todos, los módulos de CPAN están autorizados bajo la Licencia Pública General GNU (GPL) o la Licencia Artística ...
- ^ "La línea de tiempo de Perl y su cultura" .
- ^ "Grokking the CPAN" (PDF) .
Propongo que cooperemos para crear una estructura unificada, muy parecida al proyecto CTAN que ha logrado crear una colección de sitios canónicos para TeX.
- ^ "ExtUtils :: MakeMaker - Crea un módulo Makefile - Perldoc Browser" . perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
- ^ "List :: Util - Una selección de subrutinas de lista de utilidades generales - Perldoc Browser" . perldoc.perl.org . Consultado el 18 de noviembre de 2020 .
- ^ "BackPAN" . Consultado el 20 de diciembre de 2019 .
- ^ "¿Qué es Gitpan?" . 2 de diciembre de 2015 . Consultado el 16 de noviembre de 2016 .
- ^ "CPAN :: Meta :: Historia" . Consultado el 20 de diciembre de 2019 .
- ^ "CPAN Mirror Network" . Consultado el 16 de noviembre de 2016 .
- ^ "Cómo duplicar CPAN" . CPAN.org . Consultado el 15 de noviembre de 2016 .
- ^ "Estado y estadísticas de CPAN" . Consultado el 9 de mayo de 2010 .
- ^ "El fin de una era: despedirse de search.cpan.org" . log.perl.org . Consultado el 22 de mayo de 2018 .
- ^ "Decir adiós a search.cpan.org" . perl.com . Consultado el 26 de junio de 2018 .
- ^ "Modelo operativo PAUSA" . Consultado el 20 de diciembre de 2019 .
- ^ "Re: Killer Apps en PERL" . Consultado el 24 de febrero de 2013 .
- ^ "Elementos de programación con Perl" . 12 de octubre de 2000 . Consultado el 25 de abril de 2013 .
- ^ "Explote este formmail.pl para divertirse y, bueno, divertirse" . 7 de agosto de 2001 . Consultado el 25 de abril de 2013 .
- ^ "¡El archivo de guiones de Matt ataca de nuevo!" . 4 de julio de 2001 . Consultado el 25 de abril de 2013 .
- ^ "¿Qué es CRAN?" . Consultado el 20 de diciembre de 2019 .
- ^ http://thegestalt.org/simon/perl/wholecpan.html
- ^ https://metacpan.org/module/PPI
- ^ https://metacpan.org/module/CPAN::Metrics
- ^ https://metacpan.org/module/Portable
- ^ https://metacpan.org/module/Perl::Critic
- ^ http://www.perlmonks.org/?node_id=663393
- ^ http://www.computerworld.com.au/article/270267/-z_programming_languages_perl?pp=3&fp=&fpid=
- ^ "Copia archivada" . Archivado desde el original el 21 de julio de 2011 . Consultado el 30 de junio de 2009 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ "Copia archivada" . Archivado desde el original el 6 de julio de 2010 . Consultado el 30 de junio de 2009 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ http://www.media-landscape.com/yapc/2006-06-26.AdamKennedy/
- ^ http://lca2007.linux.org.au/talk/122.html
- ^ http://en.oreilly.com/oscon2008/public/schedule/detail/2769
- ^ "Copia archivada" . Archivado desde el original el 24 de octubre de 2009 . Consultado el 28 de noviembre de 2009 .Mantenimiento de CS1: copia archivada como título ( enlace )
- ^ https://www.linkedin.com/in/adamatalias
- ^ "Ponente Bio 2019" .
enlaces externos
- Página web oficial
- MetaCPAN
- Lista de espejos oficiales de CPAN , estado de los espejos
- ZCAN - "The Zen of Comprehensive Archive Networks" - un documento que tiene como objetivo explicar cómo y por qué CPAN tuvo éxito y cómo duplicarlo en esfuerzos similares. (9 de enero de 2003 por Jarkko Hietaniemi ).