Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-15 Thread Sze Howe Koh
On 13 May 2014 14:17, Kurt Pattyn pattyn.k...@gmail.com wrote:


 On 13 May 2014, at 08:01, Knoll Lars lars.kn...@digia.com wrote:

 On 12/05/14 22:40, Thiago Macieira thiago.macie...@intel.com wrote:

 Em seg 12 maio 2014, às 19:35:24, Oswald Buddenhagen escreveu:
 On Mon, May 12, 2014 at 08:39:37AM -0700, Thiago Macieira wrote:
 Em seg 12 maio 2014, às 11:48:21, Ulf Hermann escreveu:
 The following changes create a debugsupport module with public API
 in

 qtbase:
 Please create a new module. This doesn't need to be in qtbase.

 given that the two quick implementations will depend on it, it makes
 little sense to split it out, given what else is in qtbase.

 Neither implementation is in qtbase, so I don't see the logic in that
 argument. Yes, it *can* be in qtbase, but I don't see why it *should* be.

 I want to hear a reason of why it should.

 Yes, let’s not make qtbase even bigger if we can avoid it. It’s hard
 enough to work with as it is.

 In that light:

 QtXml is there for historical reasons: there was code that needed it
 (including QtDBus). It can probably be moved out now.

 QtOpenGL and QtConcurrent are also historical and can probably be moved
 out
 too. Especially since those three aren't getting almost any updates, it
 makes
 sense to do it.

 QtDBus needs to stay because the XCB plugin needs it for some D-Bus
 protocols
 (notifications, the new systray protocol, etc.)

 The rest of the libraries in qtbase are really base stuff.

 Actually I was thinking about splitting a few more things out. In addition
 to the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
 instability on the network tests. Splitting out the module should help
 make many of the qtbase integrations go more smoothly.
 This makes sense. Maybe the WebSockets module can be integrated into the 
 network module in that case?
 I would also propose to move some code into qtbase: e.g. the matrix classes 
 that are now in QtGui.

 Cheers,

 Kurt

The term module has multiple meanings in the discussion.

1) Qt module (e.g. Qt Core, Qt GUI, Qt WebSockets)
2) Git submodule (e.g. qtbase.git, qtwebsockets.git)

There is a one-to-one relationship between Qt modules and compiled libraries:
  * Qt Core - Qt5Core.dll
  * Qt GUI - Qt5Gui.dll
  * Qt WebSockets - Qt5WebSockets.dll

However, Git submodules can contain multiple Qt modules. For example,
qtbase.git contains Qt Core, Qt GUI, etc. (so the matrix classes in Qt
GUI are already in qtbase.git ;-) ) See
http://qt-project.org/wiki/Qt_5_Structure for a full list -- it needs
updating, but should be helpful.

Note: There is no Qt module called Qt Base.

When Thiago said Please create a new module, he meant Please create
a new Git submodule. Qt modules can safely be moved between Git
submodules, but classes cannot be moved between Qt modules because
that will break binary compatibility. That means Qt WebSockets cannot
be merged with Qt Network, and the matrix classes cannot be moved out
of Qt GUI, until Qt 6.

(If I remember correctly, QXmlStreamReader/Writer were successfully
moved from Qt XML to Qt Core in Qt 4.4, but it was messy)


To add to the confusion, there's also a third meaning for module in Qt:
3) QML module (e.g. QtQuick, QtQuick.Particles, QtAudioEngine)

* The QtQuick QML module is associated with the Qt Quick Qt module
* The QtQuick.Particles QML module is associated with the Qt Quick Qt module
* The QtAudioEngine QML module is associated with the Qt Multimedia Qt module

Note: There is no Qt module called Qt Audio Engine.


Regards,
Sze-Howe
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-15 Thread Oswald Buddenhagen
On Thu, May 15, 2014 at 07:09:26PM +0800, Sze Howe Koh wrote:
 The term module has multiple meanings in the discussion.
 
 1) Qt module (e.g. Qt Core, Qt GUI, Qt WebSockets)

 2) Git submodule (e.g. qtbase.git, qtwebsockets.git)
 
