Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
04.10.2016, 14:04, "Edward Welbourne": > Marc Mutz said: >> I just came to realise another reason against cherry-picking: >> >> Qt 5.6 is C++98-only while 5.7+ is C++11. That means patches that will >> be developed against 5.7+ will very likely have C++11 constructs in >> them that won't work in Qt 5.6. > > Conversely, code developed in 5.6 shall avoid C++11 constructs; when we > merge to 5.7, we need to review to find C++11 usage we can apply, which > tends to get missed after merges. This can be easily fixed by using tools like clang-tidy (modernize* checks) > >> That means that in order to backport, the code needs to be >> de-C++11-ified, which in turn means the usual reasoning for >> cherry-picking as a stability feature (it's been integrated already >> once successfully) falls flat on its face, because the code submitted >> against 5.7+ must needs be changed (forgive my Victorian) in the >> process of cherry-picking to 5.6, invalidating any test coverage it >> may have had as part of the younger branch. > > Back-porting doesn't *entirely* invalidate the stability evidence gained > in a later branch, any more than conflict resolutions in forward-merging > invalidate stability evidence gained in an older branch. Of course, you > need to test after back-porting, just as you do after forward-merging, > but the existing test coverage is still valuable. > >> To avoid the guaranteed merge conflicts from >> cherry-picked-and-changed, commits, > > Not sure what you're referring to here. Just to be clear, once we > switch to cherry-picking back to 5.6, we shall stop merging forward from > 5.6, so there shall be no merge conflicts from those changes being > merged up into 5.7 again. That would be dumb. > >> you'd need to ban any non-cherry-pick changes to 5.6, which >> effectively means that no developer does any work on 5.6 anymore. > > That did seem to be the intent of those who proposed this, yes. Of > course, there shall be *some* work on 5.6, but it shall be limited to > back-porting already-tested fixes and investigating bugs that are only > evident in 5.6. That would be the point of LTS, IIUC. > >> Everyone will rely on the CI, and the CI only. > > Again, not sure what you mean here; and those doing back-ports shall of > course be doing local testing before they push, so not relying only on > the CI - where, in contrast, after a merge we *are* relying on the CI > and only the CI, except for the (relatively few) conflicts in each > merge, which do get review. > >> OTOH, with very few exceptions such a Q_FOREACH, code that >> successfully integrated into 5.6 will successfully integrate in 5.7+. > > ... but will, as noted above, contain pre-C++11 code in need of > C++1-ifying, after we've done sweeps through the code-base catching such > code and modernising most of what's in 5.7 and beyond; so we would need > to pay attention to each change flowing up from 5.6, to see what needs > such attention. The advantage of cherry-picking is precisely that each > one shall need to be done attentively and reviewed, while merging only > gets review of its conflicts and happens quietly in the background, with > few paying attention to it. > >> In light of this I continue to vote for keeping the "no-cherry-picks >> allowed" policy that has served us well over the Qt 5 years. > > I remain unconvinced, see above, > > Eddy. > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development -- Regards, Konstantin ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
Marc Mutz said: > I just came to realise another reason against cherry-picking: > > Qt 5.6 is C++98-only while 5.7+ is C++11. That means patches that will > be developed against 5.7+ will very likely have C++11 constructs in > them that won't work in Qt 5.6. Conversely, code developed in 5.6 shall avoid C++11 constructs; when we merge to 5.7, we need to review to find C++11 usage we can apply, which tends to get missed after merges. > That means that in order to backport, the code needs to be > de-C++11-ified, which in turn means the usual reasoning for > cherry-picking as a stability feature (it's been integrated already > once successfully) falls flat on its face, because the code submitted > against 5.7+ must needs be changed (forgive my Victorian) in the > process of cherry-picking to 5.6, invalidating any test coverage it > may have had as part of the younger branch. Back-porting doesn't *entirely* invalidate the stability evidence gained in a later branch, any more than conflict resolutions in forward-merging invalidate stability evidence gained in an older branch. Of course, you need to test after back-porting, just as you do after forward-merging, but the existing test coverage is still valuable. > To avoid the guaranteed merge conflicts from > cherry-picked-and-changed, commits, Not sure what you're referring to here. Just to be clear, once we switch to cherry-picking back to 5.6, we shall stop merging forward from 5.6, so there shall be no merge conflicts from those changes being merged up into 5.7 again. That would be dumb. > you'd need to ban any non-cherry-pick changes to 5.6, which > effectively means that no developer does any work on 5.6 anymore. That did seem to be the intent of those who proposed this, yes. Of course, there shall be *some* work on 5.6, but it shall be limited to back-porting already-tested fixes and investigating bugs that are only evident in 5.6. That would be the point of LTS, IIUC. > Everyone will rely on the CI, and the CI only. Again, not sure what you mean here; and those doing back-ports shall of course be doing local testing before they push, so not relying only on the CI - where, in contrast, after a merge we *are* relying on the CI and only the CI, except for the (relatively few) conflicts in each merge, which do get review. > OTOH, with very few exceptions such a Q_FOREACH, code that > successfully integrated into 5.6 will successfully integrate in 5.7+. ... but will, as noted above, contain pre-C++11 code in need of C++1-ifying, after we've done sweeps through the code-base catching such code and modernising most of what's in 5.7 and beyond; so we would need to pay attention to each change flowing up from 5.6, to see what needs such attention. The advantage of cherry-picking is precisely that each one shall need to be done attentively and reviewed, while merging only gets review of its conflicts and happens quietly in the background, with few paying attention to it. > In light of this I continue to vote for keeping the "no-cherry-picks > allowed" policy that has served us well over the Qt 5 years. I remain unconvinced, see above, Eddy. ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Thursday 08 September 2016 09:12:32 Marc Mutz wrote: > On Wednesday 07 September 2016 08:37:01 Friedemann Kleint wrote: > > ** After 5.7 is closed and sanity bot is upgraded (to handle > > cherry-picking), go into cherrypicking mode for 5.6. Developer is > > responsible for doing the cherrypicking > > ** Cherry-picking technicalities need to be figured out: Let sanity bot > > verify source ("cherrypicked from") the SHA1 > > I'm sorry, but this is nonsense. The source control system works by > committing on the older branches and merging up. Cherry-picking from > younger branches works against the source control system. We put up with > cherry-picking for 4.8, because there we dealt with separate repositories, > but that doesn't make is a good model. I just came to realise another reason against cherry-picking: Qt 5.6 is C++98-only while 5.7+ is C++11. That means patches that will be developed against 5.7+ will very likely have C++11 constructs in them that won't work in Qt 5.6. That means that in order to backport, the code needs to be de-C++11-ified, which in turn means the usual reasoning for cherry-picking as a stability feature (it's been integrated already once successfully) falls flat on its face, because the code submitted against 5.7+ must needs be changed (forgive my Victorian) in the process of cherry-picking to 5.6, invalidating any test coverage it may have had as part of the younger branch. To avoid the guaranteed merge conflicts from cherry-picked-and-changed, commits, you'd need to ban any non-cherry-pick changes to 5.6, which effectively means that no developer does any work on 5.6 anymore. Everyone will rely on the CI, and the CI only. OTOH, with very few exceptions such a Q_FOREACH, code that successfully integrated into 5.6 will successfully integrate in 5.7+. In light of this I continue to vote for keeping the "no-cherry-picks allowed" policy that has served us well over the Qt 5 years. If merging is a bottleneck, I think we as contributors just need to unlearn that 5.6 changes magically show up in dev a few days later. Before Liang became the designated merge-monkey (that's not derogative, that's the technical term! :), we had to wait up to a month for a change to percolate up, and that was with fewer active branches in-flight. We survived, and Qt wasn't 1/6th merges (uneducated guesstimate based on equating Liang with merges and applying that to http://www.macieira.org/~thiago/qt-stats/current/qt- all.author.absolute.png (2016W38)). Thanks, Marc -- Marc Mutz| Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company Tel: +49-30-521325470 KDAB - Qt, C++ and OpenGL Experts ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Thu, Sep 22, 2016 at 09:41:29AM +0200, Marc Mutz wrote: > On Thursday 22 September 2016 08:55:13 Liang Qi wrote: > > Give the merge permission to everyone is obiviously not a solution. > > Not everyone, but approvers, maybe? Merges need to be reviewed like any other > commit, so why are they special, anyway? > because a botched merge push may result in hundreds of bogus reviews (when somebody does pull --rebase before pushing the merge; no, that's not a hypothetical situation). not having the right to push merges trains the users to not even attempt it. another reason is that some people tend to over-merge, needlessly cluttering the history. having to ask another person (who will hopefully critically examine the request) is a natural check for this. ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Thursday 22 September 2016 08:55:13 Liang Qi wrote: >> Give the merge permission to everyone is obiviously not a solution. Marc Mutz replied: > Not everyone, but approvers, maybe? Merges need to be reviewed like > any other commit, so why are they special, anyway? Do we at least give all maintainers merge powers in their modules ? Eddy. ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Thursday 22 September 2016 08:55:13 Liang Qi wrote: > Give the merge permission to everyone is obiviously not a solution. Not everyone, but approvers, maybe? Merges need to be reviewed like any other commit, so why are they special, anyway? Thanks, Marc -- Marc Mutz| Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company Tel: +49-30-521325470 KDAB - Qt, C++ and OpenGL Experts ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On 12 September 2016 at 11:20, Edward Welbournewrote: > Marc Mutz said: > > The obvious question is, then, why is only "the one person" doing merges? > > Allow more people to upload merges, and you will get the spreading you > desire. > > Several people can upload merges. > One person looks after integration in qt5 and all its sub-modules. > We can spread the load (indeed, I carried it for a few weeks while > Liang was on holiday), and I believe module owners can do their own > merges (which saves the integration team work), but the integration team > takes responsibility for ensuring merges are happening. > So it ends up being that Liang, as integrator, does most merges. > We have some/many modules are in not active mode, so the merges for them are normally based on the release schedules. That's one of the reason to have a merger. A heavy load for mergers and integrators is that the new CI, COIN, doesn't have reverse dependency check like old CI. Then if sth changed in qtbase or qtdeclarative, the merge and integration will trigger the issue. Then very often it's a bit difficult for us to analysis the root cause and find right persons to fix it. Perhaps we should set up a rule for deprecated sth, for example, 1. notify merger/integrator/others, or just add them into a list in a wiki/web page 2. the dev of the deprecated change should do a "git grep" in all qt project, and at least provide a fix for one of them, better to do all For merges, the maintainers of modules should take care. At least, qtquickcontrols2/qtwebengine are very well, it's also because developers there are working on different features in different branches, they care the merge themselves. For some other modules, like qt3d/qtmultimedia/qtwayland, the help from the maintainers and developers are also very good. But for qtbase, it's a totally different story, too many areas, so normally we(or I) can't say there is an active maintainer for the whole of qtbase. A regular merge for qtbase is needed, for example, weekly. And if we can't get response from devs very soon, who can help? Give the merge permission to everyone is obiviously not a solution. But it will help a lot if we have an active merger/integrator group, at least for review. Regards, Liang ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
Marc Mutz said: > The obvious question is, then, why is only "the one person" doing merges? > Allow more people to upload merges, and you will get the spreading you desire. Several people can upload merges. One person looks after integration in qt5 and all its sub-modules. We can spread the load (indeed, I carried it for a few weeks while Liang was on holiday), and I believe module owners can do their own merges (which saves the integration team work), but the integration team takes responsibility for ensuring merges are happening. So it ends up being that Liang, as integrator, does most merges. > In fact, one could also be led to think that the perceived security of "it has > passed CI in dev, so it's safe for LTS" will cause more and less appropriate > commits to be backported to LTS. I shall amend sanity-bot to object to cherry-picks to LTS unless they come from gerrit/stable. So "it has passed CI in dev" won't get it into LTS. It has to have passed review and CI in stable to be a candidate for cherry-picking to LTS. Then the second review can haggle about whether it belongs in LTS. That can take a long time without delaying the change's merge-journey up to dev. Eddy. ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On sábado, 10 de setembro de 2016 09:21:58 PDT Marc Mutz wrote: > (and the less obvious one: why are changes to the config system done in 5.8, > and not LTS? They don't touch code, after all). You mean the complete rewrite of configure and configure.exe, with a huge chunk of new qmake code that was started several months after the v5.6.0 release? The one we're still finding issues with? The one that can potentially disable a lot of previously-supported build configurations because we didn't know people used that? -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
10.09.2016, 15:32, "Marc Mutz": > Hi Lars, > > On Friday 09 September 2016 15:21:04 Lars Knoll wrote: >> A cherry-picking approach for the LTS branch can make sense, as it >> distributes the burden of bringing the bug fix to both the stable and LTS >> branch over all developers and doesn’t put it on the one person having to >> do the merges. > > The obvious question is, then, why is only "the one person" doing merges? > Allow more people to upload merges, and you will get the spreading you desire. > > (and the less obvious one: why are changes to the config system done in 5.8, > and not LTS? They don't touch code, after all). > >> It will also help limiting changes in the LTS branch to the >> things that should really go there. > > Which is in itself a controversial topic (see other thread). To stay on-topic: > I don't see how cherry-picking would help here, as both cherry-picks and > original commits to LTS will be reviewed, possibly by the same people. Resolution of merge conflicts also requires review, and, in addition, may lack necessary context in place. > > In fact, one could also be led to think that the perceived security of "it has > passed CI in dev, so it's safe for LTS" will cause more and less appropriate > commits to be backported to LTS. > > Or are you going to impose release branch rules (restricted staging) on 5.6, > eventually? > > Thanks, > Marc > > -- > Marc Mutz | Senior Software Engineer > KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company > Tel: +49-30-521325470 > KDAB - Qt, C++ and OpenGL Experts > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development -- Regards, Konstantin ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
Hi Lars, On Friday 09 September 2016 15:21:04 Lars Knoll wrote: > A cherry-picking approach for the LTS branch can make sense, as it > distributes the burden of bringing the bug fix to both the stable and LTS > branch over all developers and doesn’t put it on the one person having to > do the merges. The obvious question is, then, why is only "the one person" doing merges? Allow more people to upload merges, and you will get the spreading you desire. (and the less obvious one: why are changes to the config system done in 5.8, and not LTS? They don't touch code, after all). > It will also help limiting changes in the LTS branch to the > things that should really go there. Which is in itself a controversial topic (see other thread). To stay on-topic: I don't see how cherry-picking would help here, as both cherry-picks and original commits to LTS will be reviewed, possibly by the same people. In fact, one could also be led to think that the perceived security of "it has passed CI in dev, so it's safe for LTS" will cause more and less appropriate commits to be backported to LTS. Or are you going to impose release branch rules (restricted staging) on 5.6, eventually? Thanks, Marc -- Marc Mutz| Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company Tel: +49-30-521325470 KDAB - Qt, C++ and OpenGL Experts ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On 08/09/16 17:13, "Development on behalf of Thiago Macieira"wrote: >On quinta-feira, 8 de setembro de 2016 07:37:28 PDT Liang Qi wrote: >> Is it better to have 5.7.2 around 5.8.0 final release and close 5.7 after >> that? 5.7.1 is very soon in a few weeks. There will be a few months gap >> between 5.7.1 and 5.8.0/5.8.1. The first release of new branch, like 5.8.0, >> sometimes it's not tested enough in user(or application developers) side, >> so some regressions or a bit critical issues will be found between 5.8.0 >> and 5.8.1. It's good for users to have a more stable release of 5.7.2. >> >> If we stick to do release like this kind of order, 5.6.2->5.7.1->5.8.0 >> Beta, it's not very difficult to have a 5.6.3->5.7.2->5.8.0 or similar. >> >> And I would like to see it becomes a convention for future releases. > >It wouldn't be bad, if the release team and merging team can make it work. Our >concern was that you and Eddy are spending far too much time on doing merges. It’s basically a question about how we can deal most efficiently with the branches we have. And both merging and cherry-picking are valid ways to work with those branches. If the branches are closely related, merging is obviously the better choice, as conflicts will be rare. But once branches start diverging more, merging will at some point start to create more overhead (and risk) than cherry-picking back into the older branch. There are several reasons, why I think we at some point should stop merging from 5.6 to newer branches. We are doing significant changes all through our code base currently. C++11 and configuration system related changes are just one example. This will lead to more and more merge conflicts as time goes by. I’ve already reviewed a few merges where it took significant effort to verify that the merge was correct. Merges are done by one person, and that person often doesn’t know all the details of what the patch causing a conflict is trying to achieve. This actually increases our risk of introducing regressions into our newer branches. Having a lot of branches also increases the complexity for all of us into figuring out where a change should go. In many cases it also does significantly increase turn-around time if a patch is needed in a newer branch. Having a long merge patch from 5.6 to dev can cause delays for all of us. If those delays get too long, this is costly for all of us and will slow us down when developing new features. A cherry-picking approach for the LTS branch can make sense, as it distributes the burden of bringing the bug fix to both the stable and LTS branch over all developers and doesn’t put it on the one person having to do the merges. It will also help limiting changes in the LTS branch to the things that should really go there. Cheers, Lars ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On quinta-feira, 8 de setembro de 2016 07:37:28 PDT Liang Qi wrote: > Is it better to have 5.7.2 around 5.8.0 final release and close 5.7 after > that? 5.7.1 is very soon in a few weeks. There will be a few months gap > between 5.7.1 and 5.8.0/5.8.1. The first release of new branch, like 5.8.0, > sometimes it's not tested enough in user(or application developers) side, > so some regressions or a bit critical issues will be found between 5.8.0 > and 5.8.1. It's good for users to have a more stable release of 5.7.2. > > If we stick to do release like this kind of order, 5.6.2->5.7.1->5.8.0 > Beta, it's not very difficult to have a 5.6.3->5.7.2->5.8.0 or similar. > > And I would like to see it becomes a convention for future releases. It wouldn't be bad, if the release team and merging team can make it work. Our concern was that you and Eddy are spending far too much time on doing merges. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Thu, Sep 08, 2016 at 12:25:02PM +0200, Liang Qi wrote: > This is mainly because we did heavy refactoring in upstream branches, > "upstream" makes no sense whatsoever. merge-wise, it's exactly the wrong way around. "younger" as used elsewhere in this thread is better. > for example, rewriting configure system, then any small fix in 5.6 > will trigger a huge conflicts. > yes, it's annoying for the one(s) doing the work, but the fact that it *has* to be done ensures that it *gets* done. doing cherry-picking is a virtual guarantee that the LTS becomes a scam. you should also see things in perspective: how many files merge without you even noticing it, because the merges are clean? > Other cases are sth like directories reorganization, class renaming > and etc, it's very annoying when developers have changes in similar > places in 5.6 and upper branches. > which is why i'm actually in favor of doing low-risk cleanups and refactorings on stable branches, or at least shortly before branching off. > Best Regards, > Liang > > > > > -- > > Alex > > ___ > > Development mailing list > > Development@qt-project.org > > http://lists.qt-project.org/mailman/listinfo/development > > > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On 8 September 2016 at 09:36, Alexander Blaschewrote: > > From: Marc Mutz > > >On Wednesday 07 September 2016 08:37:01 Friedemann Kleint wrote: > >> ** After 5.7 is closed and sanity bot is upgraded (to handle > >> cherry-picking), go into cherrypicking mode for 5.6. Developer is > >> responsible for doing the cherrypicking > >> ** Cherry-picking technicalities need to be figured out: Let sanity bot > >> verify source ("cherrypicked from") the SHA1 > > >I'm sorry, but this is nonsense. > > I agree with Marc. Why cant we do 5.6->5.8 merges once the 5.7 branch is > closed? Since the 5.6 branch will get fewer and fewer patches as the > strictness of its commits increases I see no reason why 5.6->5.8 could pose > a problem. > > Maybe you sb can elaborate why we have to go to cherry-picking? The notes > don't say and I wasn't in this QtCon meeting. > This is mainly because we did heavy refactoring in upstream branches, for example, rewriting configure system, then any small fix in 5.6 will trigger a huge conflicts. https://codereview.qt-project.org/#/c/163938/ Other cases are sth like directories reorganization, class renaming and etc, it's very annoying when developers have changes in similar places in 5.6 and upper branches. Best Regards, Liang > -- > Alex > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development > ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
From: Marc Mutz>On Wednesday 07 September 2016 08:37:01 Friedemann Kleint wrote: >> ** After 5.7 is closed and sanity bot is upgraded (to handle >> cherry-picking), go into cherrypicking mode for 5.6. Developer is >> responsible for doing the cherrypicking >> ** Cherry-picking technicalities need to be figured out: Let sanity bot >> verify source ("cherrypicked from") the SHA1 >I'm sorry, but this is nonsense. I agree with Marc. Why cant we do 5.6->5.8 merges once the 5.7 branch is closed? Since the 5.6 branch will get fewer and fewer patches as the strictness of its commits increases I see no reason why 5.6->5.8 could pose a problem. Maybe you sb can elaborate why we have to go to cherry-picking? The notes don't say and I wasn't in this QtCon meeting. -- Alex ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On Wednesday 07 September 2016 08:37:01 Friedemann Kleint wrote: > ** After 5.7 is closed and sanity bot is upgraded (to handle > cherry-picking), go into cherrypicking mode for 5.6. Developer is > responsible for doing the cherrypicking > ** Cherry-picking technicalities need to be figured out: Let sanity bot > verify source ("cherrypicked from") the SHA1 I'm sorry, but this is nonsense. The source control system works by committing on the older branches and merging up. Cherry-picking from younger branches works against the source control system. We put up with cherry-picking for 4.8, because there we dealt with separate repositories, but that doesn't make is a good model. There's another aspect to this: I develop part of my patches on gt5.git/5.6 and the rest on qtbase.git/dev. I guess for most people with non-unlimited processing power it will be similar. For sure this is the only way if your development focus is on qtbase (and you can't just submit your changes to COIN manually). If I submit from the qt5.git/5.6 built, the changes have gone through testing in the stable branch. If I submit from there to younger branches, test coverage is not as good, but the point is that the stable branch receives the changes tested locally in-situ. If I change this to qt5.git/5.8 and cherry- pick changes back to 5.6, all local testing will have been done in-situ for 5.8, and when submitting to 5.6, no in-situ testing has happened locally. IOW: cherry-picking causes *more* risk to the stable branch than submitting there and merging up. I am not convinced that the perceived security of having a patch integrated into a younger branch and then submitting it to the older branch outweights the loss of test coverage. If the merging strain is too much, only merge 5.6 up once a fortnight/month. Currently, it feels like there's 5.6 -> 5.7 5.7 -> 5.8 5.8 -> dev 5.6 -> 5.7 with maximum speed. That's nice for developers who are splitting changes into a bugfix part for 5.6 and a feature part for 5.8/dev, but it hasn't been like that in the past and we survived, too. And the git history looked cleaner, too :) Thanks, Marc -- Marc Mutz| Senior Software Engineer KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company Tel: +49-30-521325470 KDAB - Qt, C++ and OpenGL Experts ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
Re: [Development] Notes on "Managing Qt's branches" session @ QCS 2016
On 7 September 2016 at 08:37, Friedemann Kleintwrote: > Hi, > > the notes are at: https://wiki.qt.io/QtCS2016_Managing_Qt_Branches > > * Number of existing branches (5.6LTS, 5.7.,5.8 dev) causes a number of > problems > > ** Strain on COIN which also has release branches > ** Merging becomes increasingly difficult > ** Hard to manage for individual developers > > * Branches > > ** Close 5.7 after 5.7.1. We then have LTS, stable, dev. > Is it better to have 5.7.2 around 5.8.0 final release and close 5.7 after that? 5.7.1 is very soon in a few weeks. There will be a few months gap between 5.7.1 and 5.8.0/5.8.1. The first release of new branch, like 5.8.0, sometimes it's not tested enough in user(or application developers) side, so some regressions or a bit critical issues will be found between 5.8.0 and 5.8.1. It's good for users to have a more stable release of 5.7.2. If we stick to do release like this kind of order, 5.6.2->5.7.1->5.8.0 Beta, it's not very difficult to have a 5.6.3->5.7.2->5.8.0 or similar. And I would like to see it becomes a convention for future releases. Best Regards, Liang > ** After 5.7 is closed and sanity bot is upgraded (to handle > cherry-picking), go into cherrypicking mode for 5.6. Developer is > responsible for doing the cherrypicking > ** Cherry-picking technicalities need to be figured out: Let sanity bot > verify source ("cherrypicked from") the SHA1 > ** In the future, exact time for closing stable branches will be discussed > for each one individually > > * Submit Policy > > ** Target which branch? > > ** Long Term Support (5.6) Branch > *** Initially equal to stable, increasingly strict over time: Fix only > severe issues, avoid regressions. > > *** Bugs: For example, P2 for the first year, P1 for year 2, rest > Security. Try to further objectify that: Jedrzei + Friedemann > *** Tests: Fix/stabilize tests itself, add tests > *** No performance improvements unless really significant > (relevant/reduces O(n)) > *** Upgrading 3rd party (including WebEngine) > *** Support new OS versions unless introducing new platforms, no rewrite > of QPA > *** No cleanups, positively: -> dev > *** To aid customers with issues, patches for issues in LTS to be locally > applied can be provided, but the fixes will be pushed to higher versions of > Qt. > > > Regards, > Friedemann > > -- > Friedemann Kleint > The Qt Company GmbH > > ___ > Development mailing list > Development@qt-project.org > http://lists.qt-project.org/mailman/listinfo/development > ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development
[Development] Notes on "Managing Qt's branches" session @ QCS 2016
Hi, the notes are at: https://wiki.qt.io/QtCS2016_Managing_Qt_Branches * Number of existing branches (5.6LTS, 5.7.,5.8 dev) causes a number of problems ** Strain on COIN which also has release branches ** Merging becomes increasingly difficult ** Hard to manage for individual developers * Branches ** Close 5.7 after 5.7.1. We then have LTS, stable, dev. ** After 5.7 is closed and sanity bot is upgraded (to handle cherry-picking), go into cherrypicking mode for 5.6. Developer is responsible for doing the cherrypicking ** Cherry-picking technicalities need to be figured out: Let sanity bot verify source ("cherrypicked from") the SHA1 ** In the future, exact time for closing stable branches will be discussed for each one individually * Submit Policy ** Target which branch? ** Long Term Support (5.6) Branch *** Initially equal to stable, increasingly strict over time: Fix only severe issues, avoid regressions. *** Bugs: For example, P2 for the first year, P1 for year 2, rest Security. Try to further objectify that: Jedrzei + Friedemann *** Tests: Fix/stabilize tests itself, add tests *** No performance improvements unless really significant (relevant/reduces O(n)) *** Upgrading 3rd party (including WebEngine) *** Support new OS versions unless introducing new platforms, no rewrite of QPA *** No cleanups, positively: -> dev *** To aid customers with issues, patches for issues in LTS to be locally applied can be provided, but the fixes will be pushed to higher versions of Qt. Regards, Friedemann -- Friedemann Kleint The Qt Company GmbH ___ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development