Description
Now that I'm back to work, one of the things that I want to tackle in Sailor is a feature to add extensions (or plugins, not sure how we should call it yet) to it.
The main reason I want to do that is to allow making new features that are not necessarily part of the Sailor so it doesn't become bloated. And my main motivator to do this, are two pending pull requests, one for adding an admin center another one for integrating sailor with elastic search, that I want to transform as not a part of default installation, but allow these features to be installed as a separate package.
I closed the past issue (https://github.com/sailorproject/sailor/issues/82) because this is something that I already started working before, and it was partly implemented, but I decided to reboot the discussion and start working on this again from scratch.
We can discuss this here, on this issue, or on a more synchronous way, on the gitter chat: https://gitter.im/sailorproject/extensions
Issues to think about
- naming this feature
- extensions, plugins, add-ons, other??
- namespacing of extensions
- what could happen when extensions have conflicting names
- what could happen when extension functions conflict with core functions?
- where the extension files should go
- how would they affect routing
- having a modified version of an extension
- how would the extensions be installed and patched
- luarocks to install + sailor command line client to activate it?
- how should extension specific configuration be done
- where should it go
- activating and deactivating extensions in a sailor app
- what happens when we have multiple sailor apps running
- how to load the extensions
- modifying the routing process?