At work, I&#x27;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 &quot;if&quot; conditions (sphinx could do it in theory, but it&#x27;s quite buggy and limited).<p>I&#x27;ve also put in place a continuous build system (just an ugly shell script) rebuilding the sphinx html version every commit (it&#x27;s our &quot;badly implemented readthedocs.org&quot;, but it&#x27;s good enough for our needs).<p>In other cases we use specification tools like PowerAMC or Eclipse&#x2F;EMF&#x2F;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&#x27;s necessary to document each public methods&#x2F;attributes individually, but it&#x27;s not sufficient, you need to have a &quot;bigger picture documentation&quot; 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&#x27;t work that well either, it&#x27;s nearly a guaranty that documentation will be out of date soon, if it&#x27;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).