#+TITLE: Contribute | Org mode
#+description: Org: an Emacs Mode for Notes, Planning and Authoring
#+include: "./resources/preamble.html" export html
#+include: "./resources/normal-outline-3.html" export html
Org mode is [[file:manual/History-and-Acknowledgments.html][built on the efforts of enthusiastic volunteers]]. The two
best ways to contribute to Org are with time or money. Donations
support Org's primary maintainer Bastien Guerry.
<div class="banner"><p style="margin:0 0.5em">
<a href="https://liberapay.com/bzg" title="Donations always help" style="color: #c7a416; display: inline-block">
<img class="inline" src="/resources/img/external/librepay.svg"/> Liberapay</a>
<a href="https://github.com/sponsors/bzg" title="Donations always help" style="color: #222; display: inline-block">
<img class="inline" src="/resources/img/external/github.svg"/> GitHub</a>
<a href="https://www.paypal.com/paypalme/bzg/10" title="Donations always help" style="color: #253b80; display: inline-block">
<img class="inline" src="/resources/img/external/paypal.svg"/> PayPal</a>
You can also support Org with your time, no matter your level of
<div class="banner"><p style="margin:0 0.5em">
<a href="https://git.savannah.gnu.org/cgit/emacs/org-mode.git/" style="color: #661a13; display: inline-block">The Org Codebase</a>
The fastest way to get involved is by [[https://lists.gnu.org/mailman/listinfo/emacs-orgmode][subscribing to the mailing list]].
You can also always get in touch via [[mailto:firstname.lastname@example.org][email@example.com]] to help
move the project forward.
# FIXME this section needs links, e.g. to instructions for running tests
- Very little experience :: Give [[file:manual/Feedback.html][feedback]] about your experience with org.
- A dash of experience :: Help improve the documentation.
- Some experience :: Help test patches, track down bugs.
- Moderate experience :: Submit bug-fixes, improve features.
Whatever your contribution, it is appreciated 😀.
* Copyright assignment
Org mode has a substantial code base composed of many files, most of
which are distributed as part of GNU Emacs.
These files make up the /Org core/ and are copyrighted by the [[https://www.fsf.org/][Free
Software Foundation]] (FSF).
If you want to contribute more than 15 lines of code to Org mode you
will [[https://www.gnu.org/licenses/why-assign.html][need]] to assign the copyright for your contributions to the FSF so
that they can be included in GNU Emacs. To start the copyright
assignment process fill out [[https://orgmode.org/request-assign-future.txt][this form]] and email it to [[mailto:firstname.lastname@example.org][email@example.com]].
* Submitting patches
** Suggested workflow
~$ git pull
~$ git checkout -b my-changes
# make some changes
~$ git commit -a -m "Definitely following the commit conventions"
# repeat a few times, as appropriate
~$ git format-patch master
# optional, see: https://git-send-email.io/
~$ git send-email --to="firstname.lastname@example.org" HEAD^
** Coding conventions
Org is part of Emacs, so any contribution should follow the [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Coding-Conventions.html][GNU Emacs
Lisp coding conventions]] described in Emacs manual.
** Commit messages
Commit messages also need to be structured according to Emacs
main file/feature: Overall change summary
,* file-changed.el (function-changed, another-function): Description of
the change implemented, reference any relevant `other-functions' or
(another-changed-function): Change something. Use active voice,
and avoid passive forms. Please write in full sentences.
1. The first line should include the file/feature affected, followed
by a colon and an short description of the overall change (this
description starts with an uppercase letter and does not end with a
2. The second line should be left blank
3. Start on the third line there should be a ChangeLog entry for each
file changed, as seen in the example above
- Quote variables and function names like ~`this'~
- Separate sentences with *two* spaces
- Use active voice instead of passive voice
- Try to be terse
4. The line after the final ChangeLog entry should be left blank
5. Optionally this may be followed by any supplementary information
explaining the patch
6. If the patch is from a contributor /without/ FSF assignment, it can
be accepted as long as it contains no more than 15 lines. In this
case add the =TINYCHANGE= cookie (anywhere in the message)
** Sending patches
You can use ~git format-patch~ or ~git diff~ to generate the patch files
and then include them in an email to [[mailto:email@example.com][firstname.lastname@example.org]] describing
what you've done. If you have configured git to use [[https://git-send-email.io/][send-email]], then
you can use that. If you are sending the patch manually, please add
the phrase =[PATCH]= to the beginning of the =Subject:= line of your
e-mail, your submission will then be tracked on [[https://updates.orgmode.org][updates.orgmode.org]].
If your mail has not appeared on [[https://list.orgmode.org/][the list]] after waiting at least 15
minutes, it may have been flagged as spam by the robot email
overlords. If this happens, you should be able to get the email to go
through by [[https://lists.gnu.org/mailman/listinfo/emacs-orgmode][subscribing]] to the mailing list.