2016-01-08 17:28:31 +00:00
|
|
|
# Introduction {#sec:introduction}
|
|
|
|
|
2017-08-12 21:26:02 +00:00
|
|
|
This document is the user documentation for imag, the personal
|
2018-02-05 15:23:26 +00:00
|
|
|
information management suite for the commandline. Besides being a documentation,
|
|
|
|
it serves also as "roadmap" where this project should go.
|
2017-10-14 19:20:45 +00:00
|
|
|
|
|
|
|
**Basically: This is Hobby stuff. Expect incompleteness, false statements and
|
|
|
|
generally read with big grain of salt.**
|
2016-07-08 15:51:18 +00:00
|
|
|
|
|
|
|
If you have any objections, suggestions for improvements, bugs, etc, please file
|
2017-10-14 19:20:45 +00:00
|
|
|
them.
|
|
|
|
A way to reach out to the imag project maintainer(s) is described in the
|
2018-02-05 15:23:54 +00:00
|
|
|
CONTRIBUTING file of the repository or in this document, in the appropriate
|
2017-08-12 21:26:02 +00:00
|
|
|
section.
|
2016-01-14 10:55:35 +00:00
|
|
|
|
|
|
|
## The Problem {#sec:intro:problem}
|
|
|
|
|
2017-08-12 21:26:02 +00:00
|
|
|
The problem imag wants to solve is rather simple. When the project was
|
2016-01-14 10:55:35 +00:00
|
|
|
initiated, there was no PIM-Suite available which
|
|
|
|
|
|
|
|
* was for this domain of users ("power-users", "commandline users")
|
2017-08-12 21:26:02 +00:00
|
|
|
* uses plain text as storage format
|
|
|
|
* was scriptable
|
|
|
|
* was modular
|
2016-01-14 10:55:35 +00:00
|
|
|
* 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.
|
|
|
|
|
2017-10-14 19:20:45 +00:00
|
|
|
Also, having an all-in-one scriptable modular commandline personal information
|
|
|
|
management suite seemed nice at the time and still does.
|
|
|
|
|
2016-01-14 10:55:35 +00:00
|
|
|
## The Approach {#sec:intro:approach}
|
|
|
|
|
|
|
|
The approach "imag" takes on solving this problem is to store content in a
|
2017-08-12 21:26:02 +00:00
|
|
|
"store" and persisting content in a unified way.
|
|
|
|
Meta-Information is attached to the content which can be used to store
|
|
|
|
structured data.
|
|
|
|
This can be used to implement a variety of "domain modules" using 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
|
2016-01-14 10:55:35 +00:00
|
|
|
movies to the store, but indexes them and stores the meta-information in the
|
2017-08-12 21:26:02 +00:00
|
|
|
store.
|
2016-01-14 10:55:35 +00:00
|
|
|
|
|
|
|
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
|
2017-08-12 21:26:02 +00:00
|
|
|
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.
|
2016-01-14 10:55:35 +00:00
|
|
|
|
2016-07-08 15:51:18 +00:00
|
|
|
This is a technical detail a user does not necessarily need to know, but as imag
|
|
|
|
is intended for power-users anyways, we could say it fits here.
|
|
|
|
|