Introducing Sider

For a couple of years I have been working on a program, Sider (stands for Structured Information Document Editor). I probably should have written about it some time ago, but I think I wasn't confident enough to do it. I am now. It's a project I'm working on full time and I hope it can make many people's life easier (as well as provide some income for me. I need to eat too you know :) )

Sider is a data management platform. It aims to store information in a data structure that fits it the best, and show it in a manner that fits the user.It provides the tools to describe the data (types), how to show it (views) and takes care of storing the actual information in the documents. Sider makes it easy to relate different data to each other through inheritance, referencing and composition. For example, one type can describe an abstract tree and another describes an HTML document. Both of the types can be combined into a 3rd type to create a tree with an HTML in each node. This could be used to store notes.

This support for any combination of data types is Sider's main and unique benefit. It makes it possible to use a single program to store all information together, even if different parts of it have very different structure. There are a lot of potential benefits because of that. Searching, cataloging and managing all of the information becomes much easier.

Document

All data in Sider is stored in the documents. Each document usually consists of a number of smaller documents. In above example of a tree with HTML nodes the tree is a document and each node is a document. This is a natural way of thinking about any information. It consists of smaller parts.

Such implementation with each document consisting of smaller number of documents promotes reuse and actually makes it easier to create complex combinations. The rules on how to describe data are simple, unique and easy to understand, but the can be combined to create a large number of complex combinations.

Type

Each document is of some type. The type describes the structure of the data in a document, how to create a new document and how it can be modified.

A type is similar to a class and a document is an object. A type can consist of other types, just like a class can have fields of other classes. A type can also inherit from another type to add support for a new type or extend existing structure. This mechanism is similar to the OO inheritance but more flexibl . This makes it easier to create new types by combining and reusing existing code. In many instances it's possible to slightly modify the base type to achieve the desired result. Inheritance also ensures data structure can be maintained easily.

There are abstract types to provide common structures (a tree, a list, a table, and so on) and atomic types describing smallest unit of the data (phone number, person name, and so on. Any information that is hard to logically subdivide into anything useful). In most cases the user will see documents of concrete type, consisting of the abstract and the atomic type combinations.

View

Type just describes the data, but doesn't show it. Views are used for that. Through a view user gets to see the document and interact with it. There can be any number of views for any type to present the document in any suitable way. A common example is a table of records. It can be shown just as a data grid, as a chart or a report.

Conclusion

All of that is possible with some of the existing programs, but Sider takes it to the next level. It's a foundation on top of which new data management applications can be built. It takes care of finding types and views, loading them and initializing. It provides inheritance for the types, persistance and shows the document with the correct view. It hides all common code that developers have to write over and over again (save, load, etc) and helps him focus on solving the problem at hand and adding important, unique functionality.

Documents can reference each other (and inside of each other) so all the information is connected. A PIM module for example, contacts can link to personal notes, notes can reference plans, everything is connected.

Sider supports a system of plug-ins to provide horizontal functionality, such as spell checking, for different types and views.

In the next post I'll talk more about why I'm creating this platform and what technologies I use to make it work.



Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Posted by: Slava
Posted on: 7/22/2006 at 12:43 PM
Categories: Sider
Actions: E-mail | Kick it! | DZone it! | del.icio.us
Post Information: Permalink | Comments (0) | Post RSSRSS comment feed

Related posts

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

Friday, November 21, 2008 3:42 AM