Difference between revisions of "2011 Slicer4-Documentation-Sprint"

From NAMIC Wiki
Jump to: navigation, search
(Created page with 'What Who Where When =Background= 1) Naming convention: a) For matter of consistency, both page have been renamed: Module:EndUserDocumentationTemplate-Documentation-4.0 -…')
 
Line 1: Line 1:
What
+
=What=
Who
+
Slicer 4 Documentation Sprint
Where  
+
=Who=
When
+
Module creators
 
+
=Where=
 +
1249 Boylston Street
 +
=When=
 +
October 20, starting at 8am
 
=Background=
 
=Background=
 
+
JC has been working on a design which is supposed to accomplish two objectives:
1) Naming convention:
+
*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:
 
   a) For matter of consistency, both page have been renamed:
Line 20: Line 25:
  
  
2) 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
+
=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]
 
     a) The template "Documentation/4.0/module-footer" takes care of including the documentation page in the appropriate category. See [3]
Line 37: Line 43:
  
  
3) Versioning:
+
=Versioning=
  
 
   a) All pages and template associated with version X.Y of Slicer are located under the page prefix: Documentation/X.Y
 
   a) All pages and template associated with version X.Y of Slicer are located under the page prefix: Documentation/X.Y
Line 77: Line 83:
 
       Template:Documentation/4.2/module-footer
 
       Template:Documentation/4.2/module-footer
  
4) Separation of information and representation
+
=Separation of information and representation=
  
 
   a) This could be done with the help of few convenient custom templates:
 
   a) This could be done with the help of few convenient custom templates:
Line 86: Line 92:
  
 
   
 
   
5) Developer information
+
=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.
 
   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.
Line 100: Line 106:
  
  
6) Categorizing
+
=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.
 
   a) The list of category is currently manually generated. This is not sustainable. Given the new page structure. These lists could be automatically generated.
Line 107: Line 113:
  
  
7) Documentation packaging in Slicer
+
=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.
 
   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.
Line 114: Line 120:
  
  
8) Critical details:
+
=Critical details=
  
 
     a) A module should be identified consistently in both the source and the documentation. GradientAnisotropicFilter !=  GradientAnisotropicDiffusion
 
     a) A module should be identified consistently in both the source and the documentation. GradientAnisotropicFilter !=  GradientAnisotropicDiffusion
Line 121: Line 127:
  
  
9) ToDo
+
=ToDo=
  
   a) Look at wiki like "http://techbase.kde.org" .. I think we could inspire from what they did and improve the "user friendliness" of slicer wiki
+
   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]
 
   b) Add "EmailObfuscator"[11] or "EmailAddressImage"[12] extension to mediawiki that will be used inside the "contact" template [13]
Line 134: Line 140:
 
Please, review both the template [1] and GradientAnisotropicDiffusion [2] documentation and let me know what you think.
 
Please, review both the template [1] and GradientAnisotropicDiffusion [2] documentation and let me know what you think.
  
Thanks
 
Jc
 
  
 +
=Links=
  
 
  [1] http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.0/Modules/YOURMODULENAME
 
  [1] http://wiki.slicer.org/slicerWiki/index.php/Documentation/4.0/Modules/YOURMODULENAME

Revision as of 12:04, 7 September 2011

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