1 |
Hi, |
2 |
|
3 |
I've read through the gentoo software engineering standards draft. I've |
4 |
written down some remarks below. |
5 |
|
6 |
> This document contains comprehensive standards for Gentoo software |
7 |
> development |
8 |
> projects. These standards should benefit nearly any Gentoo project, |
9 |
> but are |
10 |
> particularly critical for projects that demand a very high level of |
11 |
> refinement |
12 |
> and overall quality. |
13 |
|
14 |
Software engineering standards are like licensing terms. If the GPL |
15 |
said: nearly all users using GPL software should obey to its terms, |
16 |
there would be a problem. It is not clear from the above paragraph, |
17 |
that all gentoo project should look into this document. We also need a |
18 |
formal definition of a 'project'. (modifying an ebuild is not a project |
19 |
that requires USE cases, design, approval, ...) |
20 |
|
21 |
It is a bad idea to suggest we have projects that need to follow |
22 |
standards, and those that don't or to a lesser extend. Simply all |
23 |
projects need to follow the standards. I wouldn't document what |
24 |
projects you are going to look harder at, and what projects you don't. |
25 |
It is clear from this document that portage is something you'll look |
26 |
hard at. That's good to know, but I'd leave that fact out of the |
27 |
document, unless of course you expect to use the document only for |
28 |
portage. |
29 |
|
30 |
My gentoo experience tells me that high standard projects are affected |
31 |
by projects without or with only very low standards/ethics: in the high |
32 |
standard project it would be possible to schedule things, but deadlines |
33 |
will be missed -without doubt- because requirements for other projects |
34 |
are changed suddenly during design or implementation, leading to at |
35 |
least a complete rescheduling for the high-standards project because |
36 |
they need to accommodate for the manpower loss. If you create a fire |
37 |
somewhere, people from other projects will have to go put it out, and |
38 |
those people will not be able to do something else while they are |
39 |
putting out the fire. |
40 |
|
41 |
Note that uncontrolled fires do not obey to engineering standards. More |
42 |
specifically, their timetable is too constraining. For instance: there |
43 |
are currently 3 features in the 2004.1 I'm guessing I need to invest |
44 |
time into, but afaik work has only started on one of them. If catalyst |
45 |
starts changing five minutes for the release and an incredible amount |
46 |
of ebuilds are required to be masked stable on ppc in the last five |
47 |
minutes, I'll be doing nothing but releasing again, in best case, only |
48 |
miss the 2004.1 release by a few days. Even though I have been building |
49 |
releases every two days, I can still end up with an unstable release. |
50 |
|
51 |
These standards will without doubt be another fire too if they are |
52 |
suddenly applied to projects without giving them time to adapt. One |
53 |
fire can be put out really quickly, but 10 uncontrolled fires will lead |
54 |
to some project stalling. I wonder whether this is open-source related; |
55 |
will there always be new volunteers to replace the firemen who burned |
56 |
themselves (out) ? My suggestion would be to switch to controlled |
57 |
fires, and to increase the amount of fires when the amount of manpower |
58 |
increases, but I'd stop burning people. |
59 |
|
60 |
> Goals |
61 |
|
62 |
> It is intended to define a waterfall model for |
63 |
|
64 |
It might be a good idea to explain what the waterfall model is; |
65 |
|
66 |
1. Requirements |
67 |
2. Client approves functional/non-functional requirements |
68 |
3. Design |
69 |
4. Client approves design |
70 |
5. Implementation and documentation |
71 |
6. Requirements check - project failure or success |
72 |
7. Revisit requirements, (add/remove/change) |
73 |
8. Client approves revisited functional/non-functional requirements |
74 |
9. Revisit design |
75 |
10. Client approves revisited design |
76 |
11. Implementation and documentation |
77 |
12. Requirements met? - iteration failure or success |
78 |
13. goto 7 |
79 |
|
80 |
In this case the client is our userbase. This is a special client |
81 |
because: |
82 |
|
83 |
- our client (a huge set of people) wants to see all their requirements |
84 |
met in the first iteration. |
85 |
- our client cannot approve something unanimously very easily |
86 |
|
87 |
We therefore need to find somebody who represents the client. |
88 |
|
89 |
My suggestion would be to let the management team represent the client, |
90 |
with the store as an advisor. The releng team could represent the |
91 |
'developer'. Releng should therefore be represented in the management |
92 |
team. Care should be taken with people seated in the management team, |
93 |
part of releng and in the store, they should make sure they keep their |
94 |
roles separate, otherwise we will end up in an unhealthy situation |
95 |
(where for instance releng solely represents the store and does not |
96 |
take into account development constraints). Management needs to look |
97 |
for a compromis between store, userbase and developer |
98 |
requirements/constraints. |
99 |
|
100 |
When we define requirements standards, design standards and standards |
101 |
to see if an implementation meets requirements, we can then still |
102 |
define how hard to be about these things. Saying in advance that some |
103 |
projects do not need requirements, design etc is a recipe for the |
104 |
disaster. Please note that updating an ebuild is not a project. We also |
105 |
need a good definition of a "project". |
106 |
|
107 |
Gentoo so far has followed a waterfall model, without visible design |
108 |
and requirements phases, or visible but approved and tested by the |
109 |
developer. |
110 |
|
111 |
> First Steps |
112 |
> |
113 |
> target audience |
114 |
|
115 |
Too much examples here. Nothing really concrete. |
116 |
|
117 |
> Invite Participation |
118 |
|
119 |
"Invite participation" alone is not good, and is not a software |
120 |
engineering standard, rather a marketing requirement. |
121 |
|
122 |
This should be a guideline at max: Identify USE cases by inviting |
123 |
participation, document user USE cases, and ask people to read your USE |
124 |
cases before sending it of to the management/releng team. |
125 |
Please note that USE cases are not only USER USE cases but there are |
126 |
also DEVELOPER USE cases. It is highly unlikely that inviting |
127 |
participation will not lead to feature-bloat and unrealistic first |
128 |
iteration requirements. Actively recruiting people is also not a |
129 |
requirement (we have a separate project for that). If requirements can |
130 |
be met with only passively recruiting or no recruiting at all, why not? |
131 |
We have a recruiting team continuously looking for additional forces? |
132 |
|
133 |
Keep in mind that the target audience is not necessarily a set of |
134 |
developers. Also, geeks do not necessarily dislike software which |
135 |
newbies can use (cfr. OS X). |
136 |
|
137 |
> Create a High-Level Development timeline |
138 |
|
139 |
A timeline is not a good idea. |
140 |
|
141 |
Completion dates are prone to change in an open source project because |
142 |
people work when they have time. A schedule in which the amount of time |
143 |
needed to realize each USE flag is discussed is to be preferred |
144 |
(possibly in combination with a weekly status update showing how much |
145 |
time was used) over a hard deadline. Hard deadlines are only good for |
146 |
project wide releases (2004.1, 2004.2), to help determing whether a |
147 |
completed features falls in a release. And it is possible to see when a |
148 |
feature will be completed based on the status updates. No status |
149 |
updates means no project progress. |
150 |
|
151 |
> Next, develop a tenative development roadmap for your effort that sets |
152 |
> general |
153 |
> completion dates for: |
154 |
> |
155 |
> 1) project start (public invitation) |
156 |
> 2) initial work on design/requirements doc |
157 |
> 3) completion of design/requirements doc (should be at least a month |
158 |
> after #2) |
159 |
|
160 |
cfr supra. |
161 |
|
162 |
This is not a good template because it lacks the approval argument. |
163 |
Approving your own requirements will lead to half-baked projects, |
164 |
features that shouldn't be included because they're half-baked, ... |
165 |
|
166 |
> In addition, your roadmap should also define how the design, |
167 |
> development and |
168 |
> testing process should proceed, so it should define steps such as: |
169 |
|
170 |
We should have standards for those too. |
171 |
|
172 |
> Gentoo is a volunteer project, and the nature of volunteer work can |
173 |
> make it |
174 |
> quite challenging to meet deadlines. Fortunately, there are quite a few |
175 |
> techniques that can be used to make your development effort resilient, |
176 |
> so that |
177 |
> it can meet the unexpected challenges of volunteer development, |
178 |
> whether this |
179 |
> means flexibility in dealing with needed adjustments to deadlines, |
180 |
> coping with |
181 |
> changes in developer interest and activity, etc. |
182 |
|
183 |
> One absolutely critical aspect to ensuring success in an uncertain |
184 |
> environment |
185 |
> is to *clearly define the requirements for the results of your |
186 |
> effort*. "Hard |
187 |
> requirements" are specific, testable aspects of your end-product -- |
188 |
> aspects |
189 |
> that must be achieved in order for your development effort to be |
190 |
> considered a |
191 |
> success. If you're behind schedule, you can't compromise on a hard |
192 |
> requirement |
193 |
> -- doing so would undermine the entire purpose of the development |
194 |
> effort. Instead, |
195 |
> your schedule will need to be adjusted to reflect the your current |
196 |
> progress. |
197 |
|
198 |
Not a good text. The schedule is hard linked to the work performed. |
199 |
That argument does not hold in a project where people can only work on |
200 |
things in their free time. The only people that can 'cope', 'deal' or |
201 |
'compromise' are those having time to do so, and wanting to do so. Time |
202 |
needed + time spend can lead to estimates on when to expect something. |
203 |
I would agree to your schedule if there was a paycheck in my bus for |
204 |
every project, but unfortunately it isn't. |
205 |
|
206 |
It looks like some parts for the document were cut/pasted from an |
207 |
email, and I'm not sure the target audience is the same. It might help |
208 |
to base the document on |
209 |
http://standards.ieee.org/reading/ieee/std_public/description/se/ |
210 |
|
211 |
I'd have at least standards for SQAP, SCMP, SPMP, SRS, SDS, and STD . |
212 |
It would be a good idea to provide template documents to fill in (like |
213 |
the release notes) instead of a long list of requirements, otherwise |
214 |
you'll not be seeing much documents. |
215 |
Not all people read the DTD's or xml schema's. It would be a good idea |
216 |
to have a tuturial on how to write gentoo XML. Otherwise templates are |
217 |
needed. |
218 |
|
219 |
SQAP: software quality assurance plan - coding conventions - |
220 |
documentation standards? |
221 |
SCMP: software configuration management plan - CVS artifacts to be used |
222 |
- who is allowed to commit, who isn't... |
223 |
SPMP: project management plan - the management bits (see IEEE format |
224 |
example) |
225 |
SRS: software requirements (USE cases, UML?, functional/non-functional |
226 |
requirements) |
227 |
SDS: software design document (design patterns, diagrams, ...) |
228 |
STD: software test description (how to test the software works) |
229 |
|
230 |
I have some good tex templates if those are needed. |
231 |
|
232 |
Best regards, |
233 |
|
234 |
Pieter Van den Abeele |
235 |
|
236 |
|
237 |
-- |
238 |
gentoo-releng@g.o mailing list |