Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Eskil Abrahamsen Blomfeldt

On 05.02.2020 13:04, Jani Heikkinen wrote:
>
>> -Original Message-
>> From: Eskil Abrahamsen Blomfeldt 
>> Sent: keskiviikko 5. helmikuuta 2020 13.06
>> To: Edward Welbourne ; Jani Heikkinen
>> ; Lars Knoll ; Volker Hilsheimer
>> 
>> Cc: Qt development mailing list ;
>> releas...@qt-project.org
>> Subject: Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is
>> in effect now
>>
>>
>> On 05.02.2020 11:50, Edward Welbourne wrote:
>>> Jani Heikkinen (5 February 2020 06:42)
 Why this is so important that we should get the exception & go in after
>> FF?
>>> Do we allow changes approved before feature freeze to get past the
>>> Coin hurdle, even if that happens after FF ?  How much fixing of the
>>> change (if it turns out to have problems integrating) is acceptable,
>>> before we declare that it's no longer the change that was approved in time
>> ?
>>
>>
>> If the change is ready and approved by the time of feature freeze and only
>> delayed by CI problems, failures from other changes in a batch, or the
>> awkwardness of our dependency structure, I think it has to be acceptable to
>> merge after the freeze. Otherwise feature freeze becomes a lottery where
>> the features in a given release is based mostly on chance.
> By default we shouldn't put any new features in after FF, not even those 
> which were approved early enough. Not respecting the freeze date was one of 
> biggest reasons why we failed to keep the release schedule with earlier 
> releases. And after we started to be much tighter with the freeze we have 
> been much better to keep the schedules as well...

Hi,

You are looking at this from a very different perspective than me, which 
is totally understandable.

As a developer of the product, I want a deadline for when I should have 
my feature finished. If the deadline is "maybe one month before the 
feature freeze, maybe one week, who knows it kind of depends on whether 
the CI system is acting up and what other changes your fix happens to be 
bundled with", then that makes it impossible to plan anything.

If we estimate, based on statistics, that it will take one month to get 
features in, then we should set the feature freeze one month earlier. If 
we think it will take one week, then we should set it one week earlier. 
At least we should give people a specific date and guarantee that if 
they make it in time for this, their change will be in the next release. 
If this is one month before the actual feature freeze, then so be it. If 
it takes that long to get a change in, then definitely should be very 
visible to everyone, including the stake-holders who depend on features 
being released when we say.

If it turns out that we miscalculated the estimate, then this should 
just cause a delay to the release. It shouldn't cause us to make a 
release containing a random set of features based on whoever won the 
lottery this time.

I understand that your responsibility is making the release on time, and 
late submissions make this difficult, but the way to solve this is to 
add the extra slack between the feature freeze and the point where we 
can start stabilizing to the release schedule. If we see that changes 
that are staged at the freeze date consistently take between 1 day and 1 
week to merge because we have broken systems or because so many people 
stage their changes at the same time, then that means we have to extend 
the period between freeze and release by one week.


> We are doing time based releases so if new feature misses the deadline 
> there will be next one coming after few months. It might be quite long 
> time for unique feature but on the other hand it isn't really that 
> long... Our goal is to cut the schedule between FF and final release, 
> not reserving more time there. Ok, currently there is of course some 
> buffer in; Release plans are based on previous releases and realized 
> schedules there. But we should be able to develop our ways of working 
> & our release systems so that we can make that time much shorter. That 
> way we could get more time to develop new features. 

The next one will be coming after six months in most cases (Qt 5.15 is 
special of course). This is a pretty long time. But more importantly, 
expecting every single developer in the Qt community to internalize the 
flakiness of the CI system or the risk that your change may be rejected 
because it happened to be bundled with a broken change is the wrong 
angle in my opinion. We would just be distributing the responsibility of 
analyzing our release systems to hundreds of people instead of doing it 
once, as part of the release planning.

So if you know how long it will typically take for a change to get in, 
then why not give people the actual date they should target in order to 
be sure to get their changes merged? And if our estimates are wrong, 
then we should own that mistake, instead of telling developers that 
their changes have missed the deadline because we are una

Re: [Development] The future of smart pointers in Qt API

2020-02-07 Thread Eike Ziller
QList is most definitely a typedef to QVector in Qt/dev:

https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/tools/qcontainerfwd.h

