update merging rules as per last meeting
[web.git] / pages / development.txt
1 Development
2 ===========
3
4 include::menu.inc[]
5
6 == The Source Code
7
8 The LEDE project source code start off with OpenWrt revision r49258. The code
9 is stored inside a git tree which contains all branches and releases ever made
10 by OpenWrt. While importing the sources the tree was normalised and some
11 minor tweaks were made to comitter names and mail addresses.
12
13 All repositories can be browsed online through
14 http://git.lede-project.org/[Gitweb] as well.
15
16 === Getting The _LEDE_ Code
17
18 Any _LEDE_ development happens in the main +source.git+ repository which is
19 accessible via both HTTP and HTTPS:
20
21 ----
22 git clone http://git.lede-project.org/source.git
23 ----
24
25 === Getting the OpenWrt Code
26
27 We keep the original OpenWrt source code up to
28 https://git.lede-project.org/?p=openwrt/source.git;a=commit;h=ee53a240ac902dc83209008a2671e7fdcf55957a[r49258]
29 available, mostly as reference and for historic interest.
30
31 The original OpenWrt Subversion repository has been split up into several Git
32 repositories mapping the various SVN directories and tags to proper Git
33 branches.
34
35 ----
36 git clone http://git.lede-project.org/openwrt/source.git
37 git clone http://git.lede-project.org/openwrt/packages.git
38 git clone http://git.lede-project.org/openwrt/feeds.git
39 git clone http://git.lede-project.org/openwrt/docs.git
40 ----
41
42 === The Web Presence
43
44 The pages you're reading are generated from text files using the
45 http://www.methods.co.nz/asciidoc/[AsciiDoc] suite. Any changes made to the
46 projects web site will be reflected in our +web.git+ repository:
47
48 ----
49 git clone http://git.lede-project.org/web.git
50 ----
51
52 === Submitting Patches
53
54 The biggest difference is that we now accept pull requests. The tree that shall
55 be pulled from needs to be hosted publicly. Small fixes and minor patches can
56 also be submitted via the
57 http://lists.infradead.org/mailman/listinfo/lede-dev[development mailing list].
58 Submissions should follow these rules
59
60 . TBD
61
62 All patches need to be sent in a format that they are listed in patchwork (__LINK__).
63 If the patch does not get listed in patchwork then it wont get processed.
64
65
66 === Reporting Bugs
67
68 . *All* bug reports need to be submitted via the
69 http://lists.infradead.org/mailman/listinfo/lede-dev[development mailing list]
70 . When reporting bugs please make sure to
71 .. Name the tree/revision
72 .. Name the effected device
73 .. What does it do that it should not do / what does it not do that it should do
74 .. Steps to reproduce
75 .. What you have already done to fix the problem
76 .. Any additional info you thinks is important
77 . Reporting a bug means that you reported a bug. It does not constitute a claim that
78 anyone has to work on fixing it.
79 . Pointless/vague/silly/... bugs reports will be ignored
80 . Feature requests are not Bugs. They will also be ignored.
81 . The better your bug report, the more likely it is that it will be worked on.
82
83 All bug reports need to be sent in a format so that they are listed in the issue
84 tracker (__LINK__). If the bug report does not get listed in the issue tracker then
85 it wont get processed.
86
87
88 === Patch Merging And Tree Life Cycle
89
90 We encourage committers to host their own staging trees where they aggregate patches
91 that they feel responsible for and/or ones that they created themselves. Once the tree
92 has been reviewed and tested it can be proposed for inclusion in the master branch.
93
94 . Trees will be merged into master at any time
95 . Bug fixes can be merged into master directly
96 . PRs can be sent to the patches mailing list from any source and will always be considered
97 for inclusion if the quality of the tree is good and format of submission is correct
98 . Staging trees can be hosted as part of the projects git infrastucture, private servers, ...
99
100 === Kernel updates
101
102 It has proven impractical and a time killer to always be on the very latest kernel within
103 2 days of its release. It has caused these issues.
104
105 . diversification of kernel versions
106 . pressure on maintainers to constantly upgrade rather than stabilise
107 . huge effort invested to upgrade 3-4 times between releases
108 . huge workload to maintain kmod-* packaging
109 . Upgrade to kernels that might not be fully tested
110
111 This is obviously not an invite to sit on ancient and dusty kernels. A sane path in between
112 should be taken that give the community recent kernels without causing unnecessary workload
113 and stability issues.
114
115 There should be a max of three concurrent kernel version. Having only two concurrent versions
116 is better than three.
117
118 In Short - stability should be valued higher than bleeding edge, although bleeding edge is
119 also important, but not as a trade-off to stability.
120
121
122 === Releases
123
124 Generating Releases has already been vastly automated. The remaining parts of the process need
125 to also be automated before the first _LEDE_ release. We will introduce a TESTERS file that is
126 formatted similarly to the MAINTAINERS file of the kernel. Community members can list themselves
127 as testers for a target/profile/device. Once a release has been generated testers should receive
128 an email informing them of the requirement for images to be tested. It needs to be decided if only
129 tested images should be included in the binary release.
130
131 Releases should
132
133 . Happen at least once a year
134 . Have at least one maintenance update
135 . Provide CVE/critical/... fixes for at least one year after the release
136 . Only include maintained targets
137 . Only include targets that have seen on device testing
138 . Be ready when they are ready
139
140 See the TODO page for more info.