Re: [Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Christian Ehrlicher

Am 26.01.2019 um 08:22 schrieb Olivier Goffart:

On 25.01.19 21:11, Christian Ehrlicher wrote:

Hello,

The two implicit conversions from QByteArray to const char*/void* 
(QByteArray::operator const char *() and QByteArray::operator const 
void*()) were marked as obsolete with Qt5.0 but never get decorated 
as such. This means their usage even inside QtBase is huge (I would 
say at least 70-80 locations).
Therefore my question before I'm pushing a patch to add 
QT_DEPRECATED_X to them - is the deprecation still valid?


I count 4331 uses

https://code.woboq.org/data/symbol.html?root=../qt5/=_ZNK10QByteArraycvPKcEv 



That's a bit more than 70-80

I talked about QtBase, not Qt5 :)
But this even makes the un-deprecation more useful.

Christian
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Olivier Goffart

On 25.01.19 21:11, Christian Ehrlicher wrote:

Hello,

The two implicit conversions from QByteArray to const char*/void* 
(QByteArray::operator const char *() and QByteArray::operator const void*()) 
were marked as obsolete with Qt5.0 but never get decorated as such. This means 
their usage even inside QtBase is huge (I would say at least 70-80 locations).
Therefore my question before I'm pushing a patch to add QT_DEPRECATED_X to them 
- is the deprecation still valid?


I count 4331 uses

https://code.woboq.org/data/symbol.html?root=../qt5/=_ZNK10QByteArraycvPKcEv

That's a bit more than 70-80

Given somebody would have to fix all of these before marking the function as 
depracated, that sounds like a lot of work!


the const void* operator has only 4 uses and should probably be deprecated.

https://code.woboq.org/data/symbol.html?root=../qt5/=_ZNK10QByteArraycvPKvEv


--
Olivier

Woboq - Qt services and support - https://woboq.com - https://code.woboq.org
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt modules, API changes and Qt 6

2019-01-25 Thread Olivier Goffart

On 25.01.19 14:12, Frederik Gladhorn wrote:

Hi all,

I'd like to start another discussion around our development workflow.
We arrived at our current model of Qt modules (in the git repository sense)
and using qt5.git as a container for all of them through a series of steps and
changes. Mix in the evolution of the testing environment over time and we have
something that has grown in interesting ways.

I will try to describe the problem in this mail. I also have discussed with a
bunch of people (inside The Qt Company) about potential solutions. After
brainstorming and some back and forth, we had five suggestions on a whiteboard
and picked our favorite. In a separate mail I'll try to describe these and
what we concluded with as our favorite. All of this is up for discussion, so
I'm hoping for someone to come up with even better ideas.


In my opinion, I think it would be much easier to merge a bunch of repository 
together. Maybe modularisation went to far.
QtQuick is a very important part of Qt, and therefore it would make sense to 
merge qtdeclarative into qtbase.  Also small repository could go back in qtbase.
Of course, I wouldn't want to merge big repository such as qtwebengine into 
qtbase. IMHO there are these factor that should come into play:

 - How much is that module important for Qt?
 - How big is that module?
 - How much of private API is that module using (and is it possible to use 
less of private API?)

 - ...


I think the "monorepo" is clearly a good approach. And git is evolving with 
shadow clones and partial checkout. LLVM/Clang recently choose the monorepo 
approach as it moves to git.



Of one problem is that this will make CI integration slower because each CI run 
now have to test both qtbase and qtdeclarative tests.
We have to say how much this is a problem compared the the simplicity of 
development.

I'd claim this in some respect, it is actually an advantage, for changes in 
qtcore.
Maybe CI bot could have a simple list of directory that white, or blacklist 
tests to run depending on the touched directories.


--
Olivier

Woboq - Qt services and support - https://woboq.com - https://code.woboq.org
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 13:39:49 PST Konstantin Tokarev wrote:
> > All living languages are supposed to be stored in the BMP, which means no
> > UTF-16 surrogate pairs to encode them.
> 
> AFAIK all emojis are encoded with surrogate pairs

Emojis are not part of a living language. They're drawings. But yes, they're 
outside the BMP.

In any case, they're often represented by more than one codepoint anyway, so 
whether we used N*2 UTF-16 code units to represent them or N UTF-32 code 
units, it makes no difference. Your code needs to know how to deal with them, 
where to properly break, how to combine them, how to calculate the width, etc.

Also note how they'd be represented by N*4 bytes in UTF-8, which means all 
three representations take exactly the same amount of memory.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 13:36:04 PST Christian Ehrlicher wrote:
> Here the commit which deprecated the functions:
> https://codereview.qt-project.org/#/c/17343/
> I found one place inside QtBase which hit this problem:
> https://codereview.qt-project.org/#/c/251028/

I'm not questioning the usefulness of the macro to disable the operator.

I am questioning deprecating the operators.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Konstantin Tokarev


25.01.2019, 23:33, "Thiago Macieira" :
> On Friday, 25 January 2019 04:54:22 PST Edward Welbourne wrote:
>>  we
>>  fail to properly support cultures whose scripts are relegated to the
>>  outer planes of Unicode - as, for example, the Chakma language's number
>>  system
>
> All living languages are supposed to be stored in the BMP, which means no
> UTF-16 surrogate pairs to encode them.

AFAIK all emojis are encoded with surrogate pairs

>
> That doesn't mean a single code unit, mind you. Think of combining characters.
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel Open Source Technology Center
>
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development

-- 
Regards,
Konstantin

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Christian Ehrlicher

Am 25.01.2019 um 21:23 schrieb Thiago Macieira:

On Friday, 25 January 2019 12:11:33 PST Christian Ehrlicher wrote:

Hello,

The two implicit conversions from QByteArray to const char*/void*
(QByteArray::operator const char *() and QByteArray::operator const
void*()) were marked as obsolete with Qt5.0 but never get decorated as
such. This means their usage even inside QtBase is huge (I would say at
least 70-80 locations).
Therefore my question before I'm pushing a patch to add QT_DEPRECATED_X
to them - is the deprecation still valid?

I'd un-deprecate them. The use to casting to char* is way too useful.

But I wasn't aware we event had a void* cast.
Here the commit which deprecated the functions: 
https://codereview.qt-project.org/#/c/17343/
I found one place inside QtBase which hit this problem: 
https://codereview.qt-project.org/#/c/251028/


Christian
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 04:30:52 PST Shawn Rutledge wrote:
> Could we simplify testing for some types of patches?  E.g. if the patch only
> touches documentation, don’t run tests, except those that involve building
> docs, if we have any of those.

I think that's a good idea to investigate, but remember that you *can* break 
things with doc changes. Maybe a way for a "low-priority stage", which stages 
a change but doesn't trigger the integration unless a timeout comes around or 
a regular priority change is also staged.

One time back in the TT/Nokia days Frans asked me for a quick review of a "### 
Qt5" change he wanted to add and I gave him my approval verbally (that was 
before code review systems). So he pushed it. 5 minutes later, Paul waked into 
our office saying we had broken the build: we forgot the // to *start* the 
comment.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 01:10:35 PST Simon Hausmann wrote:
> I do quite like what Allan suggested: We could try the cherry-pick the other
> way around. Volker, Lars, Thiago etc. surely remember the p4i script we
> used to have when we were using Perforce. Imagine that with more
> automation.

I vaguely remember it. But your bringing it up is *not* an argument in favour 
of cherry-picking. Doing backporting properly in the Perforce days was a 
nightmare. We did not consistently backport fixes to earlier releases, even 
when we had a somewhat long stable series (4.3 went through 4.3.5).

Also, unlike Git, Perforce "merges" *were* a series of cherry-picks and it did 
know which commits had been cherry-picked and which ones hadn't. So if you 
told it to merge a range, it would tell you everything that was missing. More 
importantly, the range did not have to be contiguous, so you could cherry-pick 
only your own changes and let others deal with theirs. It also helped p4 had a 
pretty good automated conflict resolution in the command-line (today, I use 
kdiff3 for that, via git mergetool).

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 04:54:22 PST Edward Welbourne wrote:
> we
> fail to properly support cultures whose scripts are relegated to the
> outer planes of Unicode - as, for example, the Chakma language's number
> system

All living languages are supposed to be stored in the BMP, which means no 
UTF-16 surrogate pairs to encode them.

That doesn't mean a single code unit, mind you. Think of combining characters.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 08:54:38 PST Konstantin Tokarev wrote:
> > How often do you need that, oustide of QString itself? And maybe a few
> > efficient QtCore classes? (QCborValue comes to mind)
> 
> Each time I need to interact efficiently with extenal code which isn't
> Qt-based, e.g. WebKit, ICU. In particular, this extra copy would certainly
> degrade performance of QtWebKit.
> 
> Oh and you've mentioned CBOR, this implies that it won't be possible for Qt
> users to make efficient implementation of a different serialization format.

I didn't say we shouldn't have it. I was just trying to gather information 
about the need.

So it looks like we do need it, if we ever change the encoding. My worry is 
that people will fail to handle the combinations properly. Which is why I 
dislike different encodings even more than changing it wholesale with an API-
breaking change.

