summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2016-01-14 11:55:35 +0100
committerMatthias Beyer <mail@beyermatthias.de>2016-01-14 17:00:49 +0100
commit4857456d0fe2e61138dfa07b4b559748eaa22d7a (patch)
tree7821d157904665f70ded03b7d06c8dc145c8edfa /doc
parentec6ac7794fd5a9399890dc6062bb358507bba527 (diff)
doc: Add introduction
Diffstat (limited to 'doc')
-rw-r--r--doc/src/01000-intro.md57
1 files changed, 57 insertions, 0 deletions
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.
+