Diff of /CONTRIBUTING.md [000000] .. [422372]

Switch to side-by-side view

--- a
+++ b/CONTRIBUTING.md
@@ -0,0 +1,184 @@
+# Contributing to EEGLAB
+
+There are several ways in which you can contribute to the ongoing development of EEGLAB:
+
+## Bug reporting
+
+1. Please search on both the [EEGLAB discussion list archive](https://sccn.ucsd.edu/pipermail/eeglablist/)
+   (to search the list Google "eeglablist your question")
+   and the [GitHub issue list](https://github.com/sccn/eeglab/issues)
+   to see if anybody else has lodged a similar observation.
+
+3. How confident are you that the behavior you have observed is in fact a
+   genuine bug, and not a misunderstanding?
+
+   -  *Confident*: Please [open a new GitHub issue](https://github.com/sccn/eeglab/issues/new);
+      select the "bug report" issue template to get started.
+
+   -  *Not so confident*: That's fine! Consider instead creating a new topic
+      on the [EEGLAB discussion list](https://eeglab.org/others/EEGLAB_mailing_lists.html);
+      others can then comment on your observation and determine the
+      appropriate level of escalation.
+
+## Requesting a new feature
+
+Please search the [GitHub issue list](https://github.com/sccn/eeglab/issues)
+to see if anybody else has made a comparable request:
+
+   -  If a corresponding issue already exists, please add a comment to that
+      issue to escalate the request. Additionally, describe any
+      aspect of that feature not yet described in the existing issue.
+
+   -  If no such listing exists, then you are welcome to create a [new
+      issue](https://github.com/sccn/eeglab/issues/new) outlining the
+      request. Be sure to select the "feature request" option to get started
+      with writing the issue.
+
+## Asking questions
+
+General questions regarding EEGLAB download, usage, or any other
+aspect that is not specific to the EEGLAB *code*, should be directed to
+the [EEGLAB discussion list](https://eeglab.org/others/EEGLAB_mailing_lists.html). Also check
+the [online documentation](https://eeglab.org/).
+
+## Making direct contributions
+
+Thanks for your interest in making direct contributions to EEGLAB!
+We are excited to expand the breadth of researchers involved in improving
+and expanding this software, and to ensure that all who make such
+contributions receive appropriate acknowledgment through Git.
+
+The instructions below give a short overview of how to go about generating a
+proposed change to EEGLAB. A more detailed tutorial on using Git and contributing
+to the code (or website) is presented as [online tutorial](https://eeglab.org/tutorials/contribute/)
+on the EEGLAB website.
+
+1. You will need to create a *fork* of the [EEGLAB repository](https://github.com/sccn/eeglab)
+   into your GitHub account, where unlike the main EEGLAB repository,
+   you will have full write access to make the requisite changes.
+
+2. Create a Git branch that is named appropriately according to the
+   modifications that are being made. The existing code branch on which
+   this new derived branch should be based depends on the nature of the
+   proposed change (described later below).
+
+3. Generate one or more Git commits that apply your proposed changes to
+   the repository:
+
+   -  Individual commits should ideally have a clear singular purpose,
+      and not incorporate multiple unrelated changes. If your proposed
+      changes involve multiple disparate components, consider breaking
+      those changes up into individual commits.
+
+      Conversely, if multiple code changes are logically grouped with /
+      linked to one another, these should ideally be integrated into a
+      single commit.
+
+   -  Commits should contain an appropriate message that adequately
+      describes the change encapsulated within.
+
+      If the change demands a longer description, then the commit message
+      should be broken into a synopsis (less than 80 characters) and message
+      body, separated by two newline characters (as this enables GitHub to
+      parse them appropriately).
+
+      This can be achieved at the command-line as follows:
+
+      `$ git commit -m $'Commit synopsis\n\nHere is a much longer and wordier description of my proposed changes that doesn\'t fit into 80 characters.\nI can even spread the message body across multiple lines.'`
+
+      (Note also the escape character "`\`" necessary for including an
+      apostrophe in the message text)
+
+   -  Where relevant, commit messages can also contain references to
+      GitHub issues or pull requests (type the "`#`" character followed
+      by the issue / PR number), and/or other individual commits (copy
+      and paste the first 8-10 characters of the commit hash).
+
+   -  If multiple persons have contributed to the proposed changes, it is
+      possible to modify individual Git commits to have [multiple
+      authors](https://help.github.com/en/articles/creating-a-commit-with-multiple-authors),
+      to ensure that all contributors receive appropriate acknowledgement.
+
+   As a general rule: Git commits and commit messages should be constructed
+   in such a way that, at some time in the future, when one is navigating
+   through the contribution history, the evolution of the code is as clear
+   as possible.
+
+4. Identify the appropriate classification of the change that you propose
+   to make, and read the relevant instructions there:
+
+   -  "[**Fix**](#fix)": If the current code behaviour is
+      *clearly incorrect*.
+
+   -  "[**Enhancement**](#enhancement)": If the proposed change improves the *performance* or extends the *functionality* of a particular command or process.
+
+   -  "[**Documentation**](#documentation)": If you made some changes to the function description in the help section of the function.
+
+5. Check that your modified code does not prevent EEGLAB from
+   passing existing tests, wherever possible (all test files are in the EEGLAB test directory).
+
+6. For code contributions, if possible, a unit test or reproducibility
+   test should be added. This not only demonstrates the behavior of the
+   proposed code, but will also preclude future regression of the behavior
+   of that code.
+
+1. Once completed, a Pull Request should be generated that merges the
+   corresponding branch in your forked version of the EEGLAB repository
+   into the appropriate target branch of the main EEGLAB repository
+   itself:
+
+   -  If your intended changes are complete, and you consider them ready
+      to be reviewed by an EEGLAB team member and merged imminently,
+      then create a standard Pull Request.
+
+   -  If your changes are ongoing, and you are seeking feedback from the
+      EEGLAB developers before completing them, then also create a standard pull
+      request. When you modify your code, the pull request will automatically
+      be updated.
+
+#### Fix
+
+1. If there does not already exist a [GitHub issue](https://github.com/sccn/eeglab/issues)
+   describing the bug, consider reporting the bug as a standalone issue
+   prior to progressing further; that way developers can confirm the issue,
+   and possibly provide guidance if you intend to resolve the issue yourself.
+   Later, the Pull Request incorporating the necessary changes should then
+   reference the listed issue (simply add somewhere in the description
+   section the "`#`" character followed by the issue number).
+
+2. Bug fixes are merged directly to `master`; as such, modifications to the
+   code should be made in a branch that is derived from `master`, and the
+   corresponding Pull Request should select `master` as the target branch
+   for code merging.
+
+3. A unit test or reproducibility test should ideally be added: such a
+   test should fail when executed using the current `master` code, but pass
+   when executed with the proposed changes.
+
+#### Enhancement
+
+1. New features, as well as any code changes that extend the functionality of
+   EEGLAB, are merged to the `develop` branch, which contains
+   all resolved changes since the most recent tag update. As such, any
+   proposed changes that fall under this classification should be made
+   in a branch that is based off of the `develop` branch, and the corresponding
+   Pull Request should select `develop` as the target branch for code merging.
+
+#### Documentation
+
+If you want to contribute to the documentation on the EEGLAB website, please refer to the website's [Github repository](https://github.com/sccn/sccn.github.io).
+
+#### Coding conventions
+
+Please follow the [MATLAB style guidelines](https://www.mathworks.com/matlabcentral/fileexchange/46056-matlab-style-guidelines-2-0) for guidelines on contributing to the EEGLAB code base.
+
+Non-exhaustive summary of coding guidelines:
+
+* 2 space indents; indent using spaces and not tabs
+* No spaces between function name and opening parenthesis of argument list
+* One space after the comma that separates function arguments
+* Vertically align code with spaces in case it improves readability
+
+#### References
+
+This document is based on the excellent CONTRIBUTING.md document from the [MRTRIX repository](https://github.com/MRtrix3/mrtrix3/), and adjusted accordingly.