org-hacks.org: reschedule agenda items to today with a single command
[Worg.git] / org-contribute.org
blob17aa0da3c7ff12e923c79b56e225f0beb81aa2fe
1 #+OPTIONS:    H:3 num:nil toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
2 #+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate
3 #+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
4 #+TAGS:       Write(w) Update(u) Fix(f) Check(c) 
5 #+TITLE:      How to contribute to Org?
6 #+AUTHOR:     Worg people
7 #+EMAIL:      mdl AT imapmail DOT org
8 #+LANGUAGE:   en
9 #+PRIORITIES: A C B
10 #+CATEGORY:   worg
12 # This file is the default header for new Org files in Worg.  Feel free
13 # to tailor it to your needs.
15 [[file:index.org][{Back to Worg's index}]]
17 * Types of contributions
19 Every contribution to Org is very welcome.  Here is a list of areas where
20 your contribution will be useful:
22 - you can submit *bug reports* -- Before sending a bug report, make sure
23   you have read this section of Org's manual: [[http://orgmode.org/org.html#Feedback][Feedback]]
25 - you can submit *feature requests* -- Org is already mature, but new
26   ideas keep popping up.  If you want to request a feature, it might
27   be a good idea to have a look at the current [[http://orgmode.org/worg/org-issues.html][Issue tracking file]]
28   which captures both bug reports and feature requests.  Or dig into
29   the mailing list for possible previous discussions about your idea.
30   If you cannot find back your idea, formulate it as detailed as
31   possible, if possible with examples, and send it to the mailing
32   list.
34 - you can submit *patches* -- You can submit patches to the mailing list.
36   If your patch is against a file that is part of Emacs, then your
37   total contribution (all patches you submit) should change /less than
38   20 lines/.  If you contribute more, you have to assign the copyright
39   of your contribution to the Free Software Foundation (see below).
40   
41 - you can submit Org *add-ons* -- there are many Org add-ons.  The best way
42   is to submit your code to the mailing list to discuss it with people.  If
43   it is useful, you might consider contributing it to the =CONTRIB/=
44   directory in the git repository.
46 - you can submit material to the *Worg* website -- This website is made of
47   Org files that you can contribute to.  Learn what Worg is [[file:worg-about.org][about]] and how
48   to contribute to it [[file:worg-git.org][through git]].
50 * Copyright issues when contributing to Emacs org-mode
52 Org is made of many files.  Most of them are also distributed as part
53 of GNU Emacs.  These files are called the /Org core/, and they are all
54 copyrighted by the [[http://www.fsf.org][Free Software Foundation, Inc]].  If you consider
55 contributing to these files, your first need to grant the right to
56 include your works in GNU Emacs to the FSF.  For this you need to
57 complete [[http://orgmode.org/request-assign-future.txt][this form]], send it to [[mailto:assign@gnu.org][assign@gnu.org]], and tell the Org-mode
58 maintainer when this process is complete.  Some people consider this a
59 hassle.  I don't want to discuss this in detail here - there are some
60 good reasons for getting the copyright registered, an example is
61 discussed in this [[http://twit.tv/floss117][FLOSS weekly podcast]].  Furthermore, by playing
62 according to the Emacs rules, we gain the fantastic advantage that
63 every version of Emacs ships with Org-mode already fully built in.  So
64 please consider doing this - it makes our work as maintainers so much
65 easier, because we can then take your patches without any additional
66 work.
68 If you want to learn more about /why/ copyright assignments are
69 collected, read this: [[http://www.gnu.org/licenses/why-assign.html][Why the FSF gets copyright assignments from
70 contributors?]]
72 * Preferred way of submitting patches
74 Org-mode is developed using /git/ as the version control system.  Git
75 provides an amazing framework to collaborate on a project.  Git can be
76 used to make patches and send them via email - this is perfectly fine
77 for minor changes.
78 #+begin_quote
79   This command will make a patch between the staging area (in
80   your computer), and the file you modified:
81   : git diff -p org-whatever.el > org-whatever.el.diff
82   If you already committed your changes to your index (staging
83   area), then you should compare against a particular branch (in
84   this example, origin/master):
85   : git diff -p origin/master org-whatever.el > org-whatever.el.diff
86   You email the output to the mailing list, adding =[PATCH]= to
87   the subject, and description of what you fixed or changed.
88 #+end_quote
89 These patches will be automatically registered at [[http://patchwork.newartisans.com/project/org-mode][John Wiegley's
90 patchwork server]] and will then be accepted, rejected, or sent back to
91 the author with a request for modification.
93 For more significant contributions, the best way to submit patches is
94 through public branches of your repository clone.
96 1. Clone our git repository at =http://orgmode.org/w/org-mode.git=
98 2. Create a repository that can be publicly accessed, for example on
99    /GitHub/, /repo.or.cz/, or on your own server.
101 3. Push your topic branches (and optionally the master branch) to your
102    public repository.
104    Define a remote for your public repository you push topics to.
106    : git remote add REMOTE URL-GOES-HERE
108    Push branches to the remote
110    : git push REMOTE BRANCH1 [BRANCH2 BRANCH3 ...]
112    e.g.
114    : git remote add github ssh://.../     # Done once to define the remote 'github'
115    : git push github my-topic
117 4. Do your work on topic-specific branches, using a branch name that
118    relates to what you are working on.
120 5. Often do
122    : git remote update
124    to pull commits from all defined remote repositories, in particular
125    the org-mode master at /repo.or.cz/.
127 6. When you have something workable, publish the git path and branch
128    name on the mailing list, so that people can test it and review
129    your work.
131 7. After your topic has been merged to the project master branch you
132    can delete the topic on your local and remote repositories.
134    : git branch -d NEWTOPIC
135    : git push REMOTE :NEWTOPIC
137 * Commit messages and ChangeLog entries
139 We have decided to no longer keep a ChangeLog file to record changes
140 to individual functions.  In a modern version control system like git,
141 ChangeLog is duplicating information that should be in the commit
142 message, and it is the main cause of merge conflicts.
144 Instead, the change log entry should be part of the commit message.  A
145 commit message should be constructed in the following way:
147 - Line 1 of the commit message should always be a short description of
148   the overall change.  Line 1 does /not/ get a dot at the end.
149 - Line 2 is an empty line
150 - In line 3, the ChangeLog entry should start, in a similar format as
151   in the old ChangeLog files, but without the author information
152   (which is part of the commit anyway).
153 - After the changelog, another empty line should come before any
154   additional information that the committer wishes to provide in order
155   to explain the patch.
156 - If the change is a minor change made by a committer without
157   copyright assignment to the FSF, the commit message should also
158   contain the cookie =TINYCHANGE= (anywhere in the message).  When we
159   later produce the ChangeLog file for Emacs, the change will be
160   marked appropriately.
162 Here is an example for such a message
164 #+begin_example
165   Capture: Fix the case of using a template file
166       
167   ,* lisp/org-capture.el (org-capture-set-plist): Make sure txt is a string
168   before calling `string-match'.
169   (org-capture-templates): Fix customization type.
170   ,* doc/org.texi (Capture): Document using a file for a template
171       
172   The problem here was that a wrong keyword was given in the
173   customization type.  This let to a string-match against a list value.
174   
175   Modified from a patch proposal by Johan Friis.
176   
177   TINYCHANGE
178 #+end_example
180 If you are using /magit.el/ in Emacs, The ChangeLog-like such entries
181 are easily made by pressing =C= in the diff listing.  Another option
182 to make the entries is to use `C-x 4 a' in the changed function.  This
183 will create entries in the ChangeLog file, and you can then cut and
184 paste these to the commit message and remove the indentation.
186 * Copyrighted contributors to Org-mode
188 Here is the list of people who have contributed actual code to the
189 Org-mode core.  Note that the manual contains a more extensive list
190 with acknowledgments, including contributed ideas!  The lists below
191 are mostly for house keeping, to help the maintainers keep track of
192 copyright issues.
194 ** Current contributors
195   :PROPERTIES:
196   :CUSTOM_ID: contributors_with_fsf_papers
197   :END:
199 Here is the list of people who signed the papers with the Free Software
200 Foundation and can now freely submit code to Org files that are included
201 within GNU Emacs:
203 1. Russel Adams
204 2. Benjamin Andresen
205 3. Konstantin Antipin
206 4. Julien Barnier
207 5. Ian Barton
208 6. Thomas Baumann
209 7. Joel Boehland
210 8. Jan Böker
211 9. Lennart Borgman
212 10. Tom Breton
213 11. Andreas Burtzlaff
214 12. Baoqiu Cui
215 13. Sacha Chua
216 14. Julien Danjou
217 15. Dan Davison
218 16. Carsten Dominik
219 17. Stephen Eglen
220 18. Christian Egli
221 19. Adam Elliott
222 20. Miguel A. Figueroa-Villanueva
223 21. Mikael Fornius
224 22. Eric S. Fraga
225 23. Michael Gauland
226 24. Daniel M German
227 25. Manuel Giraud
228 26. Nicolas Goaziou
229 27. Christopher Miles Gray
230 28. Bernd Grobauer
231 29. Bastien Guerry
232 30. Daniel M. Hackney
233 31. Bernt Hansen
234 32. Magnus Henoch
235 33. Tomas Hlavaty
236 34. Tassilo Horn
237 35. Noorul Islam K M
238 36. Erik Iverson
239 37. Phil Jackson
240 38. Peter Jones
241 39. Tokuya Kameshima
242 40. Richard Klinda
243 41. Anthony Lander
244 42. Christopher League
245 43. Matt Lundin
246 44. David Maus
247 45. Nathan Neff
248 46. Ross Patterson
249 47. Juan Pechiar
250 48. Martin Pohlack
251 49. Jason Riedy
252 50. Richard Riley
253 51. Philip Rooke
254 52. Sebastian Rose
255 53. Eric Schulte
256 54. Charles Sebold
257 55. Paul Sexton
258 56. James TD Smith
259 57. Michael Sperber
260 58. Ulf Stegemann
261 59. Lukasz Stelmach
262 60. Andy Steward
263 61. Christopher Suckling
264 62. David O'Toole
265 63. Sebastien Vauban
266 64. Zhang Weize
267 65. John Wiegley
268 66. Piotr Zielinski
270 ** Processing
272 These people have been asked to sign the papers, and they are
273 currently considering it or a request is being processed by the FSF.
275 1. Chris Gray
277 ** Tiny Changes
279 These people have submitted tiny change patches that made it into Org
280 without FSF papers.  When they submit more, we need to get papers
281 eventually.  The limit is a cumulative change of 20 non-repetitive
282 change lines.  Details are given in [[http://www.gnu.org/prep/maintain/maintain.html#Legally-Significant ][this document]].
284 1. Robert P. Goldman
285 2. Andy Lutomirski
287 (this list may be incomplete - please help to complete it)
289 ** No FSF assignment
291 These people cannot or prefer to not sign the FSF copyright papers,
292 and we can only accept patches that do not change the core files (the
293 ones that are also in Emacs).
295 Luckily, this list is still empty.
297 #+BEGIN: timestamp :string "Last update: " :format "%Y-%m-%d @ %H:%M"
299 #+END: