Re: [Development] new debugsupport module and API

2014-06-02 Thread Knoll Lars
On 19/05/14 15:39, Ulf Hermann ulf.herm...@digia.com wrote:

 Please don't. quick1 is especially usefull on platforms without any
OpenGL.
 And quick1 can be built without qtdeclarative. Most of the current
 dependencies are optional, and even qtwebkit depending on qtdeclarative
is
 artificial in qt.pro. qtwebkit certainly builds and runs without it in
Qt
 5.3.0-rc1.

Maybe we just shouldn't touch quick1 anymore for things like refactoring
and cleanup. I'll leave it alone for now. You'll still be able to use
the debug client with quick1 applications, of course.

Yes, let’s please leave qtquick1 alone. Trying to merge it’s QML parser
with the parser in qtdeclarative doesn’t give any benefits, just adds a
lot of work.

Cheers,
Lars

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


Re: [Development] new debugsupport module and API

2014-05-27 Thread Aleix Pol
On Thu, May 15, 2014 at 11:41 AM, Olivier Goffart oliv...@woboq.com wrote:

 On Monday 12 May 2014 11:48:21 Ulf Hermann wrote:
  Hi,
 
  we currently have several implementations of the QML debug protocol used
  to transmit data between a debugger or profiler and the application
  being debugged or profiled. I'm proposing a generalized debugsupport
  module to address various issues with those. In particular:

 Unrelated, but there is also the private qmljs library, which contains the
 qml
 parser, which is duplicated all over the place (qtquick1, qtdeclarative,
 qtcreator, kdevelop)
 (And I was also considering using it for a code browser ;-) )

 Maybe that library also belong in the same repository, qmlhelpers ?

 --
 Olivier

 Woboq - Qt services and support - http://woboq.com - http://code.woboq.org

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


For what it's worth and with my KDevelop hat on, having access to different
qml tooling would be very welcome. We don't like forking the code off.
Also we'll be reviewing our side of these issues in the KDE SDK meeting
this summer [1], maybe somebody would like to come and say hi. Furthermore,
I'm also planning to attend the Qt Contributor Summit, it might be a good
idea to have a session about QML/Quick tools creation.

Cheers!
Aleix

[1] http://dot.kde.org/2014/05/27/randa-moving-kde-forward
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] new debugsupport module and API

2014-05-19 Thread Michael Olbrich
On Thu, May 15, 2014 at 09:16:38AM -0700, Thiago Macieira wrote:
 Em qui 15 maio 2014, às 11:28:28, Oswald Buddenhagen escreveu:
   This code does not belong into Qt Base,
  
  if you accept that the library is an improvement over the 6 copies we
  have all over the place, the question is only where, not if.
  if you insist on making it a separate repository, we'll have a tiny repo
  which is an additional dependency of quick1 and declarative, and which
  just adds additional burden to any release-related activities.
  i wonder who'd benefit from *that*.
 
 Since quick1 depends on declarative through the dependency on qtwebkit and 
 qttools, the library could be directly on qtdeclarative for now.

Please don't. quick1 is especially usefull on platforms without any OpenGL.
And quick1 can be built without qtdeclarative. Most of the current
dependencies are optional, and even qtwebkit depending on qtdeclarative is
artificial in qt.pro. qtwebkit certainly builds and runs without it in Qt
5.3.0-rc1.

Regards,
Michael

-- 
Pengutronix e.K.   | |
Industrial Linux Solutions | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0|
Amtsgericht Hildesheim, HRA 2686   | Fax:   +49-5121-206917- |
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] new debugsupport module and API

2014-05-19 Thread Ulf Hermann
 Please don't. quick1 is especially usefull on platforms without any OpenGL.
 And quick1 can be built without qtdeclarative. Most of the current
 dependencies are optional, and even qtwebkit depending on qtdeclarative is
 artificial in qt.pro. qtwebkit certainly builds and runs without it in Qt
 5.3.0-rc1.

Maybe we just shouldn't touch quick1 anymore for things like refactoring 
and cleanup. I'll leave it alone for now. You'll still be able to use 
the debug client with quick1 applications, of course.

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


