~svaksha/+junk/product-release-systers

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
***************************
 RELEASE MANAGEMENT NOTES
***************************

The contents of this page are available on the wiki at: 
http://systers.org/systers-dev/doku.php/svaksha:release_management_notes

Introduction
=============
Release Management of Systers-mailman project is a complex process which focuses
on the definition, support, and enforcement of processes covering activities in 
the areas of Mailman software development, maintenance and  transfer of software
into production environments with a set of required functionality. Systers-mailman
software is focused and aligned to promote the interests and communication 
(via mailing list discussions) needs of a large community of women in the 
computing and technology fields living in different parts of the world. 
(about_systers_-_gsoc_applicants_read_this_first: 
http://systers.org/systers-dev/doku.php/about_systers_-_gsoc_applicants_read_this_first ). 

Some of the good practices, existing and  essential for making the Software 
Release Management more effective are discussed here. This document reviews 
the existing practices and identifies areas (in the form of suggestions) where 
improvement process can help.  


Product structure:
================== 
Systers runs Mailman 2.1.10 (on Ubuntu 8.04) and has customized this FLOSS software
to include new features like: subscribe/unsubscribe to list threads, adding 
essays during list subscriptions, and the ability to self-add alternate email addresses.
 

Basic structure and Flow of Release Management activities:
==========================================================

The Systers-Dev project team had created the operating environments such as, 
- Development, 
- Version control, 
- QA (review, testing) and 
- Production, 
and had documented the process on the wiki.  



Release Management team: 
========================

Currently this activity is managed by the Systers-project drivers listed on 
Launchpad: 

Name  	          Member since  	       	            Status
Andy Grover 	  2008-10-29 17:49:09 UTC 2008-10-29  	Approved
Jennifer Redman   2008-10-29 17:28:23 UTC 2008-10-29 	Administrator
Kathy Gee 	      2008-10-29 17:52:30 UTC 2008-10-29 	Administrator
Kathy  	          2010-03-18 21:34:08 UTC 2010-03-18 	Approved
Robin J           2008-10-30 16:31:32 UTC 2008-10-30 	Administrator


Release Planning:
=================
The RM team defines the process and procedures for 'Change Management' concerned
with the reporting and resolution of project request, upgrades, bugs and 
wish-list recording for software enhancement and is made effective only with 
Change Control disciplines and registered as bugs only.
(how_to_submit_a_bug_to_the_mailman_project: 
http://systers.org/systers-dev/doku.php/how_to_submit_a_bug_to_the_mailman_project)  

This is triggered by Change incident leading to registering change, authorizing 
a Change, etc... 

The RM team identifies and assigns priority to registered bugs, identifies the 
tasks involved to meet the needs of project requirement, change management, 
testing, release, etc. The team is also responsible to deploy resources needed 
to support Production conditions. Due to the voluntary nature of development 
efforts there is a probability of mismatch between skill needed and what is 
actually available at any point of time, as well as time availability, hence no 
definite schedules with milestone are attempted.

As part of the orientation / training programme several wiki pages are made 
available describing the procedures in the form of what to do and how to do. 
The Systers WIKI-index page lists all available documents:
(http://systers.org/systers-dev/doku.php/soc010?do=index). 

Systers prepares and publishes annual development plans in the form of wish 
lists to infom volunteers about the requirements: 
2010_systers-mailman_development_projects, http://systers.org/systers-dev/doku.php/2010_systers-mailman_development_projects ;
2010_systers-mailman_gsoc_2010_students_projects, http://systers.org/systers-dev/doku.php/2010_systers-mailman_gsoc_2010_students_projects

Suggestions: 
------------
Tentative "suggestions" to facilitate the volunteer development are: creation 
of facility to register the names of volunteers available, their skill sets and 
their preferences for areas of work. This data could be used by the RM team for 
a realistic assessment of resources with skill set and the quantum of work in 
terms of what is to be done, how much manpower effort needed, what skill is 
needed to complete a work unit, and how the gap in resources can be bridged in 
case of mismatch, etc. This is to be done periodically covering  the entire 
scope of work, from development and bug fixing to regression testing and 
deployment. All these can be planned, scheduled and workflow tracked to release 
stage.  


Development: 
=============
Systers uses a distributed development model and uses Launchpad and Bazaar 
Distributed Version Control Systems (DVCS) to coordinate the project and 
documents guiding contributors and students on how to create a local development 
environnment is made available. 

Contributors have their local repositories tied to personal project branches on 
Launchpad that are tied to the Systers-mailman project 
http://systers.org/systers-dev/doku.php/before_you_sprint,
http://systers.org/systers-dev/doku.php/getting_started, 
http://systers.org/systers-dev/doku.php/designing_your_tests_during_development
http://systers.org/systers-dev/doku.php/how_to_merge_development_branch_to_production 

When new features and bugs are fixed, the modified codes (patches) become ready 
for server-side testing. The project branches are merged into the development 
branch for testing (on dev.systers) and can later follow the four pre-release 
stages, namely,: codefreeze, testing, migration, and production. Once tests are 
passed, it is moved into 'stable' for rollout to production. 

The development phase includes the preparation of documents, coding for new 
features, or making patches to fix bugs (http://systers.org/systers-dev/doku.php/bugs) 
in Systers-Mailman. 

System Crash Details from logs are analysed, bugs fixed and patches released to 
production on a priority basis. (about_the_logs, http://systers.org/systers-dev/doku.php/about_the_logs);  
http://systers.org/systers-dev/doku.php/how_stuff_works_both_default_mailman_and_our_changes
http://systers.org/systers-dev/doku.php/mailman_general_architecture
http://systers.org/systers-dev/doku.php/mailman_modified_files
http://systers.org/systers-dev/doku.php/development_server
http://systers.org/systers-dev/doku.php/general_how_stuff_works

All the documents created for and during the RM activities are required to use 
the systers-wiki (running on DokuWiki which is standard compliant 'Wiki') which 
is  mainly aimed at creating documentation of any kind on the web.


 
Software Configuration Management (SCM)
=======================================
At present the development work is focused on release of a single version of 
Systers mailman, hence there is only one  project team that is maintaining a 
single version of production series and another dev-image series in launchpad 
for development and the milestones/timeline details was last updated in Dec 2008.

Systers-mailman uses Bazaar for version/ revision control. Bazaar has a 
decentralized system that  keeps track of changes in software source code or 
similar information, and is linked to Launchpad. Their branches are public and 
are located on Launchpad, which uses bzr as the Distributed Version Control 
Systems (DVCS) and forms the back bone of Systers Release Management disciplines. 

Systers-mailman project is owned by Systers-Dev and maintained as a branch on 
launchpad as 'bzr branch lp:~systers-dev/systers/development' each revision is 
numbered and history is maintained   

Systers-mailman production series   lp:systers  bzr branch lp:systers 73 revisions  
   
Systers-mailman dev-image series


Change Management:
===================
It is the process and procedures for resolving issues, reporting bugs and 
wish-list recording for software enhancement and is made effective only with 
Change Control disciplines. This is triggered by Change incidence leading to 
Problem Management with procedures for registering change, authorizing a Change. 
Change management fixes priority for related activities like submitting bugs to 
a project (http://systers.org/systers-dev/doku.php/how_to_submit_a_bug_to_the_mailman_project). 

Each branch created undergoes the following stages of development before it is 
merged with production.

STATUS
-------
0.Experimental: Still under active development, and not suitable for merging into release branches.
1.Development: Shaping up nicely, but incomplete or untested, and not yet ready for merging or production use.
2.Mature: Completely addresses the issues it is supposed to, tested, and stable enough for merging into other branches.
3.Merged: Successfully merged into its target branch(es). No further development is anticipated.
4.Abandoned: Development activity for the branch has ceased.


Each BUG filed goes through various development stages on LP:
    * New
    * Incomplete
    * Opinion
    * Invalid
    * Won't Fix
    * Confirmed
    * Triaged
    * In Progress
    * Fix Committed
    * Fix Released
 

Quality Assurance (QA) /Testing
=================================
QA process maintains a physical development environment for application of 
patches and testing and covers a set of process for code review and testing. 
This also includes the application of risk assessment techniques  to assess 
pre-production resources and  vetting future technology.
This also involves testing software for functionality, performance, exception
and regression. 

Suggestions:
-------------
It is "suggested" that the review procedures be introduced after impact analysis
of changes due to bugs or new feature requests after completion of coding and testing.

Bugs fixed are tested by testing volunteers and the prepare test cases, test 
suites in the form of checklist as per the guidelines given in the 
master_checklist_template (http://systers.org/systers-dev/doku.php/master_checklist_template). 


Release Execution :
===================
Normally the RM team includes one or more personnel, preferably, with skills in 
Project Management, System analysis and architecture, Coding ,testing, product 
building and operation(s). This activity covers production change control and 
forward schedule of changes, configuration management and focuses on the creation
of dependencies and accountability in the operating environments. Additionally this 
involves the identification and definition of what causes a release, which part 
of the  system is affected and the target audience and expected results.  
Though the release is sourced and driven by the effort of different volunteers, 
it is coordinated and managed well by few dedicated people. 


Suggestions:
------------
It would be a good if Systers also have a back-up plan for production 
releases that are being deployed to manage live environments. This back-up-plan 
should be tested for removing the deployed release and roll back to the old one 
and should be invoked if and when the production system crashes or malfunctions. 

Numbering scheme Change significance  (refer to http://en.wikipedia.org/wiki/Software_versioning)
-------------------------------------
Software versioning is the scheme of assigning unique sequence-based identifiers
to convey the significance of changes between releases: -- changes are classified 
by significance level and the decision of which sequence to change between 
releases is based on the significance of the changes from the previous release, 
whereby the first sequence is changed for the most significant changes, and changes 
to sequences after the first represent changes of decreasing significance. 
(0.0.0 --> release.series.version)