we refer to them as repositories (as implied by the wiki page you
linked).

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-14 Thread Oliver Wolff

On 13/05/2014 16:47, Thiago Macieira wrote:
 Em ter 13 maio 2014, às 09:57:59, Knoll Lars escreveu:
 That won't help unless we also disable the revdep for QtQuick, as QtQuick
 depends on QtNetwork.
 That doesn’t mean we need to run the network tests as a revdep as well.
 Then the problem is simply of running the network tests. The CI could be smart
 and decide that it doesn't need to run tests/auto/network if src/network
 wasn't modified.


I don't think that this is a good idea. Changes in QtCore which break 
something in network
wouldn't cause a CI error and test failures would only surface as soon 
as a change to network
is made. Isn't that one of the situations we want to avoid?
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-14 Thread Jędrzej Nowacki
On Wednesday 14 of May 2014 08:01:33 Oliver Wolff wrote:
 On 13/05/2014 16:47, Thiago Macieira wrote:
  Em ter 13 maio 2014, às 09:57:59, Knoll Lars escreveu:
  That won't help unless we also disable the revdep for QtQuick, as
  QtQuick
  depends on QtNetwork.
  
  That doesn’t mean we need to run the network tests as a revdep as well.
  
  Then the problem is simply of running the network tests. The CI could be
  smart and decide that it doesn't need to run tests/auto/network if
  src/network wasn't modified.
 
 I don't think that this is a good idea. Changes in QtCore which break
 something in network
 wouldn't cause a CI error and test failures would only surface as soon
 as a change to network
 is made. Isn't that one of the situations we want to avoid?
 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development

Hi,

  As far I know the plan was to have a full Qt5 build and test cycle per day. 
So no, brokenness would be detected much earlier. Btw. the same argumentation 
could be used for every other module. In my opinion it is fine to break 
intermodule dependencies from time to time, assuming that we can detect and 
recover quickly.

Cheers,
  Jędrek
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Knoll Lars
On 12/05/14 22:40, Thiago Macieira thiago.macie...@intel.com wrote:

Em seg 12 maio 2014, às 19:35:24, Oswald Buddenhagen escreveu:
 On Mon, May 12, 2014 at 08:39:37AM -0700, Thiago Macieira wrote:
  Em seg 12 maio 2014, às 11:48:21, Ulf Hermann escreveu:
   The following changes create a debugsupport module with public API
in
  
   qtbase:
  Please create a new module. This doesn't need to be in qtbase.
 
 given that the two quick implementations will depend on it, it makes
 little sense to split it out, given what else is in qtbase.

Neither implementation is in qtbase, so I don't see the logic in that
argument. Yes, it *can* be in qtbase, but I don't see why it *should* be.

I want to hear a reason of why it should.

Yes, let’s not make qtbase even bigger if we can avoid it. It’s hard
enough to work with as it is.

In that light:

QtXml is there for historical reasons: there was code that needed it
(including QtDBus). It can probably be moved out now.

QtOpenGL and QtConcurrent are also historical and can probably be moved
out 
too. Especially since those three aren't getting almost any updates, it
makes 
sense to do it.

QtDBus needs to stay because the XCB plugin needs it for some D-Bus
protocols 
(notifications, the new systray protocol, etc.)

The rest of the libraries in qtbase are really base stuff.

Actually I was thinking about splitting a few more things out. In addition
to the ones mentioned above, I believe we would benefit from splitting
QtNetwork out into it’s own module. The reason is that QtNetwork is
responsible for many of the failing CI runs due to the inherent
instability on the network tests. Splitting out the module should help
make many of the qtbase integrations go more smoothly.

From what I can see nothing else in qtbase (apart from the bearer plugins)
depends on qtnetwork, so a split should be possible.

