Add Thomas S. Dye to the list of signed contributors
[worg.git] / org-contribute.org
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
11
12 # This file is the default header for new Org files in Worg.  Feel free
13 # to tailor it to your needs.
14
15 [[file:index.org][{Back to Worg's index}]]
16
17 * Types of contributions
18
19 Every contribution to Org is very welcome.  Here is a list of areas where
20 your contribution will be useful:
21
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]]  You can also read
24   this great text: "[[http://www.chiark.greenend.org.uk/~sgtatham/bugs.html][How to Send Bug Reports Effectively]]"
25
26 - you can submit *feature requests* -- Org is already mature, but new ideas
27   keep popping up.  If you want to request a feature, it might be a good
28   idea to have a look at the current [[http://orgmode.org/worg/org-issues.html][Issue tracking file]] which captures
29   both bug reports and feature requests.  Or dig into the mailing list for
30   possible previous discussions about your idea.  If you cannot find back
31   your idea, formulate it as detailed as possible, if possible with
32   examples, and send it to the mailing list.
33
34 - you can submit *patches* -- You can submit patches to the mailing list.
35   See the [[For Org contributors: preferred way of submitting patches][Preferred way of submitting patches]] section for details.
36
37   If your patch is against a file that is part of Emacs, then your
38   total contribution (all patches you submit) should change /less than
39   20 lines/.  If you contribute more, you have to assign the copyright
40   of your contribution to the Free Software Foundation (see below).
41   
42 - you can submit Org *add-ons* -- there are many Org add-ons.  The best way
43   is to submit your code to the mailing list to discuss it with people.  If
44   it is useful, you might consider contributing it to the =CONTRIB/=
45   directory in the git repository.
46
47 - you can submit material to the *Worg* website -- This website is made of
48   Org files that you can contribute to.  Learn what Worg is [[file:worg-about.org][about]] and how
49   to contribute to it [[file:worg-git.org][through git]].
50
51 * Copyright issues when contributing to Emacs org-mode
52
53 Org is made of many files.  Most of them are also distributed as part of
54 GNU Emacs.  These files are called the /Org core/, and they are all
55 copyrighted by the [[http://www.fsf.org][Free Software Foundation, Inc]].  If you consider
56 contributing to these files, your first need to grant the right to include
57 your works in GNU Emacs to the FSF.  For this you need to complete [[http://orgmode.org/request-assign-future.txt][this
58 form]], send it to [[mailto:assign@gnu.org][assign@gnu.org]], and tell the Org-mode maintainer when this
59 process is complete.  Some people consider this a hassle.  I don't want to
60 discuss this in detail here - there are some good reasons for getting the
61 copyright registered, an example is discussed in this [[http://twit.tv/floss117][FLOSS weekly podcast]].
62 Furthermore, by playing according to the Emacs rules, we gain the fantastic
63 advantage that every version of Emacs ships with Org-mode already fully
64 built in.  So please consider doing this - it makes our work as maintainers
65 so much easier, because we can then take your patches without any
66 additional work.
67
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?]]
71
72 * For Org developers
73 :PROPERTIES:
74 :CUSTOM_ID: devs
75 :END:
76
77 1. Send your public key to [[mailto:emacs-orgmode%20AT%20dunsmor%20DOT%20com][Jason Dunsmore]].
78 2. Wait for confirmation that your public key has been added to the server.
79 3. Clone =org-mode.git= repository like this:
80    : ~$ git clone orgmode@orgmode.org:org-mode.git
81 4. Commit your changes and push them.
82
83 If you are undertaking big changes, please create a dedicated branch for
84 them.
85
86 * For Org contributors: preferred way of submitting patches
87
88 Org-mode is developed using /git/ as the version control system.  Git
89 provides an amazing framework to collaborate on a project.  Git can be used
90 to make patches and send them via email -- this is perfectly fine for minor
91 changes.
92
93 As long as these patches are formatted properly, they will be
94 automatically registered at [[http://patchwork.newartisans.com/project/org-mode][John Wiegley's patchwork server]] and will
95 then be accepted, rejected, or sent back to the author with a request
96 for modification. In this context, "formatted properly" means that the
97 patches are included either plainly in the mail text, or as text
98 attachments (mime-type text, subtypes "x-patch", "x-diff", or
99 "plain"). In particular, binary types or, even worse,
100 "application/octet-stream" (the asinine default of some mail programs)
101 are *not* going to be recognized. Please find out how to convince your
102 mail program to send proper attachments. Also, if you include the
103 patch inline, please make sure that your mail program does not
104 reformat it (although there are plenty of places further down the line
105 where that can happen, unfortunately). If you attach the patch, then
106 reformatting is not a problem.
107
108 ** Sending quick fixes
109
110 #+begin_quote
111   This command will make a patch between the staging area (in your
112   computer), and the file you modified:
113
114   : git diff -p org-whatever.el > org-whatever.el.diff
115
116   If you already committed your changes to your index (staging area), then
117   you should compare against a particular branch (in this example,
118   origin/master):
119
120   : git diff -p origin/master org-whatever.el > org-whatever.el.diff
121
122   You email the output to the mailing list, adding =[PATCH]= to the
123   subject, and description of what you fixed or changed.
124 #+end_quote
125
126 ** Sending commits
127
128 For more significant changes, you might want to work in several steps and
129 send each commit separately.  Here is the suggested workflow
130
131 #+begin_quote
132 :   ~$ git pull                 # make sure your repo is up to date
133 :   ~$ git branch my-changes    # create a new branch
134 :   ~$ git checkout my-changes  # switch to this new branch
135
136   ... make some changes (1) ...
137
138 :   ~$ git commit -m "This is change (1)"  # Commit your change
139
140   ... make another change (2) ...
141
142 :   ~$ git commit -m "This is change (2)"  # Commit your change
143 :   ~$ git format-patch master             # Creates two patches
144
145   ... Then two patches for your two commits are ready to be sent to the
146   list and detected by the patchwork server.
147 #+end_quote
148
149 Write useful commit messages: unless your change is very small, please
150 provide 1) a reason for it in your email and 2) a ChangeLog entry in the
151 commit message.
152
153 ** Sharing changes from a public branch
154
155 For more significant contributions, the best way to submit patches is
156 through public branches of your repository clone.
157
158 1. Clone our git repository at =http://orgmode.org/w/org-mode.git=
159
160 2. Create a repository that can be publicly accessed, for example on
161    /GitHub/, /repo.or.cz/, or on your own server.
162
163 3. Push your topic branches (and optionally the master branch) to your
164    public repository.
165
166    Define a remote for your public repository you push topics to.
167
168    : git remote add REMOTE URL-GOES-HERE
169
170    Push branches to the remote
171
172    : git push REMOTE BRANCH1 [BRANCH2 BRANCH3 ...]
173
174    e.g.
175
176    : git remote add github ssh://.../     # Done once to define the remote 'github'
177    : git push github my-topic
178
179 4. Do your work on topic-specific branches, using a branch name that
180    relates to what you are working on.
181
182 5. Often do
183
184    : git remote update
185
186    to pull commits from all defined remote repositories, in particular
187    the org-mode master at /repo.or.cz/.
188
189 6. When you have something workable, publish the git path and branch
190    name on the mailing list, so that people can test it and review
191    your work.
192
193 7. After your topic has been merged to the project master branch you
194    can delete the topic on your local and remote repositories.
195
196    : git branch -d NEWTOPIC
197    : git push REMOTE :NEWTOPIC
198
199 * Commit messages and ChangeLog entries
200
201 We have decided to no longer keep a ChangeLog file to record changes to
202 individual functions.  In a modern version control system like git,
203 ChangeLog is duplicating information that should be in the commit message,
204 and it is the main cause of merge conflicts.
205
206 Instead, the change log entry should be part of the commit message.  A
207 commit message should be constructed in the following way:
208
209 - Line 1 of the commit message should always be a short description of
210   the overall change.  Line 1 does /not/ get a dot at the end.
211 - Line 2 is an empty line
212 - In line 3, the ChangeLog entry should start, in a similar format as
213   in the old ChangeLog files, but without the author information
214   (which is part of the commit anyway).
215 - After the changelog, another empty line should come before any
216   additional information that the committer wishes to provide in order
217   to explain the patch.
218 - If the change is a minor change made by a committer without
219   copyright assignment to the FSF, the commit message should also
220   contain the cookie =TINYCHANGE= (anywhere in the message).  When we
221   later produce the ChangeLog file for Emacs, the change will be
222   marked appropriately.
223
224 Here is an example for such a message
225
226 #+begin_example
227   Capture: Fix the case of using a template file
228       
229   ,* lisp/org-capture.el (org-capture-set-plist): Make sure txt is a string
230   before calling `string-match'.
231   (org-capture-templates): Fix customization type.
232   ,* doc/org.texi (Capture): Document using a file for a template
233       
234   The problem here was that a wrong keyword was given in the
235   customization type.  This let to a string-match against a list value.
236   
237   Modified from a patch proposal by Johan Friis.
238   
239   TINYCHANGE
240 #+end_example
241
242 If you are using /magit.el/ in Emacs, The ChangeLog-like such entries are
243 easily made by pressing =C= in the diff listing.  Another option to make
244 the entries is to use `C-x 4 a' in the changed function.  This will create
245 entries in the ChangeLog file, and you can then cut and paste these to the
246 commit message and remove the indentation.
247
248 * Copyrighted contributors to Org-mode
249
250 Here is the list of people who have contributed actual code to the
251 Org-mode core.  Note that the manual contains a more extensive list
252 with acknowledgments, including contributed ideas!  The lists below
253 are mostly for house keeping, to help the maintainers keep track of
254 copyright issues.
255
256 ** Current contributors
257   :PROPERTIES:
258   :CUSTOM_ID: contributors_with_fsf_papers
259   :END:
260
261 Here is the list of people who signed the papers with the Free Software
262 Foundation and can now freely submit code to Org files that are included
263 within GNU Emacs:
264
265 1. Adam Elliott
266 2. Andreas Burtzlaff
267 3. Andy Steward
268 4. Anthony Lander
269 5. Baoqiu Cui
270 6. Barry Leonard Gidden
271 7. Bastien Guerry
272 8. Benjamin Andresen
273 9. Bernd Grobauer
274 10. Bernt Hansen
275 11. Brian James Gough
276 12. Carsten Dominik
277 13. Charles Sebold
278 14. Christian Egli
279 15. Christopher League
280 16. Christopher Miles Gray
281 17. Christopher Suckling
282 18. Dan Davison
283 19. Daniel M German
284 20. Daniel M. Hackney
285 21. David Maus
286 22. David O'Toole
287 23. Eric S. Fraga
288 24. Eric Schulte
289 25. Erik Iverson
290 26. Ian Barton
291 27. James TD Smith
292 28. Jan Böker
293 29. Jason Riedy
294 30. Jeffrey Ryan Horn
295 31. Joel Boehland
296 32. John Wiegley
297 33. Juan Pechiar
298 34. Julien Barnier
299 35. Julien Danjou
300 36. Konstantin Antipin
301 37. Lawrence Mitchell
302 38. Lennart Borgman
303 39. Lukasz Stelmach
304 40. Magnus Henoch
305 41. Manuel Giraud
306 42. Martin Pohlack
307 43. Martyn Jago
308 44. Matt Lundin
309 45. Michael Gauland
310 46. Michael Sperber
311 47. Miguel A. Figueroa-Villanueva
312 48. Mikael Fornius
313 49. Nathan Neff
314 50. Nicolas Goaziou
315 51. Noorul Islam K M
316 52. Paul Sexton
317 53. Peter Jones
318 54. Phil Jackson
319 55. Philip Rooke
320 56. Piotr Zielinski
321 57. Puneeth Chaganti
322 58. Richard Klinda
323 59. Richard Riley
324 60. Ross Patterson
325 61. Russel Adams
326 62. Sacha Chua
327 63. Sebastian Rose
328 64. Sebastien Vauban
329 65. Seweryn Kokot
330 66. Stephen Eglen
331 67. Tassilo Horn
332 68. Thomas Baumann
333 69. Thomas S. Dye
334 70. Tokuya Kameshima
335 71. Tom Breton
336 72. Tomas Hlavaty
337 73. Ulf Stegemann
338 74. Zhang Weize
339
340 ** Processing
341
342 These people have been asked to sign the papers, and they are
343 currently considering it or a request is being processed by the FSF.
344
345 1. Chris Gray
346
347 ** Tiny Changes
348
349 These people have submitted tiny change patches that made it into Org
350 without FSF papers.  When they submit more, we need to get papers
351 eventually.  The limit is a cumulative change of 20 non-repetitive
352 change lines.  Details are given in [[http://www.gnu.org/prep/maintain/maintain.html#Legally-Significant ][this document]].
353
354 1. Robert P. Goldman
355 2. Andy Lutomirski
356
357 (this list may be incomplete - please help to complete it)
358
359 ** No FSF assignment
360
361 These people cannot or prefer to not sign the FSF copyright papers,
362 and we can only accept patches that do not change the core files (the
363 ones that are also in Emacs).
364
365 Luckily, this list is still empty.
366
367 #+BEGIN: timestamp :string "Last update: " :format "%Y-%m-%d @ %H:%M"
368
369 #+END: