Wiki with Version

I’m looking for a wiki that has all the standard features, plus one more: integration with Subversion. By that, I don’t just mean it can spew calls to a command-line “svn” whenever you update a page. Sure, that’s a good start, and I hear rumors that TWiki has plugins that can be hacked to do that. What I really want is a full awareness of the branching features of Subversion… I want a Wiki with Version.

The idea here is to be able to use a wiki as the location of record for my application’s documentation. The problem is that my application is constantly being branched and versioned. A single set of documentation (architectural or otherwise) would have no way of capturing all the nuances and changes between versions, so we need to have a separate set of documentation for each. We already have a user guide up in a wiki for our customers, and I can assure you that it can be a nightmare to maintain the documentation for all releases. It basically comes down to a separate document tree for each release, with a lot of copy-paste between them. And with no automatic “merge” feature to speak of. At least with user docs, we only care about releases; for internal documentation, every branch could have unique information.

So, I’d like my wiki to actually store its data in Subversion. I’d like it to know what my project root is, and what branches are available. I’d like it to automatically produce a new “document tree” whenever a new branch is created. I’d also like to be able to merge pages across branches. If I can’t do it via the web interface, at least I’d like to be able to do it in Subversion and have it show up in the wiki.

This doesn’t sound like rocket science, but I haven’t found anyone that’s done it yet. There’s a project called SubWiki that looks inspired by the same idea, but it apparently never got off the ground. Maybe I’m looking for the wrong thing – is there a content management system that would do this better? If I don’t find something soon, I may have to start my own “WikiVN” project so that I don’t have to copy-paste things by hand. But I also don’t want to have to rewrite all the wiki functionality out there from scratch. How about a TWiki plugin?

Oh, one other must-have feature: in the name of canonicality, I’d like to be able to autogenerate official-looking Word Documents or PDFs from these pages. I suppose if they are in HTML files, I could hack it, but wouldn’t it be great just to get a list of the wiki pages, select the ones you want, order them, and *poof!* out comes the doc! I’ve had enough experience with this to know that web docs != PDFs without a lot of conscious thought and work, but if there’s user-friendly way to design different stylesheets, it could just work.


2 Responses to Wiki with Version

  1. firebus says:

    I suspect your path of least resistance would be to take an existing product that ingrates subversion and a structured wiki – trac or jira spring to mind – and extend them.

    I’m not sure that your requirement to store the wiki information in subversion is really necessary, although some wheels need to be reinvented if you don’t use subversion as the wiki repository.

    Most of the functionality is easy
    -The wiki needs to be aware of all the branches, and make it easy to assign a page to a branch
    -The wiki needs to copy the appropriate pages whenever a new branch is made so that a new set of pages exists on the new branch
    -The wiki needs to provide some navigation based on the branches

    Hmm. But merging would probably be a nightmare without actually storing the data in svn. Easy enough to provide a merge functionality, but probably really painful to automatically merge the wiki pages based on svn commits.

    Do you want to check out and commit the wiki pages as well? That’s an unusual workflow for a wiki…

  2. Timothy High says:

    I want the pages to be commited automatically on save. I don’t expect an automatic update if someone makes changes outside the wiki itself, but maybe an “update branch” button on the web page might help with a refresh.

    If you try to save a page, but SVN says it’s been modified by someone else, the wiki could either take the “someone else has modified the page before you” route, or even offer an “attempt automatic merge” button. Once a conflict is detected, it should know how to do the update at that point.

    Why do I want it in Subversion? Because I want it close to my code, I want it backed up with my code, and I want it branched with my code. Just like any other artifacts that are branch-specific.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: