RFC-0006: SDK, official template and publishing for third parties
RFCPropuesta futura. No existe en NOPAL y no forma parte de la API oficial.
Draft for discussion
This RFC is written by the documentation project from the problems verified in the code. It is not a decision by NOPAL's author.
Problem
- There is no SDK today: what exists is a plugin system without a versioned API.
- There is no official template. The tutorial and its example were written for this documentation.
- There is no way for a third party to publish a plugin. To appear in the Gallery, its entry must be added to the core's
plugin_catalog.jsonthrough an accepted change. See installation and Gallery. - There is no distinction between official and community plugins, nor quality guarantees.
- The catalog announces plugins that do not exist (
coming_soon).
Proposal
It depends on several RFCs: 0001, 0002, 0003 and 0005. Nothing should be called an "SDK" until the API of RFC-0001 exists.
- A template repository (
nopal-plugin-template) based on the tutorial's example, with tests, CI and a README that meets the documentation standard. - A name and a scope for the SDK: the public API of RFC-0001, its documentation and the template.
- A community plugin index: a list, maintained by the project, of repositories with the reviewed commit, separate from the official catalog.
- Two levels in the Gallery: Official and Community, with a visible warning on the latter (plugins are not isolated; see RFC-0002).
- Acceptance requirements to be listed in the Gallery: a valid manifest, a declared
plugin_api, minimum documentation, compatibility tests and a compatible license. - Install pinned to a commit, not "the tip of the branch", so an update does not change what was reviewed.
Alternatives
- Keep the curated catalog and accept third-party plugins only by changing the core (today).
- Free installation by URL, with no index. Maximum freedom, minimum protection: it is the model the current security warnings try to avoid.
Impact on existing plugins
The official plugins would become the first consumer of the template and the public API.
Compatibility and migration
The current catalog would remain the Official level.
Open questions
- Who reviews community plugins, and by what criteria?
- Are paid plugins supported? Today the core rejects them because the license server is missing.
Status
draft. None of this has been implemented.