What did I do on May 1st 2004? Visualize your (digital) life in Org-mode
Pull request Compare This branch is 15 commits ahead, 232 commits behind novoid:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


## Time-stamp: <2012-07-12 11:45:02 vk> ## This file is best viewed with GNU Emacs Org-mode: http://orgmode.org/

What were you doing on February 14th of 2007? On which tasks were you working on that very day you met your girl friend? When was the last appointments with your dentist? Who called you on telephone during that meeting with your customer last month?

Most people can not answer such questions. With Memacs you can!

Memacs extracts metadata (subjects, timestamps, contact information, …) from many different existing data sources (file names, emails, tweets, bookmarks, …) on your computer and generates files which are readable by GNU Emacs with Org-mode.


   emails              -> memacs-maildir.org \ 
   SMS                 -> memacs-sms.org      |
   RSS-feeds           -> memacs_rss.py       |
   bank statements     -> memacs-easybank.py  |>  Memacs
   postings            -> memacs-slrn.org     |
   git repository logs -> memacs_git.py       |
   svn repository logs -> memacs_svn.py      /
   |_________________|   |_________________|     |______|
   your personal data      Memacs modules        Org-mode

Memacs - as the central component of the system - is a hub for all the connectors that add data from individual data sources. Those connectors are called «Memacs modules» or short «module».

For usage, best practices, frequently asked questions and their answers please refer to the file docs/FAQs_and_Best_Practices.org. If you want to use Memacs modules, please refer to the INSTALL.org file.

Memacs Modules

Existing modules:

  • file name timestamps: see docs/memacs_filenametimestamps.org
  • emails:
    • IMAP : see docs/memacs_imap.org
  • RSS: see docs/memacs_rss.org i.e. for twitter,delicious,…
  • versioning systems:
    • git: see docs/memacs_git.org
    • Subversion: see docs/svn/memacs_svn.org
  • calendar:
    • iCalendar (i.e. Google Calendar): see docs/memacs_calendar.org
    • CSV Files: see docs/memacs_csv.org
  • SMS: see docs/memacs_sms.org
  • Phonecalls: see docs/memacs_phonecalls.org
  • Photos (date from EXIF): see docs/memacs_photos.org
  • example: see docs/memacs_csv.org This module is just for developing purposes.

Those modules are not adopted to the new framework:

  • mails:
    • mbox-format: see emails/mbox/works-for-me-hack/memacs_mbox.org
    • Maildir: see emails/maildir/memacs_maildir.org
  • bank account:
    • easybank.at: see tmp/bank_statements/easybank.at/memacs_easybank.org
  • newsgroups
    • slrn: see emails/mbox/works-for-me-hack/memacs_mbox.org

Those modules will be developed in the next weeks or months:

  • tagstore: see tmp/tagstore/memacs_tagstore.org

Following modules exist as a rough idea only and might get implemented some day (by you?):

  • calendar:
    • JPilot-datebook: see calendar/memacs_jpilot-datebook.org
  • tasks:
    • JPilot-todos: see tasklists/jpilot-todos/memacs_jpilot-todos.org
  • blog_systems:
    • Serendipity: see blog_systems/serendipity/memacs_serendipity.org

Example Story

Imagine you are already using a Memacs.

When remembering that day, when you joined an interesting talk about «Getting Things Done» (GTD), you start up your GNU Emacs with your main Org-mode file. There you go to the Agenda-view and select this specific day a couple of months ago.

There it is, from 2pm to 3pm you scheduled this talk in your calendar. And then you realize that within this time frame, there appear some JPEG files containing an ISO 8601 time stamp (with periods instead of colons - just because the ancient limitations of Microsoft based file systems; like «2011-02-14T14.35.42 ideas.jpg») are indexed by one module. (filenametimestamp-module)

This image contains a slide you found interesting and which you photographed using your sleek smartphone. Who would remember having taken a picture during a talk?

Ten minutes after the talk you wrote a short message on Twitter where you mentioned useful URLs for your followers. This time those URLs are handy for yourself too! (Twitter-module)

On the evening of that day you see an entry of an incoming email from the author of the talk. Now you remember having had a cool conversation at the end of the talk where he promised you some additional information about that nice little GTD tool on his computer. Great that you got that link to that email too. Without Memacs you would probably never got to that email again. (Maildir-module)

And then there were some bookmarks you saved this day, almost all related to ideas you got from the GTD talk. (delicious-module)

This small story shows only a few use cases where different modules combine given data sources and their information to provide an overall view related to an event. Since Org-mode has got links, no actual data has to be duplicated (except the small meta data extracted by Memacs). Emails, files, bookmarks, and so forth are linked rather than copied.


In 1945, Vannevar Bush wrote a famous article «As We May Think» where he develops the idea of having a «memory extender» called Memex. The memex can store all letters, books, and other information which are related to a person.

Besides having foreseen several technologies like hypertext, he defined a device that holds all metadata and data and provides associative trails to access information.

In the last decade of the previous century Microsoft Research had a research program that resulted in MyLifeBits. This software tried to store each information of the user like office documents, screenshots, name of active windows on the desktop computer, and even automatically took photographs (SenseCam). This word did not result in any (open) software product. Bell and Gemmell wrote a book called «Total Recall».

The Memacs project tries to implement the ideas of Vannevar Bush’s vision with open source and open standards. It’s name «Memacs» is the obvious combination of «GNU Emacs» and «Memex».

Memacs uses GNU Emacs Org-mode to visualize and access information extracted by Memacs modules: using tags, time stamps, full text search, and so forth GNU Emacs is able to derive different views. The most important view probably is the Agenda-view where you can see anything that happened during a specific day/week/month according to the time frame selected. But you can derive other views too. For example you can choose to generate a condensed search result using a boolean combination of tags.

Deeply related to Memacs, the project leader developed a research software tagstore. This system allows users to store (local) files using tags without a hierarchy of folders. As a natural extension, tagstore targets associative access for (local) files. You might want to check out tagstore too. Memacs and tagstore are a very useful combination.

Contribute! We are looking for your ideas:

If you want to contribute to this cool project, please fork and contribute or write an additional module!

See docs/FAQs_and_Best_Practices.org for more developing information.

We are sure that there are a lot of cool ideas for other modules out there! This is just the beginning!

Memacs is designed with respect to minimal effort for new modules.

We are using Python PEP8 and Test Driven Development (TDD).