Plugins from a repository: plugins and sub-plugins, with categories #883

Closed
opened 2026-10-10 16:11:42 +00:00 by tiagoagueda · 1 comment
Owner

Plugins retrieved from a repository — official (Postulo's manifest) or custom (another manifest) — are true plugins: no hierarchy between them (level 0), each with one or more sub-plugins (level 1); a sub-plugin has exactly one parent; plugins and sub-plugins may have several categories.

What exists today

  • One distribution can register several plugins, of several kinds, through entry-point groups (postulo.sources, .notifiers, … plugins/base.py:331-636). postulo-helloworld is one distribution with a source and a notifier.
  • The policy keys on plugin names, the plugins record on distribution names (#596); policy.overview maps one to the other (policy.py:~270).
  • The catalogue's Release.provides lists the entry points (plugins/catalogue.py:61, e.g. catalogue/official/plugins.toml: ["postulo.sources:helloworld", "postulo.notifiers:helloworld"]) and nothing reads it. Listing has no category or logo field.

What would change

  • The distribution is the plugin (level 0); its entry points are its sub-plugins (level 1) — the shape that already exists, drawn as such.
  • Categories from the package (Manifest.categories) and from the catalogue listing (categories = [...]), shown as badges and filterable on the repositories page.
  • The same switch cascade as #873: the plugin's switch is its sub-plugins' master.

Decisions

  • A one-entry-point package has one sub-plugin; recommended: drawn as a single row, not a parent with one child.

Checked against main at 8c3d03570. From the maintainer's improvements list of 2026-10-07 (plugins).

Plugins retrieved from a repository — official (Postulo's manifest) or custom (another manifest) — are **true plugins**: no hierarchy between them (level 0), each with one or more **sub-plugins** (level 1); a sub-plugin has exactly one parent; plugins and sub-plugins may have several categories. ## What exists today - One distribution can register several plugins, of several kinds, through entry-point groups (`postulo.sources`, `.notifiers`, … `plugins/base.py:331-636`). postulo-helloworld is one distribution with a source and a notifier. - The policy keys on **plugin names**, the plugins record on **distribution names** (#596); `policy.overview` maps one to the other (`policy.py:~270`). - The catalogue's `Release.provides` lists the entry points (`plugins/catalogue.py:61`, e.g. `catalogue/official/plugins.toml`: `["postulo.sources:helloworld", "postulo.notifiers:helloworld"]`) and **nothing reads it**. `Listing` has no category or logo field. ## What would change - The **distribution** is the plugin (level 0); its entry points are its sub-plugins (level 1) — the shape that already exists, drawn as such. - Categories from the package (`Manifest.categories`) and from the catalogue listing (`categories = [...]`), shown as badges and filterable on the repositories page. - The same switch cascade as #873: the plugin's switch is its sub-plugins' master. ## Decisions - **A one-entry-point package** has one sub-plugin; recommended: drawn as a single row, not a parent with one child. Checked against `main` at `8c3d03570`. From the maintainer's improvements list of 2026-10-07 (plugins).
tiagoagueda added this to the 1.0.0 milestone 2026-10-10 16:11:42 +00:00
Author
Owner

Fixed in 0a8b04e52 on main.

Fixed in 0a8b04e52 on main.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#883
No description provided.