> On 6. Feb 2020, at 20:20, Иван Комиссаров  wrote:
> 
> Wait, what?? When did that decision was made?
> 
> I am tired fixing performance bugs induced be the replacement QList with 
> QList>, can we please get rid of the QList class finally?
> 
>> 6 февр. 2020 г., в 20:14, Matthew Woehlke  
>> написал(а):
>> I thought we decided *not* to
>> do that!)
>> 
> 
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development

-- 
Eike Ziller
Principal Software Engineer

The Qt Company GmbH
Erich-Thilo-Straße 10
D-12489 Berlin
eike.zil...@qt.io
http://qt.io
Geschäftsführer: Mika Pälsi,
Juha Varelius, Mika Harjuaho
Sitz der Gesellschaft: Berlin, Registergericht: Amtsgericht Charlottenburg, HRB 
144331 B

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


Re: [Development] Nominating André Hartmann for maintainer for QCanBus API

2020-02-07 Thread Alex Blasche
Its been a while and I lost track of this thead. 

Congratulations to André. I recorded the change of maintainership in 
https://wiki.qt.io/Maintainers

--
Alex


From: Development  on behalf of Alex 
Blasche 
Sent: Tuesday, 26 November 2019 09:36
To: development@qt-project.org
Subject: [Development] Nominating André Hartmann for maintainer for QCanBus API

Hi,

The QCanbus API is part of the QtSerialBus module. Since its first release it 
has come a long way. In particular, André Hartmann & Denis Shienkov made big 
contributions over time. For that I am very grateful. Thank you.

As the current maintainer of the QCanBus API I would like to hand the 
maintainer baton over to André.

He has done a very good job of fixing the day-to-day issues popping up on a 
regular base. Unrelated to QtSerialBus, he contributed to Qt Creator and other 
parts in QtBase.

--
Alex
___
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] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Mark De Wit
> Edward Welbourne
> > Alexander Akulich (6 February 2020 16:33) asked:
> > Are we going to provide some Qt5 → Qt6 migration tool?
> 
> https://codereview.qt-project.org/c/qt/qtrepotools/+/289121
> 
> > It is trivial to grep the sources for
> > "SIGNAL(error(QAbstractSocket::SocketError))" and print a warning
> > about the dangerous Qt4-style connection.
> 
> Check with Friedemann on the review, but I suspect he'd welcome a patch that
> adds that to the tool.

I think clazy has a check for this already?  

https://github.com/KDE/clazy/blob/master/docs/checks/README-old-style-connect.md

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


Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Alexander Akulich
I commented on one exact situation: if we rename
QAbstractSocket::error(QAbstractSocket::SocketError) signal then we
can easily grep sources for all Qt4-style connections to this
particular signal (because it has a very special signature). There is
a place for false-positives but I think it is acceptable.

On Fri, Feb 7, 2020 at 12:38 PM Mark De Wit  wrote:
>
> > Edward Welbourne
> > > Alexander Akulich (6 February 2020 16:33) asked:
> > > Are we going to provide some Qt5 → Qt6 migration tool?
> >
> > https://codereview.qt-project.org/c/qt/qtrepotools/+/289121
> >
> > > It is trivial to grep the sources for
> > > "SIGNAL(error(QAbstractSocket::SocketError))" and print a warning
> > > about the dangerous Qt4-style connection.
> >
> > Check with Friedemann on the review, but I suspect he'd welcome a patch that
> > adds that to the tool.
>
> I think clazy has a check for this already?
>
> https://github.com/KDE/clazy/blob/master/docs/checks/README-old-style-connect.md
>
> Mark
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Edward Welbourne
On 05.02.2020 11:50, Edward Welbourne asked:
 Do we allow changes approved before feature freeze to get past the
 Coin hurdle, even if that happens after FF ?  How much fixing of
 the change (if it turns out to have problems integrating) is
 acceptable, before we declare that it's no longer the change that
 was approved in time ?

Eskil Abrahamsen Blomfeldt (keskiviikko 5. helmikuuta 2020 13.06) replied:
>>> If the change is ready and approved by the time of feature freeze
>>> and only delayed by CI problems, failures from other changes in a
>>> batch, or the awkwardness of our dependency structure, I think it
>>> has to be acceptable to merge after the freeze. Otherwise feature
>>> freeze becomes a lottery where the features in a given release is
>>> based mostly on chance.

Makes sense.  See below.

