1 of 8

Minimal Complete Valid Example

  • Minimal - Make it as short as practical.
  • Complete - Include everything another person might need to recreate the problem.
  • Valid - Validate the separate parts. Use the naming conventions and code indentation the audience expects.
  • Example - It needs to show an actual example of the problem.

Minimal

This can be done one of two ways.

  1. Restart from scratch - Adding in only what is needed to see the problem. This can be faster for vast systems where you think you already know the source of the problem.
  2. Divide and conquer - Where you have a reasonable amount of code, but the source of the problem is entirely unclear.

Complete

If the problem requires some server-side code as well as an XML based configuration file, include them both. If a web page problem requires HTML, some JavaScript & a stylesheet, include all 3.

This is a good idea for two reasons:

  1. Some people might be prepared to load the parts up, and actually try them. The acid test of the changes they are about to suggest.
  2. The problem might not be in the part you suspect it is, but another part entirely.

Valid

Validate the HTML or XML. Run the code of a run-time problem through a compiler and check there are no compile-time errors.

Don't reduce code to a single line just to make it shorter! It is important that people who read it are able to understand what they are reading. Also ensure the code uses a logical and consistent code indentation. This helps both you and other people to see misplaced brackets that might change the code flow & cause bugs. Most code editors have a shortcut for formatting the code.

Example

Ensure to the best of your ability that the MCVE actually reproduces the problem! Sometimes a problem might be fixed in the course of the changes, but for lack of a server restart or browser refresh, the fact that it is fixed is not obvious.

It might help to shut the system down and restart it, or transport the example to a fresh machine to confirm it really does provide an example of the problem.


OK - I am happier with this version over the earlier draft..