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 08:05 AM | Permalink | Comments (0) | TrackBack