Cheers,
Lars

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Kurt Pattyn


 On 13 May 2014, at 08:01, Knoll Lars lars.kn...@digia.com wrote:
 
 On 12/05/14 22:40, Thiago Macieira thiago.macie...@intel.com wrote:
 
 Em seg 12 maio 2014, às 19:35:24, Oswald Buddenhagen escreveu:
 On Mon, May 12, 2014 at 08:39:37AM -0700, Thiago Macieira wrote:
 Em seg 12 maio 2014, às 11:48:21, Ulf Hermann escreveu:
 The following changes create a debugsupport module with public API
 in
 
 qtbase:
 Please create a new module. This doesn't need to be in qtbase.
 
 given that the two quick implementations will depend on it, it makes
 little sense to split it out, given what else is in qtbase.
 
 Neither implementation is in qtbase, so I don't see the logic in that
 argument. Yes, it *can* be in qtbase, but I don't see why it *should* be.
 
 I want to hear a reason of why it should.
 
 Yes, let’s not make qtbase even bigger if we can avoid it. It’s hard
 enough to work with as it is.
 
 In that light:
 
 QtXml is there for historical reasons: there was code that needed it
 (including QtDBus). It can probably be moved out now.
 
 QtOpenGL and QtConcurrent are also historical and can probably be moved
 out 
 too. Especially since those three aren't getting almost any updates, it
 makes 
 sense to do it.
 
 QtDBus needs to stay because the XCB plugin needs it for some D-Bus
 protocols 
 (notifications, the new systray protocol, etc.)
 
 The rest of the libraries in qtbase are really base stuff.
 
 Actually I was thinking about splitting a few more things out. In addition
 to the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
 instability on the network tests. Splitting out the module should help
 make many of the qtbase integrations go more smoothly.
This makes sense. Maybe the WebSockets module can be integrated into the 
network module in that case?
I would also propose to move some code into qtbase: e.g. the matrix classes 
that are now in QtGui.

Cheers,

Kurt
 
 From what I can see nothing else in qtbase (apart from the bearer plugins)
 depends on qtnetwork, so a split should be possible.
 
 Cheers,
 Lars
 
 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Kalinowski Maurice
 The rest of the libraries in qtbase are really base stuff.
 
 Actually I was thinking about splitting a few more things out. In addition to
 the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent instability on
 the network tests. Splitting out the module should help make many of the
 qtbase integrations go more smoothly.
 
 From what I can see nothing else in qtbase (apart from the bearer plugins)
 depends on qtnetwork, so a split should be possible.

What about modules depending on qtbase in general? We have had quite many case 
where a change in qtbase caused e.g. qtdeclarative to not work anymore and CI 
for those modules are blocked then. Unfortunately the delay until developers 
recognized that can easily cause 1-2 days of delay. Splitting qtbase might 
increase this case, either for qtnetwork integration misbehaving after changes 
in qtbase, but also for modules depending on qtnetwork.

Comparing those two situations, do you think it's a better trade for moving 
network out?

Maurice

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Knoll Lars
On 13/05/14 08:23, Kalinowski Maurice maurice.kalinow...@digia.com
wrote:

 The rest of the libraries in qtbase are really base stuff.
 
 Actually I was thinking about splitting a few more things out. In
addition to
 the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
instability on
 the network tests. Splitting out the module should help make many of the
 qtbase integrations go more smoothly.
 
 From what I can see nothing else in qtbase (apart from the bearer
plugins)
 depends on qtnetwork, so a split should be possible.

What about modules depending on qtbase in general? We have had quite many
case where a change in qtbase caused e.g. qtdeclarative to not work
anymore and CI for those modules are blocked then. Unfortunately the
delay until developers recognized that can easily cause 1-2 days of
delay. Splitting qtbase might increase this case, either for qtnetwork
integration misbehaving after changes in qtbase, but also for modules
depending on qtnetwork.

Comparing those two situations, do you think it's a better trade for
moving network out?

Yes, we had a few cases like that, esp. with declarative as it depends on
some internals in QtCore/Gui. But these breakages have started to happen
less often, so I’m less worried about them now than I used to be.

IMO qtbase is a bit too large now as it is. We often have too many changes
being staged at the same time, and CI runs failing because of this making
it hard to get things into qtbase. So helping qtbase CI runs will IMO make
things more productive overall.

