Some time ago (jeez, has it been a year and a half?) I wrote a piece about working offline. It’s been on my wish list ever since but recent developments make me optimistic that we’re not far from that goal. To summarize, my wish is for a wiki and a bugtracking tool that allow me to work offline and seamlessly synchronise whenever I get back on the net. Two things make me so optimistic:
GitHub provides the much needed critical mass to make distributed version control a widely accepted solution by showing (to a wider audience) that “it can be done and it’s actually very easy”. I might prefer mercurial but git seems to have the upper hand in two (again two!) crucial areas: better svn integration and GitHub.
Cue the flood of blog posts and articles that extoll the virtues of distributed source control.
The second thing is all the interest in distributed databases. It seems to me that CouchDB and StrokeDB very elegantly solve the problem of data formats for a portable wiki/tracking tool. And you have a ready made conflict resolution mechanism.
Combine the two and you have a wiki and bugtracker that can reference files, changesets/revisions (much like Trac does) anytime, anywhere and makes it laughably easy to share it in a team.
Now, allow me to digress a bit on the subject of distributed databases:
Assaf Arkin says : Features like referential integrity, constraints and atomic updates are really important in the client-server world, but irrelevant in a world of services. This continues on the theme I first heard from Pat Helland in his Teched 2007 Keynote - Check his talk out, it is definitely worth the hassle of installing Silverlight (why, oh why must Microsoft do everything differently?).
The gist is, that with services and distributed operation, integrity is not only not guaranteed, it’s not that important either. Nothing is absolutely certain in the world we live in, why should software be any different?