However, one of my pending Qt 6 changes is to store a flag in QString that 
says "this UTF-16 string is known to contain only US-ASCII characters". That 
way, toUtf8() can use the faster toLatin1() algorithm (the flag is set by 
toUtf8() and toLatin1() the first time they're called). The problem is that it 
needs to clear that flag in all detach() calls.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Giuseppe D'Angelo via Development

Il 25/01/19 10:49, Dominik Haumann ha scritto:

Sidenote: Such a QStringIterator would also be helpful for
KTextEditor, where we likely have some bugs we usually never see since
we never have > UTF16 or composed characters.


I've managed to merge it in QtCore some 5 years ago, comes with docs and 
tests:


https://codereview.qt-project.org/#/c/77136/


You can use it today:

CONFIG += core-private
#include 


It's still missing a couple of bits and bolts to turn it public -- most 
notably, ranged for / STL loop support support. I'd also like to 
investigate more how it overlaps with SG16 / Boost.Text / etc. efforts 
before publishing the current API.


My 2 c,
--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: Firma crittografica S/MIME
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Thiago Macieira
On Friday, 25 January 2019 12:11:33 PST Christian Ehrlicher wrote:
> Hello,
> 
> The two implicit conversions from QByteArray to const char*/void*
> (QByteArray::operator const char *() and QByteArray::operator const
> void*()) were marked as obsolete with Qt5.0 but never get decorated as
> such. This means their usage even inside QtBase is huge (I would say at
> least 70-80 locations).
> Therefore my question before I'm pushing a patch to add QT_DEPRECATED_X
> to them - is the deprecation still valid?

I'd un-deprecate them. The use to casting to char* is way too useful.

But I wasn't aware we event had a void* cast.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] Deprecation of QByteArray operator const char *()?

2019-01-25 Thread Christian Ehrlicher

Hello,

The two implicit conversions from QByteArray to const char*/void* 
(QByteArray::operator const char *() and QByteArray::operator const 
void*()) were marked as obsolete with Qt5.0 but never get decorated as 
such. This means their usage even inside QtBase is huge (I would say at 
least 70-80 locations).
Therefore my question before I'm pushing a patch to add QT_DEPRECATED_X 
to them - is the deprecation still valid?



Thx,
Christian
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Archiving is working

2019-01-25 Thread Elvis Stansvik
Den fre 25 jan. 2019 kl 19:23 skrev Giuseppe D'Angelo via Development
:
>
> Il 25/01/19 18:41, Edward Welbourne ha scritto:
> > The pages have all been updated and had their URLs changed.
> > Or are you trying to tell me something else ?
> > I'm not sure I fully understand.
>
> Yes. And that's the problem. It *MUST NOT* happen. Links to mails in the
> mailing list are found in commit messages, on the bugtracker, and so on.
> Breaking them is a big no-no-no.
>
>
> As I said before, the new archive is corrupted, and thus must be fixed.
> Look at the numbering of emails from the new archives and note at how it
> "jumps":
>
> > https://lists.qt-project.org/pipermail/development/2011-October/date.html
>
> Compare it to the old numbering (progressive):
>
> > https://web.archive.org/web/20180408194615/http://lists.qt-project.org/pipermail/development/
>
>
>
> Then take a look at the current archive:
>
> > https://lists.qt-project.org/pipermail/development/2011-October.txt.gz
>
> Compare it with the old archive:
>
> > https://web.archive.org/web/20180408194615/http://lists.qt-project.org/pipermail/development/2011-October.txt.gz
>
> The new archive is corrupted; there are duplicated emails in there.
> What's needed now is to make pipermail produce a result identical to the
> old archive.

+1 https://www.w3.org/Provider/Style/URI ("Cool URIs don't change")

If you're going accept this as "solved", be aware that you're breaking
links in a *lot* of places, not just on Qt infra like QUIPs and
whatnot, but lots of other public forums, mailing lists, code bases,
commit messages, issue trackers etc.

I really think you need to find a way to make existing links work again.

Elvis

>
>
> My 2 c,
> --
> Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
> KDAB (France) S.A.S., a KDAB Group company
> Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
> KDAB - The Qt, C++ and OpenGL Experts
>
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Archiving is working

2019-01-25 Thread Giuseppe D'Angelo via Development

Il 25/01/19 18:41, Edward Welbourne ha scritto:

The pages have all been updated and had their URLs changed.
Or are you trying to tell me something else ?
I'm not sure I fully understand.


Yes. And that's the problem. It *MUST NOT* happen. Links to mails in the 
mailing list are found in commit messages, on the bugtracker, and so on. 
Breaking them is a big no-no-no.



As I said before, the new archive is corrupted, and thus must be fixed. 
Look at the numbering of emails from the new archives and note at how it 
"jumps":



https://lists.qt-project.org/pipermail/development/2011-October/date.html


Compare it to the old numbering (progressive):


https://web.archive.org/web/20180408194615/http://lists.qt-project.org/pipermail/development/




Then take a look at the current archive:


https://lists.qt-project.org/pipermail/development/2011-October.txt.gz


Compare it with the old archive:


https://web.archive.org/web/20180408194615/http://lists.qt-project.org/pipermail/development/2011-October.txt.gz


The new archive is corrupted; there are duplicated emails in there. 
What's needed now is to make pipermail produce a result identical to the 
old archive.



My 2 c,
--
Giuseppe D'Angelo | giuseppe.dang...@kdab.com | Senior Software Engineer
KDAB (France) S.A.S., a KDAB Group company
Tel. France +33 (0)4 90 84 08 53, http://www.kdab.com
KDAB - The Qt, C++ and OpenGL Experts



smime.p7s
Description: Firma crittografica S/MIME
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Archiving is working

2019-01-25 Thread Edward Welbourne
Liang Qi (25 January 2019 14:17)
> Looks like the index was also regenerated for October 2016,
>
> [Development] Coin news - Jedrzej Nowacki
> Tue Oct 25 10:22:41 EEST 2016
>
> Current link: 
> https://lists.qt-project.org/pipermail/development/2016-October/055084.html
>
> It was: 
> http://lists.qt-project.org/pipermail/development/2016-October/027542.html
>
> via 
> https://web.archive.org/web/20161108191742/http://lists.qt-project.org/pipermail/development/2016-October/thread.html

The pages have all been updated and had their URLs changed.
Or are you trying to tell me something else ?
I'm not sure I fully understand.

I've just pushed a change for review, that updates all existing QUIPs to
use URLs in the new archive; and commented on all pending QUIPs in
review on my best guesses at which URLs in the new archive match the
ones they refer to in the old one.  See various reviews at:
* https://codereview.qt-project.org/#/q/status:open+project:meta/quips,n,z

I note, in passing, that there are several outstanding reviews that seem
not to have moved in a long time.  Please think about what you're doing
with those QUIPs, authors and reviewers.

As part of that, I've also updated the heroku instance that displays the
current state of everything; it uses the most recent patch set from each
outstanding review, plus some clean-up of mine (renaming quip-*.txt to
quip-*.rst and fixing the URLs to those I suggested in reviews).  If you
find any remaining broken links in those, please let me know.
* https://quips-qt-io.herokuapp.com

Now I shall go home and have a week-end that feels over-due,

Eddy.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Konstantin Tokarev


25.01.2019, 01:02, "Thiago Macieira" :
> On Thursday, 24 January 2019 05:06:58 PST Konstantin Tokarev wrote:
>>  I will be officially pissed off if possibility to access raw data of QString
>>  without extra copy is gone It would be better if there is a way to figure
>>  out internal storage encoding (e.g. isUtf16()) and access raw data
>
> How often do you need that, oustide of QString itself? And maybe a few
> efficient QtCore classes? (QCborValue comes to mind)

Each time I need to interact efficiently with extenal code which isn't Qt-based,
e.g. WebKit, ICU. In particular, this extra copy would certainly degrade
performance of QtWebKit.

Oh and you've mentioned CBOR, this implies that it won't be possible for Qt
users to make efficient implementation of a different serialization format.

-- 
Regards,
Konstantin

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Robert Loehning
Am 25.01.2019 um 11:08 schrieb Lars Knoll:
> 
> 
> On 25 Jan 2019, at 10:10, Simon Hausmann 
> mailto:simon.hausm...@qt.io>> wrote:
> 
> 
> I think it's worthwhile to develop the tooling to automate cherry-picking. 
> That tooling is something that is perhaps best tried on a release branch 
> first.
> 
> I do quite like what Allan suggested: We could try the cherry-pick the other 
> way around. Volker, Lars, Thiago etc. surely remember the p4i script we used 
> to have when we were using Perforce. Imagine that with more automation.
> 
> The risk with this is that we might end up having fixes in a stable branch 
> that don’t make it do dev for various reasons, so it’ll regress in the next 
> minor release.
> 
> 
> (1) Liang's work load gets reduced dramatically - conflict resolution is 
> distributed.
> (2) Changes hit the customer relevant branch ASAP.
> (3) The load on the CI does not change for anybody working in dev.
> 
> The CI problem comes from the fact that if we have a high rate of stages to 
> qtbase/dev, we at some point get into a deadlock situation, even if we 
> disregard any flakiness in the system. That’s because higher rates imply that 
> more changes are tested together. This in turn increasing the risk of 
> rejection of all changes because of one bad change in the set. So the current 
> system doesn’t scale and basically rate limits the amount of changes going 
> into a branch (or worse, we end up getting traffic jams where the actual rate 
> actually goes down to zero).
> 
> To me this means we need to seriously rethink that part of our CI system, and 
> ideally test changes (or patch series) individually and in parallel. So maybe 
> we should adjust our CI system that way:
> 
> * test changes (or patch series) individually
> * If they pass CI merge or cherry-pick them into the branch
> * reject only if the merge/cherry-pick gives conflicts
> 
> This adds a very small risk that two parallel changes don’t conflict during 
> the merge/cherry-pick process, but cause a test regression together. To help 
> with that, we can simply run a regular status check on the repo. If this 
> happens the repo will be blocked for further testing until someone submits a 
> fix or reverts an offending change, which is acceptable.

Could that be solved by testing the combinations of changes again?

* test changes (or patch series) individually
* If they pass CI merge or cherry-pick them into some local branch
* reject if the merge/cherry-pick gives conflicts
* when time period x has passed or the local branch contains y changes, 
test the local branch
   good: push the local branch to the public one
   bad:  repeat step four with a subset of the changes it had before

Assuming that y is significantly greater than 1, the added overhead for 
one more test run seems relatively small to me.

Cheers,
Robert

> 
> Another advantage is that this would pave the road towards a system where CI 
> testing happens before human review, so we can in the longer term avoid 
> duplicated review/approval work.
> 
> Cheers,
> Lars
> 
> 
> 
> 
> Simon
> 
> From: Lars Knoll
> Sent: Friday, January 25, 2019 9:05:45 AM
> To: Ville Voutilainen
> Cc: Simon Hausmann; Qt development mailing list
> Subject: Re: [Development] Proposal: New branch model
> 
>> On 24 Jan 2019, at 22:29, Ville Voutilainen 
>> mailto:ville.voutilai...@gmail.com>> wrote:
>>
>> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann 
>> mailto:simon.hausm...@qt.io>> wrote:
>>>
>>>
>>> I would see the biggest long term impact with the massive amount of cherry 
>>> picks from dev to qt6 over a long period of time.
>>>
>>> Git rerere works locally, so it doesn’t help in this setup I think.
>>
>> Completely seriously, without any preference to either branching
>> approach: aren't we going to be in some sort of trouble
>> with the qt6 branch anyway, no matter what we do? Following on a bit:
>>
>> Pardon me if I missed some important part of the motivation of all of
>> this, but I *CAN'T* see how this should, could,
>> or needs to be an approach that helps with the qt6 branch
>> merge/cherry-pick/rebase. I don't think that's going to
>> be a pleasant operation whatever we do.
>>
>> I would like a "push to trunk, backport to release-branches" approach
>> going forward. As in, once we have the usual
>> umpteen X.y branches, it's a simple approach.
>>
>> But I don't see how going from merge-forward (except also
>> merge-backward sometimes) to cherry-pick-backward
>> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
>> sometimes merge in some direction) is going
>> to help us with qt6. These matters seem orthogonal.
> 
> After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
> needs to be treated differently.
> 
> But except for Qt 6 I like the proposed policy for a couple of reasons:
> 
> * I think it makes the life of casual/new contributors easier. Simply always 
> develop and push against the 

Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Jason H
> By all means, let's make sure the internals are efficient for the more
> common languages and scripts; but it's way past time to start doing
> Unicode properly, so that all cultures are well-served by default, when
> the software folk are using is built on Qt,

