doc: Add introduction
This commit is contained in:
parent
ec6ac7794f
commit
4857456d0f
1 changed files with 57 additions and 0 deletions
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in a new issue