Command line interface for Canorus
[Work in progress]
You can find information regarding the CLI here.
As applications grow bigger and bigger they tend to include many features; become very complex. User wastes too much time by clicking through the application to use a particular feature. Data representation may also be unclear when user wants to modify certain parts of the data. The CLI should deal with these (and other) problems.
What should the CLI do
- simplify doing repeated tasks
- simplify interaction with application
- Provide a facility to easily debug/test scripts and plugins.
- Get users familiar with data representation, encourage and learn them to write scripts (and then plugins)
The CLI is basically a plugin. A good CLI must be based on a good plugin architecture. Therefore the plugin architecture must be redesigned:
- Parallelism: Plugins have to be able to run in parallel to each other. They can be put into threads (stability issues, easy to implement) or processes (potentially stable, hard to implement). The decision has been made to put plugins into separate process(es).
- Inter-plugin communication: plugins should be able to communicate with each other. This is important because of the CLI, and because of building 'advanced plugins'.
When putting plugins into processes, the IPC must be well designed and synchronization issues must be addressed. The plan is to firstly implement interprocess then interplugin communication, of course.
Final comments, thoughts
I believe that this work bring new options to the Canorus. It should speed up application development, bring new features very fast, and make them stable.
I also believe that a good complex application should include well-designed plugin architecture, and a CLI. It would help users to actually use the application fast and in complex ways. (It's worth to mention that IPC and serialization to files are interconnected). The goal of this project is to make a plugin architecture (and a CLI if possible) also reusable in other applications in an easy way.
I, Štefan Sakalík, am the main developer of CLI (+incidentals). You can mail me to rabbit6440 at gmail.com.