04000-modules.md 1.9 KB

Modules {#sec:modules}

A module is a functionality of the program. There is a huge list of modules available in the imag core distribution.

From a naming perspective, we do not differ between low-level and high-level modules. Some of the modules shipped with imag cover core functionality such as linking, tagging or references to files outside of the store or even the store interface itself (which by the way shouldn't be used by the end-user at all). Others cover things like diary, notes, wiki or bookmarks.

We try really hard to offer a consistent commandline user interface over all of these modules.

The following sections describe each module in detail, including its purpose and its provided backends.

A backend is simply an external tool imag might be able to use. For example, the imag-todo module offers a taskwarrior interface, so imag itself does not cover anything which has to do with todo management, but lets you continue using taskwarrior for that (which does a really good job). So what does the imag-todo module do? Well, it offers you ways to track tasks created in taskwarrior and putting files which can be used as references to tasks then. For example, if you create a task in taskwarrior, you end up with an UUID for this task. imag stores this UUID in a store entry and you are now able to imag-link this file with other files in the store. This way you can link taskwarrior tasks with other data (of course, imag-todo offers some more commands, for searching tasks and so on).

But what if you do not like taskwarrior? That's what backends are for. The goal of imag is to provide backends for not just one tool which implements a PIM aspect, but for many. So you can change the configuration for imag-todo to not use taskwarrior but some other todo tool.

(This is all hypothetical by now because these things are not yet implemented. Anyhow, we aim for exactly what is described above)