summaryrefslogtreecommitdiffstats
path: root/Misc/sf-faq.html
blob: b938e427cf4965aa5e97aa9a655ebd04e524d250 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
   <meta name="GENERATOR" content="Mozilla/4.72 [en] (X11; I; Linux 2.2.13 i686) [Netscape]">
</head>
<body text="#000000" bgcolor="#99CCFF" link="#0000EF" vlink="#51188E" alink="#FF0000">

<center>
<h1>
Python at SourceForge - Frequently Asked Questions</h1></center>

<h1>
0. Contents</h1>

<h2>
<a href="#general">1. General</a></h2>

<ol>
<li>
<a href="#g1">What is SourceForge?</a></li>

<li>
<a href="#g2">Where do I find Python there?</a></li>

<li>
<a href="#g3">How can I change the pages at python.sourceforge.net?</a></li>
</ol>

<h2>
<a href="#cvs">2. CVS</a></h2>

<ol>
<li>
<a href="#c1">How do I check out a CVS version of Python?</a></li>

<li>
<a href="#c2">What settings should I use?</a></li>

<li>
<a href="#c3">Troubleshooting: "Permission Denied"</a></li>

<li>
<a href="#c4">Where can I learn more about CVS?</a></li>
</ol>

<h2>
<a href="#patches">3. Patches</a></h2>

<ol>
<li>
<a href="#p1">How to make a patch?</a></li>

<li>
<a href="#p2">How to submit patches?</a></li>

<li>
<a href="#p3">How to change the status of a patch?</a></li>
</ol>

<h2>
<a href="#appendix">A. Appendix</a></h2>

<ol>
<li>
<a href="#a1">Patch Manager Guidelines [09.07.2000]</a></li>

<li>
<a href="#a2">Python Patch Submission Guidelines [29.06.2000]</a></li>
</ol>

<h1>
<a NAME="general"></a>1. General</h1>

<h3>
<a NAME="g1"></a>1.1.:</h3>

<h4>
Q: What is SourceForge?</h4>

<h4>
A:</h4>
<a href="http://sourceforge.net">SourceForge</a> is a free hosting service
for <a href="http://opensource.org">OpenSource</a> projects. The main website
is found at
<blockquote><tt><a href="http://sourceforge.net">http://sourceforge.net</a></tt></blockquote>

<h3>
<a NAME="g2"></a>1.2.:</h3>

<h4>
Q: Where can I find Python on SourceForge?</h4>

<h4>
A:</h4>
The <a href="http://sourceforge.net/projects/python">Python project page</a>
can be found at
<blockquote><tt><a href="http://sourceforge.net/projects/python">http://sourceforge.net/projects/python</a></tt></blockquote>

<h3>
<a NAME="g3"></a>1.3.:</h3>

<h4>
Q: How can I change the pages at python.sourceforge.net?</h4>

<h4>
A:</h4>
First you have to be in the SourceForge group "<tt>python</tt>" (true for
all developers). Then you can upload files using scp:
<blockquote><tt>scp mylocalfile.html sf_username@shell.sourceforge.net:/home/groups/python/htdocs/</tt></blockquote>
If you want to edit or remove files, you can use ssh:
<blockquote><tt>ssh -l sf_username shell.sourceforge.net</tt>
<br><tt>cd /home/groups/python/htdocs</tt>
<br><tt>rm garbage.html</tt>
<br><tt>vi changeme.html</tt></blockquote>

<h1>
<a NAME="cvs"></a>2. CVS</h1>

<h3>
<a NAME="c1"></a>2.1.:</h3>

<h4>
Q: How do I check out a CVS version of Python?</h4>

<h4>
A:</h4>
If&nbsp; you are not a SourceForge-recognized Python developer you can
still check out an anonymous CVS version (read-only) of Python:
<blockquote><tt>export CVSROOT=:pserver:anonymous@cvs.python.sourceforge.net:/cvsroot/python</tt>
<br><tt>cvs login</tt>
<br><tt>cvs -z3 co python</tt></blockquote>
If you are indeed a developer you can check out a read/write version with
ssh:
<blockquote><tt>export CVS_RSH=ssh</tt>
<br><tt>export CVSROOT=sf_username@cvs.python.sourceforge.net:/cvsroot/python</tt>
<br><tt>cvs -z3 co python</tt></blockquote>

<h3>
<a NAME="c2"></a>2.2.:</h3>

<h4>
Q:&nbsp; What setting should I use?</h4>

<h4>
A:</h4>
That is, of course, hard to answer in the general case. I use the following
.cvsrc file:
<blockquote><tt>diff -c</tt>
<br><tt>update -d</tt></blockquote>
This defaults diff to context diffs (almost a requirement as everything
else is harder to read) and tells update to automatically checkout new
subdirectories.
<h3>
<a NAME="c3"></a>2.3.:</h3>

<h4>
Q: I get the following error message:</h4>

<blockquote><tt>Sorry, you don't have read/write access to the history
file /cvsroot/python/CVSROOT/history</tt>
<br><tt>Permission denied</tt></blockquote>

<h4>
A:</h4>
If you are not a developer, you don't have read/write access. You have
to check out an anonymous copy. If you are a developer you have to be in
the SourceForge group "<tt>python</tt>". You can check this with the following
commands:
<blockquote><tt>ssh -l sf_username shell.sourceforge.net</tt>
<br><tt>groups</tt></blockquote>
If you have just recently (&lt; 6 hours) been added to the Python project,
you probably have to wait for the SourceForge servers to synch up. This
can take up to 6 hours.
<h3>
<a NAME="c4"></a>2.4.:</h3>

<h4>
Q: Where can I learn more about CVS?</h4>

<h4>
A:</h4>
For SourceForge specific information consult their CVS documentation at
<blockquote><tt><a href="http://sfdocs.sourceforge.net/sfdocs">http://sfdocs.sourceforge.net/sfdocs</a></tt></blockquote>
For general (and more advanced) information consult the free CVS Book at
<blockquote><tt><a href="http://cvsbook.red-bean.com/cvsbook.html#Introduction">http://cvsbook.red-bean.com/cvsbook.html#Introduction</a></tt></blockquote>

<h1>
<a NAME="patches"></a>3. Patches</h1>

<h3>
<a NAME="p1"></a>3.1.:</h3>

<h4>
Q: How to make a patch?</h4>

<h4>
A:</h4>
If you are using CVS (anonymous or developer) you can use CVS to make the
patches for you. Just edit your local copy and enter the following command:
<blockquote><tt>cvs diff | tee ~/name_of_the_patch.diff</tt></blockquote>
Else you can use the diff util which comes with most operating systems
(a Windows version is available as part of the cygwin tools).
<br>&nbsp;
<h3>
<a NAME="p2"></a>3.2.:</h3>

<h4>
Q: How to submit a patch?</h4>

<h4>
A:</h4>
Please read the <a href="http://www.python.org/patches">Patch Submission
Guidelines</a> at
<blockquote><tt><a href="http://www.python.org/patches">http://www.python.org/patches</a></tt></blockquote>
A <a href="#a2">recent copy</a> can be found in the Appendix of this FAQ.
<br>&nbsp;
<h3>
<a NAME="p3"></a>3.3.:</h3>

<h4>
Q: How to change the status of a patch?</h4>

<h4>
A:</h4>
To change the status of a patch or assign it to somebody else you have
to be a) a SourceForge-recognized Python developer and b) a patch administrator.
Unfortunately the SourceForge default for developers is not to be patch
administrators. Contact one of the project administrators if the following
does not work for you.
<p>Click on the patch itself. In the screen that comes up, there is a drop-box
for "Assigned To:" and a drop-box for "Status:" where you can select a
new responsible developer or a new status respectively. After selecting
the appropriate victim and status, hit the "Submit Changes" button at the
bottom of the page.
<p>For more information about the use of the "Status:" and "Assigned To:"
fields consult the <a href="#a1">Patch Manager Guidelines</a>. A recent
copy can be found in the Appendix of this FAQ.
<br>&nbsp;
<h1>
<a NAME="appendix"></a>A. Appendix</h1>

<h3>
<a NAME="a1"></a>A.1.: Patch Manager Guidelines</h3>

<h4>
Intended use of SourceForge patch status &amp; "assigned to" fields</h4>
revision 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
09-Jul-2000
<p>In general, the status field should be close to self-explanatory, and
the "Assigned to:" field should be the person responsible for taking the
next step in the patch process.&nbsp; Both fields are expected to change
value over the life of a patch; the normal workflow is detailed below.
<p>When you've got the time and the ability, feel free to move any patch
that catches your eye along, whether or not it's been assigned to you.&nbsp;
And if you're assigned to a patch but aren't going to take reasonably quick
action (for whatever reason), please assign it to someone else ASAP:&nbsp;
at those times you can't actively help, actively get out of the way.
<p>If you're an expert in some area and know that a patch in that area
is both needed and non-controversial, just commit your changes directly
-- no need then to get the patch mechanism involved in it.
<p>You should add a comment to every patch assigned to you at least once
a week, if only to say that you realize it's still on your plate.&nbsp;
This rule is meant to force your attention periodically:&nbsp; patches
get harder &amp; harder to deal with the longer they sit.
<br>&nbsp;
<h4>
Open</h4>