On 05.02.2020 13:04, Jani Heikkinen wrote:
>> By default we shouldn't put any new features in after FF, not even
>> those which were approved early enough. Not respecting the freeze
>> date was one of biggest reasons why we failed to keep the release
>> schedule with earlier releases. And after we started to be much
>> tighter with the freeze we have been much better to keep the
>> schedules as well...

Eskil Abrahamsen Blomfeldt (7 February 2020 08:58)
> You are looking at this from a very different perspective than me,
> which is totally understandable.

Indeed - still, let us all try to see this from each others'
perspectives.  That gives a better chance of finding a resolution we can
all be happy with.

> As a developer of the product, I want a deadline for when I should
> have my feature finished. If the deadline is "maybe one month before
> the feature freeze, maybe one week, who knows it kind of depends on
> whether the CI system is acting up and what other changes your fix
> happens to be bundled with", then that makes it impossible to plan
> anything.

On the other hand, if a change that should be subject to FF turns out to
have problems that mean it wasn't actually ready in time, how severe can
those problems be and *not* imply that we should keep that feature out ?

This week, we've given special dispensation for things that were delayed
due to minor problems that were known at the time of FF.  That seems a
reasonable level of flexibility in an otherwise hard FF.  If a change
that seemed ready for merge last Friday turns out to cause problems that
weren't anticipated then, unless they are promptly resolved and low-risk
(given the previously accepted change), it makes sense to block that
change until the next release - otherwise, the release process becomes
chaos, as it voids FF's rule about what's in and what's out.

[snip]

> The next one will be coming after six months in most cases (Qt 5.15 is
> special of course). This is a pretty long time. But more importantly,
> expecting every single developer in the Qt community to internalize
> the flakiness of the CI system or the risk that your change may be
> rejected because it happened to be bundled with a broken change is the
> wrong angle in my opinion.

I don't think anyone is currently standing for that position: if the
only thing that's kept a change out is CI failure, or being staged
alongside someone else's broken change [0] on the day of FF, then I
think we're all in agreement that the change "made it in time".  On the
other hand, the broken change whose premature staging blocked others'
changes from getting integrated *should* be subject to scrutiny - if it
can be fixed safely, satisfactorily and promptly then fine, but if it's
going to delay other changes with further integration failures then we
should be ready to Just Say No to it after the FF deadline passes.

[0] and you know which change I'm thinking of, Eskil.
I'm happy to see it got fixed up quickly ;^>

We presently have (only semi-formally) a process that requires API
changes to be in by the FF deadline but provides for community
(i.e. this list) approval of stragglers, when we are confident they are
unlikely to harm stability or schedule.  That seems workable.

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


Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Tuukka Turunen

Hi,

In practice we also do have some slack in the schedule exactly to allow sorting 
everything out. Unfortunately it is often not long enough, but we have delay in 
getting the alpha out. I do agree that we should include the features that are 
ready in time - and I do not think there are many who would disagree. 

One thing that tends to happen is the last minute pile up of commits at or near 
the FF time. While understandable, the more we can do to avoid this the more 
likely it is to have successful integrations. 

Especially with Qt 6 we need to make sure as many items as possible are not 
piling up just at the FF date. Maybe we should set a bit earlier FF date for 
the modules most others depend upon? Or other similar phasing instead of a day 
when everything needs to be in. 

Yours,

Tuukka
 

On 7.2.2020, 9.59, "Releasing on behalf of Eskil Abrahamsen Blomfeldt" 
 wrote:


On 05.02.2020 13:04, Jani Heikkinen wrote:
>
>> -Original Message-
>> From: Eskil Abrahamsen Blomfeldt 
>> Sent: keskiviikko 5. helmikuuta 2020 13.06
>> To: Edward Welbourne ; Jani Heikkinen
>> ; Lars Knoll ; Volker Hilsheimer
>> 
>> Cc: Qt development mailing list ;
>> releas...@qt-project.org
>> Subject: Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze 
is
>> in effect now
>>
>>
>> On 05.02.2020 11:50, Edward Welbourne wrote:
>>> Jani Heikkinen (5 February 2020 06:42)
 Why this is so important that we should get the exception & go in after
>> FF?
>>> Do we allow changes approved before feature freeze to get past the
>>> Coin hurdle, even if that happens after FF ?  How much fixing of the
>>> change (if it turns out to have problems integrating) is acceptable,
>>> before we declare that it's no longer the change that was approved in 
time
>> ?
>>
>>
>> If the change is ready and approved by the time of feature freeze and 
only
>> delayed by CI problems, failures from other changes in a batch, or the
>> awkwardness of our dependency structure, I think it has to be acceptable 
to
>> merge after the freeze. Otherwise feature freeze becomes a lottery where
>> the features in a given release is based mostly on chance.
> By default we shouldn't put any new features in after FF, not even those 
which were approved early enough. Not respecting the freeze date was one of 
biggest reasons why we failed to keep the release schedule with earlier 
releases. And after we started to be much tighter with the freeze we have been 
much better to keep the schedules as well...

Hi,

You are looking at this from a very different perspective than me, which 
is totally understandable.

As a developer of the product, I want a deadline for when I should have 
my feature finished. If the deadline is "maybe one month before the 
feature freeze, maybe one week, who knows it kind of depends on whether 
the CI system is acting up and what other changes your fix happens to be 
bundled with", then that makes it impossible to plan anything.

If we estimate, based on statistics, that it will take one month to get 
features in, then we should set the feature freeze one month earlier. If 
we think it will take one week, then we should set it one week earlier. 
At least we should give people a specific date and guarantee that if 
they make it in time for this, their change will be in the next release. 
If this is one month before the actual feature freeze, then so be it. If 
it takes that long to get a change in, then definitely should be very 
visible to everyone, including the stake-holders who depend on features 
being released when we say.

If it turns out that we miscalculated the estimate, then this should 
just cause a delay to the release. It shouldn't cause us to make a 
release containing a random set of features based on whoever won the 
lottery this time.

I understand that your responsibility is making the release on time, and 
late submissions make this difficult, but the way to solve this is to 
add the extra slack between the feature freeze and the point where we 
can start stabilizing to the release schedule. If we see that changes 
that are staged at the freeze date consistently take between 1 day and 1 
week to merge because we have broken systems or because so many people 
stage their changes at the same time, then that means we have to extend 
the period between freeze and release by one week.


> We are doing time based releases so if new feature misses the deadline 
> there will be next one coming after few months. It might be quite long 
> time for unique feature but on the other hand it isn't really that 
> long... Our goal is to cut the schedule between FF and final release, 
> not reserving more time there. Ok, 

Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Alexander Akulich
I started to work on the error() signal renaming here:

https://codereview.qt-project.org/q/topic:%22error-occured%22


On Wed, Feb 5, 2020 at 10:12 PM Thiago Macieira
 wrote:
>
> On Wednesday, 5 February 2020 09:41:58 PST Alexander Akulich wrote:
> > On Wed, Feb 5, 2020 at 6:58 PM Thiago Macieira
> >
> >  wrote:
> > > The correct signal for an error situation is errorOccurred, like in
> > > QLocalSocket and QProcess.
> >
> > Actually both QLocalSocket and QAbstractSocket renamed the "error()"
> > getter to keep using "error()" signal as opposed to many other Qt
> > modules "errorOccurred()" signals.
>
> Which is the opposite of QProcess and violates the naming convention. Signals
> are named after verbs in the past tense and properties & property getters are
> simple nouns. So "error" is the getter, "errorOccurred" is the signal.
>
> qprocess.h:
>
> #if QT_DEPRECATED_SINCE(5, 6)
> QT_DEPRECATED_X("Use QProcess::errorOccurred(QProcess::ProcessError)
> instead")
> void error(QProcess::ProcessError error);
> #endif
> void errorOccurred(QProcess::ProcessError error);
>
>
> --
> Thiago Macieira - thiago.macieira (AT) intel.com
>   Software Architect - Intel System Software Products
>
>
>
> ___
> 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] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Thiago Macieira
On Wednesday, 5 February 2020 15:34:27 PST Alexander Akulich wrote:
> Do we want to sort out all overloads of error() signal/getter in all
> (essential?) modules for Qt 6?
> 
> For example, Qt Multimedia still has more than a dozen public classes
> with such overloads (of a signal and a getter) in 5.15 and dev.

We wanted to do it for 5.6, so 6.0 seems like early enough, yes.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



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


Re: [Development] The future of smart pointers in Qt API

2020-02-07 Thread Matthew Woehlke
On 07/02/2020 03.14, Eike Ziller wrote:
> QList is most definitely a typedef to QVector in Qt/dev:

What happened to providing a container type with guaranteed indirect
storage? There remains no such type in STL.

