CPAN - CPAN

Logotipo CPAN

O Comprehensive Perl Archive Network ( CPAN ) é um repositório de mais de 250.000 módulos de software e documentação de acompanhamento para 39.000 distribuições, escrito na linguagem de programação Perl por mais de 12.000 colaboradores. CPAN pode denotar a rede de arquivos ou o programa Perl que atua como uma interface para a rede e como um instalador de software automatizado (algo como um gerenciador de pacotes ). A maioria dos softwares no CPAN é livre e de código aberto .

História

O CPAN foi concebido em 1993 e está ativo online desde outubro de 1995. É baseado no modelo CTAN e começou como um local para unificar a estrutura de arquivos Perl dispersos.

Função

Como muitas linguagens de programação , Perl tem mecanismos para usar bibliotecas externas de código, fazendo com que um arquivo contenha rotinas comuns usadas por vários programas. Perl chama esses módulos . Módulos Perl são normalmente instalados em um dos vários diretórios cujos caminhos são colocados no interpretador Perl quando ele é compilado pela primeira vez ; em sistemas operacionais do tipo Unix , os caminhos comuns incluem / usr / lib / perl5 , / usr / local / lib / perl5 e vários de seus subdiretórios.

Perl vem com um pequeno conjunto de módulos principais . Alguns deles executam tarefas de inicialização, como ExtUtils :: MakeMaker, que é usado para criar Makefiles para construir e instalar outros módulos de extensão; outros, como List :: Util, são apenas comumente usados.

O objetivo principal do CPAN é ajudar os programadores a localizar módulos e programas não incluídos na distribuição padrão Perl. Sua estrutura é descentralizada. Os autores mantêm e melhoram seus próprios módulos. A bifurcação e a criação de módulos concorrentes para a mesma tarefa ou propósito são comuns. Existe um sistema de rastreamento de bugs de terceiros que é configurado automaticamente para qualquer distribuição enviada, mas os autores podem optar por usar um sistema de rastreamento de bugs diferente, como o GitHub . Da mesma forma, embora o GitHub seja um local popular para armazenar o código-fonte para distribuições, ele pode ser armazenado em qualquer lugar que o autor preferir ou pode não estar acessível publicamente. Os mantenedores podem conceder permissões a outros para manter ou assumir o controle de seus módulos, e as permissões podem ser concedidas por administradores para aqueles que desejam assumir o controle de módulos abandonados. Versões anteriores de distribuições atualizadas são retidas no CPAN até serem excluídas pelo uploader, e uma rede de espelho secundária chamada BackPAN retém as distribuições mesmo se elas forem excluídas do CPAN. Além disso, o histórico completo do CPAN e de todos os seus módulos está disponível como projeto GitPAN, permitindo visualizar facilmente o histórico completo de todos os módulos e para fácil manutenção dos garfos. O CPAN também é usado para distribuir novas versões do Perl, bem como projetos relacionados, como Parrot e Raku .

Estrutura

Os arquivos no CPAN são chamados de distribuições . Uma distribuição pode consistir em um ou mais módulos, arquivos de documentação ou programas empacotados em um formato de arquivamento comum, como um arquivo tar compactado ou um arquivo ZIP . As distribuições geralmente contêm scripts de instalação (geralmente chamados de Makefile.PL ou Build.PL ) e scripts de teste que podem ser executados para verificar se o conteúdo da distribuição está funcionando corretamente. Novas distribuições são carregadas no Servidor de Upload de Autores Perl, ou PAUSE (consulte a seção Carregando distribuições com PAUSE ).

Em 2003, as distribuições passaram a incluir arquivos de metadados, chamados META. yml , indicando o nome da distribuição, versão, dependências e outras informações úteis; no entanto, nem todas as distribuições contêm metadados. Quando os metadados não estão presentes em uma distribuição, o software do PAUSE tentará analisar o código na distribuição para procurar as mesmas informações; isso não é necessariamente muito confiável. Em 2010, a versão 2 dessa especificação foi criada para ser usada por meio de um novo arquivo denominado META. json , com o arquivo de formato YAML frequentemente incluído para compatibilidade com versões anteriores .

Com milhares de distribuições, o CPAN precisa ser estruturado para ser útil. Os autores frequentemente colocam seus módulos na hierarquia natural dos nomes dos módulos Perl (como Apache::DBI ou Lingua::EN::Inflect ) de acordo com o propósito ou domínio, embora isso não seja obrigatório.

As distribuições do módulo CPAN geralmente têm nomes na forma de CGI-Application-3.1 (onde o :: usado no nome do módulo foi substituído por um travessão e o número da versão foi anexado ao nome), mas isso é apenas uma convenção ; muitas distribuições proeminentes quebram a convenção, especialmente aquelas que contêm vários módulos. As restrições de segurança evitam que uma distribuição seja substituída por um nome de arquivo idêntico, portanto, praticamente todos os nomes de distribuição incluem um número de versão .

Componentes

A infraestrutura de distribuição do CPAN consiste em sua rede mundial de mais de 250 espelhos em mais de 60 países. Cada espelho completo hospeda cerca de 31 gigabytes de dados.

