Skip to content

Repo Organization

Vesyla eco-system is constructed by many modules. One can create a new app in this eco-system by combining several modules.

Module Type

Executable Module

The executable modules create executable applications. If written in C++, it will be compiled to an executable binary file.

Data Module

The data modules define classes for various data structures. In vesyla eco-system, we encourage developer to define pure data structure using descriptive language or library. The protobuf (version 3) from Google is a very good libarary for such purpose because it's language-neutral and platform-neutral.

Besides the pure data structure, developers should also include a handler class to provide a data access interface. Several programming language specific interfaces could be provided.

Process Module

The process modules manupilate the data structer defined by other data modules. The process modules usually implement one or more algorithms to refine the data structure.

Utility Module

The utility modules include the basic functionality that is needed by the majority of other modules, such as event logging, configuration file searching, and global variable mantainance.

Module Implementation

Each module is implemented by github submodule function.

Module Testing

Each module should have a top-level folder for testing. For executable module, the tests could be overall general testcases. We recommend to use the Robot Framework to automatically run all testcases. For other type of modules, the tests are mostly unit-tests. C++ based modules can easily be tested via standard boost test library

Organization

The top-level repo is called vesyla suite. It contains all the other repo as modules. The flat and shallow dependency strucutre makes it easier to manage. There are two major executable modules: vesyla and manas.

Branch

We recommend to use two branches in each repo: master and develop. The master branch keeps stable version of the repo and the develop branch is for adding new features and fixing bugs. The develop branch should be merged/rebased to the master branch at least once per month.