Most of these "how should we build it" discussions circled around building and maintaining development velocity in 12.04 so that we could add new features that users need while maintaining and delivering the quality they also need. Fortunately, we laid some ground work in the 11.10 cycle. Pete Graner led the QA team in 11.10. Along with some new QA staff, they instituted some important practices, like automatically testing the daily ISO each day, and they set up a QA lab for running tests automatically, along with reporting of those test results.
Acceptance Criteria
How we assess and accept code from upsreams within Canonical was an area ripe for discussion. We arrived at UDS with a strong view about how we should be doing this, and we had three discussions about it at UDS. Jason Warner this area of collective effort "Acceptance Criteria". Please note that for 12.04 and the foreseeable future, this applies ONLY to code developed by Canonical, or was call them "Canonical upstreams". There are two main goals of this effort:
- Ensure that landing code from Canonical upstreams does not introduce issues that make the development release too hard to use and develop on, thus slowing down velocity for everyone.
- Encourage Canonical upstreams to fix bugs throughout the cycle, and not to wait until after Feature Freeze to focus all efforts on bug fixing.
Acceptance Criteria means that upstreams have some responsibilities, and Ubuntu has some responsibilities. For upstreams, it boils down to "treat your trunk as sacred". Practically, it requires:
- There is a trunk of code bound for Ubuntu.
- This trunk always builds automatically.
- This trunk has tests that are always passing automatically.
- All branches are properly reviewed for having both good tests and good implementation before merged into trunk.
- Any branch that breaks trunk by causing automated tests to fail or causes trunk to stop building, are immediately reverted.
- Every maintainer in Ubuntu must have a test plan for upstream trunks that are run before uploading to the development release.
- Tests in the test plan that are automated can be run with the help of the QA team.
- Tests in the test plan that are manual can be run with the help of the community team, (and the community QA Lead that is to be hired)
- Refrain from uploading a trunk into Ubuntu if there are serious bugs found in testing that will slow down people using the development release for testing and development.
- Revert uploads that break Ubuntu, as there is no point in having the latest of a trunk in Ubuntu if it's broken and just slowing everyone down.
- Add tests to upstream projects for the Ubuntu test plan if serious bugs do get through that cause a revert.
Every day the QA team automatically runs tests on the ISO produced that day, if any. This was set up in 11.10. For 12.04, we will expand on this effort substantially. First, by growing the body of tests run. Secondly, by automatically reporting on the quality of the ISO each day. Finally, by responding to the results of the tests immediately, see the next section.
Daily Quality
We will strive to ensure that we have a new daily ISO each day. If the QA team finds an ISO to be "untestable" or failing critical tests that will hamper development velocity that day, we will respond by trying to fix the issues. For issues that cannot be foreseeably fixed within 3 hours, we will typically back out those changes. After the issue is addressed by being fixed or backed out, we *will spin another ISO*. We will collect metrics on what percentage of days we have a working and testable ISO.
Pre-archive Testing
Of course, catching problems in ISO testing and fixing them everyday is nice, but stopping the problems from reaching Ubuntu in the first place is even better. With that end in mind, Evan Dandrea ran a very interesting session about testing library and other changes before uploading them to the archive for the development release.
This will start out simple. The QA team will be able to install the latest ISO in their test environment, then pull an updated package from a PPA. A tool that I lovingly named "tool 2" will be created that will use rdepends to find packages that both depend on the newly upagraded package and also have tests worth running. Tool 2 will then run those tests and report the results. In this way, issues with libraries and other transitions can be fixed before they get into the development release and slow everyone down.
The next step, which I sincerely hope we get to during 12.04 development is to make tool 1. Tool 1 takes the output of tool 2, and judges if it should copy the newly updated package, or some set of packages, into the release archive. If we get tool 2 set up, then uploads to the development release would first go into the proposed archive for the development release, tested there, and only added to the release archive when found to be "ok" by the tests.
+1 Maintenance Team
Colin Watson is leading an experiment for 12.04 development. He will be leading a small staff of rotating engineers who are focused soley on the stability of the development release. We plan to learn from this effort, and see if we should repeat it, tweak it, or drop it for future versions. In any case, these efforts are meant to enhance, not replace, the generally diffused responsibilities for quality of the ISO and the archive. Colin led a good UDS session on the topic. The priorities defined there being:
- Deal with ISO smoke test issues, includes install images being buildable
- Upgrades through development releases work day to day, look at conflict checker
- All packages in main are installable
- All packages in main are buildable
- Component-mismatches / MIRs / etc.
- Finishing library/NBS transitions through archive (beyond main)
- All packages in the archive are buildable
All in all, these are a lot of structural changes to how we approach building Ubuntu and ensuring the quality of it. Here is a table to highlight some of the key changes.
Practice | 11.10 | 12.04 |
---|---|---|
Canonical upstream automated tests | prevelant in some projects, not others | all projects will have automated tests |
Canonical upstream automated builds | prevelant in some projets, not others | all projects will ahve automated tests |
Canonical upstream branch reviews | all projects | all projects |
Canonical upstreams reverting branches that "break" trunk | occurs in some projects, not others, not always | all projects will revert branches that break trunk |
testing of Canonical upstream code before uploading to development release | not common or systematic | all Canonical upstream projects will have a test plan that is executed before each upload |
reverting Canonical upstream code from the development release | development release waits for an upload with "fixes" | uploads that slow velocity for others are backed out |
Daily ISO testing | Limited test coverage, test failures not immediately responded to | more test coverage, fix issues and respin within the same day |
Daily ISO | Can go for days or longer wihtout a working daily | A broken daily ISO becomes the #1 priority for whoever broke it |
Pre-archive testing | "Call for testing", not totally systematic, no way to know what tests were run | Add ability to run tests for rdpends before release, potentially test in proposed for the development release |
Archive Maintenance | Responibility diffused throughout team | Responibility diffused throughout team, complimented by a small dedicated crew |
Do we have a standard way for packages to declare their tests? Or is it be a part of the package build process?
ReplyDeleteI'm trying to figure out how we'll know what tests to run when we search the rdepends for pre-archive testing.
@scottrichie http://dep.debian.net/deps/dep8/ is what we'll be using as a basis for the pre-archive testing.
ReplyDeleteSo nice and wonderful photo post .It`s very informative thanks for sharing
ReplyDeleteclipping path service
Yes. These are so beautiful. Thank you so much for sharing with us
ReplyDeleteclipping path service provider
Thank You So much for this Great article. check out our website, we're providing Background removal Service . You can use our Free trial to check our Working Quality.
ReplyDelete
ReplyDeleteThat was a great and comprehensive article…all the tips enumerated and explained will be helpful for those who are wise enough to tap from it. Any business nowadays without social media signals and presence may not make it to the outermost, and investment too is part of the key to success in business. Keep up the good work.
http://www.designercountry.com/
This is very good article thanks for shearing.Our website : https://imagecutoutartist.com/
ReplyDeleteGreat post your given information does help me a lot knowing that you have shared this information here freely.
ReplyDeleteBackground Remove
Nice post. Stone need to be more clean. E-commerce Image Editing Service
ReplyDeleteED is a common sexual disorder that a whole lot of men suffer with. This articles lists some simple ways to get rock solid erections without using prescription drugs. I find a very good website for the car transparent background, If you need any kinds of help you can contact this website.
ReplyDeleteWonderful Blog & Helpful
ReplyDeleteVisit here
this is epson printer error code 0xe5 and epson error code 0xe5 as well as epson printer error 0xe5
ReplyDelete
ReplyDeletethis is epson printer error code 00041 and epson error code 00041 as well as Epson Error Code 1073
ReplyDeleteGreat Thanks for sharing this information. I am so happy to read these articles
Cut Out Image
Nice to read your wonderful post, thanks
ReplyDeleteBest Photo Editing Studio
Your blogs are so unique. Keep sharing new stuff.
ReplyDeleteClipping Path Company
unique blogs are always informative.
ReplyDeleteImage Masking Service
This post just made me google a lot of things. So much information and so much things I didn't know about. Good post!
ReplyDeleteInstagram Followers Absolutely Free
The focus on discussing the process of building Ubuntu rather than just the end result is commendable. It reflects a shift towards prioritizing development velocity, maintaining code quality, and improving the overall user experience. The implementation of acceptance criteria for code from Canonical upstreams ensures that the development release remains stable and encourages timely bug fixes. The emphasis on automated testing, test plans, and ISO integration testing further strengthens the commitment to quality assurance. The introduction of pre-archive testing and the dedicated +1 Maintenance Team demonstrate a proactive approach to identifying and addressing issues before they impact the development release. These structural changes have the potential to bring about a significant improvement in Ubuntu's adoption curve and move it closer to becoming a mainstream free desktop.
ReplyDeleteBest Regards,
image masking service