Since I first discovered WikiSoftware I've become more and more fascinated with figuring out a way to manage and share all my data from and to a multitude of platforms. I've had many half formed thoughts, most recently I've been influenced by the simple functionality of PyBlosxom (BlogSoftware inspired by Blosxom). Here's another attempt to describe what I have in my head, in the hopes that actual software will be inspired by a working description:
See also: WikiSpace, WikiAsPim, DigitalPalace, WikiToDrupal, InformationClients, AdamShand/2004-06-19
Contents
Requirements
- Should be file system based (for ease of management and replication).
See AdamShand/2004-06-19 for further thoughts on LabelsVsHierarchy
The source file itself should be authoritive (eg. EXIF/IPTC for image MetaData rather then text or SQL data).
Where additional MetaData is required (for searching/indexing/caching) it should always be possible to dynamically regenerate it from the source files.
- Source data should be available in as many different ways as possible (HTTP, DAV, IMAP, NNTP, LDAP etc).
- It should be possible to share portions of your data based on a global security policy.
- Ideally should support versioning (DAV(?), CVS, Subversion, etc).
- Items should be classifiable by with a global taxonomy, items should be able to belong to multiple categories.
- Security policy should allow access on a per-person or per-group basis.
Types of Information/Data
I've tried to determine the core types of data that I want to manage. Currently I manage all of the types of data with different systems with varying degress of sucess. It's hard to classify all the disparate data types ... here's a first pass:
- /writing (txt, wiki)
- /media (mp3, ogg, avi, mov, jpg, png)
- /email (maildir)
- /bookmarks (xbel?)
- /addresses (vcard)
- /calendar (ical)
- /code (.c, .pl, .py)
- /metadata (xml, sql whatever)
Other less well formed ideas:
- /reference (3rd party data, dictionary, thesaurus, cia factbook, gis data, wikipedia, etc)
- /genealogical (gedcom)
/cache (SquidProxy cache for UniversalPersonalProxy type thing)
/stickies (notes, unfinished writing etc. See Queue for interesting implementation)
Views
This isn't very well thought out yet.
HTTP
- /date
- /2003/09/16
- /facet
- /technology
- /software
- /hardware
- /places
- /usa
- /oregon
- /newzealand
- /usa
- /technology
- /rss
Import and Export
Importing / Editing
Should be able to get data from wherever I am to wherever it belongs.
- Email to anywhere in the (strip out attachments to /meda?)
- Filesystem (cp, mv, scp, rsync etc)
WebDav (CVS, Subversion, etc?)
- Wiki
XmlRpc (Blogger API etc)
- Ical client (Calendar.app, Mozilla etc)
Exporting
Ways to access the data:
- HTTP
- IMAP (more then just email could be readable via IMAP)
- NNTP
- LDAP
- XBEL (export all links as bookmark file?)
- XML/RSS/ATOM
- Ical client (Calendar.app, Mozilla etc)
Resources
TwistedPython has pure PythonLanguage implementations of many protocols.
OpenLdap has a shell backend for the data.
Questions / Thoughts
- Do I stick with the Blosxom model of heirarchy and use directories/links for categorization, or do I try and do something more abstract along the Drupal lines?
- How to get data from 2003/09/20 and in /technology/hardware?
- Could facets be a directory and symlink to the data?
- How to manage links?
- Can I just keep everything in CVS/Subversion? How do they handle links?
There is a similar solution for your idea if I have understood that well inside one of article of O'Really. Have a look at http://www.onlamp.com/pub/a/onlamp/2005/01/06/svn_homedir.html
SubVersion is able to handle links on 'NIX platform
- How does DAV versioning work?
How much of what I want does the Web Crossing product do?