I don't think anyone knows what "properly" is. But the more I think about it, 
the more I like the idea I expressed as a list of sequences of various 
character sizes. I think it is a good balance between space and efficiency. To 
recap that:
A class that stores a list of list of same-width characters. For the most naive 
case the list is 1 list long and contains only 8bit characters. This performs 
identically to QByteArray. Non-ASCII languages requiring 16-bit storage are as 
QStrings are now. Then, in the more complicated scenarios, it breaks out 8-bit 
segments and 16-bit segments and makes them appear contiguous. (Emoji in ASCII 
text). Of course there could be functions to collapse it all to the uniform 
largest used width (maximize()) or break it apart to minimize() space (for very 
long 8-bit strings with occasional characters), and there can even be a 
bestFit() heuristic. And as always you can get it serialized as UTF-8 or 16... 
All the above also extends to 32-bit as well. I think this blends handles the 
average case very well (all characters of same width) and has reasonable cost 
for occasional exotic characters. 
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt modules, API changes and Qt 6

2019-01-25 Thread Konstantin Tokarev


25.01.2019, 18:11, "Allan Sandfeld Jensen" :
> I think for something like qt6, I would like to suggest I think I have brought
> up before in relation to testing qt5.git changes on more platforms or
> configuations: A system for non blocking CI failures.
>
> In WebKit they what they called the CI-waterfall. It was a table with commits
> as rows and platforms as columns.

https://build.webkit.org/waterfall

> Only some platforms were blocking and could
> prevent patches from integrating(Apple's own of course), the rest was non
> blocking and would just turn red on the waterfall when they broke.

There is another set of build bots called EWS, they build each revision of
submitted patch, so that both patch authors reviewers can be sure that patch
builds on all major platforms when discussing code changes. In Qt it sometimes
happens that problems are only discovered after +2, leading to anpother
review cycle.

-- 
Regards,
Konstantin

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt modules, API changes and Qt 6

2019-01-25 Thread Allan Sandfeld Jensen
On Freitag, 25. Januar 2019 14:12:11 CET Frederik Gladhorn wrote:
> Hi all,
> 
> I'd like to start another discussion around our development workflow.
> We arrived at our current model of Qt modules (in the git repository sense)
> and using qt5.git as a container for all of them through a series of steps
> and changes. Mix in the evolution of the testing environment over time and
> we have something that has grown in interesting ways.
> 
> I will try to describe the problem in this mail. I also have discussed with
> a bunch of people (inside The Qt Company) about potential solutions. After
> brainstorming and some back and forth, we had five suggestions on a
> whiteboard and picked our favorite. In a separate mail I'll try to describe
> these and what we concluded with as our favorite. All of this is up for
> discussion, so I'm hoping for someone to come up with even better ideas.
> 
> 
> The problem:
> 
> qt5.git serves several purposes today, for example:
> - it contains a few binaries needed for Windows development
> - it gives a definition of which modules make up a Qt release
> - it collects sets of revisions which work together (because they were
> tested with each other)
> - it has a bit of build system infrastructure to build all of this
> 
> In my opinion there are a few issues with what we have:
> - updating qt5.git (and thus making releases) is cumbersome
> - it's unclear for many people what a module is tested against in the CI
>   (its dependencies are checked out at the revisions specified in qt5.git,
> not the latest revisions of the corresponding branch)
> - we have more products, such as Qt for Automotive, Automation, Device
> Creation, should those have qt5-special-purpose repositories?
> - modules outside of qt5.git get different treatment, making it hard to
> include new modules
> 
> In the light of Qt 6, there is also the question of how we can allow making
> source incompatible changes in an easy fashion.
> Why is it hard to do source incompatible changes? Let's say we want to
> rename a function in qtbase. qtdeclarative is the only user of that
> function in our code-base. Today we can do that in five easy steps:
> 
> 1) add function with new name in qtbase, do not remove the old one yet
> 2) update qt5.git
> 3+4) move qtdeclarative to the new function name; remove the old function
> from qtbase
> 5) after 3 and 4 are in, update qt5.git
> 
> Five commits, two of which are qt5.git updates, is a lot to ask for. And
> this is assuming that the contributor knows of this work-flow and does
> everything by the unwritten book. In the unhappy case, we do an attempt of
> changing qtbase directly, then we notice qt5.git doesn't update and we need
> to bring back the old function name first. Another aspect is that even
> after 5, if this happened to be a branch other than dev, we might face all
> of these problems while doing merges to the next branch again (been there,
> done that, and so has Liang).
> 
> This has led to a mess in how we create releases and how we test things. It
> creates a very hard and artificial line of what's part of the core product
> and what is outside and testing in the CI is also majorly influenced by
> this. Modules are not self-contained (since the fine-grained dependencies
> are specified in qt5.git). We don't know how to cleanly handle dependencies
> for modules outside. We have trouble getting some of the releases out,
> since Qt for Device Creation follows slightly different routines than Qt
> for Application Development
> 
I think for something like qt6, I would like to suggest I think I have brought 
up before in relation to testing qt5.git changes on more platforms or 
configuations: A system for non blocking CI failures. 

In WebKit they what they called the CI-waterfall. It was a table with commits 
as rows and platforms as columns. Only some platforms were blocking and could 
prevent patches from integrating(Apple's own of course), the rest was non 
blocking and would just turn red on the waterfall when they broke.

If we had something like this for qt6, and instead of having a qt6.git to 
begin with just tested the qt6 head of all modules, a source incompatible 
change would turn the waterfall red for all the modules that broke, we would 
know which commit caused it, but could work on making the original change more 
source compatible in qtbase, or fix the modules depending on it one at a time 
with too much overhead.

Once we had a system like that, we could also use to monitor if changes in 
modules causes other modules to break before qt5.git (or qt6.git) is updated, 
and test more platforms and configurations without blocking integration more 
than we already do.

best regards
'Allan


___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Robert Loehning
Am 24.01.2019 um 10:39 schrieb Volker Hilsheimer:
>> On 24 Jan 2019, at 09:22, Jaroslaw Kobus  wrote:
 "All(**) changes would go to dev. From which they would be automatically
 cherry-picked by a bot to other branches. The decision to which branch 
 cherry-
 pick, would be taken based on a tag in the commit message. We could add a
 footer that marks the change risk level as in quip-5"

 No sure I understand the above correctly. Let's say in dev branch some 
 source file got refactored completely, so that no single line match the 
 old version anymore, e.g. Qt 5.9. Now you need to fix the old code, which 
 is in 5.9 branch - how in this case you may try to push your fix to dev?

 Jarek

>>> That’s where the “with exception of branch specific changes” clause (which 
>>> the ** points at) kicks in.
>>>
>>> Is the fix needed in dev (or is the bug fixed by the refactoring)?
>>>
>>> If yes, then fix it in dev, and then make a separate fix in the relevant 
>>> LTS branches (perhaps starting with the cherry-pick’ed change). Or just 
>>> accept that this bug won’t/can’t be fixed in the pre-refactoring codebase.
>>>
>>> If no, then push the fix for the newest branch where it’s needed, from 
>>> where it can be cherry picked further; don’t do anything in dev (including 
>>> “don’t expect someone that knows nothing about your change to deal with the 
>>> merge conflict”).
>>>
>> In this case there is additional step then. You would be forced now to check 
>> first both 5.9 and dev branches and detect if a fix would be "applyable" to 
>> the dev or not.
> 
> 
> Testing whether the bug that I’m fixing exists in dev or not is part of the 
> drill of fixing bug, isn’t it? Why would you spend time on fixing something 
> in 5.12 without checking whether the issue is still present in the latest 
> codebase? Perhaps the issue has been fixed already, just without the author 
> considering it relevant for 5.12 (perhaps for good reasons).

Why would somebody who maintains a project on Qt5 but made the decision 
to not migrate it to Qt6 care about fixing the latter?

Cheers,
Robert

>> Besides, if you decide that your fix goes only to the 5.9 branch - in this 
>> case you follow the current model anyway, right? So, having two models isn't 
>> better than having just one I think.
> 
> 
> With the proposed model there are no more automatic merges from more stable 
> to less stable, so once my change made it into 5.9, that is it.
> 
> 
> Volker
> 
> 
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development
> 

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt modules, API changes and Qt 6

2019-01-25 Thread Mitch Curtis


> -Original Message-
> From: Development  On Behalf Of
> Frederik Gladhorn
> Sent: Friday, 25 January 2019 2:12 PM
> To: development@qt-project.org
> Subject: [Development] Qt modules, API changes and Qt 6
> 
> Hi all,
> 
> I'd like to start another discussion around our development workflow.
> We arrived at our current model of Qt modules (in the git repository sense)
> and using qt5.git as a container for all of them through a series of steps and
> changes. Mix in the evolution of the testing environment over time and we
> have something that has grown in interesting ways.
> 
> I will try to describe the problem in this mail. I also have discussed with a
> bunch of people (inside The Qt Company) about potential solutions. After
> brainstorming and some back and forth, we had five suggestions on a
> whiteboard and picked our favorite. In a separate mail I'll try to describe
> these and what we concluded with as our favorite. All of this is up for
> discussion, so I'm hoping for someone to come up with even better ideas.
> 
> 
> The problem:
> 
> qt5.git serves several purposes today, for example:
> - it contains a few binaries needed for Windows development
> - it gives a definition of which modules make up a Qt release
> - it collects sets of revisions which work together (because they were tested
> with each other)
> - it has a bit of build system infrastructure to build all of this
> 
> In my opinion there are a few issues with what we have:
> - updating qt5.git (and thus making releases) is cumbersome
> - it's unclear for many people what a module is tested against in the CI
>   (its dependencies are checked out at the revisions specified in qt5.git, not
> the latest revisions of the corresponding branch)
> - we have more products, such as Qt for Automotive, Automation, Device
> Creation, should those have qt5-special-purpose repositories?
> - modules outside of qt5.git get different treatment, making it hard to
> include new modules
> 
> In the light of Qt 6, there is also the question of how we can allow making
> source incompatible changes in an easy fashion.
> Why is it hard to do source incompatible changes? Let's say we want to
> rename a function in qtbase. qtdeclarative is the only user of that function 
> in
> our code-base. Today we can do that in five easy steps:
> 
> 1) add function with new name in qtbase, do not remove the old one yet
> 2) update qt5.git
> 3+4) move qtdeclarative to the new function name; remove the old
> 3+function from
> qtbase
> 5) after 3 and 4 are in, update qt5.git
> 
> Five commits, two of which are qt5.git updates, is a lot to ask for. And this 
> is
> assuming that the contributor knows of this work-flow and does everything
> by the unwritten book. In the unhappy case, we do an attempt of changing
> qtbase directly, then we notice qt5.git doesn't update and we need to bring
> back the old function name first. Another aspect is that even after 5, if this
> happened to be a branch other than dev, we might face all of these
> problems while doing merges to the next branch again (been there, done
> that, and so has Liang).
> 
> This has led to a mess in how we create releases and how we test things. It
> creates a very hard and artificial line of what's part of the core product and
> what is outside and testing in the CI is also majorly influenced by this.
> Modules are not self-contained (since the fine-grained dependencies are
> specified in qt5.git). We don't know how to cleanly handle dependencies for
> modules outside. We have trouble getting some of the releases out, since Qt
> for Device Creation follows slightly different routines than Qt for 
> Application
> Development
> 
> On a semi-related note, running git-bisect on anything but qtbase is a
> science, hard enough to at least put me off.

Indeed. For anyone who might be interested, I've found the best way to bisect 
leaf modules like qtquickcontrols2 (which relies on qtdeclarative and qtbase) 
is to use qt5.git submodule updates:

1. Clone qt5.git, init only the modules you're interested in.
2. Look for qt5.git submodule updates (e.g. by searching in Gerrit) that 
happened before and after the issue started happening. Use these as the 
good/bad commits for the bisect.
3. Run "git submodule update --init qtbase qtxmlpatterns qtdeclarative" 
(passing in each module you're interested in) after each bisect round to 
checkout the relevant submodule commits for that qt5.git commit.
4. Wipe the Qt build, configure and build it, then test.
5. Once you've found the bad qt5.git commit, look through (bisect if possible) 
the range of commits for that in the relevant submodules.

This is super slow, but it's the most reliable way, avoiding compiler errors 
etc. that you get from mixing and matching commits across modules. Luckily it's 
not always necessary.

> Cheers,
> Frederik
> 
> 
> 
> ___
> Development mailing list
> Development@qt-project.org
> 

Re: [Development] Proposal: New branch model

2019-01-25 Thread Edward Welbourne
On 25 Jan 2019, at 10:10, Simon Hausmann 
mailto:simon.hausm...@qt.io>> wrote:
>> I think it's worthwhile to develop the tooling to automate
>> cherry-picking. That tooling is something that is perhaps best tried
>> on a release branch first.
>>
>> I do quite like what Allan suggested: We could try the cherry-pick
>>the other way around. Volker, Lars, Thiago etc. surely remember the
>>p4i script we used to have when we were using Perforce. Imagine that
>>with more automation.

Lars Knoll (25 January 2019 11:08)
> The risk with this is that we might end up having fixes in a stable
> branch that don’t make it do dev for various reasons, so it’ll regress
> in the next minor release.

It should be fairly trivial to ensure we tag the cherry-picks in such a
way that some routine script can alert relevant folk to ones that
haven't been sorted out within a month, or before the next release on
the branch they targeted.  I think this is less of a reason to worry
than you suppose.

Eddy.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Archiving is working

2019-01-25 Thread Liang Qi
Looks like the index was also regenerated for October 2016,

[Development] Coin news - Jedrzej Nowacki
Tue Oct 25 10:22:41 EEST 2016

Current link: 
https://lists.qt-project.org/pipermail/development/2016-October/055084.html

It was: 
http://lists.qt-project.org/pipermail/development/2016-October/027542.html

via 
https://web.archive.org/web/20161108191742/http://lists.qt-project.org/pipermail/development/2016-October/thread.html

--Liang

On Fri, 25 Jan 2019 at 14:00, Edward Welbourne  wrote:
>
> Hi all,
>
> Again, our sysadmins claim they've fixed what was broken in the
> archives.  Please check up on any archives in which you've seen holes
> lately and let us know if there are still any problems.
>
> If all's well, I'll hope our archives are stable again and begin going
> through all our QUIPs working out where the mails they've linked have
> ended up after all of this - please do likewise for other links you know
> about.
>
> Eddy.
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] Qt modules, API changes and Qt 6

2019-01-25 Thread Frederik Gladhorn
Hi all,

I'd like to start another discussion around our development workflow.
We arrived at our current model of Qt modules (in the git repository sense) 
and using qt5.git as a container for all of them through a series of steps and 
changes. Mix in the evolution of the testing environment over time and we have 
something that has grown in interesting ways.

I will try to describe the problem in this mail. I also have discussed with a 
bunch of people (inside The Qt Company) about potential solutions. After 
brainstorming and some back and forth, we had five suggestions on a whiteboard 
and picked our favorite. In a separate mail I'll try to describe these and 
what we concluded with as our favorite. All of this is up for discussion, so 
I'm hoping for someone to come up with even better ideas.


The problem:

qt5.git serves several purposes today, for example:
- it contains a few binaries needed for Windows development
- it gives a definition of which modules make up a Qt release
- it collects sets of revisions which work together (because they were tested 
with each other)
- it has a bit of build system infrastructure to build all of this

In my opinion there are a few issues with what we have:
- updating qt5.git (and thus making releases) is cumbersome
- it's unclear for many people what a module is tested against in the CI
  (its dependencies are checked out at the revisions specified in qt5.git, not 
the latest revisions of the corresponding branch)
- we have more products, such as Qt for Automotive, Automation, Device 
Creation, should those have qt5-special-purpose repositories?
- modules outside of qt5.git get different treatment, making it hard to 
include new modules

In the light of Qt 6, there is also the question of how we can allow making 
source incompatible changes in an easy fashion.
Why is it hard to do source incompatible changes? Let's say we want to rename 
a function in qtbase. qtdeclarative is the only user of that function in our 
code-base. Today we can do that in five easy steps:

1) add function with new name in qtbase, do not remove the old one yet
2) update qt5.git
3+4) move qtdeclarative to the new function name; remove the old function from 
qtbase
5) after 3 and 4 are in, update qt5.git

Five commits, two of which are qt5.git updates, is a lot to ask for. And this 
is assuming that the contributor knows of this work-flow and does everything 
by the unwritten book. In the unhappy case, we do an attempt of changing 
qtbase directly, then we notice qt5.git doesn't update and we need to bring 
back the old function name first. Another aspect is that even after 5, if this 
happened to be a branch other than dev, we might face all of these problems 
while doing merges to the next branch again (been there, done that, and so has 
Liang).

This has led to a mess in how we create releases and how we test things. It 
creates a very hard and artificial line of what's part of the core product and 
what is outside and testing in the CI is also majorly influenced by this.
Modules are not self-contained (since the fine-grained dependencies are 
specified in qt5.git). We don't know how to cleanly handle dependencies for 
modules outside. We have trouble getting some of the releases out, since Qt 
for Device Creation follows slightly different routines than Qt for 
Application Development

On a semi-related note, running git-bisect on anything but qtbase is a 
science, hard enough to at least put me off.

Cheers,
Frederik



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Archiving is working

2019-01-25 Thread Edward Welbourne
Hi all,

Again, our sysadmins claim they've fixed what was broken in the
archives.  Please check up on any archives in which you've seen holes
lately and let us know if there are still any problems.

If all's well, I'll hope our archives are stable again and begin going
through all our QUIPs working out where the mails they've linked have
ended up after all of this - please do likewise for other links you know
about.

Eddy.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Edward Welbourne
Arnaud Clère (25 January 2019 10:59) wrote:
> Most user code I have written or seen handles text data naively and is
> incorrect in some respect but I think only a minority of if is leading
> to real problems because input data will rarely trigger them.

That depends a lot on who's supplying your data.  The same rationale was
given for "making do" with old 8-bit encodings, which meant programs
worked for various rich nations' primary languages and didn't for anyone
else's.  Then we switched to UTF-16, which let us continue not thinking
about what we're really doing, while reaching a larger slice of the
world.  Still, that leaves us complicit in suppressing various minority
cultures by making software that works for the dominant culture around
them, but not for them.

Until we get into the habit of thinking of text properly (and I still
don't even know the terminology, so I have a way to go on this, just
like anyone) instead of as a sequence of evenly-sized units, we're going
to continue either being inefficient (because we use units that are
bigger than needed for many use-cases - arguably true of UTF-16) or we
fail to properly support cultures whose scripts are relegated to the
outer planes of Unicode - as, for example, the Chakma language's number
system, which QLocale currently can't represent (QTBUG-69324) because
the digits don't fit in a single UTF-16 unit (as QLocaleData expects of
digits, signs and quotes, though it understands most of its other
locale-specific texts might be longer).  As a result, we can't support
any Chakma locale.

By all means, let's make sure the internals are efficient for the more
common languages and scripts; but it's way past time to start doing
Unicode properly, so that all cultures are well-served by default, when
the software folk are using is built on Qt,

Eddy.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Shawn Rutledge


> On 25 Jan 2019, at 09:43, Martin Smith  wrote:
> 
>> It is the absolute exception that a change goes into qtbase on first attempt.
> 
> But many rejections have nothing to do with any change at all. I often submit 
> documentation-only changes to QtBase, and they often get tested alone, with 
> no other changes. They still get rejected multiple times because test X fails 
> this time and test Y fails next time, despite the fact that my change only 
> fixes typos in the qdoc comments. Sometimes there is a compiler failure too, 
> which is not caused by the change.

Could we simplify testing for some types of patches?  E.g. if the patch only 
touches documentation, don’t run tests, except those that involve building 
docs, if we have any of those.  (Even building the code is dubious in that 
case, as long as the bot that decides that it’s a doc-only patch actually 
verifies that the only changes are inside comments.)  If it only touches 
widgets, some time-consuming and failure-prone tests like network tests could 
be skipped.  And so on.

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Nominating Kimmo Ollila for Approver

2019-01-25 Thread Kari Oikarinen


On 25.1.2019 12.43, Ville Voutilainen wrote:
> On Fri, 25 Jan 2019 at 10:22, Teemu Holappa  wrote:
>>
>> Hello All,
>>
>> I'd like to nominate Kimmo Ollila for Approver. He has joined The Qt Company 
>> more than five years ago. Lately he has been working on INTEGRITY RTOS 
>> support and maintenance.
> 
> 
> +1.

+1, with the disclaimer that I'm in the neighboring room in the office.

-- 
Kari
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Eike Ziller


> On 25. Jan 2019, at 11:08, Lars Knoll  wrote:
> 
> 
> 
>> On 25 Jan 2019, at 10:10, Simon Hausmann  wrote:
>> 
>> 
>> I think it's worthwhile to develop the tooling to automate cherry-picking. 
>> That tooling is something that is perhaps best tried on a release branch 
>> first.
>> 
>> I do quite like what Allan suggested: We could try the cherry-pick the other 
>> way around. Volker, Lars, Thiago etc. surely remember the p4i script we used 
>> to have when we were using Perforce. Imagine that with more automation.
> 
> The risk with this is that we might end up having fixes in a stable branch 
> that don’t make it do dev for various reasons, so it’ll regress in the next 
> minor release.

Note that this risk exists partially even if fixes are first pushed into dev 
and then from dev directly to multiple “stable” branches.

Fix goes into dev.
Fix is cherry-picked into 5.9 without issues.
Fix is cherry-picked into 5.12 and for whatever reason there are issues with 
that.

There is a risk that the bug will not be fixed in the next (or any) 5.12 
release even though it already is fixed in 5.9. Granted, it will be fixed in 
5.13 again.
This is also not ideal and requires release management to keep track of these 
changes to avoid it.
(Some of this risk exists also for 5.12.x branch vs 5.12 branch, if we directly 
pick from dev to 5.12.x)

