Module Architecture

The core modules have various extension points, where new modules can add hooks of various kinds.

Any module can provide ways to extend itself.

Modules should have an initialiation function that is called when they are set up.

Modules can define other modules they are dependent on, the other modules will be started up first.

(This suggests using PicoContainer or similar?)

Modules are mostly authored in the main Skycastle repository, although third parties could also implement modules. The server admin should trust a module before adding it.

Adding a module does not need to be possible to do on the fly, it's ok if the server is restarted when it is done.