A maioria dos mirrors se atualizam de hora em hora, diariamente ou a cada dois dias no site mestre do CPAN. Alguns sites são servidores FTP importantes que espelham muitos outros softwares, mas outros são simplesmente servidores pertencentes a empresas que usam muito o Perl. Existem pelo menos dois espelhos em todos os continentes, exceto na Antártica.

Vários motores de busca foram escritos para ajudar os programadores Perl a classificar o CPAN. A pesquisa oficial .cpan .org inclui pesquisa textual, um índice navegável de módulos e cópias extraídas de todas as distribuições atualmente no CPAN. Em 16 de maio de 2018, a Perl Foundation anunciou que search.cpan.org seria encerrado em 29 de junho de 2018 (após 19 anos de operação), devido ao envelhecimento de sua base de código e carga de manutenção. Os usuários serão transferidos e redirecionados para o MetaCPAN alternativo de terceiros.

Os testadores do CPAN são um grupo de voluntários que baixam e testam as distribuições à medida que são carregadas no CPAN. Isso permite que os autores tenham seus módulos testados em muitas plataformas e ambientes aos quais de outra forma não teriam acesso, ajudando assim a promover a portabilidade, bem como um certo grau de qualidade. Os testadores de fumaça enviam relatórios, que são agrupados e usados ​​para uma variedade de sites de apresentação, incluindo o site de relatórios principal, estatísticas e dependências.

Os autores podem fazer upload de novas distribuições para o CPAN através do Perl Authors Upload Server (PAUSE). Para fazer isso, eles devem solicitar uma conta PAUSE.

Depois de registrados, eles podem usar uma interface da web em pause.perl.org ou uma interface de FTP para enviar arquivos para seu diretório e excluí-los. Módulos no upload só serão indexados como canônicos se o nome do módulo não tiver sido usado antes (concedendo permissão de primeira vinda ao uploader), ou se o uploader tiver permissão para esse nome, e se o módulo for uma versão superior a qualquer entrada existente. Isso pode ser especificado por meio da interface da web do PAUSE.

CPAN.pm, CPANPLUS e cpanminus

Também existe um módulo de núcleo Perl denominado CPAN; geralmente é diferenciado do próprio repositório usando o nome CPAN.pm. CPAN.pm é principalmente um shell interativo que pode ser usado para pesquisar, baixar e instalar distribuições. Um shell interativo chamado cpan também é fornecido no núcleo Perl e é a maneira usual de executar o CPAN.pm. Após um breve processo de configuração e seleção de espelho, ele usa ferramentas disponíveis no computador do usuário para baixar, descompactar, compilar, testar e instalar módulos automaticamente. Também é capaz de se atualizar.

Um esforço para substituir o CPAN.pm por algo mais limpo e moderno resultou no conjunto de módulos CPANPLUS (ou CPAN ++). O CPANPLUS separa o trabalho de back-end de download, compilação e instalação de módulos do shell interativo usado para emitir comandos. Ele também oferece suporte a vários recursos avançados, como verificação de assinatura criptográfica e relatórios de resultados de teste. Finalmente, o CPANPLUS pode desinstalar uma distribuição. CPANPLUS foi adicionado ao núcleo Perl na versão 5.10.0 e removido na versão 5.20.0.

Uma alternativa moderna menor e mais enxuta para esses instaladores CPAN foi desenvolvida, chamada cpanminus. O cpanminus foi projetado para ter uma pegada de memória muito menor, como frequentemente exigido em ambientes de memória limitados, e para ser usado como um script autônomo de forma que possa até mesmo se instalar, exigindo que apenas o conjunto esperado de módulos Perl principais esteja disponível. Também está disponível no CPAN como o módulo App :: cpanminus, que instala o script cpanm . Ele não mantém ou depende de uma configuração persistente, mas é configurado apenas pelo ambiente e pelas opções de linha de comando. cpanminus não possui um componente de shell interativo. Ele reconhece o formato cpanfile para especificar os pré-requisitos, úteis em projetos Perl ad-hoc que podem não ser projetados para instalação do CPAN. cpanminus também tem a capacidade de desinstalar distribuições.

Cada um desses módulos pode verificar as dependências de uma distribuição e instalar recursivamente quaisquer pré-requisitos, automaticamente ou com a aprovação do usuário individual. Cada um oferece suporte a FTP e HTTP e pode funcionar por meio de firewalls e proxies.

Influência

Programadores experientes em Perl costumam comentar que metade do poder do Perl está no CPAN. Ele foi chamado de aplicativo matador de Perl . É aproximadamente equivalente ao PECL e PEAR para PHP ; o repositório PyPI (Python Package Index) para Python ; RubyGems for Ruby ; CRAN para R ; npm para Node.js ; LuaRocks para Lua ; Maven para Java ; e Hackage para Haskell . O uso de espaços de nomes arbitrados pelo CPAN, um regime de teste e um estilo de documentação bem definido o torna único.