> 
>> (1) Liang's work load gets reduced dramatically - conflict resolution is 
>> distributed.
>> (2) Changes hit the customer relevant branch ASAP.
>> (3) The load on the CI does not change for anybody working in dev.
> 
> The CI problem comes from the fact that if we have a high rate of stages to 
> qtbase/dev, we at some point get into a deadlock situation, even if we 
> disregard any flakiness in the system. That’s because higher rates imply that 
> more changes are tested together. This in turn increasing the risk of 
> rejection of all changes because of one bad change in the set. So the current 
> system doesn’t scale and basically rate limits the amount of changes going 
> into a branch (or worse, we end up getting traffic jams where the actual rate 
> actually goes down to zero).
> 
> To me this means we need to seriously rethink that part of our CI system, and 
> ideally test changes (or patch series) individually and in parallel. So maybe 
> we should adjust our CI system that way:
> 
> * test changes (or patch series) individually
> * If they pass CI merge or cherry-pick them into the branch
> * reject only if the merge/cherry-pick gives conflicts
> 
> This adds a very small risk that two parallel changes don’t conflict during 
> the merge/cherry-pick process, but cause a test regression together. To help 
> with that, we can simply run a regular status check on the repo. If this 
> happens the repo will be blocked for further testing until someone submits a 
> fix or reverts an offending change, which is acceptable.
> 
> Another advantage is that this would pave the road towards a system where CI 
> testing happens before human review, so we can in the longer term avoid 
> duplicated review/approval work.
> 
> Cheers,
> Lars
> 
>> 
>> 
>> 
>> Simon
>> From: Lars Knoll
>> Sent: Friday, January 25, 2019 9:05:45 AM
>> To: Ville Voutilainen
>> Cc: Simon Hausmann; Qt development mailing list
>> Subject: Re: [Development] Proposal: New branch model
>>  
>> > On 24 Jan 2019, at 22:29, Ville Voutilainen  
>> > wrote:
>> > 
>> > On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>> >> 
>> >> 
>> >> I would see the biggest long term impact with the massive amount of 
>> >> cherry picks from dev to qt6 over a long period of time.
>> >> 
>> >> Git rerere works locally, so it doesn’t help in this setup I think.
>> > 
>> > Completely seriously, without any preference to either branching
>> > approach: aren't we going to be in some sort of trouble
>> > with the qt6 branch anyway, no matter what we do? Following on a bit:
>> > 
>> > Pardon me if I missed some important part of the motivation of all of
>> > this, but I *CAN'T* see how this should, could,
>> > or needs to be an approach that helps with the qt6 branch
>> > merge/cherry-pick/rebase. I don't think that's going to
>> > be a pleasant operation whatever we do.
>> > 
>> > I would like a "push to trunk, backport to release-branches" approach
>> > going forward. As in, once we have the usual
>> > umpteen X.y branches, it's a simple approach.
>> > 
>> > But I don't see how going from merge-forward (except also
>> > merge-backward sometimes) to cherry-pick-backward
>> > (except also cherry-pick forward, or kinda sideways to qt6, and maybe
>> > sometimes merge in some direction) is going
>> > to help us with qt6. These matters seem orthogonal.
>> 
>> After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
>> needs to be treated differently.
>> 
>> But except for Qt 6 I like the proposed policy for a couple of reasons:
>> 
>> * I think it makes the life of casual/new contributors easier. Simply 

Re: [Development] Nominating Sami Nurmenniemi for Approver status

2019-01-25 Thread Ville Voutilainen
On Fri, 25 Jan 2019 at 10:31, Simon Hausmann  wrote:
>
>
> +1 without any hesitation. (I thought he was an approver already :)

+1.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Nominating Kimmo Ollila for Approver

2019-01-25 Thread Ville Voutilainen
On Fri, 25 Jan 2019 at 10:22, Teemu Holappa  wrote:
>
> Hello All,
>
> I'd like to nominate Kimmo Ollila for Approver. He has joined The Qt Company 
> more than five years ago. Lately he has been working on INTEGRITY RTOS 
> support and maintenance.


+1.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Lars Knoll


On 25 Jan 2019, at 10:10, Simon Hausmann 
mailto:simon.hausm...@qt.io>> wrote:


I think it's worthwhile to develop the tooling to automate cherry-picking. That 
tooling is something that is perhaps best tried on a release branch first.

I do quite like what Allan suggested: We could try the cherry-pick the other 
way around. Volker, Lars, Thiago etc. surely remember the p4i script we used to 
have when we were using Perforce. Imagine that with more automation.

The risk with this is that we might end up having fixes in a stable branch that 
don’t make it do dev for various reasons, so it’ll regress in the next minor 
release.


(1) Liang's work load gets reduced dramatically - conflict resolution is 
distributed.
(2) Changes hit the customer relevant branch ASAP.
(3) The load on the CI does not change for anybody working in dev.

The CI problem comes from the fact that if we have a high rate of stages to 
qtbase/dev, we at some point get into a deadlock situation, even if we 
disregard any flakiness in the system. That’s because higher rates imply that 
more changes are tested together. This in turn increasing the risk of rejection 
of all changes because of one bad change in the set. So the current system 
doesn’t scale and basically rate limits the amount of changes going into a 
branch (or worse, we end up getting traffic jams where the actual rate actually 
goes down to zero).

To me this means we need to seriously rethink that part of our CI system, and 
ideally test changes (or patch series) individually and in parallel. So maybe 
we should adjust our CI system that way:

* test changes (or patch series) individually
* If they pass CI merge or cherry-pick them into the branch
* reject only if the merge/cherry-pick gives conflicts

This adds a very small risk that two parallel changes don’t conflict during the 
merge/cherry-pick process, but cause a test regression together. To help with 
that, we can simply run a regular status check on the repo. If this happens the 
repo will be blocked for further testing until someone submits a fix or reverts 
an offending change, which is acceptable.

Another advantage is that this would pave the road towards a system where CI 
testing happens before human review, so we can in the longer term avoid 
duplicated review/approval work.

Cheers,
Lars




Simon

From: Lars Knoll
Sent: Friday, January 25, 2019 9:05:45 AM
To: Ville Voutilainen
Cc: Simon Hausmann; Qt development mailing list
Subject: Re: [Development] Proposal: New branch model

> On 24 Jan 2019, at 22:29, Ville Voutilainen 
> mailto:ville.voutilai...@gmail.com>> wrote:
>
> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann 
> mailto:simon.hausm...@qt.io>> wrote:
>>
>>
>> I would see the biggest long term impact with the massive amount of cherry 
>> picks from dev to qt6 over a long period of time.
>>
>> Git rerere works locally, so it doesn’t help in this setup I think.
>
> Completely seriously, without any preference to either branching
> approach: aren't we going to be in some sort of trouble
> with the qt6 branch anyway, no matter what we do? Following on a bit:
>
> Pardon me if I missed some important part of the motivation of all of
> this, but I *CAN'T* see how this should, could,
> or needs to be an approach that helps with the qt6 branch
> merge/cherry-pick/rebase. I don't think that's going to
> be a pleasant operation whatever we do.
>
> I would like a "push to trunk, backport to release-branches" approach
> going forward. As in, once we have the usual
> umpteen X.y branches, it's a simple approach.
>
> But I don't see how going from merge-forward (except also
> merge-backward sometimes) to cherry-pick-backward
> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
> sometimes merge in some direction) is going
> to help us with qt6. These matters seem orthogonal.

After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
needs to be treated differently.

But except for Qt 6 I like the proposed policy for a couple of reasons:

* I think it makes the life of casual/new contributors easier. Simply always 
develop and push against the development branch. The more experienced reviewer 
can then easily decide that the fix should be cherry-picked into a stable 
branch.
* The system should be able to handle most of the cherry-picks automatically
* In case something goes wrong, it’s up to the developer/reviewer/maintainer to 
fix the cherry-pick and get it into the old branch. This leaves conflict 
resolution with the people that have the knowledge about that part of the code, 
not one central person that has to babysit merges
* It will somewhat naturally limit fixes going into the stable branches to bug 
fixes. In most cases, we do not want long patch series in stable branches, as 
we shouldn’t have feature development there.

A possible solution for Qt 6 could be to treat it as a feature branch from dev, 
and keep merging from dev, at 

Re: [Development] Proposal: New branch model

2019-01-25 Thread Kari Oikarinen
First the change would need to land in the targeted branch, then the 
cherry-picks to other branches.

Batching and controlled intervals are possible, but taken to an extreme they
would replicate the current load as a group of commits would be taken in a
single build as with merges currently. If there's less batching, there are more
integrations and thus more load. Could be only a little more, of course.

A lot of the stated advantages have also been about how creators of the changes
can take ownership of them and how changes can proceed into other branches
indepently. If you are can (and are responsible for) staging the cherry-picks if
the initial stage is not successful, how would you ensure the batching?

Sometimes there are conflicts in the cherry-picks. Will other changes in the
same batch wait for them to be fixed? Or is the batching smart enough to
understand whether there is a dependency or not?

I think there is a risk of reinventing the merges here. Or if not reinvention,
at least creating a new tool that is going to see feature creep like Sergio's
mail hinted from experience.

-- 
Kari

On 25.1.2019 11.50, Simon Hausmann wrote:
> 
> The first attempt at getting a change in is distributed over multiple 
> branches. 
> The staging of the cherry-pick can happen in batches and controlled intervals 
> as 
> with merges.
> 
> 
> 
> Simon
> 
> 
> *From:* Kari Oikarinen
> *Sent:* Friday, January 25, 2019 10:41:21 AM
> *To:* Simon Hausmann; Lars Knoll; Ville Voutilainen
> *Cc:* Qt development mailing list
> *Subject:* Re: [Development] Proposal: New branch model
> How would the CI load not change? Rather than one merge bringing multiple
> commits, each change would still be picked individually.
> 
> I also think the cherry-picking model makes more sense when branches with less
> action get the cherry-picks. The cherry-picking conflict issues grow as the
> amount of changes grow.
> 
> If we want more cherry-picking, I think we should rather pick the most frozen
> branches not yet in cherry-picking to convert. That of course would only help
> with (1).
> 
> -- 
> Kari
> 
> On 25.1.2019 11.10, Simon Hausmann wrote:
>> 
>> I think it's worthwhile to develop the tooling to automate cherry-picking. 
>> That
>> tooling is something that is perhaps best tried on a release branch first.
>> 
>> 
>> I do quite like what Allan suggested: We could try the cherry-pick the other 
>> way
>> around. Volker, Lars, Thiago etc. surely remember the p4i script we used to 
>> have
>> when we were using Perforce. Imagine that with more automation.
>> 
>> 
>> (1) Liang's work load gets reduced dramatically - conflict resolution is 
>> distributed.
>> 
>> (2) Changes hit the customer relevant branch ASAP.
>> 
>> (3) The load on the CI does not change for anybody working in dev.
>> 
>> 
>> 
>> 
>> Simon
>> 
>> 
>> *From:* Lars Knoll
>> *Sent:* Friday, January 25, 2019 9:05:45 AM
>> *To:* Ville Voutilainen
>> *Cc:* Simon Hausmann; Qt development mailing list
>> *Subject:* Re: [Development] Proposal: New branch model
>>> On 24 Jan 2019, at 22:29, Ville Voutilainen  
>>> wrote:
>>> 
>>> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
 
 
 I would see the biggest long term impact with the massive amount of cherry 
 picks from dev to qt6 over a long period of time.
 
 Git rerere works locally, so it doesn’t help in this setup I think.
