About PKP
Background questions about the Public Knowledge Project, how OJS is funded and developed, and how you can contribute to the platform.
What is the Public Knowledge Project (PKP)?โ
The Public Knowledge Project is a multi-university research initiative focused on improving the quality, reach, and significance of scholarly publishing. It was founded at the University of British Columbia and is currently headquartered at Simon Fraser University (SFU), with active research partnerships at Stanford University and other institutions.
PKP develops and maintains a suite of free, open-source scholarly publishing software:
- Open Journal Systems (OJS) โ for peer-reviewed journal publishing
- Open Monograph Press (OMP) โ for scholarly book publishing
- Open Preprint Systems (OPS) โ for preprint servers
All PKP software is released under the GNU General Public Licence and made freely available to the global research community. Beyond software, PKP conducts research into scholarly communication, open access policy, and the economics of academic publishing. Learn more at pkp.sfu.ca.
Is OJS really free?โ
Yes โ OJS is free and open-source software released under the GNU General Public Licence v3 (GPL v3). There are no licensing fees, per-article fees, or subscription charges for the software itself.
However, "free software" does not mean "zero cost to operate." Running a journal on OJS involves real expenses:
- Server and hosting costs โ Whether self-hosted or managed, servers cost money.
- Technical staff time โ Installing, upgrading, and maintaining OJS requires expertise.
- Editorial labour โ While OJS itself is free, sustainable peer review and editing require staff or volunteer time.
Many journals use OJS within institutional library hosting programmes that absorb these costs, making OJS effectively free-at-point-of-use. If your institution cannot provide infrastructure, PKP Publishing Services offers managed hosting at rates designed for academic budgets.
The GPL v3 licence means you are free to use, modify, and distribute OJS โ including for commercial purposes โ as long as any derivative works are also distributed under GPL v3. You cannot re-license OJS under a more restrictive licence.
How does PKP fund OJS development?โ
PKP uses a mixed funding model:
- Research grants โ Competitive academic funding from SSHRC (Canada), the Mellon Foundation, and other bodies has supported major development cycles.
- Community Sustainers programme โ Institutions that use and benefit from PKP software are invited to become Community Sustainers with an annual financial contribution. This directly funds core developer salaries.
- PKP Publishing Services โ Revenue from managed hosting services is reinvested into development and support.
- Volunteer contributions โ Developers at universities around the world contribute code, translations, plugins, and documentation voluntarily through GitHub and Weblate.
PKP publishes periodic transparency reports and budget information for Community Sustainers. If your institution benefits from OJS, joining the Sustainers programme is a concrete way to ensure continued development of features your journal relies on.
Can I modify the OJS source code?โ
Yes. The GPL v3 licence explicitly grants you the right to study, modify, and redistribute OJS. Practical approaches range from minimal to extensive:
- Configuration and plugins โ Most customisation needs can be met without touching core code, by writing or extending plugins using OJS's hook and template system.
- Theme customisation โ Custom CSS or a custom theme plugin can completely transform the reader-facing site without modifying core files.
- Core code modification โ Possible, but generally inadvisable unless you intend to maintain the fork, because core modifications are overwritten on every upgrade.
Before writing a core code modification, check whether a plugin hook exists for what you need โ OJS has an extensive hook system. If no hook exists, consider submitting a pull request to add one, which benefits everyone and does not require maintaining a private fork.
If you develop something genuinely useful โ a plugin, a theme, a translation, a bug fix โ consider sharing it back with the community via the PKP GitHub organisation or the Plugin Gallery.
How can I contribute to OJS development?โ
OJS development is coordinated through GitHub. The core library shared across all PKP applications is pkp/pkp-lib, and the OJS-specific code is at pkp/ojs.
Ways to contribute:
| Type | How |
|---|---|
| Bug reports | Open an issue on the relevant GitHub repository with a clear description and reproduction steps |
| Pull requests | Fork the repo, make your fix or feature, and submit a PR following PKP's coding standards |
| Translations | Join PKP's Weblate platform to translate OJS into new languages or improve existing ones |
| Documentation | Contribute to the PKP Docs Hub โ guides are maintained in public GitHub repositories |
| Forum support | Answer questions on the PKP Community Forum โ your experience helps newer users |
The PKP Developer Documentation explains the codebase architecture, contribution workflow, and coding standards.
How can I write a plugin for OJS?โ
OJS has a rich plugin architecture that allows you to add features, modify behaviour, or integrate external services without altering core files.
To get started:
- Read the PKP Plugin Guide โ it covers plugin types, directory structure, registering hooks, adding settings, and packaging for the Plugin Gallery.
- Study an existing simple plugin from the pkp/pkp-lib or pkp/ojs repository for a working reference.
- Choose the appropriate plugin category (generic, import/export, report, auth, block, etc.) based on what your plugin needs to do.
- Use OJS's Hook system to intercept and modify behaviour at defined points in the application lifecycle without patching core code.
Before writing a new plugin from scratch, search the Plugin Gallery and the PKP Community Forum. Your use case may already be addressed by an existing plugin that just needs minor configuration or a small extension.
The PKP developer community is active on GitHub and the Community Forum. Posting a description of what you are building and asking for advice before starting is a good way to avoid duplicating effort.
Where are security vulnerabilities announced?โ
When a security vulnerability is found and a patch is prepared, PKP announces it through several channels simultaneously:
- PKP Community Forum โ Security announcements are posted in a dedicated category.
- PKP news blog at pkp.sfu.ca/news
- GitHub releases โ Release notes for each version note security fixes.
- OJS download pages โ Updated release files are published with changelog notes.
- PKP social media channels (Twitter/X, Mastodon)
Subscribe to the PKP Community Forum's security category and check it regularly. Security patches are occasionally released between major versions as hotfix releases. Running an unpatched OJS installation exposes your journal and its user data to known vulnerabilities.
How do I report a security vulnerability?โ
PKP follows a responsible disclosure model. If you discover a potential security vulnerability in OJS or any other PKP software:
- Do not disclose it publicly until PKP has had time to investigate and release a patch. Public disclosure before a fix is available puts all OJS installations at risk.
- Email the PKP team directly: support@publicknowledgeproject.org. Include:
- A clear description of the vulnerability
- Steps to reproduce it
- Your assessment of its potential impact
- Your OJS version and server environment
- Alternative: GitHub Security Advisory โ You can submit a private security advisory via the pkp/ojs GitHub repository using the "Report a vulnerability" button.
PKP will acknowledge your report, investigate, and coordinate a fix and disclosure timeline with you. Researchers who responsibly disclose vulnerabilities are credited in the security advisory when the patch is released.
Further Readingโ
- PKP Website โ About PKP, news, and announcements
- PKP Community Sustainers โ Support OJS development financially
- GitHub: pkp/pkp-lib โ Core OJS/OMP/OPS library repository
- PKP Plugin Guide โ Developer guide for writing OJS plugins
- PKP Developer Documentation โ Architecture and coding standards
- PKP Community Forum โ Community discussion and support