Add a plugin system
We get a number of feature requests that are genuinely useful, but would only benefit a small number of people. In these cases, it would be good to have a plugin system so that these features can be selectively enabled by those who need them. Plugins would also be useful for implementing non-core features that are more widely useful, to keep the core code clean.
This ticket is a tracking ticket for those use cases, implementing basic support for plugins, and implementing specific plugin support needed for those use cases.
Use cases from past bugs reported in b.g.o include:
- Displaying/previewing additional content types for messages (TNEF, calendar, diffs)
- Account add-ons (server-side filter management, custom proxies, alternative SMTP servers, archiving email locally, client-side spam filtering)
- Folder add-ons (IMAP ACL, IMAP Quota)
- Composer add-ons (sending additional headers, inserting audio, inserting HTML, external editors)
- Sending/receiving hooks (Zeitgeist, would also allow making Unity Indicator support a plugin, system tray icon)
- Credential storage implementations (clear text)
- Email encryption systems
If you have had a feature request marked as a duplicate of this issue, the way forward is as follows:
- Implement a base plugin system using Libpeas, in a way that works similarly to how EOG's plugin system works
- Implement plugin support for the matching use case above
- Write the plugin that implements the specific feature
The most appropriate way to do implement any of these is to open a merge request for one of the three points above, and mention this ticket when doing so.