[Twisted-Python] Twisted.pim

Travis B. Hartwell slt5v at cc.usu.edu
Wed Jul 4 00:25:28 EDT 2001

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:

      Example 1:
        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?

      Example 2:
        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!


More information about the Twisted-Python mailing list