Change Management Policy
1. Introduction
This document describes the EMI policy to be followed to manage software changes in EMI software products.
There is a project deliverable describing the Software Maintenance and Support Plan,
DSA1.1 [R1]. This policy is kept synchronised with DSA1.1.
2. Change Management Process
2.1. EMI Releases
The EMI distribution will be organized in periodic major releases, tentatively delivered once a year, providing a good balance between the conflicting requirements of stability and innovation.
An EMI major release is characterized by well-defined interfaces, behavior and dependencies for all included products, available on a predefined set of platforms. What is included in a new EMI major release is defined by the PTB and the implementation of the plan is coordinated by JRA1.
Backward-incompatible changes to the interface or to the behavior of a product that is part of the EMI distribution can be introduced only in a new EMI major release. Changes to interfaces that are visible outside the node where the product runs (e.g. a WSDL) need to be preserved even across major releases, according to end-of-life policies to be defined on a case-by-case basis.
The availability of a new major release of EMI does not automatically obsolete the previous ones and multiple major releases may be supported at the same time according to their negotiated end-of-life policies.
An EMI distribution includes all the EMI software products that are developed within the project and that have reached production quality. Within an EMI major release, only one major version of a given product is maintained. Four types of releases have been identified for a given product:
- Major Release: A major release for a product is characterized by a well-defined interface and behavior, potentially incompatible with the interface or behavior of a previous release. New major releases of a product can be introduced only in a new major release of EMI. The contents of a new major release are endorsed by the PTB and included in the project technical plan. The implementation is coordinated by JRA1.
- Minor Release: A minor release of a product includes significant interface or behavior changes that are backwards-compatible with those of the corresponding major release. New minor releases of a product can be introduced in an existing major release of EMI. The contents of a new minor release are endorsed by the PTB. The implementation is coordinated by JRA1. If the release is going to be introduced in an existing major release of EMI, the implementation is also supervised by SA1 in order to guarantee that the production quality and the backwards-compatibility are preserved.
- Revision Release: A revision release of a product includes changes fixing specific defects found in production and represents the typical kind of release of a product during the lifetime of an EMI major release.
- Emergency Release: An emergency release of a product includes changes fixing only Immediate-priority defects found in production, typically security-related. The PTB is always informed about the preparation of an emergency release and has the right to turn it down if it does not consider it an emergency.
- Repackaged release in the context of EMI 2: A repackaged release, for those products that have the same version in EMI 1 and EMI 2. In this case there is still the need to have the testing and certification, as the packages are created in the context of EMI 2, having the "environment" of EMI 2 with eventually different dependencies.
The list of current EMI software products is in section 4 of
DNA1.3.2 - Technical Development Plan [R2]
2.1.1. EMI Versioning Schema
The following numbering convention must be followed to define the version of EMI products in EMI releases. Versions must be expressed in the form of
major.minor.revision(-[age]), where:
- An increment in the major number reflects a change in the component interface or behavior, that can be backwards-incompatible.
- An increment in the minor number reflects a change in the component interface or behavior backward-compatible. It can include also bug fixes.
- An increment in the revision number reflects bugs fixes, with no new features.
- An increment in the age number reflects a rebuild due to change in the external dependencies or an emergency release for component-x.y.z, when the version component-x.y.z+1 is already available.
2.2. Release Tasks
Release tasks track new versions of EMI software products for each supported EMI major release and platform. They contain general information about the new version of the product and the list of changes that are introduced. Changes must be tracked in RfCs or development tasks. For more details about changes check section 2.3.
A single release task is used to track a new product release for all the supported platforms.
Note that in the case of EMI updates, new product versions can only be released if there are Immediate or High Priority RfCs.
2.2.1. Release Task Tracking
Release Tasks are tracked in the
EMI Release Tracker
[R3] in Savannah and they are created by the Release Manager upon request from the PTs. PTs must prepare the list of changes they want to include in the release task so that they are approved in the EMT. See section 2.3 for more details.
Release tasks should contain the following information:
The information in the release task should be always valid for all the supported platforms. So before moving the task to certified, for example, you have to make sure that the product being released has been certified for all the platforms and that all the required information is available in the task for the verification step.
Although release Tasks are created in Savannah by the release manager, PTs must fill in the remaining fields as described in this section.
2.2.2. Release Task state transition diagram
The following diagram represents the set of states in the life of a release task:
Figure 1 - Release Task States
- Open: the Release manager is responsible for creating the release tasks in Savannah to track the different scheduled releases. This should be done with the assistance of the JRA1 leader making sure the different development plans are fully covered in the release schedule. Check the Release Management Policy for more details on this. All release tasks should be either planned according to the different development plans, or in case they are needed because an unplanned change needs to be introduced, new release tasks will be created in Savannah at any time by the Release manager. At this moment, the Release manager together with the PTs, defines the
Should be Finished on
field and some other mandatory fields.
- Open to Certified: the PT moves the release task to
Certified
once the development, testing and certification of the new product version has finished. Before this transition happens, the PT has to make sure all the fields in the release task described above are properly filled in and a complete certification report has been attched to the tracker entry.
- Certified: the work of the PT has finished at this stage. This stage prompts the QC task force to evaluate the release task from the QA point of view.
- Certified to Ready for Testbed: The QC task force evaluates the release task. The QC task force includes the result of its evaluation in a verification report attached to the release task. At this stage, the Production Release Criteria [R6] is checked. If all mandatory checks are OK or only minor things are missing, the QC task force informs the PT to provide them and moves the task to
Ready for Testbed
.
- Certified to Open: The QC task force evaluates the release task. The QC task force includes the result of its evaluation in a verification report attached to the release task. At this stage, the Production Release Criteria [R6] is checked. If some of the mandatory checks fail, the QC task force puts the task back to
Open
informing the PT.
- Ready for Testbed : This stage prompts the Release Manager to prepare the repositories so that the Testbed Manager can deploy the new product version in the EMI Testbed. The communication between the Release Manager and the Testbed Manager is done using GGUS.
- Ready for Testbed to Deployed on Testbed: The Testbed Manager moves the task to
Deployed on Testbed
once he finishes deploying and testing the new packages in the EMI Testbed. If the testing is successsful he also changes the field Testbed Result
to PASS
; Otherwise he changes the Testbed Result
to FAIL
.
- Ready for Testbed to Open: The Testbed Manager moves the task to
Open
if the deployment of the new product version fails.
- Deployed on Testbed: This stage triggers once more the QC task force to verify that everything is correct from the QA point of view. If minor things were missing, they are checked at this step.
- Deployed on Testbed to Open: Even if mandatory verification criteria is checked by QC before, it could be the case that at this point some of the mandatory checks still fail. In this case, the QC task force puts the task back to
Open
informing the PT.
- Deployed on Testbed to Verified: The QC task force moves the release task to
Verified
after doing the evaluation of the information contained in the release task. If needed, because minor things were missing, the QC task force includes once more the result of its evaluation in another verification report attached to the release task.
- Verified: the work of the QC task force has finished at this stage. This stage prompts the release manager to continue the preparation of the release.
- Verified to Released: The release manager copies the packages in the EMI production repository and prepares the release pages.
- Released: The new product version is available in the EMI production repository and the release pages are now online. This state automatically closes the Savannah task. Note that at this point no modifications should be added in the tasks, not even comments.
2.3 Changes
Changes can be tracked in both RfCs and development tasks. In both cases, the URL to the corresponding change should be included in the corresponding release task as explained in the previous section.
2.3.1. Request for Change (RfC)
RfCs are tracked in different internal trackers selected by PTs. RfCs are motivated by:
- GGUS tickets where users report incidents or make requests.
- PTs when detecting defects that have been found internally or when introducing minor unplanned improvements.
During the maintenance of an EMI major release, in order to have a common view of the status of open RfCs,
XML files exporting information from the different trackers are generated and processed by the SA2.3 task in order to provide a unique report. This report summarises the status of Immediate and High priority RfCs and it is produced every week for the EMT as explained in the
Release Management Policy [R8]. For more information about the different trackers and the XML files, please check the
Appendix on EMI Tracker Mappings.
An RfC should be evaluated as soon as possible by the PTs to accept it or reject it. A period of two weeks has been defined to carry out this evaluation. Immediate or High priority RfCs must be then approved by the EMT before they can be included in a release task.
If the same RfC is going to be applied to different EMI major releases, then an RfC is created for each EMI major release.
2.3.1.1. RfC Tracking
A set of fields have been defined to provide information about an RfC. PTs must define these fields in the corresponding tracking tools. When this is not possible, a XML file can be generated containing the needed fields. This is described in the
Metrics twiki page.
The mandatory fields are:
- Unique identifier/URL: a URL pointing to the RfC. The URL acts as a unique identifier for the RfC.
- Associated GGUS ticket: If applicable, one or more URLs pointing to GGUS tickets that have caused the opening of this RfC.
- Affected Product: According to the list of products defined in DNA1.3.2 - Technical Development Plan [R2].
- Affected EMI major release: EMI major release affected by the RfC
- Affected Platforms: Whether the RfC is platform-specific and, if so, which are the affected platforms. Possible values are
SL 5, SL 6, Debian 6, All Linux, All, Noarch, Other
.
- Priority of the change. The priority of the change is based on severity, impact, urgency and cost.
- Immediate: The RfC needs to be addressed as soon as possible, in all affected EMI major releases. A release containing immediate- priority changes can contain only immediate-priority changes. Multiple immediate-priority changes can be included in the same release, provided that any change does not delay the release significantly.
- High: The RfC will be addressed in a next planned release of the affected product, in all affected EMI major releases.
- Medium: The RfC will be addressed in the release of the affected product that will be shipped with the next EMI major release. If Medium priority RfCs are ready by the time High priority RfCs are going to be released, they can also be released together as part of an update to an existing EMI major release.
- Low: There is no target date for addressing the RfC.
- Defect vs Feature. To differenciate between software bugs and new features.
- Status of the change. It shows in which stage of the Change Management Process the RfC is. See the Change Status section below.
- Detection Area: The context in which the version of the product affected by the change is available. Possible values are:
-
Production
: The RfC is opened after feedback received from the users who have used the product in a production environment.
-
Testing
: The RfC is opened after feedback received from the team of people testing the product.
-
Development
: The RfC is opened after feedback received from the team of people developing the product.
- Target EMI major release: The target EMI major release where the RfC will be available.
- Associated Test: Whether there is a test associated with the change. Possible values are
Yes, No, NA
.
- If the change is a Defect, this field refers to a regression test.
- If the change is a Feature, this field refers to a functionality test.
2.3.1.2. RfC state transition diagram
The following diagram represents the minimum set of states that should be present in any of the tracking tools chosen by the PTs:
Figure 2 - RfC states
- Open: The RfC is opened after all the necessary clarifications have been made. This may include discussions in a GGUS ticket to understand if there's an actual problem, internal discussions within the PT after a defect has been found or after an improvement has been proposed; etc.
- Open to Accepted: The clarification is complete and the RfC is accepted to be implemented.
- Open to Rejected: The clarification is complete and it's been decided in the end not to implement the RfC.
- Accepted: The RfC is ready to be implemented by the PT. This state triggers the implementation of the RfC within the PT.
- Rejected: The RfC won't be implemented and the PT should explain why it has been rejected.
- Accepted to Fixed: The implementation of the RfC has finished, that is, the code has been committed.
- Fixed: The code is committed. Once the packages are ready within the PT, testing of the new release can start, including the testing of all RfC within the release.
- Fixed to Not Tested: The PT is not able to test the RfC.
- Not Tested: The RfC can't be tested and the PT should explain why.
- Fixed to Tested: The PT tests the RfC by running the relevant tests. If the tests are succesful, the RfC can be moved to
Tested
.
- Tested: The RfC has been succesfully tested.
- Fixed to Accepted: The PT tests the RfC but the tests fail. This means the new feature/bug hasn't been properly fixed.
- Tested to Closed and Not Tested to Closed: Once the corresponding task where the RfC is included is released to the EMI production repository, the PT closes the RfC.
- Closed: The RfC is now available in the EMI production repository.
2.3.1.3. RfC for Security Vulnerabilities
In case of security vulnerabilities assessed as such by the
EGI-SVG
or by the PT - the RfC
MUST reference the EGI-SVG internal private
RT ticket
. No description or details regarding the vulnerability should be present in publicly available trackers.
2.3.2. Development Tasks
Development tasks are tracked in the
Development Tracker
[R7]. They are maintained by the PTB and assigned to the different PTs. They track:
- High level user requirements.
- Technical objectives defined in the technical area work plans.
PTs addressing a development task must include a reference to it in the corresponding release task by adding the URL of the development task in the
List of RfCs
field.
2.3.2.1. Development Task Tracking
Development tasks are created by the PTB. Most of the fields are filled in by the PTB but PTs are responsible for keeping the status of the development task up-to-date by modifying the
Planned to be finished
and
Percent complete
fields and by posting short textual updates as comments, as the task implementation progresses. Additionally PTs need to modify the
Status
field as explained in the following section.
The field
Associated Test has to be filled to show whether there is a test associated with the change. The possible values are
Yes, No, NA
.
2.3.2.2. Development Task state transition diagram
The following diagram represents the most important set of states in the life of a development task:
Figure 3 - Development Task states
- Open: The development task is created by the PTB and assigned to the corresponding PT. The corresponding value in the
Status
field at this point is Not started
.
- Not started to Ongoing:
Status
field change performed by the PT when the PT starts working in the implementation of the development task.
- Ongoing: The PT is working in the implementation of the development task.
- Ongoing to Done:
Status
field change performed by the PT when the PT commits the new code implementing the development task in the VCS system.
- Done: The code implementing the development task is committed in the VCS system.
- Closed: The development task is moved to
Closed
by the PTB once the corresponding release task has been released to production.
3. Contacts
EMI SA2
4. Table of References
5. Logbook
v4.1 (in progress)
- 19.11.2012: Creating section for
!RfC for security vulnerabilities
.
- 02.05.2012: Fixed formatting in the
List of RfCs
and List of Packages
fields.
v4.0 (Approved on 23.01.2012)
- 16.01.2012:
- Added Repackaged release in the context of EMI2
- Single release task to track all supported platforms
- Added supported platform and Product team fields in the release task.
- 12.10.2011: changes in the policy related to actions taken by PTB. It won't trigger a new version of the policy and will be integrated in the next version. Changes are only available in twiki and not in the PDF version of the policy.
- Minor changes of 2.1 EMI Releases section.
- Removed section 2.4 Roles.
v3.3 (Approved on 03.10.2011)
- 03.10.2011:
- Added new field
Associated Test
for the RfC Tracker and Development Tracker as it was discussed on the EMT.
v3.2 (Approved on 15.09.2011)
- 15.09.2011:
- Added new field
Release Type
for the release task as requested by the release manager.
- Applied comments to development tasks sections as suggested by PTB.
- 14.09.2011: Added more details on how to use the Development Tracker by including new sections
Development Task Tracking
and Development Task state transition diagram
after clarifications with PTB.
- 05.09.2011:
- Added new section on EMI 1 versioning schema requested by the release manager.
- Highlight the fact that Immediate and High priority RfCs need to be approved before they can be released.
- Remove that development tasks should appear in the
Dependencies
section of the release task. Added that they should be included in the List of RfCs
field instead.
v3.1 (Approved on 24.08.2011)
- 23.08.2011:
- Differentiate between two type of changes: RfCs and development tasks. Added more details about the development tasks.
- Added more information about the XML files.
- Added information about RfCs need to be approved by the EMT.
- Reorganise
EMI releases
section to include there all the overview on EMI major releases and EMI product releases.
- 22.08.2011:
- Rename
Testbed Deployed
to Deployed on Testbed
. Update release task diagram and add transition from Deployed on Testbed
to Open
.
- Added information about the Development tasks and that they should be attached to the release task.
- 08.08.2011:
- Changes agreed with Release Manager, Testbed and QC teams:
- New state
Ready for Testbed
. Definition and Diagram updated.
- New field
Supported Platform
.
- Update
Package List
definition. Indicate that all formats are needed. Give examples of the required syntax needed by the QA Dashboard.
- 13.07.2011
- Changes agreed with Release Manager, Testbed and QC teams:
- New Field
Postponed Until
.
- Specified that
Should be Finished On
can't be modified once it's defined.
- New Field
Testbed Result
.
- New State
Testbed Deployed
.
- Clarify that no modifications can be done to Released/Closed tasks.
- Change
component release
(CR) with release task
which is a more clear and appropriate term.
- Added example values for
Affected Platforms
as requested by SA2.4.
- Added Table of References.
v3.0 (Approved on 28.06.2011)
- 28th June 2001:
- Applied more feedback from ARC and feedback from Technical Director.
- 27th June 2011:
- Applied feedback from ARC.
- 14th June 2011:
- Replace
component
with product
where applicable to be aligned with DNA1.3.2.
- Remove the need to specify the URL in the package list of a release task.
- 10th June 2011:
- Align RfC fields with DSA1.1 deliverable: added GGUS tickets, Affected platforms, Affected products to point to DNA1.3.2, target EMI major release.
- Clarity one RfC per major release.
- 9th June 2011: Added new twiki to include tracker mapping tables.
v2.0 (Approved on 28.03.2011)
- 16th March 2011: Added more specific information on the Documentation field of the CR task.
- 10th March 2011: After discussing with QC, some improvements are done in the RfC state and transition definitions. Use
tested
instead of certified
to be aligned with
- 3rd March 2011: All definitions are now clear.
- 1st March 2011: Added changes provided by Technical director (definitions). Some clarifications still pending. Mail sent to Technical Director.
- 23rd Feb 2011: Changes requested by Technical Director:
- Create new fields in the CR tracker:
UMD capability
, Technical Area
, List of elements
.
- Rename the following fields:
Component version
to Version
and Component name
to Name
.
- Change the meaning of
Category
to only release
and component
.
- 18th Feb 2011: Changes requested by Technical Director:
- Create new fields in CR tracker:
Test Plan Link
, License
, Extended Release Notes
.
the meaning of this terms within the project.
v1.0 (Approved on 13.12.2010)
- Version 1.0 ready on 17.12.2010. To be announced on EMT 20.12.2010.