Dissecando o pkp-lib - O Núcleo dos Sistemas de Publicação Acadêmica
Se você já enviou um artigo para uma revista universitária ou pesquisou um preprint revisado por pares, provavelmente já encontrou a plataforma Open Journal Systems. É um clássico da web acadêmica. Mas poucos desenvolvedores pensam sobre o que mantém essas plataformas unidas.
Nos bastidores da família de software acadêmico do Public Knowledge Project está a biblioteca PHP pkp-lib. Ela contém lógica compartilhada para vários produtos de uma só vez, incluindo a plataforma de revistas OJS, monografias OMP, preprints OPS e o coletor de metadados OHS.
O Que Tem Dentro e Por Que Foi Feito Assim
Em vez de copiar código entre diferentes projetos, a equipe extraiu a funcionalidade central para um repositório separado. A biblioteca é incluída como um submódulo na pasta lib/pkp dentro de cada aplicação.
A arquitetura interna lida com a rotina:
- Autorização, gerenciamento de funções para revisores e editores.
- Suporte para padrões de metadados acadêmicos OAI-PMH e Dublin Core.
- Um motor de hooks para estender funcionalidade.
- Componentes comuns de UI e tratamento de fluxo de envio de manuscritos.
É interessante olhar as estatísticas do GitHub. O repositório tem modestos 350 estrelas. Mas há quase quinhentas bifurcações, e o número de issues abertas ultrapassou mil. Para software acadêmico aberto, esta é uma imagem normal. As pessoas vêm aqui não pelas estrelas, mas para resolver tarefas reais de trabalho.
Como o Rastreamento de Bugs é Organizado
O README principal do projeto parece contido. Não há exemplos de comandos de terminal ou instruções de instalação via Composer. O motivo é simples: o repositório serve como um ponto único de dispatch de erros em toda a família de aplicações.
Se um editor de revista científica encontrar um bug no OJS 3.3, ele cria um ticket diretamente em pkp-lib. Os mantenedores vinculam a issue a um release específico do core, após o qual a correção faz seu caminho para todas as plataformas dependentes. Para produtos de longa duração com uma equipe de desenvolvimento pequena, essa abordagem ajuda a manter o caos sob controle.
Espaço para o Código Crescer
O projeto existe desde 2009, então a base de código contém camadas arquiteturais de diferentes eras do desenvolvimento PHP. Código legado coexiste com componentes MVC, e a refatoração procede incrementalmente de release para release.
Estudar o repositório faz sentido em vários casos:
- Você foi designado para estender ou personalizar uma revista universitária rodando em OJS.
- Você está escrevendo um plugin para exportação de artigos ou integração com banco de dados de citações.
- Você quer ver como um core compartilhado é organizado para vários produtos especializados.
Usar pkp-lib como framework para um site arbitrário não é recomendável. A biblioteca tem uma especialização estreita para fluxos de publicação. Mas como exemplo de um sistema orientado por domínio com uma longa história, fornece comida interessante para reflexão.
Projetos relacionados