Restructuring our developer documentation
===========================
Hi everyone,
The
doc.silverstripe.org documentation wiki leaves a bit to be desired
in terms of completeness and IA. Part of the problem is the
infrastructure that we are using to manage the documentation; I would
like to suggest a change.
Problems
--------
In particular, I don't think that a wiki is appropriate. Using a wiki
for product documentation has some disadvantages:
* When a feature is added to trunk, there's no clear place to stage
documentation until the next release
* It's difficult to see the documentation for 2.3 vs. 2.4, etc.
* When a community member contributes a patch, there's no clear place
to stage documentation until the patch is accepted, and included in
the next release.
These process issues are one of the reasons why we have difficulty
keeping documentation up-to-date.
Recommendation
---------------
Ingo and I have spent some time discussing this and we'd like to
propose this alternative approach.
* Documentation lives in the docs/ directory of each module. sapphire/
docs/ would contain framework documentation and cms/docs/ would
contain CMS documentation.
* These docs/ directories would be protected by .htaccess files so
that the documentation wasn't accessible over the web.
* All the documentation would be in the form of Markdown files. We
would migrate the current
doc.silverstripe.org content into these
files.
* Embedded images will be stored in
* dev/docs/ will show a simple controller for exploring the developer
documentation. It would provide:
- a table of contents of the documentation from all the modules
- a simple plaintext search
- a view of individual document pages in formatted HTML
- a view of all the documentation in one big formatted HTML page,
for printing
*
doc.silverstripe.org would host publicly accessible copies of the
dev/docs/ system, for each version of SilverStripe that contains this
documentation system.
The key to this approach is to bundle the documentation source in with
the application. In this sense, it is similar to the approach that
Django take. With this in place, we can also request amendments to
documentation as part of changesets that enter the repository, in the
same way that we might request a unit test before we merge a patch.
Also important is the choice of Markdown as the format for storing the
documentation. We're recommending Markdown because:
* it is designed to be easily readable in it's raw format, and easily
edited. As an example, this post has been written in Markdown format,
although you might not have noticed. ;-)
* it has good support code blocks, including code blocks within bullet-
point lists
* it is well known and well supported. For example, TextMate has a
markdown module.
Note that we may want to use a variant of Markdown if we find that we
need the extra features, such as tables. We'll cross that bridge when
we come to it.
One unanswered question is what to do with the Disqus comments.
Should we migrate relevant content out of them and then drop them from
doc.silverstripe.org?
What do people think of this approach?
Would anyone be available to help with the migration effort?
Thanks,
Sam