Cheers,
Lars

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Thiago Macieira
Em ter 13 maio 2014, às 06:01:00, Knoll Lars escreveu:
 Actually I was thinking about splitting a few more things out. In addition
 to the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
 instability on the network tests. Splitting out the module should help
 make many of the qtbase integrations go more smoothly.
 
 From what I can see nothing else in qtbase (apart from the bearer plugins)
 depends on qtnetwork, so a split should be possible.

That won't help unless we also disable the revdep for QtQuick, as QtQuick 
depends on QtNetwork.

We definitely need the QtNetwork tests rerun every time a change in QIODevice 
is made (3 of the 6 classes deriving from it are in QtNetwork), but that could 
be managed.

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

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Bubke Marco
Actually the different the difference between qtdeclarative and qtbase is 
already producing enough overhead. For example bisect is hard to impossible 
which I need to do often to find out smart changes. 

What about to break the 1:1 relationship between CI modules and repositories. 
Why not have more than one CI module for qtbase? 

Best, Marco
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Knoll Lars
On 13/05/14 08:57, Thiago Macieira thiago.macie...@intel.com wrote:

Em ter 13 maio 2014, às 06:01:00, Knoll Lars escreveu:
 Actually I was thinking about splitting a few more things out. In
addition
 to the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
 instability on the network tests. Splitting out the module should help
 make many of the qtbase integrations go more smoothly.
 
 From what I can see nothing else in qtbase (apart from the bearer
plugins)
 depends on qtnetwork, so a split should be possible.

That won't help unless we also disable the revdep for QtQuick, as QtQuick
depends on QtNetwork.

That doesn’t mean we need to run the network tests as a revdep as well.

We definitely need the QtNetwork tests rerun every time a change in
QIODevice 
is made (3 of the 6 classes deriving from it are in QtNetwork), but that
could 
be managed.

I don’t see that as a big problem. How often do we change QIODevice in
practice? It’s a couple of times per year.

Cheers,
Lars

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Knoll Lars
On 13/05/14 11:49, Bubke Marco marco.bu...@digia.com wrote:

Actually the different the difference between qtdeclarative and qtbase is
already producing enough overhead. For example bisect is hard to
impossible which I need to do often to find out smart changes.

I very much disagree. The changes and refactorings we did to declarative
over the last year would IMO have been a lot harder to do with a
monolithic repository.

Bisecting qtdeclarative works usually well on the latest qtbase, and
bisecting qtbase can be done independent of qtdeclarative. It’s only in
the relatively rare case that a qtbase change caused a break in
declarative that this is an issue. I believe that’s worth the trade off.
 

What about to break the 1:1 relationship between CI modules and
repositories. Why not have more than one CI module for qtbase?

How do you imagine that should that work in practice?

Lars

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Oswald Buddenhagen
On Tue, May 13, 2014 at 06:01:00AM +, Knoll Lars wrote:
 Actually I was thinking about splitting a few more things out. In addition
 to the ones mentioned above, I believe we would benefit from splitting
 QtNetwork out into it’s own module. The reason is that QtNetwork is
 responsible for many of the failing CI runs due to the inherent
 instability on the network tests. Splitting out the module should help
 make many of the qtbase integrations go more smoothly.
 
well, who has not thought about it ...

anyway, as others pointed out, cutting down the implicit revdeps
resulting from the modules being lumped together will certainly increase
the problems further down the line.

the root cause of that is obviously our rather poor test coverage.
in fact, when i was serving as the gerrit staging monkey a few weeks
ago, i found that only a marginal number of fixes actually does come
with an autotest. what's more, i observed that the external regulars are
on average actually more careful about that than digians. whoopsie.

i proposed a concept for addressing the integration unreliability months
ago here, and it was accepted by the ci team. it just needs to be
implemented ...
until then, i suggest we keep the status quo to not risk messing things
up even more.

what's become of the new network test server, anyway?
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Peter Hartmann
On 05/13/2014 12:19 PM, Oswald Buddenhagen wrote:
 what's become of the new network test server, anyway?

