Document Management and Version Control?
Tom wonders: "I am working in a medium-sized software development company. The functional analysts use Microsoft Word to document the specifications, and Sharepoint to publish the documents. However we'd like to improve our process to have better revision control and traceability. We have looked at alternatives like using Wikis, or static HTML documents with CVS. The functional analysts want ease of use, while we developers would like to see high-quality end products, revision control (i.e. tagging & branching of the document base), and traceability features. What tools and document formats do you use and would recommend?"
Shoot the functional analysts. Once that's done, there won't be any complaining, and you can use CVS. Extreme, but simple.
"Murphy was an optimist" - O'Toole's commentary on Murphy's Law
Latex with CVS. This is what I use for my documents. It's simple (yes it is simple.. markup languages are not hard to understand) and with CVS it's far more feature complete than Word in version control.
There's plenty of WYSIWYG tools for Latex. Let Google be your guide.
Simon.
Subversion is your friend...
It handles binaries right (unlike CVS)
It works over a variety of transport layers (HTTP/HTTPS/SSH) with some decent authentication models.
It treast revisions as an archive-wide property.
You can't check in an inconsistant state.
It runs under *NIX, Mac, Windows, etc.
Its free software.
Try it. I switched a few months back from CVS and have been very happy.
Test your net with Netalyzr
While I haven't managed to get them integrated into the workflow yet (working on it), I find tools such as Trac extremely interresting and full of potential: Trac integrates a wiki (for base documentation) with a bugtracker (bugzilla-like) and a Subversion repository while linking all of them together (you can use the SVN commit comments to link a commit to a bug, track them from the wiki, generate timelines, ...)
And important document should never ever be stored in proprietary binary formats: you can't decrypt them yourself, can't change bugs, can't do anything.
"The way we can tell it's C# instead of Haskell is because it's nine lines instead of two." -- wadler
I myself like using trac which I believe is opensource and works off of a subversion tree. To my knowledge Subversion is meant to be a better solution then CVS for most items, and can be used on it's own.
On the other hand, my company uses Subversion and TortoiseSVN as a shell extension, edit files locally and simply commit them to the subversion repository. You can do all the blame, branching/tagging you need, but our company is likely much smaller then yours. Something to look at I guess.
It's pretty shocking to change everything (document format, writing environment, collaboration tools) all at once. Start with reasonable source control, the best bacon-saving device you can get. Have everyone check existing docs (Word, HTML, whatever) into source control; Even though diffs are meaningless for the binary formats, the other benefits (versioning, collaboration, remote storage, tags, platform independence) are huge. It's the quickest way to put an end to the madness of emailed .doc files and accidental deletions.
If you've got a lot of Windows users, go with Subversion and get everyone to install the TortoiseSVN shell extension, which offers the most natural GUI for new (and experienced!) users of version control.
Once everyone's comfortable with SVN, you can then start migrating to text-based document formats in which the source control diffs mean something (LaTeX, XML, reStructured, etc.)
I doubt I'll have much to add to the long list of people describing their experiences with various systems, but I'll pop out this meta-thought: Your developers and "functional analysts" probably have wildly varying needs, especially if the "functional analysts" use word-processing documents like Word. There's no crime in given each group of people a separate system.
Your devs probably ought to get subversion because the continuing cost of using a sub-optimal source management system adds up to staggering amounts pretty fast. Your other writers probably aren't continuously branching and merging and doing all the other things subversion allows (if nothing else that's really confusing for most documents), so they can use a simpler, easier-to-use system that doesn't incur continuous costs due to confusion and documents getting mangled or destroyed due to incorrect use of the system.
The right tool for the right job.
(Note: I'm not saying you should use multiple systems; I'm just saying it's not a crime, if they solve different problems. If you can get your writers to use SVN, especially if they use something with a decent plaintext representation that stands a chance in Hell of merging, hey, great, more power to you.)
Based on the requirements, you should be using Microsoft Word and Microsoft Sharepoint.
If those don't fill your needs, then either you've failed to describe your requirements or you've failed to correctly set up the software.
ODF files are just zip files which contain the content in an XML file with supporting text and binary files. The text files are auto-generated & so may have "weird diffs" particularly when multiple people/programs/platforms work on them. I have an ical server backed by subversion's webdav & the diffs are always very amusing, as each program changes whitespace & other such nonsense.
The diffs might still be more usable than those for a 100% binary (zipped) file, particularly for single-user situations.
Has anyone played with compressing/decompressing ODFs for use with version control software? Any pointers?
Where I work, developers use CVS exclusively. It has its quirks, and we've considered alternatives, but the combination of CVS+TortoiseCVS+Jalindi Igloo (Visual Studio integration)+Jira is unbelievebly hard to beat (Subversion doesn't have a reasonable SCC connector, and nothing else has anything that comes close to TortoiseCVS -- even TortoiseSVN is clunky and awkward by comparison. Oh, and CVS mergepoints work perfectly, unlike the nonexistent merge tracking capabilities of Subversion).
When our "functional analysts alike" guys wanted version control, we naturally gave them the tried-and-tested CVS, and gave them instruction on its use. It was a horrible failure. The update-edit-change-commit cycle which is so trivial to developers just didn't work. The people are not dumb - just have a different mindset. We had also tried a Wiki (MoinMoin, works well for devs), but its inability to search or version Excel files make it irrelevant.
Eventually, much to my dismay, we settled on Sharepoint. And while it's clunky, horrible, keeps only the 7 latest versions of any file, has no branching and is often inconsistent with error messages, them users are able to work with it without requiring assistance.
Do not confuse a feature list with applicability of a tool to the situation at hand which, it appears, might depend more on the people involved than anything else.
http://svnbook.red-bean.com/nightly/en/svn.webdav. autoversioning.html
From the SVN Handbook:
"Because so many operating systems already have integrated WebDAV clients, the use case for this feature borders on fantastical: imagine an office of ordinary users running Microsoft Windows or Mac OS. Each user "mounts" the Subversion repository, which appears to be an ordinary network folder. They use the shared folder as they always do: open files, edit them, save them. Meanwhile, the server is automatically versioning everything. Any administrator (or knowledgeable user) can still use a Subversion client to search history and retrieve older versions of data."
Of course, Subversion is no more your friend than CVS in this case since neither can do proper diffs! It's binary data for f*ck sake! Subversion handles binaries better than CVS, but not for the reason you state.
Actually, GUI Subversion clients like TortoiseSVN can show diffs for binary files like Word or OpenOffice, using the built-in diff capability of these programs. The end result is you can double-click your binary document and get a window showing you the differences.
The latest nightly TortoiseSVN builds even include an image diff viewer.
-Malloc___________________ I want to be free()!
I would suggest using svnwiki, a wiki system that stores its whole contents in a Subversion repository (Disclaimer: I am the main author of svnwiki). That allows you to use the usual svn commands (svn diff, svn log, svn update, etc.) to work with your wiki as well as using the web interface.
You can see an example wiki (in spanish) and its associated svn repository (login as anonymous, password is the empty string; Slashdot seems to strip out this auth information from my URL) to get an idea of what the repository looks like.
These are examples of some of its features:
Alot of people don't realize it, but there is document versioning built into Word. If it's turned on, it will track changes, etc. by user. There is also pretty rich editing capabilities. Reviewers can mark up the doc with comments, etc... Adding sharepoint lets you distribute that process pretty well. Get an in-depth Word book and figure out how to do it in sharepoint/word.
- PeeCee