From 4857456d0fe2e61138dfa07b4b559748eaa22d7a Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Thu, 14 Jan 2016 11:55:35 +0100 Subject: [PATCH] doc: Add introduction --- doc/src/01000-intro.md | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/src/01000-intro.md b/doc/src/01000-intro.md index e036e5a4..eb504776 100644 --- a/doc/src/01000-intro.md +++ b/doc/src/01000-intro.md @@ -1,2 +1,59 @@ # Introduction {#sec:introduction} +In the following work, we define the architecture, internal interfaces and the +implementation of `imag` (called "the program" in the following chapters). + +The program is intended to be an _Personal Information Management Suite_ +(PIM-Suite), featuring all components such a suite should have, including +contact management, calendar, todo-list functionality, etc. +The program is intended to be used by so-called "power-users", therefor it is a +commandline application which offers a polished interface to the user and is not +bound to an editor, e-mail reader, RSS reader, etc. The program uses standards +as icalendar, vcard, RSS/Atom, Markdown, etc. + +The development of this program may adapt other programs. For example, the +todo-module may be implemented with the "taskwarrior" application, if possible, +so we try to re-use functionality which is implemented elsewhere and where other +people put a lot of effort into. We clearly do not want to duplicate +functionality, work and effort or implementations. + +"imag" is a single-user, one-shot program. It is not intended to be used by +multiple users with the same storage at the same time. +This may change in the future. + +## The Problem {#sec:intro:problem} + +The problem "imag" wants to solve is rather simple. When the project was +initiated, there was no PIM-Suite available which + +* was for this domain of users ("power-users", "commandline users") +* contained functionality to link content + +The latter point is the bigger one: "imag" wants to offer the ability for users +to link content. This means not only that a contact may be linked to a +date, but that _all things_ can be linked together. For example that a wiki +article can be linked to a date which is linked to a todo which is linked to a +note which is linked to a contact. + +## The Approach {#sec:intro:approach} + +The approach "imag" takes on solving this problem is to store content in a +(per-user) global "store" and persisting content in a unified way. +Meta-Information is attached to the content which can be used to, for +example, query the store. +While content is stored in _one_ place, "imag" does not duplicate content. +"imag" does not copy or move icalendar files, emails, vcard files, music or +movies to the store, but indexes them and stores the meta-information in the +store, making these things linkable this way. + +Detailed explanation on this approach follows in the chapters of this work. + +## Implementation {#sec:intro:implementation} + +The program is written in the Rust programming language. + +The program consists of libraries which can be re-used by other projects +to implement and adapt "imag" functionality. An external program may use a +library of the "imag" distribution to store content in the store of "imag" and +make it visible to "imag" this way. +