>>> 
>>> Completely seriously, without any preference to either branching
>>> approach: aren't we going to be in some sort of trouble
>>> with the qt6 branch anyway, no matter what we do? Following on a bit:
>>> 
>>> Pardon me if I missed some important part of the motivation of all of
>>> this, but I *CAN'T* see how this should, could,
>>> or needs to be an approach that helps with the qt6 branch
>>> merge/cherry-pick/rebase. I don't think that's going to
>>> be a pleasant operation whatever we do.
>>> 
>>> I would like a "push to trunk, backport to release-branches" approach
>>> going forward. As in, once we have the usual
>>> umpteen X.y branches, it's a simple approach.
>>> 
>>> But I don't see how going from merge-forward (except also
>>> merge-backward sometimes) to cherry-pick-backward
>>> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
>>> sometimes merge in some direction) is going
>>> to help us with qt6. These matters seem orthogonal.
>> 
>> After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
>> needs to be treated differently.
>> 
>> But except for Qt 6 I like the proposed policy for a couple of reasons:
>> 
>> * I think it makes the life of casual/new contributors easier. Simply always 
>> develop and push against the development branch. The more experienced 
>> reviewer 
>> can then easily decide that the fix should be cherry-picked into a stable 
>> branch.

Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Arnaud Clère
> Original Message-
> From: Thiago Macieira  
>
> But we WILL NOT change from UTF-16 in the next 2 years. 

From a user standpoint, this seems perfectly Ok to me. 
I do not buy the argument that if switching QString to utf8 make developer bugs 
appear sooner, this is a good thing.

Most user code I have written or seen handles text data naively and is 
incorrect in some respect but I think only a minority of if is leading to real 
problems because input data will rarely trigger them.
Although not perfect, using 16 bits "characters" for QString and Windows API is 
 good approximation that helped a lot make user code more robust without 
requiring understanding charsets and encodings.
At least, it saved me a lot of time if I remember correctly the kind of bugs I 
was dealing with in the 90's.

So, IMHO, accessing QString content in utf8 "character" units should remain an 
explicit choice, not the default one.
Even choosing utf8 internally QString for performance reasons seems dubious to 
me, at least for a good half of the world...
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Simon Hausmann

The first attempt at getting a change in is distributed over multiple branches. 
The staging of the cherry-pick can happen in batches and controlled intervals 
as with merges.



Simon


From: Kari Oikarinen
Sent: Friday, January 25, 2019 10:41:21 AM
To: Simon Hausmann; Lars Knoll; Ville Voutilainen
Cc: Qt development mailing list
Subject: Re: [Development] Proposal: New branch model

How would the CI load not change? Rather than one merge bringing multiple
commits, each change would still be picked individually.

I also think the cherry-picking model makes more sense when branches with less
action get the cherry-picks. The cherry-picking conflict issues grow as the
amount of changes grow.

If we want more cherry-picking, I think we should rather pick the most frozen
branches not yet in cherry-picking to convert. That of course would only help
with (1).

--
Kari

On 25.1.2019 11.10, Simon Hausmann wrote:
>
> I think it's worthwhile to develop the tooling to automate cherry-picking. 
> That
> tooling is something that is perhaps best tried on a release branch first.
>
>
> I do quite like what Allan suggested: We could try the cherry-pick the other 
> way
> around. Volker, Lars, Thiago etc. surely remember the p4i script we used to 
> have
> when we were using Perforce. Imagine that with more automation.
>
>
> (1) Liang's work load gets reduced dramatically - conflict resolution is
> distributed.
>
> (2) Changes hit the customer relevant branch ASAP.
>
> (3) The load on the CI does not change for anybody working in dev.
>
>
>
>
> Simon
>
> 
> *From:* Lars Knoll
> *Sent:* Friday, January 25, 2019 9:05:45 AM
> *To:* Ville Voutilainen
> *Cc:* Simon Hausmann; Qt development mailing list
> *Subject:* Re: [Development] Proposal: New branch model
>> On 24 Jan 2019, at 22:29, Ville Voutilainen  
>> wrote:
>>
>> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>>>
>>>
>>> I would see the biggest long term impact with the massive amount of cherry 
>>> picks from dev to qt6 over a long period of time.
>>>
>>> Git rerere works locally, so it doesn’t help in this setup I think.
>>
>> Completely seriously, without any preference to either branching
>> approach: aren't we going to be in some sort of trouble
>> with the qt6 branch anyway, no matter what we do? Following on a bit:
>>
>> Pardon me if I missed some important part of the motivation of all of
>> this, but I *CAN'T* see how this should, could,
>> or needs to be an approach that helps with the qt6 branch
>> merge/cherry-pick/rebase. I don't think that's going to
>> be a pleasant operation whatever we do.
>>
>> I would like a "push to trunk, backport to release-branches" approach
>> going forward. As in, once we have the usual
>> umpteen X.y branches, it's a simple approach.
>>
>> But I don't see how going from merge-forward (except also
>> merge-backward sometimes) to cherry-pick-backward
>> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
>> sometimes merge in some direction) is going
>> to help us with qt6. These matters seem orthogonal.
>
> After some more thinking, I tend to agree. Qt6 is somewhat special and maybe
> needs to be treated differently.
>
> But except for Qt 6 I like the proposed policy for a couple of reasons:
>
> * I think it makes the life of casual/new contributors easier. Simply always
> develop and push against the development branch. The more experienced reviewer
> can then easily decide that the fix should be cherry-picked into a stable 
> branch.
> * The system should be able to handle most of the cherry-picks automatically
> * In case something goes wrong, it’s up to the developer/reviewer/maintainer 
> to
> fix the cherry-pick and get it into the old branch. This leaves conflict
> resolution with the people that have the knowledge about that part of the 
> code,
> not one central person that has to babysit merges
> * It will somewhat naturally limit fixes going into the stable branches to bug
> fixes. In most cases, we do not want long patch series in stable branches, as 
> we
> shouldn’t have feature development there.
>
> A possible solution for Qt 6 could be to treat it as a feature branch from 
> dev,
> and keep merging from dev, at least as long as possible. Once it’s not 
> possible
> anymore, we should probably make Qt 6 the new development branch and move all 
> Qt
> 5 related branches into a stable mode where we only focus on bug fixes.
>
> Let’s also not forget that Qt 6 is to some extent a temporary problem that 
> we’ll
> have for maximum one year. After that all of Qt 5 is in stable mode with bug
> fixing only. Then we can basically go back to a slightly modified cherry-pick
> mode: Push to dev (Qt6) and cherry-pick into Qt 5.15 for bug fixes. If the 
> code
> base has diverged and the fix needs to go into Qt 5, we might end up doing two
> changes, one for Qt6 and one for Qt5. That’s not 

Re: [Development] Qt6: Adding UTF-8 storage support to QString

2019-01-25 Thread Dominik Haumann
On Thu, Jan 24, 2019 at 10:57 PM Thiago Macieira
 wrote:
>
> On Wednesday, 23 January 2019 23:32:28 PST Olivier Goffart wrote:
> >   - Introduce some iterator that iterates over unicode code points.
>
> I wrote that about a decade ago. It's called QStringIterator and it's inside
> our sources, but in a private header.
>
> But we may want to make it iterate over grapheme clusters instead of Unicode
> codepoints. That is, make it use QTextBoundaryFinder to iterate, instead of
> decode the storage to UTF-32.
> [...]

Sidenote: Such a QStringIterator would also be helpful for
KTextEditor, where we likely have some bugs we usually never see since
we never have > UTF16 or composed characters.

Greetings
Dominik
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Kari Oikarinen
How would the CI load not change? Rather than one merge bringing multiple
commits, each change would still be picked individually.

I also think the cherry-picking model makes more sense when branches with less
action get the cherry-picks. The cherry-picking conflict issues grow as the
amount of changes grow.

If we want more cherry-picking, I think we should rather pick the most frozen
branches not yet in cherry-picking to convert. That of course would only help
with (1).

-- 
Kari

On 25.1.2019 11.10, Simon Hausmann wrote:
> 
> I think it's worthwhile to develop the tooling to automate cherry-picking. 
> That 
> tooling is something that is perhaps best tried on a release branch first.
> 
> 
> I do quite like what Allan suggested: We could try the cherry-pick the other 
> way 
> around. Volker, Lars, Thiago etc. surely remember the p4i script we used to 
> have 
> when we were using Perforce. Imagine that with more automation.
> 
> 
> (1) Liang's work load gets reduced dramatically - conflict resolution is 
> distributed.
> 
> (2) Changes hit the customer relevant branch ASAP.
> 
> (3) The load on the CI does not change for anybody working in dev.
> 
> 
> 
> 
> Simon
> 
> 
> *From:* Lars Knoll
> *Sent:* Friday, January 25, 2019 9:05:45 AM
> *To:* Ville Voutilainen
> *Cc:* Simon Hausmann; Qt development mailing list
> *Subject:* Re: [Development] Proposal: New branch model
>> On 24 Jan 2019, at 22:29, Ville Voutilainen  
>> wrote:
>> 
>> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>>> 
>>> 
>>> I would see the biggest long term impact with the massive amount of cherry 
>>> picks from dev to qt6 over a long period of time.
>>> 
>>> Git rerere works locally, so it doesn’t help in this setup I think.
>> 
>> Completely seriously, without any preference to either branching
>> approach: aren't we going to be in some sort of trouble
>> with the qt6 branch anyway, no matter what we do? Following on a bit:
>> 
>> Pardon me if I missed some important part of the motivation of all of
>> this, but I *CAN'T* see how this should, could,
>> or needs to be an approach that helps with the qt6 branch
>> merge/cherry-pick/rebase. I don't think that's going to
>> be a pleasant operation whatever we do.
>> 
>> I would like a "push to trunk, backport to release-branches" approach
>> going forward. As in, once we have the usual
>> umpteen X.y branches, it's a simple approach.
>> 
>> But I don't see how going from merge-forward (except also
>> merge-backward sometimes) to cherry-pick-backward
>> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
>> sometimes merge in some direction) is going
>> to help us with qt6. These matters seem orthogonal.
> 
> After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
> needs to be treated differently.
> 
> But except for Qt 6 I like the proposed policy for a couple of reasons:
> 
> * I think it makes the life of casual/new contributors easier. Simply always 
> develop and push against the development branch. The more experienced 
> reviewer 
> can then easily decide that the fix should be cherry-picked into a stable 
> branch.
> * The system should be able to handle most of the cherry-picks automatically
> * In case something goes wrong, it’s up to the developer/reviewer/maintainer 
> to 
> fix the cherry-pick and get it into the old branch. This leaves conflict 
> resolution with the people that have the knowledge about that part of the 
> code, 
> not one central person that has to babysit merges
> * It will somewhat naturally limit fixes going into the stable branches to 
> bug 
> fixes. In most cases, we do not want long patch series in stable branches, as 
> we 
> shouldn’t have feature development there.
> 
> A possible solution for Qt 6 could be to treat it as a feature branch from 
> dev, 
> and keep merging from dev, at least as long as possible. Once it’s not 
> possible 
> anymore, we should probably make Qt 6 the new development branch and move all 
> Qt 
> 5 related branches into a stable mode where we only focus on bug fixes.
> 
> Let’s also not forget that Qt 6 is to some extent a temporary problem that 
> we’ll 
> have for maximum one year. After that all of Qt 5 is in stable mode with bug 
> fixing only. Then we can basically go back to a slightly modified cherry-pick 
> mode: Push to dev (Qt6) and cherry-pick into Qt 5.15 for bug fixes. If the 
> code 
> base has diverged and the fix needs to go into Qt 5, we might end up doing 
> two 
> changes, one for Qt6 and one for Qt5. That’s not very different from the 
> situation we had with Qt 4 some years ago.
> 
> Cheers,
> Lars
> 
>> 
>> Qt6 and dev are going to diverge. Drastically, eventually. I don't
>> know how to solve that. A new branching policy
>> is not going to help with that.
>> ___
>> Development mailing list
>> Development@qt-project.org
>> 

