PKP’s First Virtual Sprint Kickstarts Plugin Improvements

On March 17 – 19, 2026, PKP successfully piloted the first fully virtual sprint. This three-day session focused on plugin language accessibility, 3rd party plugin support, modernizing Vue.js settings, UIs, and more.
The PKP Plugin Enhancements Virtual Sprint event drew nearly 30 participants from more than 10 different institutions worldwide for collaborative work sessions, drop-in sessions, and ended in doing review, finalizing updates, and planning next steps.
Six working groups emerged from this process, each tackling a distinct challenge within the plugin ecosystem. Below are the results from each group.
Exposing Plugin Languages in the Plugin Gallery
Participants
Israel Cefrin (PKP, University of Waterloo), Bozana Bokan (PKP), Magnus Lu (PKP), Jehu Njikonga (mEDRA)
Goals
Currently, OJS users cannot see which languages a plugin supports until after installation or by viewing the list of languages in the file listing. The goal of this working group was to expose the available languages directly in the Plugin Gallery.
The scope of work included:
- Allowing plugins to declare supported languages
- Updating the Plugin Gallery Interface to include supported languages
- Using OJS 3.6 language naming conventions to add the plugin metadata into the XML
- Integration with Weblate
Outcomes
The updates to extend the Plugin XML and update the schema in plugins.xsd are complete. The Plugin Gallery interface has been extended to display all available languages via the addition of a language section in the info modal. Both of these changes have been submitted as pull requests and are ready for code review.
Pending work relates to links to Weblate (if applicable) and documentation relating to XML structure, naming conventions, as well as updates to the Plugin Gallery documentation.
For the latest status, see: GitHub #12466
Third Party Plugin Support
Participants
Alec Smecher (PKP), Rick Hoover (University of Pittsburgh)
Goals
Adding flexibility to the Plugin Gallery creates opportunities for third-party plugin support, inclusion of locally maintained plugins, and removal of plugins (for example, due to poor performance).
This working group explored two main options:
- Make the existing Plugin Gallery URL configurable. This would allow administrators to point to a custom location
- Support an array of sources, allowing the system to aggregate plugins from multiple endpoints.
Outcomes
The final approach followed option #2 above and consisted of:
- Making the plugin gallery URL configurable via config.inc.php
- Adding support for multiple sources and not just one URL
- Associated configuration changes and adding a new security setting, plugin_gallery_urls to handle the risks with modifying the plugin gallery source
Note: These updates are intended for the addition of new plugins, not to modify or override existing official plugins.
These updates have been merged for release in OJS/OMP/OPS 3.3.0-23+, 3.4.0-11+, and 3.5.0-4+.
For more information, see: GitHub #12468
Modernizing Plugin Settings with Vue.js
Participants
Jarda Kotěšovec (PKP), Antti-Jussi Nygård (The Federation of Finnish Learned Societies), Christoph Otte (Heidelberg University Library), Sebastian Schmidt (SLUB Dresden)
Background
OJS 3.5 introduced significant improvements, making it easier to build plugin interfaces with one exception: plugin settings remain challenging to modernize.
While Vue.js components are readily available, there is currently no standardized backend controller to serve data to the settings components.
Instead, developers must manually create API endpoints by extending PluginSettingsController.
Additionally, the absence of a template and working examples creates enough friction, causing developers to prioritize more pressing demands over modernizing their plugin settings.
Goals
The goal of this working group was to identify ways to simplify the development process for creating or modernizing plugin settings with Vue.js.
The scope of work included:
- Identifying plugins already using Vue.js
- Discussing good practices for form creation and adaptation when moving from PHP to Vue based UI
- Creating a template and documenting the process
Outcomes
Updates to PluginSettingsController
Updates to the PluginSettingsController base class (see: PR #12492) will eliminate manual effort by providing standardized endpoints that developers can use and extend as needed rather than creating them from scratch.
The controller provides automatic scope handling by using information about how the plugin was installed and registered to automatically determine permissions (site-wide vs context-wide).
PluginSettingsController integrates with the FormModal component (already included in stable-3_5_0), which wraps the standard Form.vue component to automatically fetch API data and display it in a modal view, eliminating the need for developers to manage these interactions manually.
Plugin Template
A plugin template (see: pluginTemplate #8) will give the developer a starting point for implementation by demonstrating how to extend the PluginSettingsController, how to implement the front-end via FormModal, and demonstrate proper file structure and organization.
References and Documentation
Plugins already using Vue.js include:
Once finalized, the changes described will be updated in the plugin development documentation.
The plugin template along with updated documentation and reference will be included with the upcoming OJS 3.5-0.4 release.For the latest status, see: GitHub #12489
Add Support for Compatibility Statements
Participants
Thiago Matos (Lepidus), Jhonathan Miranda (Lepidus)
Goals
The compatibility statement of a plugin specifies which applications and versions the plugin works with. Without sufficient information, API changes between software versions, for example, can break the installation and cause avoidable headaches.
The goal of this working group is to add support for a compatibility statement in version.xml.
Proposed information to include:
- Supported software (e.g. OJS, OMP, OPS)
- Compatible version ranges
- Links to documentation, source code, GitHub repository or support ticket
- Mechanism to check for newer plugin versions
Outcomes
The resulting outcomes from this working group including:
- Adding plugin verification functionality for OJS/OPS/OMP 3.6 (required)
- Adding plugin verification functionality for OJS/OPS/OMP 3.5 (optional)
- Updating the PKP Plugins Documentation
For the latest status, see: GitHub #7531
Enriching Plugin Information Displays
Participants
Martin Brändle (uZurich), Ronald Steffen (Freie Universität Berlin)
Goals
The goal of enriching the information displayed in the Installed Plugin List and Plugin Gallery is to provide users with consistent, detailed information and a unified method of interaction across both views. This will allow users to make timely and informed decisions about installations, updates, and configuration.
Outcomes
The recommendations for information based on location (Installed Plugin List, Plugin Gallery, or both):
Installed Plugins List
- Installed version and update status
- Current installation location (shown when upgrades are not possible via the UI)
- Clickable items for detailed information (for consistency with the Plugin Gallery)
- Prominent “Settings” button
- “Delete” and “Upgrade” buttons
Plugin Gallery
- Same classifications as in the Installed Plugins List (e.g. Block, generic, theme)
- Clickable items show detailed information
Information available in both the Installed Plugins List and Plugin Gallery
- Supported languages
- Link to contribute to translations via Weblate, if applicable
- Link to code repository
Have questions or feedback? Start a discussion here.
Making the PKP Preservation Network Plugin Compatible with OJS 3.5
Participants
Antti-Jussi Nygård (The Federation of Finnish Learned Societies), Dimitris Efstathiou (PKP), Jonas Raoni Soares da Silva (PKP)
Goals
The goal of this working session was to update the PKP Preservation Network (PKP PN) plugin for OJS 3.5 compatibility.
The PKP PN plugin provides long-term digital preservation for scholarly journals using OJS and its compatibility with current and future releases of OJS is critical in cases of funding cuts, institutional changes, technical failures by ensuring research remains publicly available.
Outcomes
A modernized codebase for OJS 3.5 included:
- API and framework updates
- Code architecture improvements
- Dependency updates and maintenance fixes
Following the successful review and merging of PR #117, the PKP PN plugin will be fully compatible with OJS 3.5.0.1.
A huge thank you to all of our virtual sprint participants! Registration was limited for this pilot event, but future virtual sprints will be open to the entire community and we plan to host them throughout the year to complement our annual in-person sprints.
What challenges or topics do you want to see tackled next? We want to plan future virtual sprints around what matters to you most, so share your suggestions.