This is an all in one application server written in aroop.
Vala Makefile Lua C
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
apps
autoload
build
core
docs
libs
linux
main/main
tests
.gitignore
README
README.md
TASKS.md
configure.lua

README.md

icon

Shotodol

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,

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.

Visualizing shotodol

Here is the artistic representation of shotodol core modules.

shotodol_architecture

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_module_component_command_shell

Preparation

User interaction with shotodol

Interactive shell

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.

Shake script

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.

More on Shake script.

Config files

FILLME

Growing

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

  • 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.

Tasks

Tasks

Public projects

There are some public projects based on shotodol. They are namely,

Readings

Documentation