Analiza pkp-lib – rdzeń systemów wydawniczych
Jeśli kiedykolwiek przesłałeś artykuł do czasopisma akademickiego lub szukałeś recenzowanej preprinty, prawie na pewno natknąłeś się na platformę Open Journal Systems. To klasyk akademickiego internetu. Ale niewielu programistów zastanawia się nad tym, co spaja takie platformy.
Za kulisami rodziny oprogramowania akademickiego Public Knowledge Project znajduje się biblioteka PHP pkp-lib. Zawiera współdzieloną logikę dla kilku produktów jednocześnie, w tym platformy czasopism OJS, monografii OMP, preprintów OPS i harvestera metadanych OHS.
Co w środku i dlaczego to tak zrobiono
Zamiast kopiować kod między różnymi projektami, zespół wyodrębnił podstawową funkcjonalność do osobnego repozytorium. Biblioteka jest dołączana jako submoduł w folderze lib/pkp w każdej aplikacji.
Wewnętrzna architektura obsługuje rutynowe zadania:
- Autoryzacja, zarządzanie rolami recenzentów i redaktorów.
- Wsparcie dla akademickich standardów metadanych OAI-PMH i Dublin Core.
- Silnik haków do rozszerzania funkcjonalności.
- Wspólne komponenty interfejsu użytkownika i obsługa procesu składania manuskryptów.
Warto przyjrzeć się statystykom GitHub. Repozytorium ma skromne 350 gwiazdek. Ale jest prawie pięćset forków, a liczba otwartych zgłoszeń przekroczyła tysiąc. Dla otwartego oprogramowania akademickiego to normalny obrazek. Ludzie przychodzą tu nie dla gwiazdek, ale żeby rozwiązywać realne zadania.
Jak zorganizowano śledzenie błędów
Główny README projektu wygląda stonowanie. Nie ma przykładów poleceń terminala ani instrukcji instalacji przez Composera. Powód jest prosty: repozytorium służy jako centralny punkt kierowania błędów w całej rodzinie aplikacji.
Jeśli redaktor czasopisma naukowego znajdzie błąd w OJS 3.3, tworzy zgłoszenie właśnie w pkp-lib. Maintainerzy łączą zgłoszenie z konkretnym wydaniem core, po czym poprawka trafia do wszystkich zależnych platform. Dla długodystansowych produktów z małym zespołem deweloperskim, to podejście pomaga utrzymać chaos w ryzach.
Przestrzeń do wzrostu kodu
Projekt istnieje od 2009 roku, więc baza kodu zawiera warstwy architektoniczne z różnych epok rozwoju PHP. Kod legacy koegzystuje z komponentami MVC, a refaktoryzacja postępuje stopniowo z wydania na wydanie.
Studiowanie repozytorium ma sens w kilku przypadkach:
- Zostałeś przypisany do rozbudowy lub dostosowania czasopisma uniwersyteckiego działającego na OJS.
- Piszesz wtyczkę do eksportu artykułów lub integracji z bazą cytowań.
- Chcesz zobaczyć, jak zorganizowano współdzielony rdzeń dla kilku wyspecjalizowanych produktów.
Korzystanie z pkp-lib jako frameworka dla dowolnej strony internetowej nie jest zalecane. Biblioteka ma wąską specjalizację dla procesów wydawniczych. Ale jako przykład systemu sterowanego domeną z długą historią, dostarcza interesującego materiału do przemyśleń.
Powiązane projekty