diff options
| author | Stephen Leake | 2014-12-23 13:11:45 -0600 |
|---|---|---|
| committer | Stephen Leake | 2014-12-23 13:11:45 -0600 |
| commit | fcb978e24023e9af4e465ac98222543990c70ffc (patch) | |
| tree | b71306f0aea7235715da76f88a9cb92608bddeca | |
| parent | 061f310c4a32491634b7563f4b8520f4824ed21b (diff) | |
| download | emacs-fcb978e24023e9af4e465ac98222543990c70ffc.tar.gz emacs-fcb978e24023e9af4e465ac98222543990c70ffc.zip | |
Move user-level information from CONTRIBUTE to doc/emacs/trouble.texi
Fixes bug#19299
* CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi
(commit messages): new, gathered from comments on emacs-devel
(Changelog notes): add reference to GNU coding standards section 5.2;
doc 'present tense', bug fix format
(branches): freeze announcements are made on info-gnu-emacs mailing
list
(git vs rename): new
* doc/emacs/trouble.texi: Move user-level information from CONTRIBUTE here
* lisp/startup.el (fancy-about-text): change buttons for etc/CONTRIBUTE
to (info "(emacs)Contributing")
| -rw-r--r-- | CONTRIBUTE | 267 | ||||
| -rw-r--r-- | ChangeLog | 19 | ||||
| -rw-r--r-- | doc/emacs/trouble.texi | 240 | ||||
| -rw-r--r-- | lisp/startup.el | 8 |
4 files changed, 317 insertions, 217 deletions
diff --git a/CONTRIBUTE b/CONTRIBUTE index dc6fd71624a..a190bd982fc 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE | |||
| @@ -1,196 +1,14 @@ | |||
| 1 | Copyright (C) 2006-2014 Free Software Foundation, Inc. | 1 | This file contains information on Emacs developer processes. |
| 2 | See end for license conditions. | ||
| 3 | 2 | ||
| 3 | For information on contributing to Emacs as a non-developer, see | ||
| 4 | (info "(emacs)Contributing") or | ||
| 5 | http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html | ||
| 4 | 6 | ||
| 5 | Contributing to Emacs | 7 | * Information for Emacs Developers. |
| 6 | |||
| 7 | Emacs is a collaborative project and we encourage contributions from | ||
| 8 | anyone and everyone. If you want to contribute in the way that will | ||
| 9 | help us most, we recommend (1) fixing reported bugs and (2) | ||
| 10 | implementing the feature ideas in etc/TODO. However, if you think of | ||
| 11 | new features to add, please suggest them too -- we might like your | ||
| 12 | idea. Porting to new platforms is also useful, when there is a new | ||
| 13 | platform, but that is not common nowadays. | ||
| 14 | |||
| 15 | For documentation on Emacs (to understand how to implement your | ||
| 16 | desired change), refer to: | ||
| 17 | |||
| 18 | - the Emacs Manual | ||
| 19 | http://www.gnu.org/software/emacs/manual/emacs.html | ||
| 20 | (info "(Emacs)Top") | ||
| 21 | |||
| 22 | - the Emacs Lisp Reference Manual | ||
| 23 | http://www.gnu.org/software/emacs/manual/elisp.html | ||
| 24 | (info "(elisp)Top") | ||
| 25 | |||
| 26 | - http://www.gnu.org/software/emacs | ||
| 27 | |||
| 28 | - http://www.emacswiki.org/ | ||
| 29 | |||
| 30 | There are many ways to contribute to Emacs: | ||
| 31 | |||
| 32 | - implement a new feature, and submit a patch (see "Submitting | ||
| 33 | Patches" below). | ||
| 34 | |||
| 35 | - answer questions on the Emacs user mailing list | ||
| 36 | https://lists.gnu.org/mailman/listinfo/help-gnu-emacs | ||
| 37 | |||
| 38 | - write documentation, either on the wiki, or in the Emacs source | ||
| 39 | repository (see "Submitting Patches" below) | ||
| 40 | |||
| 41 | - find and report bugs; use M-x report-emacs-bug | ||
| 42 | |||
| 43 | - check if existing bug reports are fixed in newer versions of Emacs | ||
| 44 | http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs | ||
| 45 | |||
| 46 | - develop a package that works with Emacs, and publish it on your own | ||
| 47 | or in Gnu ELPA (see admin/notes/elpa). | ||
| 48 | |||
| 49 | Here are some style and legal conventions for contributors to Emacs: | ||
| 50 | |||
| 51 | |||
| 52 | * Coding Standards | ||
| 53 | |||
| 54 | Contributed code should follow the GNU Coding Standards | ||
| 55 | (http://www.gnu.org/prep/standards/ - may also be available in info on | ||
| 56 | your system). | ||
| 57 | |||
| 58 | If it doesn't, we'll need to find someone to fix the code before we | ||
| 59 | can use it. | ||
| 60 | |||
| 61 | Emacs has additional style and coding conventions: | ||
| 62 | |||
| 63 | - the "Tips" Appendix in the Emacs Lisp Reference | ||
| 64 | http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html | ||
| 65 | (info "(elisp)Tips"). | ||
| 66 | |||
| 67 | - Avoid using `defadvice' or `eval-after-load' for Lisp code to be | ||
| 68 | included in Emacs. | ||
| 69 | |||
| 70 | - Remove all trailing whitespace in all source and text files. | ||
| 71 | |||
| 72 | - Emacs has no convention on whether to use tabs in source code; | ||
| 73 | please don't change whitespace in the files you edit. | ||
| 74 | |||
| 75 | - Use ?\s instead of ? in Lisp code for a space character. | ||
| 76 | |||
| 77 | * Copyright Assignment | ||
| 78 | |||
| 79 | The FSF (Free Software Foundation) is the copyright holder for GNU Emacs. | ||
| 80 | The FSF is a nonprofit with a worldwide mission to promote computer | ||
| 81 | user freedom and to defend the rights of all free software users. | ||
| 82 | For general information, see the website http://www.fsf.org/ . | ||
| 83 | |||
| 84 | Generally speaking, for non-trivial contributions to GNU Emacs we | ||
| 85 | require that the copyright be assigned to the FSF. For the reasons | ||
| 86 | behind this, see: http://www.gnu.org/licenses/why-assign.html . | ||
| 87 | |||
| 88 | Copyright assignment is a simple process. Residents of some countries | ||
| 89 | can do it entirely electronically. We can help you get started, and | ||
| 90 | answer any questions you may have (or point you to the people with the | ||
| 91 | answers), at the emacs-devel@gnu.org mailing list. | ||
| 92 | |||
| 93 | (Please note: general discussion about why some GNU projects ask | ||
| 94 | for a copyright assignment is off-topic for emacs-devel. | ||
| 95 | See gnu-misc-discuss instead.) | ||
| 96 | |||
| 97 | A copyright disclaimer is also a possibility, but we prefer an assignment. | ||
| 98 | Note that the disclaimer, like an assignment, involves you sending | ||
| 99 | signed paperwork to the FSF (simply saying "this is in the public domain" | ||
| 100 | is not enough). Also, a disclaimer cannot be applied to future work, it | ||
| 101 | has to be repeated each time you want to send something new. | ||
| 102 | |||
| 103 | We can accept small changes (roughly, fewer than 15 lines) without | ||
| 104 | an assignment. This is a cumulative limit (e.g. three separate 5 line | ||
| 105 | patches) over all your contributions. | ||
| 106 | |||
| 107 | * Getting the Source Code | ||
| 108 | |||
| 109 | The current working version of the Emacs source code is stored in a | ||
| 110 | git repository on the Savannah web site | ||
| 111 | (http://savannah.gnu.org/projects/emacs). It is important to write | ||
| 112 | your patch based on the current working version. If you start from an | ||
| 113 | older version, your patch may be outdated (so that maintainers will | ||
| 114 | have a hard time applying it), or changes in Emacs may have made your | ||
| 115 | patch unnecessary. | ||
| 116 | |||
| 117 | After you have downloaded the repository source, you should read the file | ||
| 118 | INSTALL.REPO for build instructions (they differ to some extent from a | ||
| 119 | normal build). | ||
| 120 | |||
| 121 | * Submitting Patches | ||
| 122 | |||
| 123 | Every patch must have several pieces of information before we | ||
| 124 | can properly evaluate it. | ||
| 125 | |||
| 126 | When you have all these pieces, bundle them up in a mail message and | ||
| 127 | send it to the developers. Sending it to bug-gnu-emacs@gnu.org | ||
| 128 | (which is the bug/feature list) is recommended, because that list | ||
| 129 | is coupled to a tracking system that makes it easier to locate patches. | ||
| 130 | If your patch is not complete and you think it needs more discussion, | ||
| 131 | you might want to send it to emacs-devel@gnu.org instead. If you | ||
| 132 | revise your patch, send it as a followup to the initial topic. | ||
| 133 | |||
| 134 | ** Description | ||
| 135 | |||
| 136 | For bug fixes, a description of the bug and how your patch fixes it. | ||
| 137 | |||
| 138 | For new features, a description of the feature and your implementation. | ||
| 139 | |||
| 140 | ** ChangeLog | ||
| 141 | |||
| 142 | A ChangeLog entry as plaintext (separate from the patch). | ||
| 143 | |||
| 144 | See the existing ChangeLog files for format and content. Note that, | ||
| 145 | unlike some other projects, we do require ChangeLogs for | ||
| 146 | documentation, i.e. Texinfo files. | ||
| 147 | |||
| 148 | Ref: "Change Log Concepts" node of the GNU Coding Standards Info | ||
| 149 | Manual, for how to write good log entries. | ||
| 150 | http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html | ||
| 151 | |||
| 152 | When using git, commit messages should use ChangeLog format, with a | ||
| 153 | single short line explaining the change, then an empty line, then | ||
| 154 | unindented ChangeLog entries. (Essentially, a commit message should | ||
| 155 | be a duplicate of what the patch adds to the ChangeLog files. We are | ||
| 156 | planning to automate this better, to avoid the duplication.) You can | ||
| 157 | use the Emacs functions log-edit-add-to-changelog or | ||
| 158 | log-edit-insert-changelog to ease this process. | ||
| 159 | |||
| 160 | ** The patch itself. | ||
| 161 | |||
| 162 | If you are accessing the Emacs repository, make sure your copy is | ||
| 163 | up-to-date (e.g. with 'git pull'). You can commit your changes | ||
| 164 | to a private branch and generate a patch from the master version | ||
| 165 | by using | ||
| 166 | git format-patch master | ||
| 167 | Or you can leave your changes uncommitted and use | ||
| 168 | git diff | ||
| 169 | With no repository, you can use | ||
| 170 | diff -u OLD NEW | ||
| 171 | |||
| 172 | ** Mail format. | ||
| 173 | |||
| 174 | We prefer to get the patches as plain text, either inline (be careful | ||
| 175 | your mail client does not change line breaks) or as MIME attachments. | ||
| 176 | |||
| 177 | ** Please reread your patch before submitting it. | ||
| 178 | |||
| 179 | ** Do not mix changes. | ||
| 180 | |||
| 181 | If you send several unrelated changes together, we will ask you to | ||
| 182 | separate them so we can consider each of the changes by itself. | ||
| 183 | |||
| 184 | ** Do not make formatting changes. | ||
| 185 | |||
| 186 | Making cosmetic formatting changes (indentation, etc) makes it harder | ||
| 187 | to see what you have really changed. | ||
| 188 | |||
| 189 | |||
| 190 | * Supplemental information for Emacs Developers. | ||
| 191 | 8 | ||
| 192 | An "Emacs Developer" is someone who contributes a lot of code or | 9 | An "Emacs Developer" is someone who contributes a lot of code or |
| 193 | documentation to the Emacs repository. | 10 | documentation to the Emacs repository. Generally, they have write |
| 11 | access to the Emacs git repository on Savannah. | ||
| 194 | 12 | ||
| 195 | ** Write access to the Emacs repository. | 13 | ** Write access to the Emacs repository. |
| 196 | 14 | ||
| @@ -213,6 +31,31 @@ entry in their name, not yours. git distinguishes between the author | |||
| 213 | and the committer; use the --author option on the commit command to | 31 | and the committer; use the --author option on the commit command to |
| 214 | specify the actual author; the committer defaults to you. | 32 | specify the actual author; the committer defaults to you. |
| 215 | 33 | ||
| 34 | ** commit messages | ||
| 35 | |||
| 36 | When using git, commit messages should use ChangeLog format, with the | ||
| 37 | following modifications: | ||
| 38 | |||
| 39 | - Add a single short line explaining the change, then an empty line, | ||
| 40 | then unindented ChangeLog entries. | ||
| 41 | |||
| 42 | You can use various Emacs functions to ease this process; see (info | ||
| 43 | "(emacs)Change Log Commands") or | ||
| 44 | http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html. | ||
| 45 | |||
| 46 | - The summary line is limited to 72 characters (enforced by a commit | ||
| 47 | hook). If you have trouble making that a good summary, add a | ||
| 48 | paragraph below it, before the individual file descriptions. | ||
| 49 | |||
| 50 | - If only a single file is changed, the summary line can be the normal | ||
| 51 | file first line (starting with the asterisk). Then there is no | ||
| 52 | individual files section. | ||
| 53 | |||
| 54 | - Explaining the rationale for a design choice is best done in comments | ||
| 55 | in the source code. However, sometimes it is useful to describe just | ||
| 56 | the rationale for a change; that can be done in the commit message | ||
| 57 | between the summary line and the file entries. | ||
| 58 | |||
| 216 | ** Changelog notes | 59 | ** Changelog notes |
| 217 | 60 | ||
| 218 | - Emacs generally follows the GNU coding standards when it comes to | 61 | - Emacs generally follows the GNU coding standards when it comes to |
| @@ -222,11 +65,25 @@ specify the actual author; the committer defaults to you. | |||
| 222 | standards used to recommend) rather than 'like-this' (as they do | 65 | standards used to recommend) rather than 'like-this' (as they do |
| 223 | now), because `...' is so widely used elsewhere in Emacs. | 66 | now), because `...' is so widely used elsewhere in Emacs. |
| 224 | 67 | ||
| 68 | - Some of the rules in the GNU coding standards section 5.2 | ||
| 69 | "Commenting Your Work" also apply to Changelog entries: they must be | ||
| 70 | in English, and be complete sentences starting with a capital and | ||
| 71 | ending with a period (except the summary line should not end in a | ||
| 72 | period). | ||
| 73 | |||
| 74 | It is tempting to relax this rule for commit messages, since they | ||
| 75 | are somewhat transient. However, they are preserved indefinitely, | ||
| 76 | and have a reasonable chance of being read in the future, so it's | ||
| 77 | better that they have good presentation. | ||
| 78 | |||
| 225 | - There are multiple ChangeLogs in the emacs source; roughly one per | 79 | - There are multiple ChangeLogs in the emacs source; roughly one per |
| 226 | high-level directory. The ChangeLog entry for a commit belongs in the | 80 | high-level directory. The ChangeLog entry for a commit belongs in the |
| 227 | lowest ChangeLog that is higher than or at the same level as any file | 81 | lowest ChangeLog that is higher than or at the same level as any file |
| 228 | changed by the commit. | 82 | changed by the commit. |
| 229 | 83 | ||
| 84 | - Use the present tense; describe "what the change does", not "what | ||
| 85 | the change did". | ||
| 86 | |||
| 230 | - Preferred form for several entries with the same content: | 87 | - Preferred form for several entries with the same content: |
| 231 | 88 | ||
| 232 | * help.el (view-lossage): | 89 | * help.el (view-lossage): |
| @@ -235,7 +92,13 @@ specify the actual author; the committer defaults to you. | |||
| 235 | 92 | ||
| 236 | (Rather than anything involving "ditto" and suchlike.) | 93 | (Rather than anything involving "ditto" and suchlike.) |
| 237 | 94 | ||
| 238 | - In ChangeLog files, there is no standard or recommended way to | 95 | - If the commit fixes a bug, add a separate line |
| 96 | |||
| 97 | Fixes: bug#NNNN | ||
| 98 | |||
| 99 | where NNNN is the bug number. | ||
| 100 | |||
| 101 | - In ChangeLog entries, there is no standard or recommended way to | ||
| 239 | identify revisions. | 102 | identify revisions. |
| 240 | 103 | ||
| 241 | One way to identify revisions is by quoting their summary line. | 104 | One way to identify revisions is by quoting their summary line. |
| @@ -244,7 +107,7 @@ specify the actual author; the committer defaults to you. | |||
| 244 | "2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit" | 107 | "2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit" |
| 245 | will suffice. | 108 | will suffice. |
| 246 | 109 | ||
| 247 | - There is no need to make separate change log entries for files such | 110 | - There is no need to make separate ChangeLog entries for files such |
| 248 | as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration | 111 | as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration |
| 249 | of files such as 'configure'. "There is no need" means you don't | 112 | of files such as 'configure'. "There is no need" means you don't |
| 250 | have to, but you can if you want to. | 113 | have to, but you can if you want to. |
| @@ -266,9 +129,8 @@ emacs-devel mailing list, and not anywhere else. | |||
| 266 | The trunk branch is named "master" in git; release branches are named | 129 | The trunk branch is named "master" in git; release branches are named |
| 267 | "emacs-nn" where "nn" is the major version. | 130 | "emacs-nn" where "nn" is the major version. |
| 268 | 131 | ||
| 269 | You must follow emacs-devel to know exactly what kinds of changes are | 132 | Announcements about the freeze (and other important events) are made |
| 270 | allowed on what branch at any time. Announcements about the freeze | 133 | on the info-gnu-emacs mailing list. |
| 271 | (and other important events) will contain "ANNOUNCE" in the subject. | ||
| 272 | 134 | ||
| 273 | If you are fixing a bug that exists in the current release, be sure to | 135 | If you are fixing a bug that exists in the current release, be sure to |
| 274 | commit it to the release branch; it will be merged to the master | 136 | commit it to the release branch; it will be merged to the master |
| @@ -287,6 +149,23 @@ then exclude that commit from the merge to trunk. | |||
| 287 | See all the files in admin/notes/* . In particular, see | 149 | See all the files in admin/notes/* . In particular, see |
| 288 | admin/notes/newfile, see admin/notes/repo. | 150 | admin/notes/newfile, see admin/notes/repo. |
| 289 | 151 | ||
| 152 | *** git vs rename | ||
| 153 | |||
| 154 | git does not explicitly represent a file renaming; it uses a percent | ||
| 155 | changed heuristic to deduce that a file was renamed. So if you are | ||
| 156 | planning to make extensive changes to a file after renaming it (or | ||
| 157 | moving it to another directory), you should: | ||
| 158 | |||
| 159 | - create a feature branch | ||
| 160 | |||
| 161 | - commit the rename without any changes | ||
| 162 | |||
| 163 | - make other changes | ||
| 164 | |||
| 165 | - merge the feature branch to trunk, _not_ squashing the commits into | ||
| 166 | one. The commit message on this merge should summarize the renames | ||
| 167 | and all the changes. | ||
| 168 | |||
| 290 | ** Emacs Mailing lists. | 169 | ** Emacs Mailing lists. |
| 291 | 170 | ||
| 292 | Discussion about Emacs development takes place on emacs-devel@gnu.org. | 171 | Discussion about Emacs development takes place on emacs-devel@gnu.org. |
| @@ -1,3 +1,22 @@ | |||
| 1 | 2014-12-19 Stephen Leake <stephen_leake@stephe-leake.org> | ||
| 2 | |||
| 3 | Move user-level information from CONTRIBUTE to doc/emacs/trouble.texi | ||
| 4 | |||
| 5 | Fixes bug#19299 | ||
| 6 | |||
| 7 | * CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi | ||
| 8 | (commit messages): new, gathered from comments on emacs-devel | ||
| 9 | (Changelog notes): add reference to GNU coding standards section 5.2; | ||
| 10 | doc 'present tense', bug fix format | ||
| 11 | (branches): freeze announcements are made on info-gnu-emacs mailing | ||
| 12 | list | ||
| 13 | (git vs rename): new | ||
| 14 | |||
| 15 | * doc/emacs/trouble.texi: Move user-level information from CONTRIBUTE here | ||
| 16 | |||
| 17 | * lisp/startup.el (fancy-about-text): change buttons for etc/CONTRIBUTE | ||
| 18 | to (info "(emacs)Contributing") | ||
| 19 | |||
| 1 | 2014-12-14 Paul Eggert <eggert@cs.ucla.edu> | 20 | 2014-12-14 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 21 | ||
| 3 | Spelling fixes | 22 | Spelling fixes |
diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index 5f3cf9223eb..bae9cad78bf 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi | |||
| @@ -1060,19 +1060,44 @@ but using it will take extra work. Maintaining GNU Emacs is a lot of | |||
| 1060 | work in the best of circumstances, and we can't keep up unless you do | 1060 | work in the best of circumstances, and we can't keep up unless you do |
| 1061 | your best to help. | 1061 | your best to help. |
| 1062 | 1062 | ||
| 1063 | Every patch must have several pieces of information before we | ||
| 1064 | can properly evaluate it. | ||
| 1065 | |||
| 1066 | When you have all these pieces, bundle them up in a mail message and | ||
| 1067 | send it to the developers. Sending it to | ||
| 1068 | @email{bug-gnu-emacs@@gnu.org} (which is the bug/feature list) is | ||
| 1069 | recommended, because that list is coupled to a tracking system that | ||
| 1070 | makes it easier to locate patches. If your patch is not complete and | ||
| 1071 | you think it needs more discussion, you might want to send it to | ||
| 1072 | @email{emacs-devel@@gnu@@gnu.org} instead. If you revise your patch, | ||
| 1073 | send it as a followup to the initial topic. | ||
| 1074 | |||
| 1075 | We prefer to get the patches as plain text, either inline (be careful | ||
| 1076 | your mail client does not change line breaks) or as MIME attachments. | ||
| 1077 | |||
| 1063 | @itemize @bullet | 1078 | @itemize @bullet |
| 1064 | @item | 1079 | @item |
| 1065 | Send an explanation with your changes of what problem they fix or what | 1080 | Include an explanation with your changes of what problem they fix or what |
| 1066 | improvement they bring about. For a fix for an existing bug, it is | 1081 | improvement they bring about. |
| 1082 | |||
| 1083 | @itemize | ||
| 1084 | @item | ||
| 1085 | For a fix for an existing bug, it is | ||
| 1067 | best to reply to the relevant discussion on the @samp{bug-gnu-emacs} | 1086 | best to reply to the relevant discussion on the @samp{bug-gnu-emacs} |
| 1068 | list, or the bug entry in the GNU Bug Tracker at | 1087 | list, or the bug entry in the GNU Bug Tracker at |
| 1069 | @url{http://debbugs.gnu.org}. Explain why your change fixes the bug. | 1088 | @url{http://debbugs.gnu.org}. Explain why your change fixes the bug. |
| 1070 | 1089 | ||
| 1071 | @item | 1090 | @item |
| 1072 | Always include a proper bug report for the problem you think you have | 1091 | For a new feature, include a description of the feature and your |
| 1073 | fixed. We need to convince ourselves that the change is right before | 1092 | implementation. |
| 1074 | installing it. Even if it is correct, we might have trouble | 1093 | |
| 1075 | understanding it if we don't have a way to reproduce the problem. | 1094 | @item |
| 1095 | For a new bug, include a proper bug report for the problem you think | ||
| 1096 | you have fixed. We need to convince ourselves that the change is | ||
| 1097 | right before installing it. Even if it is correct, we might have | ||
| 1098 | trouble understanding it if we don't have a way to reproduce the | ||
| 1099 | problem. | ||
| 1100 | @end itemize | ||
| 1076 | 1101 | ||
| 1077 | @item | 1102 | @item |
| 1078 | Include all the comments that are appropriate to help people reading the | 1103 | Include all the comments that are appropriate to help people reading the |
| @@ -1104,6 +1129,8 @@ right away. That gives us the option of installing it immediately if it | |||
| 1104 | is important. | 1129 | is important. |
| 1105 | 1130 | ||
| 1106 | @item | 1131 | @item |
| 1132 | The patch itself. | ||
| 1133 | |||
| 1107 | Use @samp{diff -c} to make your diffs. Diffs without context are hard | 1134 | Use @samp{diff -c} to make your diffs. Diffs without context are hard |
| 1108 | to install reliably. More than that, they are hard to study; we must | 1135 | to install reliably. More than that, they are hard to study; we must |
| 1109 | always study a patch to decide whether we want to install it. Unidiff | 1136 | always study a patch to decide whether we want to install it. Unidiff |
| @@ -1114,6 +1141,12 @@ If you have GNU diff, use @samp{diff -c -F'^[_a-zA-Z0-9$]+ *('} when | |||
| 1114 | making diffs of C code. This shows the name of the function that each | 1141 | making diffs of C code. This shows the name of the function that each |
| 1115 | change occurs in. | 1142 | change occurs in. |
| 1116 | 1143 | ||
| 1144 | If you are using the Emacs repository, make sure your copy is | ||
| 1145 | up-to-date (e.g. with @code{git pull}). You can commit your changes | ||
| 1146 | to a private branch and generate a patch from the master version by | ||
| 1147 | using @code{git format-patch master}. Or you can leave your changes | ||
| 1148 | uncommitted and use @code{git diff}. | ||
| 1149 | |||
| 1117 | @item | 1150 | @item |
| 1118 | Avoid any ambiguity as to which is the old version and which is the new. | 1151 | Avoid any ambiguity as to which is the old version and which is the new. |
| 1119 | Please make the old version the first argument to diff, and the new | 1152 | Please make the old version the first argument to diff, and the new |
| @@ -1138,8 +1171,16 @@ feel that the purpose needs explaining, it probably does---but put the | |||
| 1138 | explanation in comments in the code. It will be more useful there. | 1171 | explanation in comments in the code. It will be more useful there. |
| 1139 | 1172 | ||
| 1140 | Please look at the change log entries of recent commits to see what | 1173 | Please look at the change log entries of recent commits to see what |
| 1141 | sorts of information to put in, and to learn the style that we use. | 1174 | sorts of information to put in, and to learn the style that we use. Note that, |
| 1142 | @xref{Change Log}. | 1175 | unlike some other projects, we do require change logs for |
| 1176 | documentation, i.e. Texinfo files. | ||
| 1177 | @xref{Change Log}, | ||
| 1178 | @ifset WWW_GNU_ORG | ||
| 1179 | see | ||
| 1180 | @url{http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html}, | ||
| 1181 | @end ifset | ||
| 1182 | @xref{Change Log Concepts, Change Log Concepts, | ||
| 1183 | Change Log Concepts, gnu-coding-standards, GNU Coding Standards}. | ||
| 1143 | 1184 | ||
| 1144 | @item | 1185 | @item |
| 1145 | When you write the fix, keep in mind that we can't install a change that | 1186 | When you write the fix, keep in mind that we can't install a change that |
| @@ -1160,11 +1201,52 @@ Please help us keep up with the workload by designing the patch in a | |||
| 1160 | form that is clearly safe to install. | 1201 | form that is clearly safe to install. |
| 1161 | @end itemize | 1202 | @end itemize |
| 1162 | 1203 | ||
| 1163 | @c FIXME: Include the node above? | ||
| 1164 | @node Contributing | 1204 | @node Contributing |
| 1165 | @section Contributing to Emacs Development | 1205 | @section Contributing to Emacs Development |
| 1166 | @cindex contributing to Emacs | 1206 | @cindex contributing to Emacs |
| 1167 | 1207 | ||
| 1208 | Emacs is a collaborative project and we encourage contributions from | ||
| 1209 | anyone and everyone. | ||
| 1210 | |||
| 1211 | There are many ways to contribute to Emacs: | ||
| 1212 | |||
| 1213 | @itemize | ||
| 1214 | @item | ||
| 1215 | find and report bugs; @xref{Bugs}. | ||
| 1216 | |||
| 1217 | @item | ||
| 1218 | answer questions on the Emacs user mailing list | ||
| 1219 | @url{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs}. | ||
| 1220 | |||
| 1221 | @item | ||
| 1222 | write documentation, either on the wiki, or in the Emacs source | ||
| 1223 | repository (@pxref{Sending Patches}). | ||
| 1224 | |||
| 1225 | @item | ||
| 1226 | check if existing bug reports are fixed in newer versions of Emacs | ||
| 1227 | @url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}. | ||
| 1228 | |||
| 1229 | @item | ||
| 1230 | fix existing bug reports | ||
| 1231 | @url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}. | ||
| 1232 | |||
| 1233 | @item | ||
| 1234 | @c etc/TOOD not in WWW_GNU_ORG | ||
| 1235 | implement a feature listed in the @file{etc/TODO} file in the Emacs | ||
| 1236 | distribution, and submit a patch. | ||
| 1237 | |||
| 1238 | @item | ||
| 1239 | implement a new feature, and submit a patch. | ||
| 1240 | |||
| 1241 | @item | ||
| 1242 | develop a package that works with Emacs, and publish it on your own | ||
| 1243 | or in Gnu ELPA (@url{https://elpa.gnu.org/}). | ||
| 1244 | |||
| 1245 | @item | ||
| 1246 | port Emacs to a new platform, but that is not common nowadays. | ||
| 1247 | |||
| 1248 | @end itemize | ||
| 1249 | |||
| 1168 | If you would like to work on improving Emacs, please contact the maintainers at | 1250 | If you would like to work on improving Emacs, please contact the maintainers at |
| 1169 | @ifnothtml | 1251 | @ifnothtml |
| 1170 | @email{emacs-devel@@gnu.org}. | 1252 | @email{emacs-devel@@gnu.org}. |
| @@ -1186,24 +1268,148 @@ you have not yet started work, it is useful to contact | |||
| 1186 | before you start; it might be possible to suggest ways to make your | 1268 | before you start; it might be possible to suggest ways to make your |
| 1187 | extension fit in better with the rest of Emacs. | 1269 | extension fit in better with the rest of Emacs. |
| 1188 | 1270 | ||
| 1271 | When implementing a feature, please follow the Emacs coding standards; | ||
| 1272 | @xref{Coding Standards}. In addition, non-trivial contributions | ||
| 1273 | require a copyright assignment to the FSF; @xref{Copyright Assignment}. | ||
| 1274 | |||
| 1189 | The development version of Emacs can be downloaded from the | 1275 | The development version of Emacs can be downloaded from the |
| 1190 | repository where it is actively maintained by a group of developers. | 1276 | repository where it is actively maintained by a group of developers. |
| 1191 | See the Emacs project page | 1277 | See the Emacs project page |
| 1192 | @url{http://savannah.gnu.org/projects/emacs/} for details. | 1278 | @url{http://savannah.gnu.org/projects/emacs/} for access details. |
| 1279 | |||
| 1280 | It is important to write your patch based on the current working | ||
| 1281 | version. If you start from an older version, your patch may be | ||
| 1282 | outdated (so that maintainers will have a hard time applying it), or | ||
| 1283 | changes in Emacs may have made your patch unnecessary. After you have | ||
| 1284 | downloaded the repository source, you should read the file | ||
| 1285 | @file{INSTALL.REPO} for build instructions (they differ to some extent | ||
| 1286 | from a normal build). | ||
| 1287 | |||
| 1288 | If you would like to make more extensive contributions, see the | ||
| 1289 | @file{./CONTRIBUTE} file in the Emacs distribution for information on | ||
| 1290 | how to be an Emacs developer. | ||
| 1291 | |||
| 1292 | For documentation on Emacs (to understand how to implement your | ||
| 1293 | desired change), refer to: | ||
| 1294 | |||
| 1295 | @itemize | ||
| 1296 | @item | ||
| 1297 | @ifset WWW_GNU_ORG | ||
| 1298 | @ifhtml | ||
| 1299 | the Emacs Manual | ||
| 1300 | @url{http://www.gnu.org/software/emacs/manual/emacs.html}. | ||
| 1301 | @end ifhtml | ||
| 1302 | @ifnothtml | ||
| 1303 | @xref{Top, Emacs Manual,,emacs}. | ||
| 1304 | @end ifnothtml | ||
| 1305 | @end ifset | ||
| 1306 | @ifclear WWW_GNU_ORG | ||
| 1307 | @xref{Top, Emacs Manual,,emacs}. | ||
| 1308 | @end ifclear | ||
| 1309 | |||
| 1310 | @item | ||
| 1311 | @ifset WWW_GNU_ORG | ||
| 1312 | @ifhtml | ||
| 1313 | the Emacs Lisp Reference Manual | ||
| 1314 | @url{http://www.gnu.org/software/emacs/manual/elisp.html}. | ||
| 1315 | @end ifhtml | ||
| 1316 | @ifnothtml | ||
| 1317 | @xref{Top, Emacs Lisp Reference Manual,,elisp}. | ||
| 1318 | @end ifnothtml | ||
| 1319 | @end ifset | ||
| 1320 | @ifclear WWW_GNU_ORG | ||
| 1321 | @xref{Top, Emacs Lisp Reference Manual,,elisp}. | ||
| 1322 | @end ifclear | ||
| 1323 | |||
| 1324 | @item | ||
| 1325 | @url{http://www.gnu.org/software/emacs} | ||
| 1326 | |||
| 1327 | @item | ||
| 1328 | @url{http://www.emacswiki.org/} | ||
| 1329 | @end itemize | ||
| 1330 | |||
| 1331 | @menu | ||
| 1332 | * Coding Standards:: Gnu Emacs coding standards | ||
| 1333 | * Copyright Assignment:: assigning copyright to the FSF | ||
| 1334 | @end menu | ||
| 1193 | 1335 | ||
| 1194 | For more information on how to contribute, see the | 1336 | @node Coding Standards |
| 1337 | @subsection Coding Standards | ||
| 1338 | @cindex coding standards | ||
| 1339 | |||
| 1340 | Contributed code should follow the GNU Coding Standards | ||
| 1341 | @url{http://www.gnu.org/prep/standards/}. This may also be available | ||
| 1342 | in info on your system. | ||
| 1343 | |||
| 1344 | If it doesn't, we'll need to find someone to fix the code before we | ||
| 1345 | can use it. | ||
| 1346 | |||
| 1347 | Emacs has additional style and coding conventions: | ||
| 1348 | |||
| 1349 | @itemize | ||
| 1350 | @item | ||
| 1195 | @ifset WWW_GNU_ORG | 1351 | @ifset WWW_GNU_ORG |
| 1196 | @ifhtml | 1352 | @ifhtml |
| 1197 | @url{http://gnu.org/software/emacs/CONTRIBUTE, etc/CONTRIBUTE} | 1353 | the "Tips" Appendix in the Emacs Lisp Reference |
| 1354 | @url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}. | ||
| 1198 | @end ifhtml | 1355 | @end ifhtml |
| 1199 | @ifnothtml | 1356 | @ifnothtml |
| 1200 | @file{etc/CONTRIBUTE} | 1357 | @xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips |
| 1358 | Appendix, elisp, Emacs Lisp Reference}. | ||
| 1201 | @end ifnothtml | 1359 | @end ifnothtml |
| 1202 | @end ifset | 1360 | @end ifset |
| 1203 | @ifclear WWW_GNU_ORG | 1361 | @ifclear WWW_GNU_ORG |
| 1204 | @file{etc/CONTRIBUTE} | 1362 | @xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips |
| 1363 | Appendix, elisp, Emacs Lisp Reference}. | ||
| 1205 | @end ifclear | 1364 | @end ifclear |
| 1206 | file in the Emacs distribution. | 1365 | |
| 1366 | @item | ||
| 1367 | Avoid using @code{defadvice} or @code{eval-after-load} for Lisp code | ||
| 1368 | to be included in Emacs. | ||
| 1369 | |||
| 1370 | @item | ||
| 1371 | Remove all trailing whitespace in all source and text files. | ||
| 1372 | |||
| 1373 | @item | ||
| 1374 | Emacs has no convention on whether to use tabs in source code; please | ||
| 1375 | don't change whitespace in the files you edit. | ||
| 1376 | |||
| 1377 | @item | ||
| 1378 | Use @code{?\s} instead of @code{? } in Lisp code for a space character. | ||
| 1379 | |||
| 1380 | @end itemize | ||
| 1381 | |||
| 1382 | @node Copyright Assignment | ||
| 1383 | @subsection Copyright Assignment | ||
| 1384 | @cindex copyright assignment | ||
| 1385 | |||
| 1386 | The FSF (Free Software Foundation) is the copyright holder for GNU Emacs. | ||
| 1387 | The FSF is a nonprofit with a worldwide mission to promote computer | ||
| 1388 | user freedom and to defend the rights of all free software users. | ||
| 1389 | For general information, see the website @url{http://www.fsf.org/}. | ||
| 1390 | |||
| 1391 | Generally speaking, for non-trivial contributions to GNU Emacs we | ||
| 1392 | require that the copyright be assigned to the FSF. For the reasons | ||
| 1393 | behind this, see @url{http://www.gnu.org/licenses/why-assign.html}. | ||
| 1394 | |||
| 1395 | Copyright assignment is a simple process. Residents of some countries | ||
| 1396 | can do it entirely electronically. We can help you get started, and | ||
| 1397 | answer any questions you may have (or point you to the people with the | ||
| 1398 | answers), at the @email{emacs-devel@@gnu.org} mailing list. | ||
| 1399 | |||
| 1400 | (Please note: general discussion about why some GNU projects ask | ||
| 1401 | for a copyright assignment is off-topic for emacs-devel. | ||
| 1402 | See gnu-misc-discuss instead.) | ||
| 1403 | |||
| 1404 | A copyright disclaimer is also a possibility, but we prefer an assignment. | ||
| 1405 | Note that the disclaimer, like an assignment, involves you sending | ||
| 1406 | signed paperwork to the FSF (simply saying "this is in the public domain" | ||
| 1407 | is not enough). Also, a disclaimer cannot be applied to future work, it | ||
| 1408 | has to be repeated each time you want to send something new. | ||
| 1409 | |||
| 1410 | We can accept small changes (roughly, fewer than 15 lines) without | ||
| 1411 | an assignment. This is a cumulative limit (e.g. three separate 5 line | ||
| 1412 | patches) over all your contributions. | ||
| 1207 | 1413 | ||
| 1208 | @node Service | 1414 | @node Service |
| 1209 | @section How To Get Help with GNU Emacs | 1415 | @section How To Get Help with GNU Emacs |
| @@ -1211,8 +1417,8 @@ file in the Emacs distribution. | |||
| 1211 | @cindex help-gnu-emacs mailing list | 1417 | @cindex help-gnu-emacs mailing list |
| 1212 | @cindex gnu.emacs.help newsgroup | 1418 | @cindex gnu.emacs.help newsgroup |
| 1213 | 1419 | ||
| 1214 | If you need help installing, using or changing GNU Emacs, there are two | 1420 | If you need help installing, using or changing GNU Emacs, there are |
| 1215 | ways to find it: | 1421 | two ways to find it: |
| 1216 | 1422 | ||
| 1217 | @itemize @bullet | 1423 | @itemize @bullet |
| 1218 | @item | 1424 | @item |
diff --git a/lisp/startup.el b/lisp/startup.el index c04b16c43c4..8e981bbc64a 100644 --- a/lisp/startup.el +++ b/lisp/startup.el | |||
| @@ -1463,9 +1463,7 @@ Each element in the list should be a list of strings or pairs | |||
| 1463 | (goto-char (point-min)))) | 1463 | (goto-char (point-min)))) |
| 1464 | "\tMany people have contributed code included in GNU Emacs\n" | 1464 | "\tMany people have contributed code included in GNU Emacs\n" |
| 1465 | :link ("Contributing" | 1465 | :link ("Contributing" |
| 1466 | ,(lambda (_button) | 1466 | ,(lambda (_button) (info "(emacs)Contributing"))) |
| 1467 | (view-file (expand-file-name "CONTRIBUTE" data-directory)) | ||
| 1468 | (goto-char (point-min)))) | ||
| 1469 | "\tHow to contribute improvements to Emacs\n" | 1467 | "\tHow to contribute improvements to Emacs\n" |
| 1470 | "\n" | 1468 | "\n" |
| 1471 | :link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project))) | 1469 | :link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project))) |
| @@ -2039,9 +2037,7 @@ Type \\[describe-distribution] for information on ")) | |||
| 2039 | 2037 | ||
| 2040 | (insert-button "Contributing" | 2038 | (insert-button "Contributing" |
| 2041 | 'action | 2039 | 'action |
| 2042 | (lambda (_button) | 2040 | (lambda (_button) (info "(emacs)Contributing")) |
| 2043 | (view-file (expand-file-name "CONTRIBUTE" data-directory)) | ||
| 2044 | (goto-char (point-min))) | ||
| 2045 | 'follow-link t) | 2041 | 'follow-link t) |
| 2046 | (insert "\tHow to contribute improvements to Emacs\n\n") | 2042 | (insert "\tHow to contribute improvements to Emacs\n\n") |
| 2047 | 2043 | ||