GiS :: MOT
Memory Object Tree
| About | MOT | MOT changes history |
| MOT |
Brief overview
Basicly the idea laying behind MOT is simple. Memory Object Tree is a tree (more on this some days later) data structure that tracks down all changes made to it at some defined time points. The space / speed race is won by speed. Up to reasonable limits it's ok to sacrify space in favour of speed.
The mentioned tree data stucture can be literaly any tree data structure you can imagine. The only requirement is that it has to be serializable as defined arbitrary time points. As soon as it is serialized it can be used to track differences between its current and previous states. This is required for MOTs to be easily used from slow disks.
There are few important questions about the tree itself. The main one is: why actually tree? Why not something else, like any free branching data structure. The answer is: yes, it's ok for it to be an arbitrary branching data structure. More over it's ok for it to be a set of not-connected data elements as well (in this case hidden connections will be introduced).
Summarizing few lines above I've figured out several points about the implementation framework. For serialization / trees either Boost will be used of internally written data structures. For file management and many other high level (mostly applied features not included into MOT core) Poco library will be used.
Applications
Definitely it'll be a source-control sub-project. No name yet as no engine is ready yet. MOT engine will be embedded into source control software. It's really the main thing I'm going to do it at first. Later I can suggest several other applications still I'll try to maintain it as a source-control focused technology.
Target operating system, tools. development environment
Firstly I'll start with Windows version, compilable by MSVS2005 C++ compiler. As I'll use Poco and Boost that should be cross-platform. I think I'll not touch cross-platforming issues until the initial release is made available. If you have any concerns - please contact me either via commenting items or using the contact form on this site.
Process organization, collaboration, contribution etc
The first thing is it's not going to be an open-source project. At least at the first stage. We'll do it internally and you'll be able to try it out and use it on constant basis limited only by license agreement bounds. The agreement will be ready as soon as first release is made available. The agreement is gonna be really flexible, you'll see anyway, just wait until the first release.
Collaboration / contrubution efforts can not be underestimated or uncounted by me. Please drop a line in comments to any fresh item or via contact form and I'll contact you about the subject. I'm intending to do it myself on the first stage, still if you feel you can help - I'll discuss it with pleasure.