Re: [Development] Proposal: New branch model

2019-01-25 Thread Simon Hausmann

I think it's worthwhile to develop the tooling to automate cherry-picking. That 
tooling is something that is perhaps best tried on a release branch first.


I do quite like what Allan suggested: We could try the cherry-pick the other 
way around. Volker, Lars, Thiago etc. surely remember the p4i script we used to 
have when we were using Perforce. Imagine that with more automation.


(1) Liang's work load gets reduced dramatically - conflict resolution is 
distributed.

(2) Changes hit the customer relevant branch ASAP.

(3) The load on the CI does not change for anybody working in dev.




Simon


From: Lars Knoll
Sent: Friday, January 25, 2019 9:05:45 AM
To: Ville Voutilainen
Cc: Simon Hausmann; Qt development mailing list
Subject: Re: [Development] Proposal: New branch model

> On 24 Jan 2019, at 22:29, Ville Voutilainen  
> wrote:
>
> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>>
>>
>> I would see the biggest long term impact with the massive amount of cherry 
>> picks from dev to qt6 over a long period of time.
>>
>> Git rerere works locally, so it doesn’t help in this setup I think.
>
> Completely seriously, without any preference to either branching
> approach: aren't we going to be in some sort of trouble
> with the qt6 branch anyway, no matter what we do? Following on a bit:
>
> Pardon me if I missed some important part of the motivation of all of
> this, but I *CAN'T* see how this should, could,
> or needs to be an approach that helps with the qt6 branch
> merge/cherry-pick/rebase. I don't think that's going to
> be a pleasant operation whatever we do.
>
> I would like a "push to trunk, backport to release-branches" approach
> going forward. As in, once we have the usual
> umpteen X.y branches, it's a simple approach.
>
> But I don't see how going from merge-forward (except also
> merge-backward sometimes) to cherry-pick-backward
> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
> sometimes merge in some direction) is going
> to help us with qt6. These matters seem orthogonal.

After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
needs to be treated differently.

But except for Qt 6 I like the proposed policy for a couple of reasons:

* I think it makes the life of casual/new contributors easier. Simply always 
develop and push against the development branch. The more experienced reviewer 
can then easily decide that the fix should be cherry-picked into a stable 
branch.
* The system should be able to handle most of the cherry-picks automatically
* In case something goes wrong, it’s up to the developer/reviewer/maintainer to 
fix the cherry-pick and get it into the old branch. This leaves conflict 
resolution with the people that have the knowledge about that part of the code, 
not one central person that has to babysit merges
* It will somewhat naturally limit fixes going into the stable branches to bug 
fixes. In most cases, we do not want long patch series in stable branches, as 
we shouldn’t have feature development there.

A possible solution for Qt 6 could be to treat it as a feature branch from dev, 
and keep merging from dev, at least as long as possible. Once it’s not possible 
anymore, we should probably make Qt 6 the new development branch and move all 
Qt 5 related branches into a stable mode where we only focus on bug fixes.

Let’s also not forget that Qt 6 is to some extent a temporary problem that 
we’ll have for maximum one year. After that all of Qt 5 is in stable mode with 
bug fixing only. Then we can basically go back to a slightly modified 
cherry-pick mode: Push to dev (Qt6) and cherry-pick into Qt 5.15 for bug fixes. 
If the code base has diverged and the fix needs to go into Qt 5, we might end 
up doing two changes, one for Qt6 and one for Qt5. That’s not very different 
from the situation we had with Qt 4 some years ago.

Cheers,
Lars

>
> Qt6 and dev are going to diverge. Drastically, eventually. I don't
> know how to solve that. A new branching policy
> is not going to help with that.
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Paul Tvete
On Friday, 25 January 2019 09:05:45 CET Lars Knoll wrote:
> * I think it makes the life of casual/new contributors easier. Simply always
> develop and push against the development branch. The more experienced
> reviewer can then easily decide that the fix should be cherry-picked into a
> stable branch.

This could also be accomplished by moving the change to the correct branch in 
gerrit as part of the review process.

Currently, only the owner can ask the bot to move the change, but since this 
is our bot I assume that we can change that policy.

- Paul


___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Martin Smith
>It is the absolute exception that a change goes into qtbase on first attempt.

But many rejections have nothing to do with any change at all. I often submit 
documentation-only changes to QtBase, and they often get tested alone, with no 
other changes. They still get rejected multiple times because test X fails this 
time and test Y fails next time, despite the fact that my change only fixes 
typos in the qdoc comments. Sometimes there is a compiler failure too, which is 
not caused by the change.

Maybe we should have a regular cron job that just runs an empty change through 
the system to see what tests, compilers, etc are failing and flag them for 
fixing.

And I suppose the cherrypicks to stable branches should not be triggered until 
the change has passed in the dev branch.

martin


From: Development  on behalf of Simon 
Hausmann 
Sent: Friday, January 25, 2019 9:25:16 AM
To: Allan Sandfeld Jensen; Jedrzej Nowacki
Cc: development@qt-project.org
Subject: Re: [Development] Proposal: New branch model


I'm somewhat attracted to the proposed model, in conjunction with automation 
and by treating Qt6 differently.


However Allan's last point is what sticks to me most, the load on the CI and 
the resulting impact on productivity:


If all it would take to get changes distributed is a cherry-pick, then I can 
totally see how this can fly. However with a blocking CI and the rate of 
flakyness we are experiencing at least in qtbase, I think this carries a high 
risk of slowing down development.


It is the absolute exception that a change goes into qtbase on first attempt. 
I'd say that in average perhaps three attempts of staging are needed. Currently 
the batches of integrations are distributed among the release branch (5.12.x), 
5.12 and dev. With all changes going to dev first, the size of batches is going 
to increase as well as the frequency of integration attempts for the same 
branch. This either increases the change of rejection of your change to due an 
unrelated change (as the batches are bigger) or it will take longer before your 
change gets tried. That would seem like a slow down to me and also not 
something that helps casual first-time contributors.


I would love to hear the opinion from frequent qtbase submitters on the 
proposal and how they feel about this.



Liang's email weighs a lot in my opinion. And Sergio's and Ville's experience 
with this model as well. I think that we should try this with a release branch 
first before we go all in. It would seem that quite a bit of tooling needs to 
be developed first anyway?




Simon


From: Development  on behalf of Allan 
Sandfeld Jensen 
Sent: Thursday, January 24, 2019 1:33:28 PM
To: Jedrzej Nowacki
Cc: development@qt-project.org
Subject: Re: [Development] Proposal: New branch model

On Donnerstag, 24. Januar 2019 13:27:41 CET Jedrzej Nowacki wrote:
> Dnia środa, 23 stycznia 2019 22:04:16 CET Allan Sandfeld Jensen pisze:
>
> > On Mittwoch, 23. Januar 2019 16:51:10 CET Jedrzej Nowacki wrote:
> >
> > >   Proposal in short: let's use cherry-pick mode everywhere.
> > >
> > >   All(**) changes would go to dev. From which they would be
> > >   automatically
> > >
> > >
> > > cherry-picked by a bot to other branches. The decision to which branch
> > > cherry-
> >
> >
> >
> >  pick, would be taken based on a tag in the commit message. We
> >
> >
> >
> > > could add a footer that marks the change risk level as in quip-5
> > > (http://quips-qt-io.herokuapp.com/quip-0005.html), so for example
> > > "dev",
> > > "stable", "LTS". By default everything would be cherry-picked to qt6
> > > branch
> > > unless "no-future" tag would be given. Of course we can bike-shed about
> > > the
> > > tag names.
> >
> >
> > I don't see any advantage to this what so ever. The same amount of work
> > and
 refactoring needs to be done, all you have done is made development
> > more prone to human error, and fixes less likely to reach their intended
> > target, and made getting point releases out on time harder as they need
> > to go through more steps before they have all their patches in.
> >
> > 'Allan
>
>
>
> It is hard to answer this because you have forgotten to write why you think
>
 that development would be more error prone or fixes less likely to reach
> the destination or more steps would be involved in releasing. So I will try
> shooting in the dark :-)
>
> The current merging strategy involves couple of people, one merge master and
> a
 random reviewer that looks at conflicts if there are any. Usually it is
> not even close to quality level we have for single patches in which we have
> more reviewers and gerrit shows the real diff. In practice we assume that
> no conflicts == good merge.
>
> Fixes are less likely to hit target branches, true, but only if nobody
> cares.
 Mark that a fix can magically disappear during broken mere, nobody
> will see it. The proposed solution allows at 

Re: [Development] Nominating Sami Nurmenniemi for Approver status

2019-01-25 Thread Simon Hausmann

+1 without any hesitation. (I thought he was an approver already :)



Simon


From: Development  on behalf of Kari 
Oikarinen 
Sent: Friday, January 25, 2019 9:06:29 AM
To: development@qt-project.org
Subject: [Development] Nominating Sami Nurmenniemi for Approver status

Hi!

I'd like to nominate Sami Nurmenniemi for Approver. He has already been working
in The Qt Company in the same team as I am for a good while.

Sami has worked on (among other things):

- Improving flaky tests
- CI coverage for ARM platforms by using user mode QEMU
- Demos for embedded devices

He is a careful and competent developer and reviewer. I trust he would wield his
new powers with good judgment.

His changes:

https://codereview.qt-project.org/#/q/owner:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z

His reviews:

https://codereview.qt-project.org/#/q/reviewer:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z

--
Kari
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Simon Hausmann

I'm somewhat attracted to the proposed model, in conjunction with automation 
and by treating Qt6 differently.


However Allan's last point is what sticks to me most, the load on the CI and 
the resulting impact on productivity:


