|
| 1 | +# Contributing to MathJax |
| 2 | + |
| 3 | +So you're interested in giving us a hand? That's awesome! We've put |
| 4 | +together some brief guidelines that should help you get started |
| 5 | +quickly and easily. |
| 6 | + |
| 7 | +There are lots and lots of ways to get involved, this document covers: |
| 8 | + |
| 9 | +* [raising issues](#raising-issues) |
| 10 | + * [bug reports](#bug-reports) |
| 11 | + * [feature requests](#feature-requests) |
| 12 | + * [change requests](#change-requests) |
| 13 | +* [working on MathJax core](#working-on-MathJax-core) |
| 14 | + * [submitting pull requests](#submitting-pull-requests) |
| 15 | +* [testing and quality assurance](#testing-and-quality-assurance) |
| 16 | +* [writing documentation](#writing-documentation) |
| 17 | +* [translation](#translation) |
| 18 | +* [Conduct](#conduct) |
| 19 | + |
| 20 | + |
| 21 | +## Reporting An Issue |
| 22 | + |
| 23 | +If you're about to raise an issue because you think you've found a |
| 24 | +problem with MathJax, or you'd like to make a request for a new |
| 25 | +feature in the codebase, or any other reason… please read this first. |
| 26 | + |
| 27 | +The GitHub issue tracker is the preferred channel for [bug reports](#bug-reports), |
| 28 | +[feature requests](#feature-requests), [change requests](#change-requests) and [submitting pull |
| 29 | +requests](#submitting-pull-requests), but please respect the following restrictions: |
| 30 | + |
| 31 | +* Please **search for existing issues**. Help us keep duplicate issues |
| 32 | + to a minimum by checking to see if someone has already reported your |
| 33 | + problem or requested your idea. |
| 34 | + |
| 35 | +* Please **do not** use the issue tracker for personal support |
| 36 | + requests (use [the MathJax User Group](https://groups.google.com/forum/#!forum/mathjax-users). |
| 37 | + |
| 38 | +* Please **be civil**. Keep the discussion on topic and respect the |
| 39 | + opinions of others. See also our [Conduct Guidelines](#conduct) |
| 40 | + |
| 41 | +### Bug Reports |
| 42 | + |
| 43 | +A bug is a _demonstrable problem_ that is caused by the code in the repository. |
| 44 | +Good bug reports are extremely helpful - thank you! |
| 45 | + |
| 46 | +Guidelines for bug reports: |
| 47 | + |
| 48 | +1. **Use the GitHub issue search** — check if the issue has already been |
| 49 | + reported. |
| 50 | + |
| 51 | +2. **Check if the issue has been fixed** — try to reproduce it |
| 52 | + using the latest `develop` or look for [closed issues in the |
| 53 | + current milestone](https://github.com/MathJax/MathJax/issues?&page=1&state=closed). |
| 54 | + |
| 55 | +3. **Isolate the problem** — ideally create a [reduced test |
| 56 | + case](http://css-tricks.com/6263-reduced-test-cases/) and a live example. |
| 57 | + |
| 58 | +4. **Include a screencast if relevant** - Is your issue about a design |
| 59 | + or front end feature or bug? The most helpful thing in the world is |
| 60 | + if we can *see* what you're talking about. Use |
| 61 | + [LICEcap](http://www.cockos.com/licecap/) to quickly and easily |
| 62 | + record a short screencast (24fps) and save it as an animated gif! |
| 63 | + Embed it directly into your GitHub issue. Kapow. |
| 64 | + |
| 65 | +5. Use the Bug Report template below or [click this |
| 66 | + link](https://github.com/MathJax/MathJax/issues/new?title=Bug%3A&body=%23%23%23%20Issue%20Summary%0A%0A%23%23%23%20Steps%20to%20Reproduce%0A%0A1.%20This%20is%20the%20first%20step%0A%0AThis%20is%20a%20bug%20because...%0A%0A%23%23%23%20Technical%20details%0A%0A*%20MathJax%20Version%3A%20master%20-%20latest%20commit%3A%20%20INSERT%20COMMIT%20REF%0A*%20Client%20OS%3A%20%0A*%20Browser%3A%20%0A*%20) |
| 67 | + to start creating a bug report with the template automatically. |
| 68 | + |
| 69 | +A good bug report shouldn't leave others needing to chase you up for |
| 70 | +more information. Be sure to include the details of your environment. |
| 71 | + |
| 72 | +Here is a [real example](https://github.com/mathjax/MathJax/issues/820) |
| 73 | + |
| 74 | +Template Example ([click to use](https://github.com/MathJax/MathJax/issues/new?title=Bug%3A&body=%23%23%23%20Issue%20Summary%0A%0A%23%23%23%20Steps%20to%20Reproduce%0A%0A1.%20This%20is%20the%20first%20step%0A%0AThis%20is%20a%20bug%20because...%0A%0A%23%23%23%20Technical%20details%0A%0A*%20MathJax%20Version%3A%20master%20-%20latest%20commit%3A%20%20INSERT%20COMMIT%20REF%0A*%20Client%20OS%3A%20%0A*%20Browser%3A%20%0A*%20)): |
| 75 | +``` |
| 76 | +Short and descriptive example bug report title |
| 77 | +
|
| 78 | +### Issue Summary |
| 79 | +
|
| 80 | +A summary of the issue and the browser/OS environment in which it occurs. If |
| 81 | +suitable, include the steps required to reproduce the bug. |
| 82 | +
|
| 83 | +### Steps to Reproduce |
| 84 | +
|
| 85 | +1. This is the first step |
| 86 | +2. This is the second step |
| 87 | +3. Further steps, etc. |
| 88 | +
|
| 89 | +Any other information you want to share that is relevant to the issue |
| 90 | +being reported. Especially, why do you consider this to be a bug? What |
| 91 | +do you expect to happen instead? |
| 92 | +
|
| 93 | +### Technical details: |
| 94 | +
|
| 95 | +* MathJax Version: 2.3 (latest commit: f3aaf3a2a3e964df2770dc4aaaa9c87ce5f47e2c) |
| 96 | +* Client OS: Mac OS X 10.8.4 |
| 97 | +* Browser: Chrome 29.0.1547.57 |
| 98 | +``` |
| 99 | + |
| 100 | + |
| 101 | +### Feature Requests |
| 102 | + |
| 103 | +Feature requests are welcome. Before you submit one be sure to have: |
| 104 | + |
| 105 | +1. Read the |
| 106 | + [Roadmaps](https://github.com/mathjax/MathJax/wiki/Mathjax-roadmap), |
| 107 | + **use the GitHub search** and check the feature hasn't already been |
| 108 | + requested. |
| 109 | +2. Take a moment to think about whether your idea fits with the scope |
| 110 | + and aims of the project, or if it might better fit being a [custom |
| 111 | + extension](https://github.com/mathjax/MathJax-third-party-extensions). |
| 112 | +3. Remember, it's up to *you* to make a strong case to convince the |
| 113 | + project's leaders of the merits of this feature. Please provide as |
| 114 | + much detail and context as possible, this means explaining the use |
| 115 | + case and why it is likely to be common. |
| 116 | +4. Clearly indicate whether this is a feature request for MathJax |
| 117 | + core, input & output jax, or extensions. |
| 118 | + |
| 119 | + |
| 120 | +### Change Requests |
| 121 | + |
| 122 | +Change requests cover both architectural and functional changes to how |
| 123 | +MathJax works. If you have an idea for a new or different dependency, |
| 124 | +a refactor, or an improvement to a feature, etc - please be sure to: |
| 125 | + |
| 126 | +1. **Use the GitHub search** and check someone else didn't get there first |
| 127 | +2. Take a moment to think about the best way to make a case for, and |
| 128 | + explain what you're thinking. Are you sure this shouldn't really be |
| 129 | + a [bug report](#bug-reports) or a [feature |
| 130 | + request](#feature-requests)? Is it really one idea or is it many? |
| 131 | + What's the context? What problem are you solving? Why is what you |
| 132 | + are suggesting better than what's already there? Does it fit with |
| 133 | + the Roadmap? |
| 134 | + |
| 135 | + |
| 136 | +### Submitting Pull Requests |
| 137 | + |
| 138 | +Pull requests are awesome. If you're looking to raise a PR for |
| 139 | +something which doesn't have an open issue, please think carefully |
| 140 | +about [raising an issue](#raising-issues) which your PR can close, |
| 141 | +especially if you're fixing a bug. This makes it more likely that |
| 142 | +there will be enough information available for your PR to be properly |
| 143 | +tested and merged. |
| 144 | + |
| 145 | +##### Need Help? |
| 146 | + |
| 147 | +If you're not completely clear on how to submit / update / *do* Pull |
| 148 | +Requests, please check out our [source control |
| 149 | +policies](https://github.com/mathjax/MathJax/wiki/Source-control-policies). For |
| 150 | +more insights, chech the excellent in depth [Git Workflow |
| 151 | +guide](https://github.com/TryGhost/Ghost/wiki/Git-Workflow) from |
| 152 | +Ghost, in particular |
| 153 | + |
| 154 | +* [Ghost Workflow guide: commit messages](https://github.com/TryGhost/Ghost/wiki/Git-workflow#commit-messages) |
| 155 | + |
| 156 | +### Testing and Quality Assurance |
| 157 | + |
| 158 | +Never underestimate just how useful quality assurance is. If you're |
| 159 | +looking to get involved with the code base and don't know where to |
| 160 | +start, checking out and testing a pull request is one of the most |
| 161 | +useful things you could do. |
| 162 | + |
| 163 | +If you want to get involved with testing MathJax, there is a set of QA |
| 164 | +Documentation [in our testing |
| 165 | +framework](https://github.com/MathJax/MathJax-testing). |
| 166 | + |
| 167 | +Essentially though, [check out the latest develop |
| 168 | +branch](#contribute-to-core), take it for a spin, and if you find |
| 169 | +anything odd, please follow the [bug report guidelines](#bug-reports) |
| 170 | +and let us know! |
| 171 | + |
| 172 | +#### Checking out a Pull Request |
| 173 | + |
| 174 | +These are some [excellent |
| 175 | +instructions](https://gist.github.com/piscisaureus/3342247) on |
| 176 | +configuring your GitHub repository to allow you to checkout pull |
| 177 | +requests in the same way as branches: |
| 178 | +<https://gist.github.com/piscisaureus/3342247>. |
| 179 | + |
| 180 | + |
| 181 | +### Documentation |
| 182 | + |
| 183 | +MathJax's main documentation can be found at [docs.mathjax.org](http://docs.mathjax.org). |
| 184 | + |
| 185 | +The documentation is generated using |
| 186 | +[Sphinx-doc](http://sphinx-doc.org/) and hosted on [Read the |
| 187 | +docs](http://readthedocs.org). The source of the docs is hosted in the |
| 188 | +[MathJax-Docs GitHub |
| 189 | +repository](http://github.com/mathjax/mathjax-docs). |
| 190 | + |
| 191 | +You can clone the repo and submit pull requests following the |
| 192 | +[pull-request](#pull-requests) guidelines. |
| 193 | + |
| 194 | + |
| 195 | +### Translation |
| 196 | + |
| 197 | +If you wish to add or update translations of MathJax, please do it on |
| 198 | +[TranslateWiki.net](https://translatewiki.net/w/i.php?title=Special:Translate&group=out-mathjax-0-all) |
| 199 | +(and while you're there you can help other open source projects, |
| 200 | +too!). |
| 201 | + |
| 202 | +For bug reports and other questions that don't fit on |
| 203 | +TranslateWiki.net, head over to the |
| 204 | +[mathjax/mathjax-i18n](https://github.com/mathjax/MathJax-i18n) |
| 205 | +repository. |
| 206 | + |
| 207 | + |
| 208 | +## Working on MathJax Core {core} |
| 209 | + |
| 210 | +### Key Branches & Tags |
| 211 | + |
| 212 | +- **[develop](https://github.com/MathJax/MathJax/tree/develop)** is |
| 213 | + the development branch. All work on the next release is here. Do |
| 214 | + **NOT** use this branch for a production site. |
| 215 | +- **[master](https://github.com/MathJax/MathJax)** contains the latest |
| 216 | + release of MathJax. This branch may be used in production. |
| 217 | + |
| 218 | + |
| 219 | +# Conduct |
| 220 | + |
| 221 | +We are committed to providing a friendly, safe and welcoming environment for |
| 222 | +all, regardless of gender, sexual orientation, disability, ethnicity, religion, |
| 223 | +or similar personal characteristic. |
| 224 | + |
| 225 | +Please be kind and courteous. There's no need to be mean or rude. |
| 226 | +Respect that people have differences of opinion and that every design or |
| 227 | +implementation choice carries a trade-off and numerous costs. There is seldom |
| 228 | +a right answer, merely an optimal answer given a set of values and |
| 229 | +circumstances. |
| 230 | + |
| 231 | +Please keep unstructured critique to a minimum. If you have solid ideas you |
| 232 | +want to experiment with, make a fork and see how it works. |
| 233 | + |
| 234 | +We will exclude you from interaction if you insult, demean or harass anyone. |
| 235 | +That is not welcome behaviour. We interpret the term "harassment" as |
| 236 | +including the definition in the |
| 237 | +[Citizen Code of Conduct](http://citizencodeofconduct.org/); |
| 238 | +if you have any lack of clarity about what might be included in that concept, |
| 239 | +please read their definition. In particular, we don't tolerate behavior that |
| 240 | +excludes people in socially marginalized groups. |
| 241 | + |
| 242 | +Private harassment is also unacceptable. No matter who you are, if you feel |
| 243 | +you have been or are being harassed or made uncomfortable by a community |
| 244 | +member, please contact one of the channel ops or any of the |
| 245 | +[MathJax](https://github.com/MathJax/MathJax) core team |
| 246 | +immediately. Whether you're a regular contributor or a newcomer, we care about |
| 247 | +making this community a safe place for you and we've got your back. |
| 248 | + |
| 249 | +Likewise any spamming, trolling, flaming, baiting or other attention-stealing |
| 250 | +behaviour is not welcome. |
| 251 | + |
| 252 | +We also suggest to read [discourse's |
| 253 | +rules](http://blog.discourse.org/2013/03/the-universal-rules-of-civilized-discourse/) |
| 254 | + |
| 255 | +### References |
| 256 | + |
| 257 | +* We heavily borrowed from -- thanks to Mozilla and Ghost! |
| 258 | + * https://github.com/TryGhost/Ghost/blob/master/CONTRIBUTING.md |
| 259 | + * https://github.com/mozilla/rust/wiki/Note-development-policy |
| 260 | +* https://github.com/jden/CONTRIBUTING.md/blob/master/CONTRIBUTING.md |
| 261 | +* http://blog.discourse.org/2013/03/the-universal-rules-of-civilized-discourse/ |
0 commit comments