Rewrite README, squash some content to save lines

This commit is contained in:
Matthias Beyer 2015-12-29 16:41:20 +01:00
parent 568026c52c
commit bdcfa34449
1 changed files with 59 additions and 107 deletions

166
README.md
View File

@ -21,23 +21,11 @@ see [Linking](#Linking))
Some modules might not want to store content there, for example you don't want
to put your icalendar files in there. So the calendar module just crawls through
your ical files and puts the scanned meta-information into the store. Of course,
if the content of the ical file changes, the store entry does not. It still
points (via its JSON content for example) to the same file. So changes are not
tracked (We can argue here whether we want to copy the contents to the store for
ical and vcard files, but we cannot argue on for example music files).
your ical files and puts only a link and some hashsums (for refinding on content
move) to the store. Changes are not tracked via this model.
If a (for example ical-)file gets removed, the store entry gets invalid and has
to be garbage-collected.
> The current model is not fixed yet. I'm thinking about copying .ical and
> .vcard, basically all text files, to the store.
> This is not possible for media files like music or movies, though. Also this
> is not feasible for documents like .pdf or similar.
Each of the following modules has a short description including a table what
core features are required to get it working.
### Linking
The UUID/SHA hashes in the file names can be used to connect two store entries.
@ -89,40 +77,75 @@ should't touch the content at all.
Here is a short overview what are the modules like:
| Module | Indexer | Header | Hdr-Format | Content |
| :---------------- | ------- | ------- | ---------- | ------- |
| Bookmarks | | X | JSON | |
| Contacts | X | X | JSON | |
| Calendar | X | X | JSON | |
| Notes | | X | YAML | X |
| Mail | X | X | JSON | |
| Wiki | | X | YAML | X |
| Todo | | X | YAML | |
| Shoppinglist | | X | YAML | |
| Bibliography | X | X | JSON | |
| News | X | X | JSON | |
| Image | X | X | JSON | |
| Movie | X | X | JSON | |
| Music | X | X | JSON | |
| Module | Indexer | Header-Format | Content | Expl | Dep |
| :----------- | ------- | ------------- | ------- | ------- | ----------- |
| Bibliography | X | JSON | X | .bib | Notes |
| Bookmarks | | JSON | | | |
| Calendar | X | JSON | | | |
| Contacts | X | JSON | | | |
| Image | X | JSON | | | Notes |
| Mail | X | JSON | | | |
| Movie | X | JSON | | | Notes |
| Music | X | JSON | | | Notes |
| News | X | JSON | | | |
| Notes | | YAML | X | Content | |
| Shoppinglist | | YAML | | | Notes, Todo |
| Todo | | YAML | | | Notes |
| Wiki | | YAML | X | Content | |
Explanation:
- An "Indexer" Module does only index some data and store the indexed meta
information in the store
- "Header" means that the header part of a store entry is used
- "Hdr-Format" Which format is chosen for the header. Basically: YAML if the
- An "Indexer" Module does only index some data and stores only some information
on how to content
- "Header-Format": Which format is chosen for the header. Basically: YAML if the
user might want to edit the header, otherwise JSON (pretty).
- "Content" means that the content part of a store entry is used
- "Expl": What the content part of a file is used for. "Content" means simply
user content.
- "Dep" means that the module uses this other module as a dependency for
extending its own functionality
### External Dependencies
| Library | Optional | Module |
| :------------ | :------: | :------- |
| vcard | | Contacts |
| icalendar | | Calendar |
| XDG | X | Contacts |
| | X | Calendar |
| | X | Notes |
| | X | Mail |
| | X | Wiki |
| | X | Todo |
| | X | Shopping List |
| | X | BibMan |
| | X | Music |
| | X | Movie |
| | X | Image |
| Markdown | | Notes |
| | | Wiki |
| Maildir | | Mail |
| BibTex parsing | X | BibMan |
| git-annex | X | BibMan |
| | X | Music |
| | X | Movie |
| | X | Image |
| Exif | X | Image |
| id3 | X | Music |
| RSS/Atom | | News |
(Optional means that these things are optional for the main functionality, but
should be implemented at some point to offer powerful functionality)
### Bookmarks
Bookmarks should be stored in a simple format:
```json
{ "URL": "https://github.com", "tags": ["ducks", "r", "great"]}
{ "URL": "https://github.com", "TAGS": ["ducks", "r", "great"]}
```
| Required core feature | Purpose |
| Required util feature | Purpose |
| :------------------------------------ | :------------ |
| XDG-open (Browser) | External program |
@ -131,29 +154,15 @@ Bookmarks should be stored in a simple format:
Contacts are just read and indexed by `imag`, to create an internal index of
them and to be able to refer to.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| vcard file format parsing | Data access |
| XDG-open (Mail program) | External Program |
### Calendar
Calendar are just read and indexed by `imag`, to create an internal index of
them and to be able to refer to.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| ical file format parsing | Data access |
### Notes
Just plain text notes.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Linking to other store entries | Data Link |
| XDG-open (Editor) | External Program |
### Mail
`imag` should be able to index all your mail and make them accessible through
@ -163,26 +172,12 @@ notes, etc etc. to your mail.
Some of these things (like linking contacts, calendar entries) should be
linked automatically.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Parser: Maildir | Data access |
| Parser: mbox | Data access |
| XDG-open (Mail program) | External Program |
| XDG-open (Editor) | External Program |
### Personal Wiki
`imag` should contain a complete personal wiki software. It should contain of
simple markdown files which have a YAML header, nothing too special for the
first step.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Parser: Markdown | Data parsing |
| XDG-open (Editor) | External Program |
| XDG-open (Mail program) | External Program |
| XDG-open (Browser) | External Program |
Some more ideas:
- Extract URLs and put them into store as Bookmarks
@ -192,21 +187,9 @@ Some more ideas:
`imag` should also contain a full todo-tool. I'm thinking about integrating
taskwarrior through a wrapper here.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Library: taskwarrior | Implementation |
| XDG-open (Editor) | External Program |
### Shoppinglist
Simply dot-and-tick lists.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Module: Todo-List | Implementation |
| XDG-open (Editor) | External Program |
- Sub-form of the Todo-List module
Simply dot-and-tick lists, uses Todo and Notes in combination.
### Bibliography management
@ -214,53 +197,22 @@ BibTex would be the first step, maybe we should be able to add the actual PDFs
here as well... didn't waste too much thoughts on this by now. If we have the
PDF data, we need git-annex.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| BibTex parsing | Data parsing |
| Backend: git-annex | Data parsing |
| XDG-open (Editor) | External Program |
| XDG-open (PDF viewer) | External Program |
| XDG-open (Office suite) | External Program |
### News (RSS)
Just indexing, reading news is not task of `imag` and so isn't syncing.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Parser: RSS | Data parsing |
| Parser: Atom | Data parsing |
### Image
Just indexing photos.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Backend: git-annex | Data parsing |
| Image metadata reading | Data parsing |
| XDG-open (Image viewer) | External Program |
### Video
Just indexing movies.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Backend: git-annex | Data parsing |
| Movie metadata reading | Data parsing |
| XDG-open (Movie viewer) | External Program |
### Music
Just indexing music.
| Required core feature | Purpose |
| :------------------------------------ | :------------ |
| Backend: git-annex | Data parsing |
| Music metadata reading | Data parsing |
| XDG-open (Music player) | External Program |
# License
This code is released under terms of GNU GPLv2.