-
-
Notifications
You must be signed in to change notification settings - Fork 200
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Plugin / Extension Support #111
Comments
Yes, a built-in pluggable system is being considered. |
Excelent! Thanks |
Are you thinking about a native plugin system or one based on an embedded scripting engine like Lua, Python, Wren, Gravity, etc...? (here for more). I strongly vote for the second option for lots of reasons. I can elaborate if needed. I would personally like to see Lua, Wren or Gravity, but there are other really lightweight, fast, simple and powerful languages to embed |
Surely it will be based on https://gitlab.gnome.org/GNOME/libpeas, so gtk bindings in any possible known language will be available. |
@gdelazzari |
Oh okay, this changes my perspective then. I didn't know about
In any case I just want to add a note on Python here. If My original idea was to simply statically link with the {Lua/Wren/Gravity/...} interpreter, create a context for each plugin, inject lots of Akira API calls into it and let the plugin script file run and do its job (super rough, there are clearly better ways, but that was a starting point). Wren in particular is quite fast and really lightweight (the source code is really small considering what it offers). |
That's one of the many reasons behind our stack decision, super flexible and compatible with many different languages 😄
I haven't played with libpeas enough to know the perfect answer, I only created plugins to an already enabled interface, but for what I know, libpeas gives lot of flexibility, allowing to create dedicated GInterfaces and extension points for the plugin to use, having full control on which aspects of the application can be touched and when. We will have a series of tests in place, not sure if we'll have a 100% test coverage, but I'd like to aim to at cover at least 90% of the core features, and we won't accept any plugin which breaks a test. Plugins will be manageable with a simple UI to activate/deactivate them accordingly (like it happens in elementary Code), and we won't hard code any of them out of the box. We will probably have a public repository of approved and actively maintained plugins, which Akira will be able to connect to and let the user decide which one to download and install, but we won't have any native plugin shipped inside the main app. For the rest, it will come down to a thorough human review and writing tests to identify bottlenecks and performance issues. I'm sure this workflow will take a better shape and will evolve with time after we open up Akira to accept plugins and extensions, but for now, as a first approach, this seems like a decent plan. |
Wouldn't it be possible to add each languages support separately in term of dependencies. Because even if Python is heavier than Lua, I'd prefer to use it since I wouldn't need to dig into the documentation of yet another language. Saving time is definitely more important IMHO than saving a few MB of RAM or disk space especially knowing that Python 3 is already installed on most of the Linux distro vs. Lua. Also, since Akira target designer, graphist and web developer, I think having a binding for JS (Gnome has something for that IIRC) would make a lot of sense because lots of us use it daily. |
@dannycolin these are all great suggestion we will definitely explore. Regarding JS, I think we will most likely have it out of the box for when we'll implement a Prototyping section, since we want to offer a scripting section to control the animation of shapes and SVGs, adding javascript since like a decent approach. Once again, these are just speculations and random thoughts based on nothing concrete, so, don't quote me on that 😄 |
Another point in favor of JavaScript is that Sketch, Adobe XD, and Figma all use JS for their plug-ins. A developer of a plug-in for one of those would have a much easier time porting over their plug-in to Akira if it supported JS as well. (Right now, I'm making a simple Sketch plugin, so this would be very relevant for me as well.) |
Not an issue but rather a feature request.
Do you plan on supporting plugins to extend functionality.
Obviously, Sketch, inkscape and gimp all have plugins that add a lot of functionality.
The text was updated successfully, but these errors were encountered: