-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdevel-guidelines.txt
115 lines (79 loc) · 3.5 KB
/
devel-guidelines.txt
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
DEVELOPMENT GUIDELINES
======================
Where to commit:
----------------
Every now and then, the discussion comes up about what can go in the
r-patched (i.e. x.y.z with z >= 1). Here's a preliminary set of
guidelines:
DO fix simple bugs
DO NOT fix bugs that require extensive modification
DO NOT fix exotic bugs that haven't bugged anyone
DO make small enhancements if they are badly needed
DO NOT let one user decide what is badly needed
DO fix configuration for broken platforms
DO NOT break functioning platforms in the process
DO NOT fix things that are not broken
DO NOT restructure code
DO NOT add experimental code
DO NOT modify the API (unless absolutely sure it is buggy)
DO NOT change defaults without a *very* good reason
DO clarify documentation
ONLY add or modify examples if needed for clarification
DO NOT reword messages
DO NOT modify regression tests (except if they were buggy)
Be very careful in adding regression tests and consider using them
in R-devel only at first.
Notice that addition of new functions and arguments constitutes API
modification. The rationale for not allowing this is that packages
that use new features may become dependent on R >= x.y.z, making all
their dependents unusable with older R installations.
---
For r-devel i.e. what becomes x.y.0 releases only one rule seems
necessary:
DO NOT add code that cannot become reasonably complete by the next release.
[Obviously none of the above rules are carved in stone, and all are
subject to interpretation in actual cases.]
Removing functions:
-------------------
Making a function/feature defunct MUST happen at a minor (x.y.0) release.
Deprecation CAN happen for a branch release.
Deprecation MUST precede making something defunct.
See ?Deprecated and ?Defunct for the practical mechanisms
Recommended packages:
---------------------
Maintainers should avoid making changes that are incompatible with the
API of the current release branch and, as far as possible, also with
the R-oldrelease branch.
The version that goes into the release will be the version that is
current on CRAN at Feature Freeze, i.e. when the version changes to
"beta". This happens at T-14 for ".0" releases and at T-10 for patch
releases. Accordingly, the packages should be uploaded in a stable
state well before those times.
Testing
-------
There is a hierarchy of test targets: see tests/README. It is
recommended that
make check-devel
is run before committing code changes.
Building with recommended packages:
-----------------------------------
The current set of recommended packages for the current development
version are placed in a subdirectory of CRAN/src/contrib. The
instructions for building with recommended packages are as follows:
1) Go to the top directory of the source tree
2) run tools/rsync-recommended to populate
$(top_srcdir)/src/library/Recommended
3) go to the top build directory
4) configure, make
Configure will protest if you haven't fetched the recommended
packages. To build without them, use
path/to/configure --without-recommended-packages
You can rerun tools/rsync-recommended later without reconfiguring;
Make should find the new packages. If you have a local CRAN mirror,
you can set the environment variable CRAN_RSYNC to point to that
instead of to cran.r-project.org:CRAN
"make dist" will create the R-2.x.y tarball, with the
src/library/Recommended directory already populated so [unpack,
configure, make, make install] should work for end users.
"make install" puts everything in place, including recommended
packages.