Backup repository for imag-pim.org / imag https://imag-pim.org
Find a file
2016-03-19 16:10:16 +01:00
bin Add ascii-art logo 2016-02-01 22:36:46 +01:00
doc doc: Adjust documentation to match implementation 2016-03-16 16:46:54 +01:00
imag-counter Implement list() for imag-counter 2016-03-19 15:40:01 +01:00
imag-link Add implementation 2016-03-19 15:16:20 +01:00
imag-store Adapt to new function interface of build_entry_path() 2016-03-19 14:48:09 +01:00
imag-tag imag-tag: Fix use of build_entry_path() 2016-03-19 14:48:09 +01:00
imag-view Remove exit(1) calls where possible and replace by trace() calls 2016-03-11 16:40:13 +01:00
libimagcounter Add Counter::all_counters() to get all counters 2016-03-19 15:40:01 +01:00
libimagentryfilter Add filter: VersionInRange, VersionOutOfRange 2016-03-18 14:33:43 +01:00
libimaglink Add external-link validation before setting 2016-03-11 15:15:02 +01:00
libimagrt rt: Add Store::new() config passing 2016-03-16 16:46:54 +01:00
libimagstore Add encoding error if typeconversion fails 2016-03-19 15:15:04 +01:00
libimagtag Add tag helper to execute the CLI spec for an entry 2016-03-18 15:24:11 +01:00
libimagutil trace: Add missing newline 2016-03-12 16:06:10 +01:00
.editorconfig Add editorconfig configuration file 2016-01-11 19:47:51 +01:00
.gitignore Add Cargo.lock to .gitignore 2016-01-22 20:14:54 +01:00
.travis.yml Rewrite travis.yml to build all the things 2016-02-15 14:19:18 +01:00
CONTRIBUTING.md Update {README,CONTRIBUTING}.md to contain more detailed information 2016-03-10 12:40:04 +01:00
default.nix Move to rust stable (1.4 atm) so we can use clap 2015-12-05 10:45:33 +01:00
LICENSE Add LICENSE file 2015-11-08 17:35:49 +01:00
README.md Update {README,CONTRIBUTING}.md to contain more detailed information 2016-03-10 12:40:04 +01:00

imag

Imag is a CLI PIM suite with a nice API-ish commandline interface, so you can integrate it in your tools of coice (Editor, MUA, RSS reader, etc etc).

Goal

Our goal is to

Create a fast, reliable, forwards/backwards compatible commandline personal information management suite which covers all aspects of personal information management, consists of reusable parts and integrates well with known commandline tools.

We try to accomplish these requirements:

  • "fast": We use the awesome, fast and safe programming language "Rust"
  • "reliable": We try to test every aspect of our software. Our build process ensures that the build breaks whenever a library interface changes and the modules which use the library are not updated.
  • "forwards/backwards compatible:" Our (plain text) on-disk data format and storage library both ensure that incompatibilities are captured and resolved (using semver)
  • "commandline": We ensure that everything can be done by commandline calls, for some modules there might be a curses-like UI, but there are no graphical clients and there never will be any within this codebase. We use clap for commandline-interface building and we try to keep the interface easy and consistent between modules.
  • "personal": We store everything as plain text in a store inside the users $HOME directory. There will be a version-control (most surely git) hook integrated to sync between several machines. There are no multi-user features included or planned at the time of writing.
  • "information management": We want to give the user the possibility to put every single information about their personal lives into the store and we try hard to provide a sane interface to query and retrieve data from this database.
  • "covers all the aspects of personal information management": We want to provide modules for:
    • contact management
    • calendar
    • diary
    • notes
    • personal wiki
    • news (rss)
    • passwords
    • images
    • music
    • movies
    • personal project management
    • podcast management
    • ledger
    • mail
    • bibliography management
    • ... and many, many more.
  • "constists of reusable parts": Every functionality is implemented as library. The binaries we ship are just commandline-interace-to-library-interface translators
  • "integrates well with known commandline tools": We do not re-invent the wheel. We do not implement "yet another password manager", but use the standard unix password manager, do not implement a news reader, but use newsbeuter, do not reimplement a mail reader, etc etc. We do not copy images, movies or other data to the store but "link" them into the store, so you can use imag tools to query and access this data, but still live with your beloved commandline apps. We do not want to duplicate work but reuse as much as possible. You don't like one of the applications we use (for example pass as password manager)? Sure, feel free to submit patches so the user is able to switch the used tool, as long as it doesn't break the workflow. We will happily merge them!

Current state of development

This application is in really early development.

We have implemented the very core of the system: the store library. There's also some progress on utility libraries for linking entries, tagging and the hook system of the store is in progress as well. There is also one commandline application: "imag-store" (the "store" subcommand) available by now, but this is meant for developers and debugging purposes as it provides direct core-level store access.

Though, the very core of the system is stable and nothing prevents you from contributing and implementing a module, though some convenience is not yet provided (as the libraries are work-in-progress).

Documentation

For detailed information, please read the documentation (You can either read the Markdown files or compile it to HTML/PDF using pandoc).

License

We chose to distribute this software under terms of GNU LGPLv2.1.

This dicision was made to ensure everyone can write applications which use the imag core functionality which is distributed with the imag source distribution.