IIRC there is one test failure showing on the new image, but not on the 
old one (see my mail some months ago: 
https://www.mail-archive.com/development@qt-project.org/msg14730.html). 
Once that is fixed, we can try to deploy the new image and see whether 
it is more stable. But since I cannot reproduce the problem locally, it 
is hard to fix the issue from outside the Digia intranet; if there was a 
way for me to access that environment looking into the issue would be 
more promising...

Peter

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Bubke Marco
From: Knoll Lars
On 13/05/14 11:49, Bubke Marco marco.bu...@digia.com wrote:
Actually the different the difference between qtdeclarative and qtbase is
already producing enough overhead. For example bisect is hard to
impossible which I need to do often to find out smart changes.

I very much disagree. The changes and refactorings we did to declarative
over the last year would IMO have been a lot harder to do with a
monolithic repository.

I don't say that it is easier if you work in the modules. I do say that it is 
harder 
if you work outside. For example we use now in the designer Qml and the 
controls heavily and many bugs popping up. Normally I would use bisect
to find out the change but because it is so time consuming I simply ignore
them.

Bisecting qtdeclarative works usually well on the latest qtbase, and
bisecting qtbase can be done independent of qtdeclarative. It’s only in
the relatively rare case that a qtbase change caused a break in
declarative that this is an issue. I believe that’s worth the trade off.

You see from your perspective it is easier from my it is harder.

What about to break the 1:1 relationship between CI modules and
repositories. Why not have more than one CI module for qtbase?

How do you imagine that should that work in practice?

If you change a file in a module you get through that CI system. You should add
other CI modules if you think your change could triggering bugs there.

E.g. you change network code. Then the network CI should run, maybe the CI for
declarative-network and web-network too. So the CI modules should be smaller
so less unaffected code would be tested.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Thiago Macieira
Em ter 13 maio 2014, às 09:57:59, Knoll Lars escreveu:
 That won't help unless we also disable the revdep for QtQuick, as QtQuick
 depends on QtNetwork.
 
 That doesn’t mean we need to run the network tests as a revdep as well.

Then the problem is simply of running the network tests. The CI could be smart 
and decide that it doesn't need to run tests/auto/network if src/network 
wasn't modified.

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

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


Re: [Development] Modules in qtbase (was: Re: new debugsupport module and API)

2014-05-13 Thread Frederik Gladhorn
Tirsdag 13. mai 2014 06.23.46 skrev Kalinowski Maurice:
  The rest of the libraries in qtbase are really base stuff.
  
  
  Actually I was thinking about splitting a few more things out. In addition
  to
 the ones mentioned above, I believe we would benefit from splitting
  QtNetwork out into it’s own module. The reason is that QtNetwork is
  responsible for many of the failing CI runs due to the inherent
  instability on the network tests. Splitting out the module should help
  make many of the qtbase integrations go more smoothly.
  
  From what I can see nothing else in qtbase (apart from the bearer
  plugins)
  depends on qtnetwork, so a split should be possible.
 
 
 What about modules depending on qtbase in general? We have had quite many
 case where a change in qtbase caused e.g. qtdeclarative to not work anymore
 and CI for those modules are blocked then. Unfortunately the delay until
 developers recognized that can easily cause 1-2 days of delay. Splitting
 qtbase might increase this case, either for qtnetwork integration
 misbehaving after changes in qtbase, but also for modules depending on
 qtnetwork.
 
 Comparing those two situations, do you think it's a better trade for moving
 network out?

I think the problem of dependent modules should be solved in a different way. 
I've been pushing for quite a while to have nightly builds of all modules in 
the CI so we'll get notified when something breaks. So imho the problem is 
that we don't build some of the modules until they get a patch or there's 
going to be a release.

Hopefully this will be changed really soon now... the last blocker seems 
actually just the publishing of the results, everything else is in place.

Cheers,
Frederik

 
 Maurice
 
 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development

-- 
Best regards,
Frederik Gladhorn
Senior Software Engineer - Digia, Qt
Visit us on: http://qt.digia.com

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