Building notes, projects, and occasional rants

What's wrong with current Wikis

Clarification: it seems, reading the comments, that people think that I'm talking about Wikipedia and their choices. I'm not. I'm using Wikipedia as an example as how this system could work and the benefits. Now back to our regular program....

I've always had a love/hate relationship with Wikis.

On one hand, I like the perceived easy updating with the direct access provided by those edit links on all the pages. But on the other hand, using a browser to drive the whole experience is a limiting factor.

My hate pushed me to think about writing Kiwi, something I talked about years ago. Kiwi is not a Wiki would be the defining phrase of the project.

The current web-based wikis fell very limited mostly due to the use of a browser as the main editing tool. There are other alternatives to keep a Wiki and collaborate with others.

One of them is distributed version control systems. Lets play a game, and design Wikipedia on top of one of the current crop of such systems. For purposes of demonstration, I'll use git, but you could also choose mercurial, darcs, monotone, even svk if you are masochist enough.

In a git-powered-Wikipedia-world, the main Wikipedia site would host a branch, that eventually is converted in the site you all know and love. And you would still see those nice edit links all over. But when you click on them, and edit a page, you would be committing your changes to the repository. From the perspective of the user, nothing has changed.

But now, anybody can pull that repository, edit to their hearts content and then push the results back. Wikipedia foundation would probably prefer to pull from registered repositories (everybody could register a repository) and they would probably only accept the changes if they don't conflict, but that is just mechanics.

But now, all the Wikipedia is available on your local disk, and there is where the fun starts.

You no longer have to use a web-based editor, or some hack to edit text-areas in a remote editor. You can now see lots of Wiki editors appear. They will be able to give you (if that is what you want) WYSIWYG editing. They will give you a local index that you can search. Even offline, you can search, read, edit every page. And then push back your results.

Even if you do like to edit a wiki in a web-based editor, you could still have a local application/webserver that provides that edit environment. Imagine a Backpack-like interface (the new one, just released is much much better) to your own personal, local wiki. But now, you can share it easily with others.

You can also start using GPG or other public-key cryptography system to create a trust level of edits. Unsigned edits could still be accepted (although I have zero problems with mandatory GPG signing of wiki edits: privacy and anonymity are two different things, and while the first must be a right, the second one should not), but now you can look at a author and look at his web of trust. Wikipedia key signing parties would flourish.

If Wikipedia starts getting to big to download it all (probably already is), you would start to see subsets of Wikipedia, as intermediaries to the big one. Anybody could create their own subset, maybe focused on a topic, or area of knowledge, and you could just pull from that one. But all the changes you push to those middle-mans would flow back to the top. And given the nature of most distributes version control systems, your changes are in fact cryptographically signed, so they can't be changed by nobody without being noticed.

Another outcome of the switch to such a system is that you no longer have to push back all your changes. You could grow a departmental wiki side-by-side with Wikipedia. In fact, you could create a application that pulls from several wikis, including personal, work, project you follow, and see them integrated in a single application. In the same way you today subscribe a RSS feed, you could now subscribe to a wiki, and have all that shared knowledge available at your fingertips. If you know VoodooPad, imagine having your pads side-by-side with public wikis. (On a side-note, in my original design of Kiwi, each page is a Kiwi, each Wiki is a Kiwi tree, and the set of Wiki trees you subscribe to is called an Orchard. Page templates are called seeds. Talk about an analogy going off tracks...).

The mentality that is preventing us to move forward in a collaborative world, is that people are creating a very strong link between the concepts of collaboration and web-based system, like you can't have a collaborative system without the second one. That is wrong on so many levels. The web should be just one of the mechanism in which you share the knowledge, but starting the design of a wiki based on the assumption that the only interface will be a web browser severely limits his potential.

Its time to stop building version control systems on top of SQL databases, and move to the real thing. Its time to let the content of Wikis be free, easily available, to be used in ways not restricted by the web environment.