At work, I've seen a variety of solutions, depending on the teams I work with:<p>* MS doc(x) on a network folder with an excel spreadsheet to keep track of docs (and a lot of ugly macros).<p>* MS doc(x) in a badly organized subversion repository
(side note here, docs comments and revision mode are heavily used in those contexts, which is really annoying)<p>* rst + sphinx documentation in a repository to generate various outputs (html, odt, pdf...) depending on the client.<p>In some cases we also use Mako (a python template engin) before sphinx to instantiate the documentation for a specific platform (ex: Windows, RedHat, Debian...), with just a few "if" conditions (sphinx could do it in theory, but it's quite buggy and limited).<p>I've also put in place a continuous build system (just an ugly shell script) rebuilding the sphinx html version every commit (it's our "badly implemented readthedocs.org", but it's good enough for our needs).<p>In other cases we use specification tools like PowerAMC or Eclipse/EMF/CDO based solutions, the specification tool in that case works on a model, and can generate various outputs (docx, pdf, rtf, html...).<p>At home, for my personal projects, I use rst + sphinx + readthedocs, or if the documentation is simple, just a simple README.md at the root of my repository.<p>As a personal opinion, I like to keep the documentation close to the code, but not too close.<p>For example, I find it really annoying when the sole documentation is doxygene (or equivalent), it's necessary to document each public methods/attributes individually, but it's not sufficient, you need to have a "bigger picture documentation" on how stuff works together (software and system architecture) in most cases.<p>On the other side, keeping the documentation away from the code (in a wiki or worst) doesn't work that well either, it's nearly a guaranty that documentation will be out of date soon, if it's not already the case.<p>I found having a doc directory in the source code repository a nice middle ground.<p>I found wikis annoying in most cases, rarely up to date, badly organized and difficult to version coherently and properly (ex: having version of the doc matching the software version).