||[Jan. 27th, 2005|12:17 am]
Infoworld is reporting: 'A group of British computer scientists have proposed a number of grand challenges for IT that they hope will drive forward research, similar to the way the human genome project drove life sciences research through the 1990s.'
I read the article - interestingly my all consuming (FOSS) project falls into one of the categories. I have been working on the problem off-and-on since the 1980s. The problem is providing a simple yet powerful interface for people to keep track of all of their 'memories' (which I equate to 'information' - which is really the web of knowledge about atomic data elements - which could be not only textual information, but also multimedia objects - and their ever-changing interrelationships unique to each individual).
It started with my disatisfaction with the then state-of-the-art method of keeping track of files: the hierarchical file system (DOS circa 1985 in my case). My crude first attempt was an index file that I kept in my document directory (I dumped all of my documents into one directory) and a few other directories related to specific projects. The index file was a flat ascii file listing the filenames with a quick blurb about the contents of each one - basically I was keeping meta data pointers to ascii text files. Running 'index.bat' in any directory would list the index information - which would jog my memory to help find information I was looking for. This helped immensely in school - but still was not the complete solution I needed.
A few years later I was investigating simple database systems (Alpha3, Nutshell, Dbase II) - but they were crude and clunky - not easy to extend or interface with. I toyed with a hypercard-like utility called 3by5 - it had the ability to sort the cards, but not the ability to hyperlink internally between cards. I started to investigate AI systems then in existence and think about how human beings store and retrieve information. I came up with some interesting hypothesis, among them the idea that human information retrieval is fuzzy and intricate. I stuck with my index batch file - until Windows came into my life.
I began experimenting with the Windows interface to see if it contained the holy grail of information management, hidden away inside its innards. At first I tried being creative with the folders - creating them whenever and where ever I needed them. This devolved to the same state as the CLI - still a hierarchical file system (I have found that many things do not fit nicely into one box - more often than not). I then started manipulating the icons associated with a particular file; I found a program that would let me create icon files - and I spent much time creating icons that illustrated some aspect. I would replace the icon for the particular file with a new one to reflect its categorization visually.
This method was once again one dimensional - I still had to find the file, and interpret the icon, which limited me to one 'category' per file, and I was missing other meta data not available in a visual medium. Time passed without much improvement - and I limped along, focusing on my development skills and the project languished.
In the university I came into contact with Unix - and fell in love with its flexibility and richness of its command line expressions. I did some crude database development using a flat file DB tool. I also came into contact with SQL and RDBMS concepts. Sadly, the database technology at the time was still did not allow you to tie disparate objects together easily - and the database was still rather static, needing prior thought to develop, and difficult to change - particularly if your schema changed significantly, not 'user friendly' at all. More years passed, RDBMSs moved closer to augmenting the operating system's file system (via RAW partition mode, and the ability to hold multimedia objects) - but still fell far short in the usability department. My project made little headway.
Little headway until recently. More recently I have come into contact with object databases. In particular I have been using the ZODB (Zope Object Data Base) that ships with the Zope web development framework. From the Zope Documentation:
Zope objects are stored in a high-performance transactional object database known as the Zope Object Database (ZODB). Each Web request is treated as a separate transaction by the object database. If an error occurs in your application during a request, any changes made during the request will be automatically rolled back. The object database also provides multi-level undo, allowing a site manager to "undo" changes to the site with the click of a button. The Zope framework makes all of the details of persistence and transactions totally transparent to the application developer. Relational databases which are used with Zope can also play in Zope's transaction framework.
Very flexible, modular, and secure, and completely web browser enabled - both for trivial development and administration. So, I am looking at this tool, starting to build applications in it, and it dawns on me that the technology may have caught up with my original problem; could I use Zope and the ZODB to tackle the challenge? Stay tuned for more.