Yesterday I got asked what the usecases for imag are. I tried to explain it
and afterwards thought about it the whole night.
I already wrote about
the purpose of imag,
but I guess some usecases would explain even better what imag is for.
So now I try to explain three usecases for the
imag commandline personal information management suite.
Please keep in mind that these are the usecases how I would describe them as
final goal of imag. None of the following is implemented and all of this is
music from the future! But that's the ultimate destination of the project.
You get an Email from Sally.
A hook script informed imag, so it already knows about the mail, has fetched
the contact information from the email header and linked the email to the vcard
of Sally.
In the mail, Sally asks you if you want to cook with her and if yes, you
should buy eggs.
You type in a shortcut to call imag.
You tell imag that you want to create a new shopping-list.
imag creates a new shopping list. Because you called it from a mail, it asks
you to link this mail. After you created the shopping list, imag creates a
task in your todo tool for you. It asks you whether you want to create a
calendar entry for the shopping list.
Later you add things to the shopping list.
You add potatoes and sweet chestnuts.
imag recognizes the change in the shopping list. It notices that you had
similar shopping lists that contained Eggs, potatoes and sweet chestnuts and
that they were linked to a recipe. Imag asks you whether you want to link that
recipe to the current shopping list.
After you went to the mall, you type the cash slip into your ledger.
imag recognizes that you bought stuff you had on a shopping list that isn't
marked as done yet and therefor asks you whether the shopping list can be
marked as done.
You mark the shopping list as done.
imag links the ledger entry with the shopping list.
imag asks you whether it should mark the linked todo entry as done for you.
Yes, you want to close this todo entry.
Because you went shopping before the calendar entry, it asks whether it should
delete the calendar entry for you.
You delete the entry.
imag recognizes that you linked an email – but no response for that email
exists. So it asks you whether you want to reply to Sally.
You reply to the mail and tell Sally that you buyed the things and you'd love
to come over and cook together.
You query imag for that recipe imag told you about and add it to the mail,
asking Sally whether this would be appropriate.
imag has already linked your response to the original mail from Sally.
imag also linked the recipe to your response.
imag recognizes that there are notes attached to the recipe and asks you
whether they should be in the mail as well.
You type in another shortcut to create a new calendar entry “Go to Sallys,
cook with her”.
imag links that calendar entry.
imag recognizes “Sally” in the subject of the calendar entry and asks which
Sally from your contacts should be linked to the calendar entry.
You were at a party and met Amelie. You add her contact information to your
contact application.
imag knows that contact now, too.
You tell imag that you met Amelie at the calendar entry for yesterday
evening.
imag links the contact with the calendar entry from yesterday evening.
Because the calendar entry is linked with a location and the website of the
club, imag knows that these pieces of data are in relationship with
eachother.
A few weeks later you're typing an email to Dave, asking whether he would
come with you to the club. You query imag for the website of the club.
imag links that email with your bookmark of the website of the club.
Your friend replies yes (imag links the reply with your mail), so you add a
calendar entry.
imag recognizes that you linked the website of the club and a calendar entry
with mails between you and Dave.
It asks you whether it should show you other contacts that are somehow in
relation with calendar entries that are related to the bookmark of the club.
You find out that you met Amelie some weeks ago at this club.
You invite her, too.
Further, imag tells you that it knows from your ledger that you spend around
50 bucks last time you had an event that was linked with that club (on cola
and water, of course). It also knows that you have about 20 bucks in your
pocket right now.
imag asks you whether you want to create a task “Go to bank”.
Yes, you want that.
imag finds out that you have time tomorrow at 4pm and asks you whether you
want to create a calendar entry for this at that time.
Yes, you want that.
Because the other calendar entries from tomorrow are linked to locations
downtown, imag infers that you are in this location and finds the best bank
nearby for you, asking you whether that location should be linked to the
calendar entry.
Business, Business!
You get an email from your boss, she tells you that you have to fly to another
country tomorrow, to attend an important meeting with a customer. She sends
you a icalendar file containing information about the flight.
imag already knows that this calendar entry has to go to your business
calendar, because the mail was from a contact from your business contacts.
You add the calendar entry via a shortcut from your mail client to your
business calendar.
imag recognizes that this is a business trip and asks you whether it should
search for packing lists.
It could also create a todo for you “Pack things for business trip” and link
the packing list to it.
Hell yeah, you want that!
Because all your flights are linked to a location that is about 50 miles away
from your home, imag asks you whether you want to create another calendar
entry “Drive to Airport” right before the flight.
Of course you want that.
Because there is another calendar entry which collides with the trip to the
airport, imag asks you whether you want to create an email to the contact
linked to that calendar entry.
imag has already figured out an alternative date for the meeting you have to
postpone.
You might call me crazy, but yes, that is exactly the way imag should work
in the end. Of course, this is far far away in the future as of now, but I do
not think that it is unachievable!
How the interaction with imag works in detail is not described here, of
course. I don't know it! It will grow with the project. Maybe all the above
will be done via commandline calls, maybe there will be some fancy curses UI
or maybe there will even be a web frontend (though this is less likely).
imag is a tool for nerds, from nerds. So it will require some scripting and
fiddling to get imag integrated in all the tools. imag tries to provide a
convenient interface for all these things, but not a out-of-the-box solution
(maybe in 10+ years, but it is not a short- or mid-term goal).
I hope that these use cases explained some things and helped you understanding
the purpose of imag.
tags: #linux #open source #programming #rust #software #tools #imag