This document aims to provide some general guidelines for sharing source code which exhibits an undesirable behaviour, in order for it to be reviewed and corrected on online forums.
First of all, your code should exhibit the problem you are having and should be a self-contained, and reproducing example (see “The Short, Self Contained, Correct, Example” page).
If the code is too large, please consider reducing it to a more minimal example that still exhibits the problem (see the bisection method ). Namely, you can try gradually removing parts of the code while each time ascertaining that the problem can still be reproduced until you have reached the shortest possible code. Often, doing that will be enough to find the culprit reason for the failure and to fix it.
Please don't share non-runnable pieces and fragments of your code, see “Show Us The Whole Code” .
-
If you are coding a web page, you can try sharing your code using jsfiddle .
-
Otherwise, if your code is self-contained in one file, you can use a paste site such as ideone or paste.debian.net. If you are using an IRC chatroom, don't floodpaste the code to the channel because this is slower and more annoying than using a paste site and may get you kicked or devoiced out of the channel.
Some other types of forums allow you to quote a single and self-contained codebase using a notation such as “pre” tags, or using indentation or triple-backquotes, so it may be an option there depending on the forum’s policy.
-
If you have more than one file in the project, then you should put it in a self-contained version control repository on a code sharing site such as GitHub , Bitbucket , or GitLab , so people can easily clone or checkout it.
- Freenode’s ##programming channel FAQ - where this document originated from, and which may contain some other insights.
- Writing the Perfect Question - by Jon Skeet
- How to ask questions the smart way - an older resource with a somewhat condescending tone
- Getting Answers - a guide by mikeash.com, which unfortunately suffers from using too many obscure Apple APIs as examples.
- How to Get Help Online - recommended venues.
- Canonical URL for the document - on Shlomi Fish’s home site. That page should validate as XHTML 1.1.
- GitHub repository - contains the Markdown sources, an issue tracker and more resources. Contributions are welcome.
This document is Copyright by Shlomi Fish, 2017, and is available under the terms of the Creative Commons Attribution License 4.0 Unported (or at your option any later version of that licence).
For securing additional rights, please contact Shlomi Fish and see the explicit requirements that are being spelt from abiding by that licence.