<blockquote>The initial status of all patches.
<br>The patch is under consideration, but has not been reviewed yet.
<br>The status will normally change to Accepted or Rejected next.
<br>The person submitting the patch should (if they can) assign it to the
person they most want to review it.
<br>Else the patch will be assigned via [xxx a list of expertise areas
should be developed] [xxx but since this hasn't happened and volunteers
are too few, random assignment is better than nothing:&nbsp; if you're
a Python developer, expect to get assigned out of the blue!]
<br>Discussion of major patches is carried out on the Python-Dev mailing
list.&nbsp; For simple patches, the SourceForge comment mechanism should
be sufficient. [xxx an email gateway would be great, ditto Ping's Roundup]</blockquote>

<h4>
Accepted</h4>

<blockquote>The powers that be accepted the patch, but it hasn't been applied
yet. [xxx flesh out -- Guido Bottleneck avoidable here?]
<br>The status will normally change to Closed next.
<br>The person changing the status to Accepted should, at the same time,
assign the patch to whoever they believe is most likely to be able &amp;
willing to apply it (the submitter if possible).</blockquote>

<h4>
Closed</h4>

<blockquote>The patch has been accepted and applied.
<br>The previous status was Accepted, or possibly Open if the submitter
was Guido (or moral equivalent in some particular area of expertise).</blockquote>

<h4>
Rejected</h4>

<blockquote>The patch has been reviewed and rejected.
<br>When the objections are addressed, the status may change to Open again.
<br>The person changing the status to Rejected should assign the patch
back to the submitter, or if it's clear the patch will never be accepted,
assign it to None.
<br>Note that SourceForge allows the submitter to overwrite the patch with
a new version.</blockquote>

<h4>
Out of date</h4>

<blockquote>Previous status was Open or Accepted or Postponed, but the
patch no longer works.
<br>Please enter a comment when changing the status to "Out of date", to
record the nature of the problem and the previous status.
<br>Also assign it back to the submitter, as they need to upload a new
version (note that SourceForge will not allow anyone other than the original
submitter to update the patch).</blockquote>

<h4>
Postponed</h4>

<blockquote>The previous status was Open or Accepted, but for some reason
(e.g., pending release) the patch should not be reviewed or applied until
further notice.
<br>The status will normally change to Open or Accepted next.
<br>Please enter a comment when changing the status to Postponed, to record
the reason, the previous status, and the conditions under which the patch
should revert to Open or Accepted.&nbsp; Also assign the patch to whoever
is most likely able and willing to decide when the status should change
again.</blockquote>

<h4>
Deleted</h4>

<blockquote>Bit bucket.
<br>Use only if it's OK for the patch and its SourceForge history to disappear.
<br>As of 09-July-2000, SF does not actually throw away Deleted patches,
but that may change.</blockquote>

<h3>
<a NAME="a2"></a>A.2.: Python Patch Submission Guidelines</h3>
<b>New: CNRI is no longer involved in Python patches.</b> We no longer
request legal disclaimers. Also, We're now using the SourceForge Patch
Manager (a single mailing list became unmanageable).
<p>Many people contribute patches to Python. We've set up a new system
to deal with these. Here are the main guidelines:
<ul>
<li>
<b>Submit your patch to the <a href="http://sourceforge.net/patch/?group_id=5470">patch
manager</a> interface at <a href="http://sourceforge.net/project/?group_id=5470">SourceForge</a>.</b>
We strongly recommend that you <a href="http://sourceforge.net/account/register.php">register
with SourceForge</a> before submitting a patch. If you send patches directly
to Guido you introduce an extra delay. Ditto for the "patches@python.org"
mailing list address; this address should no longer be used for patch submission.
The patch manager is for
<b>patches</b> only; if you have a problem or
suggestion but don't know how to write the code for it, use the <a href="http://www.python.org/search/search_bugs.html">Python
Bugs List</a> instead. The bugs list is searchable; if you have a problem
and you're not sure if it has been reported or fixed already, this is the
first place to look. (There used to be a separate TODO list; we now prefer
that you use the bugs list for suggestions and requests too.)</li>

<p><br><b>Submit documentation patches the same way.</b> When adding the
patch, be sure to set the "<b>Category</b>" field to "<b>documentation</b>".
For documentation errors without patches, please use the <a href="http://www.python.org/search/search_bugs.html">Python
Bugs List</a> instead.
<li>
We like context diffs. We grudgingly accept unified diffs.
<b>Straight
("ed-style") diffs are right out!</b> If you don't know how to generate
context diffs, you're probably not qualified to produce high-quality patches
anyway &lt;0.5 wink>.</li>

<li>
We appreciate it if you send patches relative to the <a href="http://sourceforge.net/cvs/?group_id=5470">current
CVS tree</a>. These are our latest sources. It's almost a year since Python
1.5.2 was released, and many source files have been touched in more or
less significant ways; a patch relative to Python 1.5.2 can cause a lot
of extra pain to apply right. Even a patch relative to the latest alpha
or beta release may be way out of date.</li>

<li>
Please add a succinct message to your SourceForge entry that explains what
the patch is about that we can use directly as a checkin message. Ideally,
such a message explains the problem and describes the fix in a few lines.</li>

<li>
For patches that add or change functionality: please also update the <b>documentation</b>
and the <b>testcases</b> (the Lib/test subdirectory). For new modules,
we appreciate a new test module (typically test/test_spam.py). In this
case, there's no need to mail the documentation to a different address
(in fact, in order to verify that the bundle is complete, it's easier to
mail everything together).</li>

<li>
There are a variety of additional <a href="http://www.python.org/patches/style.html">style
requirements</a>. Please have a look at these before writing new code.
Also have a look at the general <a href="http://www.python.org/doc/essays/styleguide.html">Python
Style Guide</a>.</li>
</ul>

</body>
</html>