Re: [Development] new debugsupport module and API

2014-05-15 Thread Oswald Buddenhagen
On Wed, May 14, 2014 at 11:20:10PM +0200, André Pönitz wrote:
 This code does not belong into Qt Base,

if you accept that the library is an improvement over the 6 copies we
have all over the place, the question is only where, not if.
if you insist on making it a separate repository, we'll have a tiny repo
which is an additional dependency of quick1 and declarative, and which
just adds additional burden to any release-related activities.
i wonder who'd benefit from *that*.

 nor should it be advertised as a re-usable framework.
 
that decision is orthogonal to the physical location.
or seen from a different angle, it would be harder to hide it if it
was a separate module (well, not really, we did that with qtjsbackend).

but then, i'd totally advocate a git submodule. there would be
complaining how badly this stuff is integrated into the git ui, and we'd
have to make a few adjustments here and there, but overall the solution
is workable.
then i could finally get rid of the three copies of the qmake
evaluator, too ...
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] new debugsupport module and API

2014-05-15 Thread Olivier Goffart
On Monday 12 May 2014 11:48:21 Ulf Hermann wrote:
 Hi,
 
 we currently have several implementations of the QML debug protocol used
 to transmit data between a debugger or profiler and the application
 being debugged or profiled. I'm proposing a generalized debugsupport
 module to address various issues with those. In particular:

Unrelated, but there is also the private qmljs library, which contains the qml 
parser, which is duplicated all over the place (qtquick1, qtdeclarative, 
qtcreator, kdevelop)
(And I was also considering using it for a code browser ;-) )

Maybe that library also belong in the same repository, qmlhelpers ?

-- 
Olivier 

Woboq - Qt services and support - http://woboq.com - http://code.woboq.org

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


Re: [Development] new debugsupport module and API

2014-05-15 Thread Simon Hausmann
On Thursday 15. May 2014 11.41.36 Olivier Goffart wrote:
 On Monday 12 May 2014 11:48:21 Ulf Hermann wrote:
  Hi,
  
  we currently have several implementations of the QML debug protocol used
  to transmit data between a debugger or profiler and the application
  being debugged or profiled. I'm proposing a generalized debugsupport
 
  module to address various issues with those. In particular:
 Unrelated, but there is also the private qmljs library, which contains the
 qml parser, which is duplicated all over the place (qtquick1,
 qtdeclarative, qtcreator, kdevelop)
 (And I was also considering using it for a code browser ;-) )
 
 Maybe that library also belong in the same repository, qmlhelpers ?

Given the divergence of grammar between QtQuick1 and QtQml I suggest we keep 
the static qmldevtools library in the qtdeclarative repository. Anything need 
it maybe can depend on qtdeclarative?

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


Re: [Development] new debugsupport module and API

2014-05-15 Thread Thiago Macieira
Em qui 15 maio 2014, às 11:28:28, Oswald Buddenhagen escreveu:
  This code does not belong into Qt Base,
 
 if you accept that the library is an improvement over the 6 copies we
 have all over the place, the question is only where, not if.
 if you insist on making it a separate repository, we'll have a tiny repo
 which is an additional dependency of quick1 and declarative, and which
 just adds additional burden to any release-related activities.
 i wonder who'd benefit from *that*.

Since quick1 depends on declarative through the dependency on qtwebkit and 
qttools, the library could be directly on qtdeclarative for now.

-- 
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] new debugsupport module and API

2014-05-14 Thread Milian Wolff
On Tuesday 13 May 2014 21:58:29 André Pönitz wrote:
 On Tue, May 13, 2014 at 05:30:43PM +0200, Ulf Hermann wrote:
   Please create a new module. This doesn't need to be in qtbase.
  
  Is anyone opposed to keeping this in a separate qtdebugsupport.git
  repository, then?
 
 I am.
 
 At the very least, this is still missing an explanation what actual
 problems this is going to solve, and a few _plausible_ scenarios
 where this code will be reused.

 A couple of users actually asking for such a framework would already
 help to understand the need.


Hey Andre,