Dada sua importância para a comunidade de desenvolvedores Perl, o CPAN molda e é moldado pela cultura do Perl . Seu "autoproclamado bibliotecário mestre", Jarkko Hietaniemi , freqüentemente participa das piadas do Dia da Mentira; em 1 de abril de 2002, o site foi temporariamente nomeado para CJAN , onde o "J" significava "Java". Em 2003, o www.cpan.org nome de domínio foi redirecionado para Matt's Script Archive , um site famoso na comunidade Perl por ter um código mal escrito.

Algumas das distribuições no CPAN são distribuídas como piadas. A Acme:: hierarquia é reservada para módulos de piada; por exemplo, Acme::Don't adiciona uma don't função que não executa o código fornecido a ela (para complementar o do integrado, que o faz). Mesmo fora da Acme:: hierarquia, alguns módulos ainda são escritos principalmente para diversão; um exemplo é Lingua::Romana::Perligata , que pode ser usado para escrever programas Perl em um subconjunto do latim.

Em 2005, um grupo de desenvolvedores Perl que também tinham interesse em JavaScript se reuniu para criar a JSAN , a JavaScript Archive Network. A JSAN é uma porta quase direta da infraestrutura CPAN para uso com a linguagem JavaScript, que na maior parte de sua vida útil não teve uma "comunidade" coesa.

Em 2008, após um encontro casual com o administrador do CPAN, Adam Kennedy, na Open Source Developers Conference, o desenvolvedor do kernel Linux Rusty Russell criou a CCAN, a Comprehensive C Archive Network. O CCAN é uma porta directa da arquitectura CPAN para uso com a linguagem C .

CRAN, a Rede Comprehensive R Archive, é um conjunto de mirrors que hospedam a (s) distribuição (ões) da linguagem de programação R , documentação e extensões contribuídas.

Administradores

Adam Kennedy

Adam Kennedy em 2016

Adam Kennedy é um programador Perl australiano e um dos vários administradores de CPAN. Sob sua id de autor do CPAN de ADAMK, ele é o mantenedor de mais de 200 distribuições de módulo no CPAN, o que o coloca no topo da tabela de classificação de contribuições do CPAN. Kennedy é o primeiro mantenedor de mais de 200 módulos CPAN, muitos dos quais ele adotou de outros autores e incluídos em seu Repositório Aberto, que está disponível para uso por qualquer autor CPAN registrado. Ele é um apresentador frequente em conferências de código aberto como OSDC , OSCON e YAPC , bem como nos hackathons Perl QA.

Kennedy desenvolveu alguns módulos significativos para a linguagem de programação Perl, particularmente na área de ferramentas para melhorar o desenvolvimento e construir a cadeia de ferramentas, como PPI (um analisador Perl), CPAN :: Metrics (gerar métricas nas linhas de código de 16 milhões + em CPAN ), Perl portátil (também conhecido como "Perl on a stick") e Padre (um IDE Perl) . Ele também tem sido um forte defensor da igualdade de plataforma para Perl no Windows e iniciou a distribuição Win32 Perl Wiki e Strawberry Perl para Windows.

PPI

O Perl PPI Parser forneceu um bloco de construção essencial para a análise de código Perl 5, documentação e ferramentas de refatoração. Perl :: Critic usa PPI para criticar o código-fonte Perl em relação aos critérios em Perl Best Practices ; o Padre IDE usa PPI para análise de código e refatoração. A documentação PPI faz referência ao truísmo de que "Somente perl (o interpretador) pode analisar Perl (código-fonte)" porque é uma linguagem dinâmica ; um post no PerlMonks apresenta uma prova formal.

Morango Perl

Strawberry Perl é uma distribuição binária de Perl para o sistema operacional Windows. Ao contrário da maioria das distribuições Perl baseadas no Windows, Strawberry Perl também inclui um compilador C, ferramenta make e alguns módulos pré-configurados para melhorar a compatibilidade com o ambiente Windows. O objetivo desta distribuição é fornecer um ambiente prático para testar e usar os módulos mais recentes disponíveis no CPAN. Larry Wall , criador do Perl, endossou este como um bom porte para Windows.

Perl portátil (também conhecido como "Perl on a Stick")

Portable Perl é a primeira distribuição Perl adequada para instalação em dispositivos portáteis de memória flash, iPods, telefones celulares, câmeras, etc. O primeiro lançamento foi distribuído em pen drives USB na OSCON 2008. O trabalho inicial para este projeto foi financiado por uma doação do The Perl Fundação.

Bibliografia de discussão

Adam Kennedy falou em várias conferências técnicas em todo o mundo, incluindo OSCON , OSDC , Linux.conf.au e vários eventos YAPC . Essas palestras incluem:

  • PITA - Teste Ridiculamente em Grande Escala , YAPC :: NA 2006
  • Nada pode dar errado , Linux.conf.au 2007
  • Strawberry Perl, Achieving Win32 Platform Equality , OSCON 2008
  • Padre - O Perl IDE para pessoas normais , OSDC 2009
Trabalho atual

Adam se mudou para San Francisco , Califórnia, nos Estados Unidos em 2012. Ele trabalhou para a Kaggle de 2012 a 2015 e começou a trabalhar como engenheiro na Apple em 2016. Atualmente, ele ocupa o cargo de Gerente de Engenharia de Dados, Siri Search na Apple

Referências

links externos