Module Development
Modules are useful tools for encapsulating the startup changes to Lynicon needed to provide a certain functionality. Primarily the purpose of this is to allow that functionality to be exported as a plugable unit for other Lynicon implementations. However it can also be useful as it provides a convenient place to make certain changes to Lynicon's functionality such as:
- Adding event handlers
- Making changes to the Lynicon UI
- Encapsulating code needing to be run at startup
- Launching long-running background startup processes
- Working with cached data and ensuring it stays up to date as changes are made to the CMS content
The power of Lynicon's module system is one of its differentiating features. We are not aware of another CMS whose module system matches it. The level of extensibility of Lynicon allows it to include standard CMS features in modules which can be removed. Features such as publishing impose an overhead on most system operations and increase the complexity of the UI. If such a feature is not needed, there is a benefit from removing it. Most CMSs do not allow themselves to be stripped back in this way.Lynicon also contains a powerful system for respecting the dependencies between modules, and for allowing them to specify where their event processors should come in the chain of processors for a given event. These both make it possible for modules to both take advantage and build on functionality in other modules, and avoid having the functionality of two modules clash. It also makes the CMS as robust as possible to anything which causes a module to fail to start up. The ideal is that such a failure would not produce runtime errors, only the loss of functionality.