Last I saw, I thought we were going to provide that...

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


Re: [Development] [Releasing] HEADS-UP: Qt 5.15 Feature Freeze is in effect now

2020-02-07 Thread Thiago Macieira
On Thursday, 6 February 2020 05:51:17 PST Alex Blasche wrote:
> Either option solves the ambiguity. What's more important to our users - a
> consistent naming convention or an early warning/compile error when
> adopting Qt 6?

False dichotomy. Both are important and both are achievable.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



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


Re: [Development] Using SSE/NEON in Qt 6

2020-02-07 Thread Thiago Macieira
On Thursday, 6 February 2020 03:45:51 PST Lars Knoll wrote:
> Hi,
> 
> We’ve seen that in a couple of places things like matrix operations are a
> CPU bottleneck. Being able to provide SSE/NEON optimised versions of some
> of those operations could help significantly. 
 
> On x86/x64, we require SSE2 already anyway, so we should be able to use
> those unconditionally. On ARM, we can make this a compile time option with
> a C implementation as the fallback.

x86-64 instruction set mandates SSE2 and it's used anyway because it's the ABI 
way of doing floating point operations. So SSE2 should be no brainer on 64-
bit.

The question is what to do for 32-bit. I don't think it's very difficult, 
though: if we have the SSE2 code in the header, then it's checked by 
#ifdef __SSE2__
and there'll be a fallback path anyway. That fallback path will be the non-
SSE2 i386 code path.

Then there's the question of how to package this. I suggest that we enable 
SSE2 by default on the Windows 32-bit build, if we still have a 32-bit build. 
We don't ship 32-bit Mac or Linux builds. For Linux distributions, this is 
also already solved: build twice and place one lib in /usr/lib and the other 
in /usr/lib/sse2. GNU libc knows how to load this.
 
> One problem is, that we can only get full benefit out of those if we can
> offer them inline. That would basically imply making our qsimd_p.h header
> public and including that one from qvectornd.h and qmatrixnxn.h (so that we
> can implement the operations using the SSE/NEON intrinsics). If we do that,
> we could e.g. implement QVector4D holding a __m128 value (and the neon
> equivalent on ARM).

We should simplify qsimd_p.h. There's some compatibility code there for GCC 
pre-4.9, which we don't support any more in 5.14.

We need to decide whether we want runtime detection in inline headers. If we 
do, then we need an API for that and qCpuHasFeature hasn't maintained ABI. 
Moreover, we'll get requests for features that we don't currently need/use.

If we don't need runtime detection, then just #include  or a 
wrapper header to deal with MSVC not defining __SSE2__. qfloat16.h does that.

We also need to decide whether we want the macro normalisation that qsimd_p.h 
does should be public too. qsimd_p.h defines the GCC/Clang macros that ICC and 
MSVC don't (__F16C__, __PCLMUL__, __FMA__, __LZCNT__, etc.).
 
> I personally don’t think including qsimd.h (and implicitly immintrin.h) from
> our public headers would be a problem, but I’d be happy to hear arguments
> for/against it.

immintrin.h shouldn't be. qsimd_p.h only after clean up and especially nailing 
the qCpuHasFeataure() API.

> As a side note: SSE 4.1 offers some nice additional instructions that would
> simplify some of the operations. Should we keep the minimum requirement for
> SSE at version 2, or can we raise it to 4.1?

I don't recommend it. The gain compared to SSE2 is not enough and it brings 
headaches. Instead, write code paths that use __AVX2__. Lots of modern CPUs 
support it and they can be co-installed with the main version on Linux (like 
Clear Linux does and I've done for my openSUSE package) and on Macs.

It doesn't need to be #ifdef __AVX2__. Code should use the minimum feature 
that they support, like qhash.cpp and qstring.cpp do. That has the following 
benefits:

1) Mac 64-bit and Clear Linux have SSE4.2 as a baseline, so they'll be enabled 
even for the base versioni

2) People building from sources with -march=native (Gentoo users?) on older 
but pre-AVX2 machines will get benefit too

3) For matrix multiplication, I bet that __FMA__ is actually a much more 
important gain than anything else and it comes with the same architecture as 
__AVX2__. Use qCpuHasFeature(ArchHaswell)

I recommend the 64-bit Linux and Mac binaries include AVX2 versions for the 
libraries that most benefit from it (QtCore, QtGui and Qt3D).

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



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