let me (re-)raise two valid use cases for this new repository: GammaRay and 
KDevelop (as previously mentioned by Kai). But I guess people out there 
working on any other IDE might want to use it eventually, if they add support 
for QML. Momentics comes into mind there.

 Once the need to have it is established, the implementation can be
 discussed.

I would like to see such a debugsupport module.

Bye
-- 
Qt Developer Days 2014 - October 6 - 8 at BCC, Berlin

Milian Wolff | milian.wo...@kdab.com | Software Engineer
KDAB (Deutschland) GmbHCo KG, a KDAB Group company
Tel. Germany +49-30-521325470, Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-independent software solutions

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


Re: [Development] new debugsupport module and API

2014-05-14 Thread André Pönitz
On Wed, May 14, 2014 at 11:37:45AM +0200, Milian Wolff wrote:
 On Tuesday 13 May 2014 21:58:29 André Pönitz wrote:
  On Tue, May 13, 2014 at 05:30:43PM +0200, Ulf Hermann wrote:
Please create a new module. This doesn't need to be in qtbase.
   
   Is anyone opposed to keeping this in a separate qtdebugsupport.git
   repository, then?
  
  I am.
  
  At the very least, this is still missing an explanation what actual
  problems this is going to solve, and a few _plausible_ scenarios
  where this code will be reused.
 
  A couple of users actually asking for such a framework would already
  help to understand the need.
 
 
 Hey Andre,
 
 let me (re-)raise two valid use cases for this new repository: GammaRay and 
 KDevelop (as previously mentioned by Kai). But I guess people out there 
 working on any other IDE might want to use it eventually, if they add support 
 for QML. Momentics comes into mind there.

  Once the need to have it is established, the implementation can be
  discussed.
 
 I would like to see such a debugsupport module.

That's a clear vote.


I'd still like to try to set expectations right:

I understand the proposition _sounds_ good, and the code actually _looks_
good. But it doesn't _do_ anything sensible, nor does it help when
trying to do anything sensible.

What's currently proposed to be moved into Qt Base is several thousand
lines of pure infrastructure for things like packet and connection
handling.

_There is no actual debugging or profiling service included_.

The communication protocol used is completely ad-hoc, and not used by
anything else in the world.

This infrastructure supports _only_ services that run _inside_ the
application it examines, i.e. a profiler based on this framework shares
address space, including heap, network connection etc. with the object it
claims to profile, _while using resources of this object for its own
operations_.

Unless special measure are taken, the service will remain and be accessible
in the deployed application. There is no build-in security.

This infastructure cannot be used to interface classical profiling/debugging
tools like Valgrind, GDB, etc.

It does _not_ simplify IDE integration:

First, it can as-is only be used with Qt based clients/IDEs. This won't
be much of a problem for KDevelop or GammaRay, but e.g. Momentics would
have to wrap or essentially re-do the client side in Java.

