[ 
https://issues.apache.org/jira/browse/MXNET-1078?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aaron Markham updated MXNET-1078:
---------------------------------
    Description: 
Some installation instructions can be tested automatically. However, when the 
instructions are coupled with text for the user, updates can easily break 
automation scripts. Also, some installation instructions follow a pattern of 
"if–>then" with multiple steps offering multiple options. This creates a 
difficult situation for an automation process. 

For example, a contributor has worked on getting MXNet to work a Mac with one 
of those plugin GPUs. They want to add new instructions for this. Most other 
contributors don't have access to this setup and cannot verify the steps. We 
should not expect the contributor to update the instructions, accommodate CI, 
and also fix the installation instructions nightly test. 

Another example would be that new users have no idea what math library they 
could or should use, and probably don't care if even presented the option. 
Other more advanced users may have preferences for what math library to use. 
Both sets of users find these options in the dependencies sections, and the 
setup guide offers several different math library approaches. Which pathway is 
more important to test? Can a script to test the installation instructions 
parse all the options and test them all? 

 

I suggest the following approach.
 # Create a template with a common flow for the installation instructions for 
any platform or language binding.
 # The flow should consist of the steps the user should follow and code block 
containing each command that should be executed. If there is more than one code 
block, the page should end with a complete code block that has all of the steps 
in sequence; one that can be executed directly if it were copied and pasted.
 # A nightly CI script can then be invoked to execute the consolidated 
installation code block that the instructions use. 
 # PRs for installation instructions should be validated against these 
requirements.

Optional approaches / enhancements
 # The code blocks can be sourced by an include directive. This will pull the 
contents of a text file that contains the commands.
 # Alternatively, multiple CI scripts can be created - one for each platform 
and binding combination, so it is clear what fails when everything else is 
passing. You can also disable a broken test much easier, and not disable 
everything or have constant failures when one thing is broken.

 

Timing on implementation is subject to getting the include feature to properly 
work with Sphinx, or when Sphinx is replaced with Jekyll for the website 
builds. Both platforms support includes, however the Sphinx implementation we 
use today seems partially broken and doesn't render includes as described in 
the Sphinx documentation.

  was:
Some installation instructions can be tested automatically. However, when the 
instructions are coupled with text for the user, updates can easily break 
automation scripts.

I suggest the following approach.
 # Create a common flow for the installation instructions for any platform or 
language binding.
 # The flow should consist of the steps the user should follow and code block 
containing each command that should be executed. If there is more than one code 
block, the page should end with a complete code block that has all of the steps 
in sequence; one that can be executed directly if it were copied and pasted.
 # The code blocks can be sourced by an include directive. This will pull the 
contents of a text file that contains the commands.
 # A nightly CI script can then be invoked to execute the same text file that 
the instructions use. Alternatively, multiple CI scripts can be created - one 
for each platform and binding combination, so it is clear what fails when 
everything else is passing. You can also disable a broken test much easier, and 
not disable everything or have constant failures when one thing is broken.
 # PRs for installation instructions should be validated against these 
requirements.

 

Timing on implementation is subject to getting the include feature to properly 
work with Sphinx, or when Sphinx is replaced with Jekyll for the website 
builds. Both platforms support includes, however the Sphinx implementation we 
use today seems partially broken and doesn't render includes as described in 
the Sphinx documentation.


> Installation instructions should be validated automatically
> -----------------------------------------------------------
>
>                 Key: MXNET-1078
>                 URL: https://issues.apache.org/jira/browse/MXNET-1078
>             Project: Apache MXNet
>          Issue Type: Story
>            Reporter: Aaron Markham
>            Priority: Major
>
> Some installation instructions can be tested automatically. However, when the 
> instructions are coupled with text for the user, updates can easily break 
> automation scripts. Also, some installation instructions follow a pattern of 
> "if–>then" with multiple steps offering multiple options. This creates a 
> difficult situation for an automation process. 
> For example, a contributor has worked on getting MXNet to work a Mac with one 
> of those plugin GPUs. They want to add new instructions for this. Most other 
> contributors don't have access to this setup and cannot verify the steps. We 
> should not expect the contributor to update the instructions, accommodate CI, 
> and also fix the installation instructions nightly test. 
> Another example would be that new users have no idea what math library they 
> could or should use, and probably don't care if even presented the option. 
> Other more advanced users may have preferences for what math library to use. 
> Both sets of users find these options in the dependencies sections, and the 
> setup guide offers several different math library approaches. Which pathway 
> is more important to test? Can a script to test the installation instructions 
> parse all the options and test them all? 
>  
> I suggest the following approach.
>  # Create a template with a common flow for the installation instructions for 
> any platform or language binding.
>  # The flow should consist of the steps the user should follow and code block 
> containing each command that should be executed. If there is more than one 
> code block, the page should end with a complete code block that has all of 
> the steps in sequence; one that can be executed directly if it were copied 
> and pasted.
>  # A nightly CI script can then be invoked to execute the consolidated 
> installation code block that the instructions use. 
>  # PRs for installation instructions should be validated against these 
> requirements.
> Optional approaches / enhancements
>  # The code blocks can be sourced by an include directive. This will pull the 
> contents of a text file that contains the commands.
>  # Alternatively, multiple CI scripts can be created - one for each platform 
> and binding combination, so it is clear what fails when everything else is 
> passing. You can also disable a broken test much easier, and not disable 
> everything or have constant failures when one thing is broken.
>  
> Timing on implementation is subject to getting the include feature to 
> properly work with Sphinx, or when Sphinx is replaced with Jekyll for the 
> website builds. Both platforms support includes, however the Sphinx 
> implementation we use today seems partially broken and doesn't render 
> includes as described in the Sphinx documentation.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to