If all it would take to get changes distributed is a cherry-pick, then I can 
totally see how this can fly. However with a blocking CI and the rate of 
flakyness we are experiencing at least in qtbase, I think this carries a high 
risk of slowing down development.


It is the absolute exception that a change goes into qtbase on first attempt. 
I'd say that in average perhaps three attempts of staging are needed. Currently 
the batches of integrations are distributed among the release branch (5.12.x), 
5.12 and dev. With all changes going to dev first, the size of batches is going 
to increase as well as the frequency of integration attempts for the same 
branch. This either increases the change of rejection of your change to due an 
unrelated change (as the batches are bigger) or it will take longer before your 
change gets tried. That would seem like a slow down to me and also not 
something that helps casual first-time contributors.


I would love to hear the opinion from frequent qtbase submitters on the 
proposal and how they feel about this.



Liang's email weighs a lot in my opinion. And Sergio's and Ville's experience 
with this model as well. I think that we should try this with a release branch 
first before we go all in. It would seem that quite a bit of tooling needs to 
be developed first anyway?




Simon


From: Development  on behalf of Allan 
Sandfeld Jensen 
Sent: Thursday, January 24, 2019 1:33:28 PM
To: Jedrzej Nowacki
Cc: development@qt-project.org
Subject: Re: [Development] Proposal: New branch model

On Donnerstag, 24. Januar 2019 13:27:41 CET Jedrzej Nowacki wrote:
> Dnia środa, 23 stycznia 2019 22:04:16 CET Allan Sandfeld Jensen pisze:
>
> > On Mittwoch, 23. Januar 2019 16:51:10 CET Jedrzej Nowacki wrote:
> >
> > >   Proposal in short: let's use cherry-pick mode everywhere.
> > >
> > >   All(**) changes would go to dev. From which they would be
> > >   automatically
> > >
> > >
> > > cherry-picked by a bot to other branches. The decision to which branch
> > > cherry-
> >
> >
> >
> >  pick, would be taken based on a tag in the commit message. We
> >
> >
> >
> > > could add a footer that marks the change risk level as in quip-5
> > > (http://quips-qt-io.herokuapp.com/quip-0005.html), so for example
> > > "dev",
> > > "stable", "LTS". By default everything would be cherry-picked to qt6
> > > branch
> > > unless "no-future" tag would be given. Of course we can bike-shed about
> > > the
> > > tag names.
> >
> >
> > I don't see any advantage to this what so ever. The same amount of work
> > and
 refactoring needs to be done, all you have done is made development
> > more prone to human error, and fixes less likely to reach their intended
> > target, and made getting point releases out on time harder as they need
> > to go through more steps before they have all their patches in.
> >
> > 'Allan
>
>
>
> It is hard to answer this because you have forgotten to write why you think
>
 that development would be more error prone or fixes less likely to reach
> the destination or more steps would be involved in releasing. So I will try
> shooting in the dark :-)
>
> The current merging strategy involves couple of people, one merge master and
> a
 random reviewer that looks at conflicts if there are any. Usually it is
> not even close to quality level we have for single patches in which we have
> more reviewers and gerrit shows the real diff. In practice we assume that
> no conflicts == good merge.
>
> Fixes are less likely to hit target branches, true, but only if nobody
> cares.
 Mark that a fix can magically disappear during broken mere, nobody
> will see it. The proposed solution allows at least track such cases.
>
> Releases branches already use cherry-pick mode so from that perspective
> there
 is no big changes, the only one is the origin branch from which the
> cherry- pick should happen.
>
Yeah, this was no the best of comments on the issue. But I believe I wrote my
objections elsewhere:
- Cherry-picks are more error prone in git than merges and requires manual
intervention more frequently
- Even if we accept the always and instantly cherry-pick model, there is no
reason to push to dev, continuing to push to the same branches as now could
achieve all the same things with less room for error (because where it is
supposed to be merged to is both implicit and unambigious)
- By having all commits go to the same branch you make that branch overloaded,
and will break our CI even more than it already is.
- I don't see making it harder to fix bugs in the stable branch as a benefit.

Best regards
'Allan




___
Development mailing list
Development@qt-project.org

[Development] Nominating Kimmo Ollila for Approver

2019-01-25 Thread Teemu Holappa
Hello All,

I'd like to nominate Kimmo Ollila for Approver. He has joined The Qt Company 
more than five years ago. Lately he has been working on INTEGRITY RTOS support 
and maintenance.

Here is the list of his changes:

https://codereview.qt-project.org/#/q/owner:+kiollila,n,z

and the list of his reviews:

https://codereview.qt-project.org/#/q/reviewer:+kiollila,n,z


Br,

Teemu Holappa
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Nominating Sami Nurmenniemi for Approver status

2019-01-25 Thread Liang Qi
+1

Thank Sami for lots of help on QEMU build and etc.

—Liang

> On 25 Jan 2019, at 09:06, Kari Oikarinen  wrote:
> 
> Hi!
> 
> I'd like to nominate Sami Nurmenniemi for Approver. He has already been 
> working
> in The Qt Company in the same team as I am for a good while.
> 
> Sami has worked on (among other things):
> 
> - Improving flaky tests
> - CI coverage for ARM platforms by using user mode QEMU
> - Demos for embedded devices
> 
> He is a careful and competent developer and reviewer. I trust he would wield 
> his
> new powers with good judgment.
> 
> His changes:
> 
> https://codereview.qt-project.org/#/q/owner:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z
> 
> His reviews:
> 
> https://codereview.qt-project.org/#/q/reviewer:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z
> 
> -- 
> Kari
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Simon Hausmann

It's a fair point to raise.


The closest scenario that I can think of that we've had in the past with a long 
living branch was 5.6 before it entered cherry-picking mode. The first change 
to qtbase 5.6 was uploaded to Gerrit on August 11th 2015. The last merge that I 
can see away from 5.6 was on November 25th 2016. That's ~16 months of merging.


Short of other options, I think the method of using git merge is the option 
that's least painful for a long lived qt 6 branch.


Simon


From: Ville Voutilainen 
Sent: Thursday, January 24, 2019 10:29:13 PM
To: Simon Hausmann
Cc: Jedrzej Nowacki; development@qt-project.org
Subject: Re: [Development] Proposal: New branch model

On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>
>
> I would see the biggest long term impact with the massive amount of cherry 
> picks from dev to qt6 over a long period of time.
>
> Git rerere works locally, so it doesn’t help in this setup I think.

Completely seriously, without any preference to either branching
approach: aren't we going to be in some sort of trouble
with the qt6 branch anyway, no matter what we do? Following on a bit:

Pardon me if I missed some important part of the motivation of all of
this, but I *CAN'T* see how this should, could,
or needs to be an approach that helps with the qt6 branch
merge/cherry-pick/rebase. I don't think that's going to
be a pleasant operation whatever we do.

I would like a "push to trunk, backport to release-branches" approach
going forward. As in, once we have the usual
umpteen X.y branches, it's a simple approach.

But I don't see how going from merge-forward (except also
merge-backward sometimes) to cherry-pick-backward
(except also cherry-pick forward, or kinda sideways to qt6, and maybe
sometimes merge in some direction) is going
to help us with qt6. These matters seem orthogonal.

Qt6 and dev are going to diverge. Drastically, eventually. I don't
know how to solve that. A new branching policy
is not going to help with that.
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] Nominating Sami Nurmenniemi for Approver status

2019-01-25 Thread Kari Oikarinen
Hi!

I'd like to nominate Sami Nurmenniemi for Approver. He has already been working
in The Qt Company in the same team as I am for a good while.

Sami has worked on (among other things):

- Improving flaky tests
- CI coverage for ARM platforms by using user mode QEMU
- Demos for embedded devices

He is a careful and competent developer and reviewer. I trust he would wield his
new powers with good judgment.

His changes:

https://codereview.qt-project.org/#/q/owner:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z

His reviews:

https://codereview.qt-project.org/#/q/reviewer:%22Sami+Nurmenniemi+%253Csami.nurmenniemi%2540qt.io%253E%22,n,z

-- 
Kari
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Proposal: New branch model

2019-01-25 Thread Lars Knoll
> On 24 Jan 2019, at 22:29, Ville Voutilainen  
> wrote:
> 
> On Thu, 24 Jan 2019 at 20:26, Simon Hausmann  wrote:
>> 
>> 
>> I would see the biggest long term impact with the massive amount of cherry 
>> picks from dev to qt6 over a long period of time.
>> 
>> Git rerere works locally, so it doesn’t help in this setup I think.
> 
> Completely seriously, without any preference to either branching
> approach: aren't we going to be in some sort of trouble
> with the qt6 branch anyway, no matter what we do? Following on a bit:
> 
> Pardon me if I missed some important part of the motivation of all of
> this, but I *CAN'T* see how this should, could,
> or needs to be an approach that helps with the qt6 branch
> merge/cherry-pick/rebase. I don't think that's going to
> be a pleasant operation whatever we do.
> 
> I would like a "push to trunk, backport to release-branches" approach
> going forward. As in, once we have the usual
> umpteen X.y branches, it's a simple approach.
> 
> But I don't see how going from merge-forward (except also
> merge-backward sometimes) to cherry-pick-backward
> (except also cherry-pick forward, or kinda sideways to qt6, and maybe
> sometimes merge in some direction) is going
> to help us with qt6. These matters seem orthogonal.

After some more thinking, I tend to agree. Qt6 is somewhat special and maybe 
needs to be treated differently.

But except for Qt 6 I like the proposed policy for a couple of reasons:

* I think it makes the life of casual/new contributors easier. Simply always 
develop and push against the development branch. The more experienced reviewer 
can then easily decide that the fix should be cherry-picked into a stable 
branch.
* The system should be able to handle most of the cherry-picks automatically
* In case something goes wrong, it’s up to the developer/reviewer/maintainer to 
fix the cherry-pick and get it into the old branch. This leaves conflict 
resolution with the people that have the knowledge about that part of the code, 
not one central person that has to babysit merges
* It will somewhat naturally limit fixes going into the stable branches to bug 
fixes. In most cases, we do not want long patch series in stable branches, as 
we shouldn’t have feature development there.

A possible solution for Qt 6 could be to treat it as a feature branch from dev, 
and keep merging from dev, at least as long as possible. Once it’s not possible 
anymore, we should probably make Qt 6 the new development branch and move all 
Qt 5 related branches into a stable mode where we only focus on bug fixes. 

Let’s also not forget that Qt 6 is to some extent a temporary problem that 
we’ll have for maximum one year. After that all of Qt 5 is in stable mode with 
bug fixing only. Then we can basically go back to a slightly modified 
cherry-pick mode: Push to dev (Qt6) and cherry-pick into Qt 5.15 for bug fixes. 
If the code base has diverged and the fix needs to go into Qt 5, we might end 
up doing two changes, one for Qt6 and one for Qt5. That’s not very different 
from the situation we had with Qt 4 some years ago.

Cheers,
Lars

> 
> Qt6 and dev are going to diverge. Drastically, eventually. I don't
> know how to solve that. A new branching policy
> is not going to help with that.
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development