>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
PHP

Décortiquer pkp-lib - Le Cœur des Systèmes de Publication Académique

Si vous avez déjà soumis un article à une revue universitaire ou recherché une prépublication évaluée par les pairs, vous avez très probablement rencontré la plateforme Open Journal Systems. C'est un classique du web académique. Mais peu de développeurs réfléchissent à ce qui maintient de telles plateformes ensemble.

Dans les coulisses de la famille de logiciels académiques du Public Knowledge Project se trouve la bibliothèque PHP pkp-lib. Elle contient la logique partagée pour plusieurs produits à la fois, notamment la plateforme de revues OJS, les monographies OMP, les prépublications OPS et le moissonneur de métadonnées OHS.

Ce qu'il y a à l'intérieur et pourquoi c'est fait de cette façon

Au lieu de copier du code entre différents projets, l'équipe a extrait les fonctionnalités principales dans un dépôt séparé. La bibliothèque est incluse comme sous-module dans le dossier lib/pkp de chaque application.

L'architecture interne gère les tâches courantes :

  • Autorisation, gestion des rôles pour les examinateurs et les éditeurs.
  • Prise en charge des normes de métadonnées académiques OAI-PMH et Dublin Core.
  • Un moteur de hooks pour étendre les fonctionnalités.
  • Composants d'interface utilisateur communs et gestion du flux de soumission de manuscrits.

Il est intéressant de consulter les statistiques GitHub. Le dépôt compte un modeste 350 étoiles. Mais il y a près de cinq cents forks, et le nombre de tickets ouverts a dépassé le millier. Pour un logiciel académique libre, c'est une image normale. Les gens ne viennent pas ici pour les étoiles, mais pour résoudre des tâches de travail réelles.

Comment le Suivi des Bugs est Organisé

Le README principal du projet semble sobre. Il n'y a pas d'exemples de commandes terminal ni d'instructions d'installation via Composer. La raison est simple : le dépôt sert de point de dispatch unique pour les erreurs dans toute la famille d'applications.

Si un éditeur de revue scientifique trouve un bug dans OJS 3.3, il crée un ticket directement dans pkp-lib. Les mainteneurs lient le problème à une version core spécifique, après quoi le correctif se propage vers toutes les plateformes dépendantes. Pour des produits à long terme avec une petite équipe de développement, cette approche aide à garder le chaos sous contrôle.

De l'Espace pour le Code pour Grandir

Le projet existe depuis 2009, donc la base de code contient des couches architecturales de différentes ères du développement PHP. Le code hérité coexiste avec les composants MVC, et le refactoring progresse de manière incrémentale de version en version.

Étudier le dépôt a du sens dans plusieurs cas :

  • On vous a assigné d'étendre ou de personnaliser une revue universitaire fonctionnant sur OJS.
  • Vous écrivez un plugin pour l'exportation d'articles ou l'intégration de base de données de citations.
  • Vous voulez voir comment un core partagé est organisé pour plusieurs produits spécialisés.

Utiliser pkp-lib comme framework pour un site web arbitraire n'est pas recommandé. La bibliothèque a une spécialisation étroite pour les flux de publication. Mais comme exemple de système piloté par le domaine avec une longue histoire, il offre une réflexion intéressante à considérer.

Projets similaires