I've been using a variety of wiki systems for some years, and I have to say I strongly dislike most of them. Starting with WikiBase, and through Wakka/Wikka, PBwiki MediaWiki, Confluence (a so-called "enterprise wiki" - which is to say a wiki made so complicated and hacker-unfriendly that it's possible to sell to those running corporate IT departments), SocialText (also for 'enterprise') and a variety of different personal wiki systems.


I can't stand them. The simpler ones tend to be a lot more useful than the complex ones - and MediaWiki is a tolerable middle point. But I really don't like most wiki systems as they currently stand. There are a few simple reasons for this.


First off, I don't like writing text in a web browser. I have TextMate and It's All Text! which allow me to edit any text area in a proper editor like TextMate. Can't I do that with wikis? Yes, sure. And I do often. But I want it to go further than that. I'm offline a lot. I want to be able to edit a wiki while offline and then push my changes up to the server when I'm back online. A wiki is - at it's core - a version control system for web pages. But compared to version control systems that programmers use - even now-redundant systems like Subversion and CVS (hint: Git) are a lot more useful than most wiki systems.


Another thing I hate about wikis is the syntax. Almost every wiki system does it differently. What was so wrong with HTML that we had to come up with a thousand reinventions of it? Now instead of learning HTML, everyone has to learn a hundred crappy, less-expressive versions and keep track of which particular dialect of this mess we should use on each particular wiki.


Third, every wiki should have proper diffs. I track changes on wikis via RSS, and what I'm interested in is the diffs. Okay, most normal people don't read diffs. Do I care? Not really. So, give me diffs of every change.


Fourth, most wikis I use are slow. Compared with typing "mate foo.txt" into my command line and working on a text file, I have to go to the site, find the page using rather primitive search tools (compared with using grep or most editors 'Find in Project' commands), then log in, wait for another page to load up, remember the stupid wiki syntax and then edit the page. All that is discouraging. Okay, it's fine for ordinary users - but it actively discourages me from contributing to most wikis. These problems are often exarcerbated in 'enterprise wikis' which tend towards featuritis at every opportunity.


Here's my ideal wiki system. It'd consist of a folder full of textfiles, tracked with Git. Then when one types "git push", it adds all of your commits to the wiki, which are then published on the website. And that's it. Recent changes? "git pull" then "git log". Maybe if you want it to have some extra functionality, you have a simple script called "wiki" which you could just pass commands to like "wiki orphanpages", and it'd give you a list of orphan pages. All the non-geek users could use a web UI much like they do already with wikis - go to a website and make commits on there.


Oh, it looks like Git Wiki may be the starting point for what I need... 