Hey Twisted gang!
Well, since Chris's mention of Twisted.pim in TWN #1, I have began
to think a lot about how such a thing would be implemented. It has
been my idea for a while now to implement some sort of tools to
accomplish "Personal Information Management," and since glyph and
his minions have been trying to drag me into this for a while, I
decided to succumb. :)
Chris (radix) and I discussed for a while today on IRC some of our
ideas for what Twisted.pim would do and how it would be
implemented. Short of boring you with a long log of our
conversation, here is a brief summary of some of our ideas. I
submit them here for your review, criticism, praise, and
volunteering to help write this! :)
What is it?
First of all, Twisted.pim should be more than what traditional
PIMs offer (think of the Palm apps, KOrganizer, Outlook, etc.).
The main function of those applications is to handle
appointments, contacts, and to-do lists -- but all of that
separately. It's almost like they are "Personal Appointment,
Things to do, and Contact Managers" instead of a more broad
"Personal _Information_ Managers." Let me illustrate with a
couple of examples of what I mean:
Integration. Normally, when I have an appointment scheduled,
it will involve something I have stored elsewhere -- whether
it be contact info for someone, or perhaps an item on my to-do
list, or a memo I had made earlier. With the Palm and other
traditional PIM's, it isn't possible to link this information.
Wouldn't it be nice to be able to click on an icon, or select
an item from a list, from within that appointment view that
would take to you the related information? Or that you could
take notes on that particular meeting and those notes show up
with your memos and perhaps with your completed to-do item?
Information management. I like to take notes on what I'm
studying and working on. Perhaps it is notes on how to
complete a particular phase of a project at work. Or maybe
they are notes for a class at school. Or perhaps it is notes
on something new I learned in sys admin stuff. I would love
to be able to store these notes, be able to cross reference
them, and sometimes associate them with to-do lists or
appointments. Or store links to information I found on the
web or whatever. So, for example, when I see on a weekly view
that I have a test coming up, I could look at that appointment
and have a link to my class notes to view them. So, I am
concerned about here more types of data being stored than the
usual, yet all of them being able to be related and associated
I've been doing a lot of reading lately of the works of Stephen
R. Covey, specifically "The 7 Habits of Highly Effective People"
and "First Things First." He talks a lot about different
generations of tools used is managing and organizing one's time
and resources. Without going into too much detail, I want to be
able to use Twisted.pim to center my life on my "mission
statement" and goals stemming from that, then be able to manage
my life from this. The linking and different views stemming
from my ideas of Twisted.pim are essential for me to do this.
Other than going beyond a tradition PIM in what data is stored
and how it can be associated it, building this upon Twisted
brings up some interesting possibilities. First of all, my main
interest is having ubiquitous access to my data, so this truly
will be a useful tool for me. So, whether it be through an
interface to Emacs, a GTK view, a Web interface, or whatever, I
want access to the same data and same functionality.
Eventually, I would love to get an Agenda or another PDA running
Linux and ideally this would run on it as well. Secondly,
because it is built upon Twisted, this leads well to a
multi-user type of system. Almost a groupware type of
application. This leads to questions of authorization and
ownership of data items and who has permission to view them. I
will lead the design of such items to people such as glyph who
is the "man with the internet."
So, basically, in a long nutshell, those are my ideas now of
what Twisted.pim should do.
How will it be implemented?
Here are notes of some of the things radix and I thought. I'm
not too good at design of such systems right now, so this is
where I need a lot of help.
* Have a base class for all of the data types, that would
include shared items such as association info, name, owner,
etc. Example data types descended from this would be
appointment, to-do item, memo, etc.
* Implement twisted.pim.associator which will provide the
support for associating and linking data items together.
* 'middle-end' classes which the UI viewers talk to. Examples
of these would be the calendar view, the to-do list viewer,
* And of course, the UI's of which would include Emacs modes,
GTK interfaces, web pages, etc.
* Use the new twisted.pb to handle the access to this data,
except in the case of our small, handheld clients which would
access the middle-end objects directly, due to the hardware
restraints on these systems. For access of local data on
desktop machines, it would just connect to localhost.
* Anyone volunteer to work on Pippy to get this sort of thing to
work on the Palm?
* And, until I get a PDA to run this on, I would like conduits
to export this data to my Palm.
Other than that, the implementation is kinda fuzzy right now. I
want to get better at designing such things. Hopefully all of you
ubercoders can help me figure this out. :)
Thanks for listening to my ideas!