« Google Desktop + Microsoft BCM = Sucks | Main | Energy Blue Theme Unleashed »

March 26, 2007

Offline Wikis

Offline Wiki: Yeah, I've always wanted one too. I think the technical problems are all solvable, but there is one sticking point. First, I don't think using an web server or database are necessarily a bad thing, especially since there are a couple of embeddable solutions now. For example, I wrote a desktop application that used Jetty and Derby. It was really easy and quite cool because I could then extend the application on the web due to the existing architecture. In fact I think this is the solution to desktop rich clients, but that's an entry for another time.

My solution would embed a web server, database and browser in a desktop app. The web server and database would host a popular wiki solution [mediawiki.org], but with a modified backend to account for syncing. The desktop app would run a background task to poll for the server to sync to. If a connection could be established then the sync would take place. This is where the magic happens. I'm no diff expert so I think the backend modifications would have to be packaged as discrete transactions. Probably something like a series of patches, like I said I'm no diff expert.

It might be a little more restrictive and disallow fine-grained content control, but I think the transactions should work at the paragraph level. For example, if a user modifies a page by adding a paragraph of text then the transaction would be something like

add paragraph_id=p3
before paragraph_id=p1
after paragraph_id=p2
content=...

So the content page would become something more structured. This leads to something even better. As long as structure is imposed we might as well throw in some metadata to form a semantic document. Uh oh, I just made the leap from personal wiki to collaborative semantic wiki.

Posted by Guy at March 26, 2007 08:05 AM

Trackback Pings

TrackBack URL for this entry:
http://blog.lunaflare.net/cgi-bin/mt-tb.cgi/125

Comments

Post a comment




Remember Me?

(you may use HTML tags for style)