On 06/09/2012 03:39 AM, Vincent Massol wrote: > > On Jun 9, 2012, at 6:28 AM, Sergiu Dumitriu wrote: > >> On 06/08/2012 05:07 AM, Caleb James DeLisle wrote: >>> >>> It seems that if we want to shorten a release cycle, we have 2 options: >>> >>> #1 No RC release >>> #2 No staging >>> >>> I think it would be a shame to scrap staging over this, especially since >>> my understanding is we want to move toward frequent releases with no >>> release candidates or milestones so staging would be a requirement. >>> >>> This is an interesting topic which can be discussed. >>> >>> Right now for 4.1 I think we need a coherent proposal rather than an adhoc >>> chop-and-slice of the agreed upon schedule and dates. >>> Finally, I'm concerned about changing our release process in the middle >>> of a release which is behind it's normal schedule. I'm not completely >>> opposed to a change but IMO if we want to change it we need to proceed with >>> extra caution. >> >> The purpose of the RC releases was as a kind of staging, without actually >> using real staging. So I'd say that for the next releases we should only >> have milestones, and staged final releases. >> >> However, for 4.1 we should keep the rc-1 release in the plan, since our >> staging process is new and not thoroughly tested yet. >> >> The way I simulated "staging releases" when I had the RM hat was to leave a >> window between uploading the artifacts in our maven repository and pushing >> them further, and in this window I did quick smoke tests to see that >> everything works (with the help of Sorin and the rest of the QA team at >> XWiki SAS). >> >> So, I propose this as the strategy for our next releases: >> - Each release goes to a staging repository first >> - Milestone releases spend a little time in staging, enough for a few quick >> smoke tests; depending on the time of day, this could last from an hour to >> at most a day >> - There are no RC releases, there are only RC staging repositories. >> Currently the staging repositories have random names, but the RM should >> rename each repository with the proper RC name: 4.2-rc-1, 4.2-rc-2 if the >> first build was busted, and so on. The version written inside the packages >> is the final one, like 4.2, without a rc-x suffix. While in staging, a RC >> release goes through more intensive tests, including smoke testing, the full >> MTR, and developers that contributed to the release should test their >> committed features. Maybe even a Jenkins job could be executed for that >> release, with all the automated tests. >> >> Timing? Since we don't know how many times we have to stage releases, I'd >> say that we can start building RCs one week before the planned final release >> date, and if bugs are found, a new RC is build the next day (to let issues >> accumulate), hoping that there will be a stable successful build before the >> final release date, without a 72h mandatory waiting period. > > I have one big problem with this strategy that I've already explained several > past emails. > > The current way of doing staging with RC is very powerful because it's a real > release and as such is advertised everywhere: on xwiki.org in download, in > blog post, on twitter, on wikipedia, freshmeat, etc. Which means we have a > lot of users who can download it and try it out. This will not happen with > staging. It won't be advertised significantly (it cannot since it's not a > real release) thus leading to a less good solution than what we have.
I've heard you mention this but I've not noticed any example of a user finding an issue in an RC and reporting it, causing it to be fixed for the final. I've only been around for 2 years though. Do you have such an example? > > Thus the only valid solution for me to reduce release cycles is to do 2 > things at the same time: > - work on the quality of our releases (i.e. increase our automated test suite > and test coverage) This is good no matter how we release. > - do short release cycle so that if a user finds a problem in say version > 4.45 then we release 4.46 the week after or 2 days after if it's critical > (this is basically what Jenkins is doing) > > Right now our cycle is 3 months for each release which means that if some dev > cannot make the date for ex he has to wait 3 months for his stuff to be > available to end users, which means devs are pushing stuff even if they are > half baked (missing tests for example). > > Thus, with the current situation, I'd very much prefer to not do staging (in > the sense of Nexus staging) and instead continue to use milestones and RCs. > Now we can still do staging as a quick check for the RM before pushing to the > main repo but it shouldn't last more than 1 day, as otherwise it adds up with > the RC time and thus leads to even longer release cycles. This would make sense if "final" was a clone of rc-X. What we do now is build an RC, fix whatever issues we have with it then build "final" and release it without manual testing. I do not like releasing final without testing, especially since we use the name rc-1, leading users to believe that we have a candidate is tested then selected for release. > > <brainstorming> > Moving forward: > > what we could do would be to reduce the whole cycle from 3 months to 3 weeks: > * 1 week milestone 1 > * 1 week milestone 2 > * 1 week final (we need less time for stabilization over what we have now > since there's less work done in m1/m2 than when they last 4 weeks each) I like the general thinking but from 12 weeks to 3 weeks is a huge step, I think we should at least try 6 week cycle and then do post-release brainstorming to see what issues come up with shortened release times. > > If a developer doesn't have time to push his stuff in m1 or m2 then he'll > have to wait only 1 week. > > Of course we should have Roadmap that last several releases so that we don't > do roadmap preparation all the time and so that we can put large features in > the roadmap that span more than 1 release. Actually the roadmap would list > priority stuff we want to work on but will not say in what exact version > we'll have it. This is good, currently we encourage developers to delay the release. > > The advantage of this is we'll get even more testing/feedback from community > since we'll have real releases and users will get > features/improvements/bugfixes pushed to them faster. The challenge is to > keep good quality but I think we can do that and in any case there's only one > way to know if it works: to try it ;) If we do manual testing on final before publicizing it then we're already ahead of the current process. Thanks, Caleb > > I think that without Sergiu's automated script for releases doing a release > was too costly to do this. This means doing 3 releases in 3 weeks (ie. one > per week). Is the automated script good enough to allow for this. > > Also we're going to have automated upgrades very soon now so it seems like > upgrading versions is going to be less an issue for users (note that they > don't have to upgrade at each version and they can skip releases). > > WDYT? Do you think the pace is sustainable for developers and that we won't > spend too much time in "bureaucracies"? > > IMO this would help us automate our release process even further so that it > becomes a nobrainer and will help us improve ourselves wrt quality/automated > tests even further. > > There's one problem maybe with APIs. They need time to mature but with the > young-api strategy that could be ok. > <brainstorming> > > Thanks > -Vincent > >>> Thanks, >>> >>> Caleb >>> >>> >>> On 06/08/2012 03:15 AM, Vincent Massol wrote: >>>> Hi guys, >>>> >>>> I'd like to bring an issue with this VOTE below. >>>> >>>> When I initially read it I didn't realize that this was about doing >>>> double-staging: >>>> * once with nexus staging >>>> * another one with the RC release >>>> >>>> So it increases the time we spend for doing releases instead of reducing >>>> it which is the direction we would like to go. >>>> >>>> The increase is bad because we're already spending too much time just on >>>> the release itself while we should reduce it to a minimum so that we can >>>> focus on developing new features/improvements/fixing bugs. >>>> >>>> So IMO if we really want to go with staging we need to remove the RC phase >>>> and go from M2 to Final directly. However if we were to do this we would >>>> need to find a way to advertise it as a release on all channels because >>>> this is the time when we need to most testers. Right now it seems to me >>>> that an official RC is much more powerful than staging >>>> >>>> Thus I'd like to retract my vote on this (if it's not possible I'll send a >>>> new vote to not do double staging). >>>> >>>> Thanks >>>> -Vincent >>>> >>>> PS: Sorry for not realizing this earlier... >>>> >>>> On May 22, 2012, at 10:55 AM, Caleb James DeLisle wrote: >>>> >>>>> Hi, >>>>> >>>>> I'd like to add staging to our official release process. >>>>> For milestone releases, I propose the staging cycle be for "0 time" (this >>>>> may be revisited later). >>>>> For RC or finals, we place the release in staging and immediately call a >>>>> VOTE to publish the release, this gives our testing team (everybody!) 72 >>>>> hours to raise a potential issue. >>>>> >>>>> Why: >>>>> >>>>> #1. After some chat on IRC I decided that it is advantageous to move >>>>> toward a faster release cycle and begin moving away from milestone >>>>> releases in favor of staging. This will set the stage for the release >>>>> method we will need. >>>>> >>>>> #2. Staging is easy, I've modified the release script to include staging >>>>> and with the script, it is a simple matter of about 5 clicks on nexus to >>>>> "login", "close repository", "release repository". >>>>> >>>>> #3. Staging is safe, the RM need not worry about fat fingers breaking the >>>>> release, all it costs is time. >>>>> >>>>> #4. The release process should be as close to the same as possible for >>>>> milestone and RC/final releases. This simplifies scripting of the >>>>> process, decreases the amount the RM must remember and makes every >>>>> milestone release a rehearsal. >>>>> >>>>> #5. Everybody else is doing it (is that even a reason?!) >>>>> >>>>> >>>>> Mandatory? >>>>> I would rather impress the RM with how easy and helpful staging can be >>>>> than bind him with rules. >>>>> If I had followed the existing process to the letter, I would not have >>>>> had any experience with staging to begin with. >>>>> In the interest of continuous improvement I would like to make this a >>>>> strong recommendation, not a strict rule. >>>>> >>>>> >>>>> Here's my +1 >>>>> >>>>> Caleb >> >> >> -- >> Sergiu Dumitriu >> http://purl.org/net/sergiu/ >> >> >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