Second, Qt based frontends do not get a free ride either. Exemplified by
Qt Creator: The amount of code needed to use that framework in the debugger
plugin to make QML debugging work is in the same order as the amount of
code we have for the direct GDB and LLDB interfaces. And to put it into
proportion, plugin/debugger/qml/* is roughly 1.5 the size plugins/designer,
the Qt Designer integration.


I maintain that this framework is completely over-engineered. It does not
work like typical tools in the field, nor does it help to write such tools.
I believe there is not a single use case where it gives any benefit over a
direct implementation of whatever kind of communication/data extraction is
needed. This code does not belong into Qt Base, nor should it be advertised
as a re-usable framework.

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread Koehne Kai
 -Original Message-
 From: André Pönitz [mailto:apoen...@t-online.de]
 [...]
 Consolidation of various incarnations of the code might make sense,
 exporting would need a good reason.

One of the reasons for the different incarnations of the client side of the 
debug API
in Qt Creator  qtdeclarative is that it's not public API, and we usually try 
to avoid using private Qt API in Qt Creator. Instead, we just copied it.

An alternative to making it exported API would be putting it 
in a git submodule that Qt modules  Qt Creator use ... Anyhow, 
what's wrong with making it a proper Qt Addon instead? 
We have the infrastructure for this already.

Btw, I can easily see other IDE's (KDevelop) and tools  (GammaRay) profiting 
from this infrastructure too. Wouldn't  a unified way to inspect/talk to a 
running 
Qt application be helpful?

  One thing Andre raised though was whether we should continue running
  our own (albeit improved) proprietary protocol, or try to integrate
  into / implement TCF:
 
  http://wiki.eclipse.org/TCF
 
 My main point was not to go for TCF, but that we should not go further down
 the NIH route _before checking out existing alternatives *and* establishing
 they don't fit the purpose_.

Understood. Still, I'm wondering whether adopting (parts of) TCF buys us 
anything else
then using something documented. This advantage could be e.g. marrying the
Qt services then with a stock TCF service/infrastructure, or reusing an 
existing 
TCF implementation internally.

There's also adb (Android Debug Bridge), though the protocol itself is AFAIK 
not 
properly documented (short of http://blogs.kgsoft.co.uk/2013_03_15_prg.htm, 
which 
starts with Yet, the internal logics of ADB are very complex. Compounded with 
the lack 
of documentation, it is extremely difficult to understand how it works and how 
it is 
actually implemented. - not very encouraging).

Anyhow ... let's keep in mind that the current infrastructure / protocol is 
there and is working.
Ulf obviously wants to clean it up  extend it, but switching to an entire 
different protocol
with different semantics isn't exactly a free ride. Maybe it's worthwhile in 
the long run,
but we're not in a situation where we start from scratch, and just wonder 
whether we
should use an established protocol, or invent our own one.

Regards

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread Ulf Hermann
 One thing Andre raised though was whether we should continue running
 our own (albeit improved) proprietary protocol, or try to integrate
 into / implement TCF: http://wiki.eclipse.org/TCF

TCF has different messaging semantics. In particular it has message 
types (Request, Response, Event) and rules on the order in which those 
have to occur. All the plugins would have to play by those rules and the 
server and client would have to expose a slightly different interface.

Also, TCF is way more complex than what we currently have and mandates 
various things we don't actually need, e.g. a locator service. It also 
proposes standardized interfaces for various common services, e.g. 
RunControl, which of course are different to what we currently have. If 
we want to be compatible with other tools we'll have to implement that. 
If not, we can as well stick to our own protocol.

Another intersting possibility would be the gdb remote protocol because 
if we get the server stub right we could get native QML/JS debugging 
in gdb and lldb by using that. However, the protocol is very crude and 
not really meant for anything but debugging. So we'd have to somewhat 
misuse it to implement things like the QML profiler on top of it. There 
is a File I/O interface that could be used to fetch the data and the 
client can send custom packets using Python scripts, but do we really 
want that? Of course using gdb remote would also necessitate changes in 
all the plugins so that they output gdb commands and replies.

So, to conclude: Implementing the server side of TCF would be a lot of 
work and we should clearly know what we're trying to achieve before we 
do that. Implementing the gdb remote protocol would be easier and have 
an immediate use case, but if we don't want to put a whole lot of 
strange hackery into that we should restrict it to QML/JS debugging and 
not make it a general purpose facility.

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

Yes, I think so, too. There is no real reason to further bloat qtbase.

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread Ulf Hermann
 Please create a new module. This doesn't need to be in qtbase.

Is anyone opposed to keeping this in a separate qtdebugsupport.git 
repository, then?

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread Poenitz Andre

Ulf Hermann:
 Is anyone opposed to keeping this in a separate qtdebugsupport.git
 repository, then?

With what compatibility promises regarding code and protocol?

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread Ulf Hermann
 Is anyone opposed to keeping this in a separate qtdebugsupport.git
 repository, then?

 With what compatibility promises regarding code and protocol?

I would promise source and binary compatibility and backwards as well as 
forward compatibility of the protocol. At the same time I would publicly 
state that we'll consider replacing the whole affair with TCF or 
something similar in Qt6 and deprecating the the debugsupport module then.

We in fact already have to maintain protocol compatibility so that older 
and newer tools can debug different versions of Qt. We can as well make 
that explicit: The protocol format is not going to change in Qt5 
anymore. In order for qtdeclarative to depend on qtdebugsupport we need 
it as an essential module which has to provide source and binary 
compatibility. (Alternately we could restart the discussion about 
submodules, but I'll only do that as last resort ...)

At the same time I know that this suffers from a serious case of NIH and 
I would like to drop it at some point. However, we should really not 
further complicate it. Retrofitting TCF into the current architecture 
would be a major mess. With my refactoring I tried to keep the changes 
to existing plugins minimal while reducing code duplication. That of 
course retains bad architectural decisions of the past which are 
incompatible with any state of the art debugging framework. The most 
important incompatibility revolves around the need for proper 
asynchronous messaging: The protocol should track messages from client 
and server and associate them with each other as commands and 
results, so that you can send multiple commands in a row without 
waiting for replies in between. The V4 debug service does that on its 
own, but it should really be done by the server for all services. A good 
architecture that supports this kind of interaction looks different than 
one that doesn't. In addition to that a good architecture that does that 
on a client which sends commands and receives results (and possibly 
asynchronous events) looks different than an architecture for a mostly 
reactive server. That means, once we do it properly, there won't be much 
of a point in keeping server and client in the same library anymore.

I propose to clean it up a little now and redo it from scratch in Qt6.

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


Re: [Development] new debugsupport module and API

2014-05-13 Thread André Pönitz
On Tue, May 13, 2014 at 05:30:43PM +0200, Ulf Hermann wrote:
  Please create a new module. This doesn't need to be in qtbase.
 
 Is anyone opposed to keeping this in a separate qtdebugsupport.git 
 repository, then?

I am.

At the very least, this is still missing an explanation what actual
problems this is going to solve, and a few _plausible_ scenarios
where this code will be reused.

A couple of users actually asking for such a framework would already
help to understand the need.

Once the need to have it is established, the implementation can be
discussed.

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


[Development] new debugsupport module and API

2014-05-12 Thread Ulf Hermann
Hi,

we currently have several implementations of the QML debug protocol used 
to transmit data between a debugger or profiler and the application 
being debugged or profiled. I'm proposing a generalized debugsupport 
module to address various issues with those. In particular:


1. Code duplication
---

We currently have implementations of QPacketProtocol in:
- qtdeclarative/src/plugins/qmltooling/shared/
- qtdeclarative/tools/qmlprofiler
- qtquick1/src/declarative/debugger
- qt-creator/src/libs/qmldebug

We have differently named but functionally largely identical 
implementations of the qml debug client and connection in:
- qtdeclarative/tests/auto/qml/debugger/shared
- qtdeclarative/tools/qmlprofiler
- qtquick1/src/declarative/debugger
- qt-creator/src/libs/qmldebug

We also have 2 server implementations, in qtquick1 and qtdeclarative. 
The debug clients and servers share a lot of functionality regarding 
connection handling and notifying their plugins about various 
conditions. Those plugins for servers and clients can share the same 
base class as they all expose the same interface to the server or 
client. Currently we have 6 of those base classes.


2. Missing flexibility
--

Currently a TCP connection is used for any kind of debugging or 
profiling. This is potentially wasteful and dangerous as TCP has a 
certain overhead and the protocol itself doesn't care about security. 
Providing a connection over a QLocalSocket at least as an option seems 
to be a good idea.

The debug server is currently tied into QtQml, even though it has
technically nothing to do with QML. It's a general purpose tool
for interacting with an application over a defined interface. It should
live in a more appropriate place so that we can use it in other
contexts if the need arises.


3. Messy implementation
---

Many of the client implementations are badly written, potentially leak
memory, don't properly handle errors, expose too many details of the
underlying connection and provide subtly different interfaces to their
plugins.

It's also a bad idea to specify the interface between the debug server
and client in terms of an arcane binary protocol full of magic numbers
and with a colorful history (e.g. the protocol version is unusable; we
practically never do service advertisement; in order to extend the 
protocol you can only add things to the end of messages, but you can 
never change any existing parts; service versions are transmitted as 
floats). Hiding the mess behind a clean C++ interface will make it much 
easier to work with and enables us to eventually replace the protocol 
with something less crazy.


The following changes create a debugsupport module with public API in 
qtbase:
https://codereview.qt-project.org/#change,85098
https://codereview.qt-project.org/#change,85099
https://codereview.qt-project.org/#change,85100
https://codereview.qt-project.org/#change,85101
https://codereview.qt-project.org/#change,85102
https://codereview.qt-project.org/#change,85103

I also have some WIP changes for qtdeclarative to use debugsupport:
https://codereview.qt-project.org/#change,84103
https://codereview.qt-project.org/#change,84527

And for QtCreator:
https://codereview.qt-project.org/#change,84526

QtQuick1 will get the same treatment.

--
Ulf Hermann, Software Engineer - Digia, Qt
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] new debugsupport module and API

2014-05-12 Thread Hartmann Thomas
Hi,

I guess using a TCP connection would still be possible, but not be the defaut 
anymore for local debugging/profiling?

Kind Regards,
Thomas Hartmann

From: development-bounces+thomas.hartmann=digia@qt-project.org 
[development-bounces+thomas.hartmann=digia@qt-project.org] on behalf of Ulf 
Hermann [ulf.herm...@digia.com]
Sent: 12 May 2014 11:48
To: development@qt-project.org
Subject: [Development] new debugsupport module and API

Hi,

we currently have several implementations of the QML debug protocol used
to transmit data between a debugger or profiler and the application
being debugged or profiled. I'm proposing a generalized debugsupport
module to address various issues with those. In particular:


1. Code duplication
---

We currently have implementations of QPacketProtocol in:
- qtdeclarative/src/plugins/qmltooling/shared/
- qtdeclarative/tools/qmlprofiler
- qtquick1/src/declarative/debugger
- qt-creator/src/libs/qmldebug

We have differently named but functionally largely identical
implementations of the qml debug client and connection in:
- qtdeclarative/tests/auto/qml/debugger/shared
- qtdeclarative/tools/qmlprofiler
- qtquick1/src/declarative/debugger
- qt-creator/src/libs/qmldebug

We also have 2 server implementations, in qtquick1 and qtdeclarative.
The debug clients and servers share a lot of functionality regarding
connection handling and notifying their plugins about various
conditions. Those plugins for servers and clients can share the same
base class as they all expose the same interface to the server or
client. Currently we have 6 of those base classes.


2. Missing flexibility
--

Currently a TCP connection is used for any kind of debugging or
profiling. This is potentially wasteful and dangerous as TCP has a
certain overhead and the protocol itself doesn't care about security.
Providing a connection over a QLocalSocket at least as an option seems
to be a good idea.

The debug server is currently tied into QtQml, even though it has
technically nothing to do with QML. It's a general purpose tool
for interacting with an application over a defined interface. It should
live in a more appropriate place so that we can use it in other
contexts if the need arises.


3. Messy implementation
---

Many of the client implementations are badly written, potentially leak
memory, don't properly handle errors, expose too many details of the
underlying connection and provide subtly different interfaces to their
plugins.

It's also a bad idea to specify the interface between the debug server
and client in terms of an arcane binary protocol full of magic numbers
and with a colorful history (e.g. the protocol version is unusable; we
practically never do service advertisement; in order to extend the
protocol you can only add things to the end of messages, but you can
never change any existing parts; service versions are transmitted as
floats). Hiding the mess behind a clean C++ interface will make it much
easier to work with and enables us to eventually replace the protocol
with something less crazy.


The following changes create a debugsupport module with public API in
qtbase:
https://codereview.qt-project.org/#change,85098
https://codereview.qt-project.org/#change,85099
https://codereview.qt-project.org/#change,85100
https://codereview.qt-project.org/#change,85101
https://codereview.qt-project.org/#change,85102
https://codereview.qt-project.org/#change,85103

I also have some WIP changes for qtdeclarative to use debugsupport:
https://codereview.qt-project.org/#change,84103
https://codereview.qt-project.org/#change,84527

And for QtCreator:
https://codereview.qt-project.org/#change,84526

QtQuick1 will get the same treatment.

--
Ulf Hermann, Software Engineer - Digia, Qt
___
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] new debugsupport module and API

2014-05-12 Thread Ulf Hermann
 I guess using a TCP connection would still be possible, but not be the defaut 
 anymore for local debugging/profiling?

The QDebugServer so far supports four kinds of connections and it's 
possible to add more. You can use local or tcp connections and both 
allow you to establish them in either direction. E.g. the QDebugClient 
can open a QDebug{Local|Tcp}ServerConnection and the QDebugServer can 
connect to that using the respective client connection.

The QQmlDebugServer (which wraps a QDebugServer) parses an additional 
command line argument name and will use a QDebugLocalServerConnection 
if it's found. QtCreator doesn't support that, yet, but it would be easy 
to add it.

So, currently the default is still TCP and we can't really change that 
for applications using older versions of Qt. However, we can make 
QtCreator detect if the application supports local connections and use 
them where possible.

regards,
Ulf

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


Re: [Development] new debugsupport module and API

2014-05-12 Thread Koehne Kai
 -Original Message-
 From: development-bounces+kai.koehne=digia@qt-project.org
 
 we currently have several implementations of the QML debug protocol used
 to transmit data between a debugger or profiler and the application being
 debugged or profiled. I'm proposing a generalized debugsupport
 module to address various issues with those. In particular:
 [...]

First of all: I'm all for the idea of making the current protocol a properly 
exported API + using it for more than just QtDeclarative!

One thing Andre raised though was whether we should continue running our own 
(albeit improved) proprietary protocol, or try to integrate into / implement 
TCF:

http://wiki.eclipse.org/TCF

Just like our current infrastructure, TCF (Target Communication Framework)  
allows you to announce  communicate with individual plugins. Being designed 
for embedded devices, the idea is that the Service Manager runs as a separate 
process on the device - that's different from our current approach, where the 
server is actually in-process. The protocol is also much more advanced (read: 
complicated) than what we've provided so far ... For one, everything is defined 
in JSON, while we happily send around QByteArray's so far.

I'm wondering how popular TCF is these days, and whether plugin into the TCF 
infrastructure/protocol would actually help our use cases. Can we e.g. plug in 
into an exising TCF server from inside the executable, to provide our own 
services?  And how would the setup be for desktop, where there's no default TCF 
server running? 

Maybe someone with more insight into TCF cares to comment on this :)

Regards

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


Re: [Development] new debugsupport module and API

2014-05-12 Thread Thiago Macieira
Em seg 12 maio 2014, às 11:48:21, Ulf Hermann escreveu:
 The following changes create a debugsupport module with public API in 
 qtbase:
 https://codereview.qt-project.org/#change,85098
 https://codereview.qt-project.org/#change,85099
 https://codereview.qt-project.org/#change,85100
 https://codereview.qt-project.org/#change,85101
 https://codereview.qt-project.org/#change,85102
 https://codereview.qt-project.org/#change,85103

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

-- 
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] new debugsupport module and API

2014-05-12 Thread Oswald Buddenhagen
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.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] new debugsupport module and API

2014-05-12 Thread André Pönitz
On Mon, May 12, 2014 at 02:54:23PM +, Koehne Kai wrote:
  -Original Message- From:
  development-bounces+kai.koehne=digia@qt-project.org
  
  we currently have several implementations of the QML debug protocol
  used to transmit data between a debugger or profiler and the
  application being debugged or profiled. I'm proposing a generalized
  debugsupport module to address various issues with those. In
  particular: [...]
 
 First of all: I'm all for the idea of making the current protocol a
 properly exported API + using it for more than just QtDeclarative!

Consolidation of various incarnations of the code might make sense,
exporting would need a good reason.

 One thing Andre raised though was whether we should continue running our
 own (albeit improved) proprietary protocol, or try to integrate into /
 implement TCF:
 
 http://wiki.eclipse.org/TCF

My main point was not to go for TCF, but that we should not go further down
the NIH route _before checking out existing alternatives *and* establishing
they don't fit the purpose_.

I mentioned TCF just as a potential candidate, as it showed some promise
a while ago and we even had some code for it on the Creator side. I don't
know anything about TCF's current state and mind share, though.

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


Re: [Development] new debugsupport module and API

2014-05-12 Thread Thiago Macieira
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.

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.

-- 
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