-
-
Notifications
You must be signed in to change notification settings - Fork 112
Description
Problem
There are many plugin requests in the issues tab and most go unanswered due to lack of manpower. Even when someone takes the effort to actually implement them, it might still go nowhere. For instance, take PRs #890 and #894 or #599 : the proponents are (relatively) responsive, the plugins appear to work correctly and the features would make Code more powerful. Another example would be many PRs (#737 , #784 , #783 ) fixing or improving the Vim emulation mode. Since these modifications must be approved by the core team before shipping, some of these PR's sit there for months (years?) without being merged.
Now, let's be clear: I am not blaming elementary's core team. I honestly believe that they are doing their best, but IMHO this is a losing game. Incorporating every plugin in the main repo requires many review rounds by the core team and they are busy enough as it is. This also takes their time from actually improving the core experience we all know and love. So my proposal is to explicitly "allow" third party plugins and publish instructions on how to distribute them. This could make implementing new features and integrations much faster for Code and potentially help building a developer community around it. IMHO this is why VSCode and vim are loved: they allow extending the base editor in powerful ways and have docs explaining how to build and publish extensions.
Proposal
Create a tutorial and a repository code-plugin-example that people could clone and start writing their own plugins. Maybe even add instructions for adding these plugins to AppCenter if they are good enough.
It would be awesome if there also was a Python version. It seems possible since the Python loader for libpeas is enabled, but there are no current examples on how to use it. This might need more investigation, as I was not able to find a gir file for libcodecore.
Prior Art
Both Gedit and Geany support third party plugins and they also use libpeas. In both their wikis there are many links to new and old plugins. Obviously some are very good and others.... aren't. But the point is that people actually write plugins and publish them for other folks to use, and this would be a very desirable situation for elementary's Code.
I was able to turn #890 into a separate repository that works correctly when installed with prefix /usr (see here ) in Elementary 6. I volunteer to transform this into a tutorial and accompanying example repository if the core team agrees with this proposal.
Possible problems
- Supporting plugins built with old APIs might be a problem. Right now this is not a problem since plugins are bundled with the editor. It also seems like the plugin's API has not changed a lot recently, so this might not be a complicated issue.
- With the impending migration to flatpaks, supporting out of tree plugins might take some effort. This thread implies that it might not be much, but I believe it is worth mentioning.
Best regards.