This is an all in one server environment written in aroop(aka Vala programming language with aroop profile). The target of the project is to provide,
- A module writing system to extend existing functionality. Read more.
- An interface(plugin system) where the modules communicate. Read more.
- An interface where the user can communicate. Read more.
The idea here is to provide an environment to write a service via modules. There are some modules available in seperate projects based on shotodol. But the shotodol itself is kept small and simple. It minimises the required information overhead to write plugin/feature. There is a tutorial to support the development.
The name shotodol means hundred petals(literally) or the lotus flower. In our project the petals are analogical to modules and the flower itself is analogical to the shotodol environment which holds them(modules) together. see name shotodol.
In functional mathematics we define a function f(x,y,z) to be a relation between the domains of x,y and z and the range of f(x,y,z). Here shotodol can be defined like the following,
shotodol = f(x,y,z, ...) where x,y and z are the extension points.
These extension points can be defined by plugins. see more analogies.
Here is the artistic representation of shotodol core modules.
The above diagram can be reduced to following mathematical function form,
- command is element of {quit,module,plugin,help,rehash}
- commandServer(command) is a function of command
- console(commandServer) is a function of commandServer
- shotodol = f(console, ..)
Here is the shotodol component diagram showing interaction between plugins.
Shotodol by default(though not mandatory) comes with a console interface. User can put text commands to do certain tasks. It is called shake shell. User can put help command to know more about the available commands.
Shotodol comes with a builtin parser for shake script. It contains the shell commands discussed above listed under a rule. It is inspired by Makefile rules. It basically loads prepared command blocks by these script files and execute them when needed.
FILLME
Shotodol is meant to be grown by the developers. It is possible to grow it by adding new modules. The modules generate plugins and interfaces to work togather. The builtin modules are there as examples.
- Debugging
- Testing There are some test cases in 'tests' directory. User can , for example, change directory to tests/core/profiler/server and make to test the profiler.
There are some public projects based on shotodol. They are namely,


