2011 Slicer4-Documentation-Sprint

From NAMIC Wiki
Revision as of 12:04, 7 September 2011 by Kikinis (talk | contribs)
Jump to: navigation, search
Home < 2011 Slicer4-Documentation-Sprint

What

Slicer 4 Documentation Sprint

Who

Module creators

Where

1249 Boylston Street

When

October 20, starting at 8am

Background

JC has been working on a design which is supposed to accomplish two objectives:

  • Single location for editing documentation, no duplicative editing.
  • As much automation as possible

Naming convention

  a) For matter of consistency, both page have been renamed:

Module:EndUserDocumentationTemplate-Documentation-4.0 -> Documentation/4.0/Modules/YOURMODULENAME

Modules:GradientAnisotropicFilter-Documentation-4.0 -> Documentation/4.0/Modules/GradientAnisotropicDiffusion

  b) The main documentation page has also been renamed from "Documentation-4.0" to "Documentation/4.0"


  c) All module documentation page for a given version of Slicer Y.Z should be named according to the following pattern: Documentation/X.Y/Modules/MODULENAME


Category

The following link will list all modules belonging to the Documentation/4.0/Modules category: http://wiki.slicer.org/slicerWiki/index.php?title=Category:Documentation/4.0/Modules

   a) The template "Documentation/4.0/module-footer" takes care of including the documentation page in the appropriate category. See [3]
   b) The following page will list all element from the given category: http://wiki.slicer.org/slicerWiki/index.php/Category:Documentation-4.0-Modules
   c) "category" is a parameter of the "module-footer" template.
   d) For CLI module, as explained on the template itself [1], it's recommended to use the template "Documentation/4.0/module-cli-category" that can extract the category from the XML module description. See [4].
   e) Using the provided module category, the module will also be added to the category "Documentation/4.0/Modules/<MainCategory" and "Documentation/4.0/Modules/<MainCategory.SubCategory>". For example:
       -- Documentation/4.0/Modules/Filtering  see [5]
       -- Documentation/4.0/Modules/Filtering.Denoising see [6].

  f) Ideally, it would be great if the category associated with loadable module (interactive module) could also be extracted from a unique location. Doing so would avoid to maintain the category attribute both in the source and in the documentation.


Versioning

  a) All pages and template associated with version X.Y of Slicer are located under the page prefix: Documentation/X.Y
  b) From any documentation page or template, doing so allows to easily extract the current version using the template "documentation/version". See [7]
  In other word, assuming the current page is "Documentation/4.2" adding Template:Documentation/version in the source will return 4.2.
  c) Following each release of Slicer, this approach will allow us to:
        -- minimize the work required after a documentation set is duplicated
        -- easily reference the different documentation sets
        -- automate the duplication of these pages. Let's note that the mediawiki extensions like "Duplicator" [8] or "Multiplicator" [9] could be useful.
  d) "Long life" of past documentation will also be ensured. Indeed, each time the documentation will be duplicated, a complete set of category, template and documentation page will be created. You will find below what the list of pages and templates could like after 4.2 is released:
      [...]
      Documentation/4.0/Modules/Add
      Documentation/4.0/Modules/GradientAnisotropicDiffusion
      Documentation/4.0/Modules/Threshold
      Documentation/4.0/Modules/YOURMODULENAME
      [...]
      Documentation/4.2/Modules/Add
      Documentation/4.2/Modules/GradientAnisotropicDiffusion
      Documentation/4.2/Modules/Threshold
      Documentation/4.2/Modules/YOURMODULENAME
      [...]
      Category:Documentation/4.0/Modules
      Category:Documentation/4.0/Modules/Filtering
      Category:Documentation/4.0/Modules/Filtering.Denoising
      [...]
      Category:Documentation/4.2/Modules
      Category:Documentation/4.2/Modules/Filtering
      Category:Documentation/4.2/Modules/Filtering.Denoising
      [...]
      Template:Documentation/4.0/module-cli-description
      Template:Documentation/4.0/module-header
      Template:Documentation/4.0/module-footer
      [...]
      Template:Documentation/4.2/module-cli-description
      Template:Documentation/4.2/module-header
      Template:Documentation/4.2/module-footer

Separation of information and representation

  a) This could be done with the help of few convenient custom templates:
        See http://wiki.slicer.org/slicerWiki/index.php?title=Category:Templates:Documentation/4.0


  b) It allow to tune / update how documentation look like for a given documentation set.


Developer information

 a) For each module, the list of bugs, associated tests, list of classes, developer notes .. should be automatically collected. This could be achieved with the help of the "module-developerinfo" template.
 b) Every module should include the template "Documentation/X.Y/module-developerinfo". See [10]
 c) As of today, this template is a placeholder/stub. As soon as, functionality will be implemented all module including that template will automatically display the wanted information.
d) This implies:
        -- In mantis, bug should be assigned a category / tag and product version
        -- In CDash, tests should be labeled with both the ModuleName and the Slicer version. Then, using the webapi we should be able to obtain the list of tests, coverage, etc ...
       -- Status of the "Ron rules" could be semi-automatically generated: coverage, number of test, amount of documentation, style, ...


Categorizing

  a) The list of category is currently manually generated. This is not sustainable. Given the new page structure. These lists could be automatically generated.
  b) Mediawiki offers some nice feature to manage category. Let's use them.


Documentation packaging in Slicer

  a) Since a template "module-section" have been introduced, there is now a placeholder that will allow to refine how sections are identified and will ease the integration in a future Slicer Assistant module.
See http://wiki.slicer.org/slicerWiki/index.php/Template:Documentation/4.0/module-section


Critical details

    a) A module should be identified consistently in both the source and the documentation. GradientAnisotropicFilter !=  GradientAnisotropicDiffusion
    b) If a name is incorrect, it should be fixed/updated at the source ! Not just in the documentation.


ToDo

 a) Look at wiki like "http://techbase.kde.org" .. I think we could be inspired from what they did and improve the "user friendliness" of slicer wiki
 b) Add "EmailObfuscator"[11] or "EmailAddressImage"[12] extension to mediawiki that will be used inside the "contact" template [13]
 c) Setup a mechanism so that current "Documentation Set" follow Slicer source trunk could be duplicated and "frozen"
 d) Implement "developerinfo"


Please, review both the template [1] and GradientAnisotropicDiffusion [2] documentation and let me know what you think.


Links

[1] http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.0/Modules/YOURMODULENAME
[2] http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.0/Modules/GradientAnisotropicDiffusion
[3] http://wiki.slicer.org/slicerWiki/index.php?title=Template:Documentation/4.0/module-footer&action=edit
[4] http://wiki.slicer.org/slicerWiki/index.php/Template:Documentation/4.0/module-cli-category
[5] http://wiki.slicer.org/slicerWiki/index.php?title=Category:Documentation/4.0/Modules/Filtering
[6] http://wiki.slicer.org/slicerWiki/index.php?title=Category:Documentation/4.0/Modules/Filtering.Denoising
[7] http://wiki.slicer.org/slicerWiki/index.php/Template:Documentation/version
[8] http://www.mediawiki.org/wiki/Extension:Duplicator
[9] http://www.mediawiki.org/wiki/Extension:Multiplicator
[10] http://wiki.slicer.org/slicerWiki/index.php/Template:Documentation/4.0/module-developerinfo

[11] http://www.mediawiki.org/wiki/Extension:EmailObfuscator

[12] http://www.mediawiki.org/wiki/Extension:EmailAddressImage

[13] http://wiki.slicer.org/slicerWiki/index.php/Template:Documentation/4.0/contact