Few advantages, in addition of providing free hosting, Readthedocs provides:
a free worker node that will rebuild the documentation each time it is needed
management of documentation version
support for downloading pdf and/or ebook
central location … looking on the readthedocs for documentation become the norm (at least for project adopting sphinx and/or python based)
Using Github is totally possible but you would have explicitly setup yet an other machine to rebuild and push documentation every night or continuously
In our case, documentation is written using RestructedText (with some markdown) and it first needs to be processed by sphinx toolchain before we obtain HTML. And it turns our ReadTheDocs will take care of running the sphinx toolchain for us.
Read the Docs has grown substantially since its beginning as a weekend project.
Today, we:
Serve over 20 million pages of documentation a month
Have 10 servers and serve over 2 TB of documentation a month
Host over 18,000 projects and support 25,000 users
Are supported by two dedicated engineers
One more comment and I will let you make your final call …
Having two dedicated engineers along with the described resources is (I think) outstanding and a positive and encouraging point Also worth noting that Rackspace (who is also providing the backend storage for GitHub) is graciously providing the storage for readthedocs.
Custom domain is very important, as it allows you to change anything (hosting, documentation generator, etc.) without disrupting users or search indexing bots. It is impossible to know what services will still exist in 2-3 years or if there will be much better options you will want to switch to.
it would be nice to start using readthedocs more seriously for Slicer core module documentation. People could just use their GitHub account to contribute (no more wiki signup troubles), we could keep the code and documentation tightly linked, etc.
The main complication right now is that the documentation is generated from a separate branch. Keeping the documentation branch in sync with master is difficult because for example I want to merge changes of util.py from master, but some files are only present in the documentation branch.
Should we maintain code and documentation in same repository and branch?
Advantages of keeping code and documentation together:
Documentation and code would be tightly synchronized. We could ensure that even small details, programming examples, etc. are always accurate.
We could do code and documentation updates in the same pull request (we can better enforce consistency and quality, include documentation testing in continuous integration, etc).
Documentation and code is kept together in smaller projects anyway, such as in Slicer extensions. We would use the same operating mechanism for Slicer core and extension documentation.
We can generate user and API documentation from the same repository. User and developer documentation are often interlinked, so it is useful if we can generate them together.
Advantages of keeping documentation in separate repositories:
Smaller code repository size. Slicer source code size is currently about 110MB. Over time, documentation would probably make it about 50% larger (estimated based on Blender manual, which is 70MB: contains 1900 png files, 1200 rst files).
Access control and development process could be defined separately for source code and documentation.
I’d strongly prefer having them in the same repository. If we have the documentation in the code then it also will be much harder to forget updating the documentation (you need to realize that it needs to be changed, find the wiki page, upload new screenshot to mediawiki, etc.).
About the disadvantages of the same repository approach, the only one I consider a problem is access. I guess then we’d need a place where anybody can suggest edits, and a person who’s responsible for migrating the suggestions. Neither seem to be an easy problem to solve, but the second one could happen the same way we handle PRs: anyone who has a minute reviewing/integrating does it. Any ideas about how to offer the documentation for editing for the wide public?
You can edit documentation on the web interface and when you submit your change then a pull request is automatically created. So, documentation changes can be managed the same way as source code change requests. This would require promoting GitHub to be the primary repository (which we plan to do anyway).