[Development] Schedule for Qt 4.8.1

2012-02-13 Thread Turunen Tuukka

Hi All,

We would like to release next version of Qt Commercial 4.8 around mid-March.

It would be really great if we can again sync the LGPL and Commercial releases 
both in timing and content to the extent possible.

If we agree that mid-March is a good target time for the next patch release, we 
should have as much as possible all the fixes in by end of February. Naturally 
a patch release will not have any new features, but there are some fixes that 
we are very much targeting to be in 4.8.1 such as ones needed for publishing 
apps in the Mac App Store.

Since 4.8 was moved to gerrit, we have been actively redoing our merge 
requests, and quite much has already been merged into the 4.8 branch.

Yours,

--
Tuukka Turunen
Director, Qt Commercial RD
Digia Plc
Piippukatu 11, 40100 Jyväskylä, Finland

Visit us at: 
www.digia.comapplewebdata://7FB7E1CD-55A7-4FAD-B1A5-7721230C2E29/www.digia.com
 or qt.digia.comhttp://qt.digia.com/

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


[Development] new QtNetwork maintainer

2012-02-13 Thread lars.knoll
Hi everybody,

as some of you might know, our current maintainer for QtNetwork, Peter
Hartmann, has left Nokia to start in a different job. Unfortunately that
new job doesn't leave him with enough time to continue as the maintainer
of QtNetwork, so he stepped down as the maintainer of QtNetwork.

Shane Kearns has however stepped up and is willing to take over the
position. I'm really happy that Shane is willing to take this job. He has
a lot of experience with QtNetwork, and has been heavily involved with Qt
development (actively working on the Symbian port) for quite a few years.

So I'd like to nominate Shane for the position as the new maintainer of
QtNetwork. According to the rules, he will need support from at least one
other Maintainer. 

I'd also like to thank Peter for all the work he did on the module during
his time at Nokia.


Cheers,
Lars

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


Re: [Development] Default enabling inbound flow control on sockets

2012-02-13 Thread shane.kearns
You've correctly understood the problem, but the scale is less bad (takes a 
couple of minutes to exhaust 2GB limit of a 32 bit process using a loopback 
connection)

Changing the default would mean behavior is the same as if you called 
setReadBufferSize(65536) in the application. Currently the default is 
setReadBufferSize(0), where 0 has the special meaning of unlimited.

Performance tests should not break, because they are reading as fast as 
possible. There may be a degradation on one side if the writer is faster than 
the reader.

UDP sockets losing data if buffering is exceeded is acceptable (it's supposed 
to be an unreliable service)
I hadn't thought too much about UDP at this point, just TCP.

The readAll issue is with QNetworkReply rather than QTcpSocket.
There are two programming models in use for this:

Simple model:
1. send request
2. wait for the finished signal from the reply
3. call readAll to get the data

Good model:
1. send request
2. each time the reply emits bytesAvailable
2a. call readAll to get the currently buffered data
2b. save / process currently buffered data
3. when finished signal is received, call readAll a final time to get the tail

The simple model tends to be used where the expected data is small.
The good model tends to be used where the data size is unknown (e.g. browsers, 
download managers)

We could give a much larger buffer size for QNetworkReply (e.g. 1MB) to catch 
reasonable small downloads, but this might be harder for developers (as they 
only see the buffer limit rarely)

Yes, QIODevice allows partial writes, but Q*Socket always accepts all the data 
in the current implementation.
I actually think this side is less of a problem, because the developer knows 
what kind of data they will be sending.
Therefore they are in the best position to decide if they need write flow 
control or not
-Original Message-
From: andrew.stanley-jo...@nokia.com [mailto:andrew.stanley-jo...@nokia.com] 
Sent: 11 February 2012 11:36
To: Kearns, Shane
Subject: Re: [Development] Default enabling inbound flow control on sockets


Ok, let me verify I understand the problem:

1. If a Qt app is not processing the data, Sockets continue reading no mater 
what.

2. This results in no flow control, and on a 10gigE connection results in the 
Qt app potentially receiving ~1 gigabyte/sec stream of data. (assuming the 
HW/SW etc can handle it)  

3. Qt app exhausts all memory within a couple of seconds.

This seems like relatively brain dead behaviour.  On large systems it's a 
problem, and on smaller devices outright dangerous.

What will changing the default buffer size do?  I assume you mean set a 
reasonable default to QAbstractSocket::readBufferSize().  This seems sensible, 
it will stop the stream and use appropriate flow control, if available with 
that protocol.

1. Break performance tests.

2. datagram (UDP) sockets will lose data.

3. As you said, readAll() may have problems, but it's also incompatible with 
sane network programming.  How can I trust the other side is only going to send 
50 bytes and not 4 gigs?

There's no requirement for write buffering as well.  Under Unix's can you can 
write data to a socket and have it not block and/or have it write less data 
than available.  QIODevice accounts for this and write can return 0 bytes 
written. You can easily argue most programs don't handle this well.  But at 
some point network links can't handle traffic at any arbitrary rate and flow 
control must kick in.  Buffering is a short term solution.

I think it's a good idea to have a build in limit.  I think it avoids easily 
made mistake by developers.

-Andrew

On 10/02/2012, at 8:25 PM, ext shane.kea...@accenture.com wrote:

 The current default behaviour of Qt sockets is that they allocate an 
 unbounded amount of memory if the application is not reading all data from 
 the socket but the event loop is running.
 In the worst case, this causes memory allocation failure resulting in a crash 
 or app exit due to bad_alloc exception
 
 We could change the default read buffer size from 0 (unbounded) to a sensible 
 default value e.g. 64k (to be benchmarked)
 Applications wanting the old behaviour could explicitly call 
 setReadBufferSize(0)
 Applications that already set a read buffer size will be unchanged
 
 The same change would be required at the QNetworkAccessManager level, as 
 there is no point applying flow control at the socket and having unbounded 
 memory allocations in the QNetworkReply.
 
 This is a behavioural change that would certainly cause regressions.
 e.g. any application that waits for the QNetworkReply::finished() signal and 
 then calls readAll() would break if the size of the object being downloaded 
 is larger than the buffer size.
 
 On the other hand, we can't enable default outbound flow control in sockets 
 (we don't want write to block).
 Applications need to use the bytesWritten signal.
 QNetworkAccessManager already implements outbound flow 

Re: [Development] new QtNetwork maintainer

2012-02-13 Thread Thiago Macieira
On segunda-feira, 13 de fevereiro de 2012 14.05.36, marius.storm-
ol...@nokia.com wrote:
 On 02/13/2012 07:17 AM, ext lars.kn...@nokia.com wrote:
  Shane Kearns has however stepped up and is willing to take over the
  position. I'm really happy that Shane is willing to take this job. He
  has a lot of experience with QtNetwork, and has been heavily involved
  with Qt development (actively working on the Symbian port) for quite
  a few years.
 
  So I'd like to nominate Shane for the position as the new maintainer
  of QtNetwork. According to the rules, he will need support from at
  least one other Maintainer.

 I'm not a maintainer, so cannot satisfy the OG requirement, but want to
 voice my +1.

He's got my support.

Shane has been working on Qt for years now, so I trust he'll do a good job.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
 Intel Sweden AB - Registration Number: 556189-6027
 Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden


signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Schedule for Qt 4.8.1

2012-02-13 Thread Wolfgang Baron
Hi Turunen Tuukka,

could there please be an official VS 2010 64-bit binary release for  
Microsoft Windows for Qt 4.8.1 onwards?

Thanks a lot  kind regards,

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


Re: [Development] Schedule for Qt 4.8.1

2012-02-13 Thread Thiago Macieira
On segunda-feira, 13 de fevereiro de 2012 12.28.06, Turunen Tuukka wrote:
 Hi All,

 We would like to release next version of Qt Commercial 4.8 around mid-March.

 It would be really great if we can again sync the LGPL and Commercial
 releases both in timing and content to the extent possible.

 If we agree that mid-March is a good target time for the next patch release,
 we should have as much as possible all the fixes in by end of February.
 Naturally a patch release will not have any new features, but there are
 some fixes that we are very much targeting to be in 4.8.1 such as ones
 needed for publishing apps in the Mac App Store.

 Since 4.8 was moved to gerrit, we have been actively redoing our merge
 requests, and quite much has already been merged into the 4.8 branch.

I think that it's a worthy goal. Let's try to have that release in March then.

After that, I'd like to see 4.8 move into a periodic release mode, either in
time or in number of changes.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
 Intel Sweden AB - Registration Number: 556189-6027
 Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden


signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Separation of QtQuick 1 from QtDeclarative repo

2012-02-13 Thread Stephen Kelly
On Friday, February 03, 2012 12:17:35 lars.kn...@nokia.com wrote:
 Hi,
 
 It seems like this change broke qt/qttools, can you confirm this please ?
 
 I'd assume qttools doesn't include the qtquick1 repo as a dependency.

It needs declarative in Qt4 because lupdate uses it to extract translations.

This raises the question of whether lupdate will also need to use the Qt5 
declarative module to extract QML2 translations, or will the language and 
features remain static so that the qtquick features will also be sufficient.

On Monday, February 06, 2012 07:58:04 martin.jo...@nokia.com wrote:
 Yes, we are working on renaming the classes in the declarative module to
 either Qml... or QQuick... depending on case.  There will be a period where
 using QtQuick 1 and 2 together is not possible, but we will sort this out
 as quickly as we can, hopefully without causing big disruptions to users of
 either library.

This raises the question of whether the Qt5/declarative module will be renamed 
(if all classes in it are renamed Qml*) and if the module includes will be 
moved. 

The followup question is whether the qtqtuick1 module can be renamed 
QtDeclarative so that there is less source incompatibility (of the buildsystem 
and module includes).

Thanks,

-- 
Stephen Kelly stephen.ke...@kdab.com | Software Engineer
KDAB (Deutschland) GmbH  Co.KG, a KDAB Group Company
www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-Independent Software Solutions

signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] RFC: The Future of QDoc

2012-02-13 Thread Stephen Kelly
On Monday, February 13, 2012 09:04:22 casper.vandonde...@nokia.com wrote:
 Whatever is chosen (updating qdoc, or changing to Doxygen): The task is
 not small, and therefore it would be nice if there would be more
 contributors than just me and Martin Smith. Maybe it would be a good idea
 to have a sit-down at the Contributors Summit (if people are interested).

Have you actually been in contact with Dmitri about merging the features and 
effort into doxygen? I looked at the mailing list and saw nothing. It would be 
a good start, and a good idea to bring him to the summit to if that turns out 
to be a good or welcome idea.

Thanks,


-- 
Stephen Kelly stephen.ke...@kdab.com | Software Engineer
KDAB (Deutschland) GmbH  Co.KG, a KDAB Group Company
www.kdab.com || Germany +49-30-521325470 || Sweden (HQ) +46-563-540090
KDAB - Qt Experts - Platform-Independent Software Solutions

signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Default enabling inbound flow control on sockets

2012-02-13 Thread marius.storm-olsen
On 02/13/2012 08:10 AM, ext shane.kea...@accenture.com wrote:
 Not sure. Is it a big problem? Or is it better to just continue as
 is, and let the applications that do have a problem set it to
 something reasonable to them instead?

 I'd probably suggest that we instead improve the output on that
 worst case failure to help devs fix the problems in their
 programs.

 $0.02

 Ben

 qWarning allocates memory, so once the worst case happens, we can't
 give any output (unless we first handle the exceptions inside
 Q*Socket) It would be possible to print a warning when buffering
 exceeds some threshold we consider to be unreasonably large. We can
 also improve the documentation (it's not bad, but doesn't mention
 flow control explicitly)

 https://bugreports.qt-project.org/browse/QTBUG-14464 seems to be
 explained by missing flow control causing out of memory errors under
 load.

Qt is not known for handling OOM cases, and we actually argue for the OS 
to handle it, and that the application (and its libraries) shouldn't 
have to think about memory not being available.
(Too many error conditions and OOM handling all over the place to bring 
any real benefit for it anyways.)

Here you are suggesting a behavior change to handle an OOM case, where 
the behavior will most likely cause valid applications to stop working, 
since they don't handle a (new and artificial) 64k in-buffer limit?

Maybe we should rather allocate a buffer for qWarning output, allowing 
us to properly report an error condition before the application aborts?

^shrug^ but I rather not have applications start failing at random due 
to a failure to have a new limit.

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


Re: [Development] Default enabling inbound flow control on sockets

2012-02-13 Thread Olivier Goffart
On Monday 13 February 2012 18:33:51 marius.storm-ol...@nokia.com wrote:
 On 02/13/2012 08:10 AM, ext shane.kea...@accenture.com wrote:
  Not sure. Is it a big problem? Or is it better to just continue as
  is, and let the applications that do have a problem set it to
  something reasonable to them instead?
  
  I'd probably suggest that we instead improve the output on that
  worst case failure to help devs fix the problems in their
  programs.
  
  $0.02
  
  Ben
  
  qWarning allocates memory, so once the worst case happens, we can't
  give any output (unless we first handle the exceptions inside
  Q*Socket) It would be possible to print a warning when buffering
  exceeds some threshold we consider to be unreasonably large. We can
  also improve the documentation (it's not bad, but doesn't mention
  flow control explicitly)
  
  https://bugreports.qt-project.org/browse/QTBUG-14464 seems to be
  explained by missing flow control causing out of memory errors under
  load.
 
 Qt is not known for handling OOM cases, and we actually argue for the OS
 to handle it, and that the application (and its libraries) shouldn't
 have to think about memory not being available.
 (Too many error conditions and OOM handling all over the place to bring
 any real benefit for it anyways.)
 
 Here you are suggesting a behavior change to handle an OOM case, where
 the behavior will most likely cause valid applications to stop working,
 since they don't handle a (new and artificial) 64k in-buffer limit?
 
 Maybe we should rather allocate a buffer for qWarning output, allowing
 us to properly report an error condition before the application aborts?
 
 ^shrug^ but I rather not have applications start failing at random due
 to a failure to have a new limit.

Here the problem is not really OOM, but bad putting way too much data 
structure into memory.

QByteArray is not designed to contain huge data (2GiB is really the maximum, 
only because we use int for indexes)

and stuff like readAll() will crash if that is hapenning.

The second problem seems to be that QTCPSocket buffers everything, it does not 
matters if the program does anything with it or just let the event loop spin.
If QTCPSocket did not buffer, the OS would buffer a bit, then drop the packet, 
so sender's TCP algorithms would reduce the rate of sending letting the time 
for the application to process.  

This is my naïve interpretation of the problem and I might be wrong here.
But I think, indeed, the network and IO stack should do something against 
that.


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


Re: [Development] Default enabling inbound flow control on sockets

2012-02-13 Thread marius.storm-olsen
On 02/13/2012 12:33 PM, ext marius.storm-ol...@nokia.com wrote:
 ^shrug^ but I rather not have applications start failing at random due
 to a failure to have a new limit.

..handle a new limit.

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


Re: [Development] Default enabling inbound flow control on sockets

2012-02-13 Thread Thiago Macieira
On sexta-feira, 10 de fevereiro de 2012 19.25.04, shane.kea...@accenture.com
wrote:
 We could change the default read buffer size from 0 (unbounded) to a
 sensible default value e.g. 64k (to be benchmarked) Applications wanting
 the old behaviour could explicitly call setReadBufferSize(0) Applications
 that already set a read buffer size will be unchanged
[snip]

 This is a behavioural change that would certainly cause regressions.
 e.g. any application that waits for the QNetworkReply::finished() signal and
 then calls readAll() would break if the size of the object being downloaded
 is larger than the buffer size.

As you said yourself, there's a huge potential for regressions here,
especially with a limit as low as 64k. So I am unsure whether we should do
this at all.

We could apply a high buffer size, like 1 MB. That's probably enough to contain
most data files being downloaded and yet avoid exploding by OOM. On a modern
embedded system, an application would need to be downloading 50 items in
parallel (which means from at least 9 different servers) before it started to
get into trouble.

--
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
 Intel Sweden AB - Registration Number: 556189-6027
 Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden


signature.asc
Description: This is a digitally signed message part.
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Changes to the Jira roles and workflow

2012-02-13 Thread shane.kearns
Maybe you're looking at a triage role, if the role is prioritizing and 
assigning of tasks among a team that is mostly funded by one company.

Another role we need in JIRA is contributor.
This is somebody who is not a reviewer, but can still be assigned tasks  
transition their assigned tasks through the normal workflow.
Ideally, anyone who has had a patch accepted should be given this level of 
access if they want it.*
For example, to work on bugs related to code they previously submitted.
Also, this covers most Nokia (or other organization) engineers who are not 
approvers.

I'm hoping abuse of JIRA privileges is rare, but it should also be easy to 
revoke them if needed.

*Some people will contribute a patch for a bug they found in their project that 
uses Qt, and we don't want to discourage this by giving unwanted responsibility.
 -Original Message-
 From: development-bounces+shane.kearns=accenture@qt-project.org
 [mailto:development-bounces+shane.kearns=accenture@qt-project.org]
 On Behalf Of Alan Alpert
 Sent: 09 February 2012 22:26
 To: development@qt-project.org
 Cc: j...@qt-project.org
 Subject: Re: [Development] Changes to the Jira roles and workflow

 On Thu, 9 Feb 2012 12:58:40 ext marius.storm-ol...@nokia.com wrote:
  Hi,
 
  ...
 
 
  There is some discussion over if we should burden maintainers with
 Release
  Management work.
 
  There is a suggestion of a new workflow Nokia Engineer - no
 privileges in
  Gerrit only in Jira.

 That role might be useful, but please don't call it Nokia Engineer.
 Even if
 we don't expect anyone to ever volunteer to do task management roles,
 Qt as an
 open project could grow to other companies. Calling it Task Manager
 or
 Issue Secretary (or something along those lines that's not a joke ;)
 ) will
 mitigate the risk of having to change the name again later.

 
  ...
 
 
  Default Assignee
 
  There is call for discussion around default assignee - is it the
 module
  maintainer? Which tasks are up for grabs if everything new goes to
 the
  maintainer?

 The theory I was taught was that you don't use your 'tasks assigned to
 me'
 list as your list of your in-progress bugs. You use your 'tasks
 assigned to me
 and listed as in-progress' for that list. So assignment merely means
 If
 someone's going to look at this bug, it'll probably be this guy first.
 If
 you're working on a bug and don't want people to take it away, you mark
 it as
 in-progress. Then the tasks which are up for grabs are the ones
 assigned to
 the maintainer (or anyone, actually) which are not marked as 'in-
 progress'.

 On the 'unassigned' suggestion, I think that could only work if there's
 an
 easy way to find the correct maintainer for a component. Currently the
 table
 in qt-project contains some data, which is nice, but it's just not
 convenient
 enough or obvious enough to work with JIRA. Default assignee has
 basically
 been the way people find maintainers for bug reporting (at least), if
 you take
 that away then something else is needed.

 --
 Alan Alpert
 Senior Engineer
 Nokia, Qt Development Frameworks
 ___
 Development mailing list
 Development@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/development



Subject to local law, communications with Accenture and its affiliates 
including telephone calls and emails (including content), may be monitored by 
our systems for the purposes of security and the assessment of internal 
compliance with Accenture policy.
__

www.accenture.com

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


Re: [Development] Changes to the Jira roles and workflow

2012-02-13 Thread marius.storm-olsen
On 02/13/2012 01:27 PM, ext 
shane.kea...@accenture.commailto:shane.kea...@accenture.com wrote:

Maybe you're looking at a triage role, if the role is prioritizing and 
assigning of tasks among a team that is mostly funded by one company.

Another role we need in JIRA is contributor.
This is somebody who is not a reviewer, but can still be assigned tasks  
transition their assigned tasks through the normal workflow.
Ideally, anyone who has had a patch accepted should be given this level of 
access if they want it.*
For example, to work on bugs related to code they previously submitted.
Also, this covers most Nokia (or other organization) engineers who are not 
approvers.

The contributor role in Jira was part of the original recommendation:

Map old roles over to OG roles

The current suggestion is:

Reports - User
Developer - Contributor
Assignee - Contributor
QA - Approvers
RM - Maintainers - note, discussion over this

Note the Developer + Assignee - Contributor transition in the roles, 
meaning that the Contributor role can be assigned tasks.

--
.marius


I'm hoping abuse of JIRA privileges is rare, but it should also be easy to 
revoke them if needed.

*Some people will contribute a patch for a bug they found in their project that 
uses Qt, and we don't want to discourage this by giving unwanted responsibility.



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


Re: [Development] new QtNetwork maintainer

2012-02-13 Thread cristiano.di-flora

On 2/13/12 4:17 PM, ext Thiago Macieira thiago.macie...@intel.com
wrote:

On segunda-feira, 13 de fevereiro de 2012 14.05.36, marius.storm-
ol...@nokia.com wrote:
 On 02/13/2012 07:17 AM, ext lars.kn...@nokia.com wrote:
  Shane Kearns has however stepped up and is willing to take over the
  position. I'm really happy that Shane is willing to take this job. He
  has a lot of experience with QtNetwork, and has been heavily involved
  with Qt development (actively working on the Symbian port) for quite
  a few years.
  
  So I'd like to nominate Shane for the position as the new maintainer
  of QtNetwork. According to the rules, he will need support from at
  least one other Maintainer.
 
 I'm not a maintainer, so cannot satisfy the OG requirement, but want to
 voice my +1.

He's got my support.

Shane has been working on Qt for years now, so I trust he'll do a good
job.
Full support from my side as well. We need somebody like Shane to take
care of
our QtNetwork module, and I am more than sure he'll do a great job there :)

Cheers,
-Cristiano


-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
 Intel Sweden AB - Registration Number: 556189-6027
 Knarrarnäsgatan 15, 164 40 Kista, Stockholm, Sweden
___
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] Importing sahumada: Can you import http://gitorious.org/qserialdevice/qserialdevice (the 2.0 branch) into playground/QtSerialPort

2012-02-13 Thread Angel Perles
Hi Denis,

I have a question about the license for QSerialDevice. In gitorious it 
appears as GPLv3.

I think it could be interesting to have a more permisive licensing 
option such as LGPL or BSD. This will allow to push forward this library 
compared with others such as QextSerialPort with not established license.

Others guys and me (users of QextSerialPort) are seeking for an 
appropiate library for collaborating.

Best regards,
Àngel


El 11/02/12 18:28, Denis Shienkov escribió:
 Hi all.

 I prepared for the first QtSerialPort review.
 But then I do not know what to do:
 Who will review my changes? Who will do the audit?
 Someone, please check the code, because I still have not figured much in the 
 features by:
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt

 Best regards,
 Denis

 09.02.2012, 23:46, marius.storm-ol...@nokia.com:
 On 09/02/2012 13:26, ext Denis Shienkov wrote:

   Hi Marius.

   I have a few more questions (or offers):

   1) Perhaps, instead of:
   ...
   and start pushing to refs/for/2.0 to the Gerrit repo.
   ...
   done refs/for/master? Because for the main branch is gerrit master,
   and not 2.0 (or am I misunderstanding something?).

 Sure, whatever you prefer. Gitorious' 2.0 branch was pushed to both 2.0
 and master, since Gerrit requires a 'master' branch. We didn't import
 the Gitorious master branch, since I think you only rebased the 2.0
 branch to avoid the commits without CLA signoff.

 How you proceed, with commits in the master or 2.0 branch is up to you
 as the maintainer.

   2) It may be worth in the current repository QSerialDevice Gitorious
   marked as deprecated (well, or something like that), and instead it
   create a new one with a new name (ex. QtSerialPort), etc. The reason
   is that QSerialDevice will not reflect the inner essence, after
   integration, and will mislead the majority of public users.

 Sure, I agree it's probably cleaner to do that. (Our internal sync
 script also infact requires the repositories to be named the same in
 Gerrit and in Gitorious.)

   3) Let us define - what the class name give, with prefix Qt, Q or no
   prefix? I looked at some of the projects Gerrit without CI (eg
   qtprocessmanager, qtjsonstream) and found that a all class names
   without the prefix. I also stick to this style?

 See
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#Using_the_module_name_in_application_code_and_documentation

   For Qt Add-On Modules, a C++ namespace is required to avoid class
   naming clashes with other modules in the public API. For the Qt
   Foo module the namespace would be QtFoo. Exception: in order to
   keep source compatibility with Qt 4, no namespace is required for
   former Qt 4 modules. When naming classes, the best practice is use
   simple non-prefixed class names within the C++ name space. Naming
   classes of add-ons like QMyClass is also OK.

   4) In the header of each source file, keep a reference to the
   original authors, like me, or mention only Nokia?

 Nokia did not develop the code, and must not be referenced as the
 author. Copyright remains with the author.

   5) How to make an example of the structure of the project is the
   addon for QtSerialPort (in order to make the image and likeness),
   from any Addon-project? Or maybe there is a specific example of a
   good where to get the project structure for addon?

 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#The_structure_of_a_new_module_repository

 --
 .marius

 08.02.2012, 22:08, marius.storm-ol...@nokia.com:
 On 2/8/12 11:59 AM, ext Denis Shienkovscap...@yandex.ruwrote:

 Hi Marius.

 I do not understand this bit:
 --
 --
 For the other Qt repos we treat the Gitorious repo as public repo, so
 most people will clone from there. Then we regularly push from Gerrit to
 Gitorious to keep them in sync. However, we disable Merge Requests in
 Gitorious, since we want to force all contributions through the Gerrit
 system.
 --
 --

 ie I and other special/selected developers will commits/push to Gerrit,
 and then tested and approved by the pieces of code will be sent to
 Gitorious?

 Well, not more special than having a Jira/Gerrit account with an
 accepted CLA agreement :)

 For the Qt Essential modules we have a script which automatically pushes
 the latest changes to the Gitorious location. And we prefer most people to
 use those as the primary clone location, since it offloads much of the
 resource requirements from the Qt-Project infrastructure.

 What then will be a public repo address on Gitorious for get/clone other
 people a code libraries?

 It's up to you really. If you don't want to mirror it to Gitorious on a
 regular basis, you can just use the Gerrit repo as the primary 

[Development] Something is wrong in QFontEngineFT::loadGlyph

2012-02-13 Thread Mark
Hi,

While using Qt's elidedText function
http://developer.qt.nokia.com/doc/qt-4.8/qfontmetricsf.html#elidedText i
noticed the function was dog slow. For just 1000 entries (each 250 chars)
eliding them to 200px took about 190ms on windows and 100ms on linux. Using
that for drawing is noticeable slow. I haven't actually tried that, but i
certainly would notice that and in the longer run that is my intention.

So, i started playing with it in an attempt to get it blazing fast. And i
got there. On windows i have a speedup of 39x (same job only takes 5ms) and
on Linux i got a speedup of 10x (same job takes 10ms, side effect is that
linux while 10x faster is now slower then windows.. odd), Those speedups
are nice but it tasted like more so i went on to profilling. I already knew
the QFontMetricsF::width was the function dragging everything down and a
kcachegrind seems to indicate the same.

Note for the speedups, i got them mostly by cashing the width of the used
character thus avoiding the width function as much as possible.

This is the path that width() takes till the point of calling the freetype
functions:
QFontEngineFT::stringToCMap
QFontEngineFT::recalcAdvances
QFontEngineFT::loadGlyph

loadGlyph is where i think something odd is going on.
http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/text/qfontengine_ft.cpp#line812

Note the last parameter: fetchMetricsOnly ... The path it took
had fetchMetricsOnly set to true :
http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/text/qfontengine_ft.cpp#line1611.
That leads me to think that this function is only going to fetch the
metrics of the glyph, not render it! The opposite is the case. It's
rendering it and that is the part that takes long.

So, am i right here? Is this function doing to much? Remember, we come from
the width() function. All we actually need is the width of the glyph,
that's it.

Actually, if you look in that function for
the fetchMetricsOnly occurrence you'll see that it's only used in one place
and there it doesn't seem to do a lot with metrics. It kinda looks like
the original implementer of this has some idea, but never finished
implementing it. Or am i wrong here?

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


Re: [Development] Importing sahumada: Can you import http://gitorious.org/qserialdevice/qserialdevice (the 2.0 branch) into playground/QtSerialPort

2012-02-13 Thread marius.storm-olsen
Given that the QSerialDevice developers have accepted the CLA for the project 
effective from start of the project, the project is now open for licencing both 
under LGPL and commercial license; just like any other module in Qt. AFAIK, 
though IANAL.

-- 
Sent from my Nokia N9

On 2/13/12 16:56 ext Angel Perles wrote:
Hi Denis,

I have a question about the license for QSerialDevice. In gitorious it 
appears as GPLv3.

I think it could be interesting to have a more permisive licensing 
option such as LGPL or BSD. This will allow to push forward this library 
compared with others such as QextSerialPort with not established license.

Others guys and me (users of QextSerialPort) are seeking for an 
appropiate library for collaborating.

Best regards,
Àngel


El 11/02/12 18:28, Denis Shienkov escribió:
 Hi all.

 I prepared for the first QtSerialPort review.
 But then I do not know what to do:
 Who will review my changes? Who will do the audit?
 Someone, please check the code, because I still have not figured much in the 
 features by:
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt

 Best regards,
 Denis

 09.02.2012, 23:46, marius.storm-ol...@nokia.com:
 On 09/02/2012 13:26, ext Denis Shienkov wrote:

   Hi Marius.

   I have a few more questions (or offers):

   1) Perhaps, instead of:
   ...
   and start pushing to refs/for/2.0 to the Gerrit repo.
   ...
   done refs/for/master? Because for the main branch is gerrit master,
   and not 2.0 (or am I misunderstanding something?).

 Sure, whatever you prefer. Gitorious' 2.0 branch was pushed to both 2.0
 and master, since Gerrit requires a 'master' branch. We didn't import
 the Gitorious master branch, since I think you only rebased the 2.0
 branch to avoid the commits without CLA signoff.

 How you proceed, with commits in the master or 2.0 branch is up to you
 as the maintainer.

   2) It may be worth in the current repository QSerialDevice Gitorious
   marked as deprecated (well, or something like that), and instead it
   create a new one with a new name (ex. QtSerialPort), etc. The reason
   is that QSerialDevice will not reflect the inner essence, after
   integration, and will mislead the majority of public users.

 Sure, I agree it's probably cleaner to do that. (Our internal sync
 script also infact requires the repositories to be named the same in
 Gerrit and in Gitorious.)

   3) Let us define - what the class name give, with prefix Qt, Q or no
   prefix? I looked at some of the projects Gerrit without CI (eg
   qtprocessmanager, qtjsonstream) and found that a all class names
   without the prefix. I also stick to this style?

 See
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#Using_the_module_name_in_application_code_and_documentation

   For Qt Add-On Modules, a C++ namespace is required to avoid class
   naming clashes with other modules in the public API. For the Qt
   Foo module the namespace would be QtFoo. Exception: in order to
   keep source compatibility with Qt 4, no namespace is required for
   former Qt 4 modules. When naming classes, the best practice is use
   simple non-prefixed class names within the C++ name space. Naming
   classes of add-ons like QMyClass is also OK.

   4) In the header of each source file, keep a reference to the
   original authors, like me, or mention only Nokia?

 Nokia did not develop the code, and must not be referenced as the
 author. Copyright remains with the author.

   5) How to make an example of the structure of the project is the
   addon for QtSerialPort (in order to make the image and likeness),
   from any Addon-project? Or maybe there is a specific example of a
   good where to get the project structure for addon?

 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#The_structure_of_a_new_module_repository

 --
 .marius

 08.02.2012, 22:08, marius.storm-ol...@nokia.com:
 On 2/8/12 11:59 AM, ext Denis Shienkovscap...@yandex.ruwrote:

 Hi Marius.

 I do not understand this bit:
 --
 --
 For the other Qt repos we treat the Gitorious repo as public repo, so
 most people will clone from there. Then we regularly push from Gerrit to
 Gitorious to keep them in sync. However, we disable Merge Requests in
 Gitorious, since we want to force all contributions through the Gerrit
 system.
 --
 --

 ie I and other special/selected developers will commits/push to Gerrit,
 and then tested and approved by the pieces of code will be sent to
 Gitorious?

 Well, not more special than having a Jira/Gerrit account with an
 accepted CLA agreement :)

 For the Qt Essential modules we have a script which automatically pushes
 the latest changes to the Gitorious location. And we prefer most people to
 use those as the primary clone location, since it 

Re: [Development] Schedule for Qt 4.8.1

2012-02-13 Thread Turunen Tuukka


On 13.2.2012 18.32, Thiago Macieira thiago.macie...@intel.com wrote:

On segunda-feira, 13 de fevereiro de 2012 12.28.06, Turunen Tuukka wrote:
 Hi All,
 
 We would like to release next version of Qt Commercial 4.8 around
mid-March.
 
 It would be really great if we can again sync the LGPL and Commercial
 releases both in timing and content to the extent possible.
 
 If we agree that mid-March is a good target time for the next patch
release,
 we should have as much as possible all the fixes in by end of February.
 Naturally a patch release will not have any new features, but there are
 some fixes that we are very much targeting to be in 4.8.1 such as ones
 needed for publishing apps in the Mac App Store.
 
 Since 4.8 was moved to gerrit, we have been actively redoing our merge
 requests, and quite much has already been merged into the 4.8 branch.

I think that it's a worthy goal. Let's try to have that release in March
then.


Excellent. As it is a patch release, I think it will be just fine that
everybody knows the timing, and can handle the fixes accordingly.


After that, I'd like to see 4.8 move into a periodic release mode, either
in 
time or in number of changes.


For the patch releases there always needs to be the capability to issue
one quickly in case something urgent comes up (like a serious security
issue).

Having the patch releases strictly tied into some intervals, or amount of
fixes does not work well in my opinion. But I do agree that some criteria
should be agreed upon, so that it is easy to know when the time is right
for a release.

Then it should also be noted that 4.8 is a bit of a special case as the
last of the Qt 4 series. It needs a more patch releases than I think will
be needed for Qt 5 (with regular 6 months for the minor releases it should
be very easy to migrate between these).

I think good timing for the 4.8 patch releases would the roughly:

4.8.1 in mid-March 
4.8.2 in end-May
4.8.3 in end-September
4.8.3 in mid-January 2013

Which leads to about 3 month intervals, that should be suitable for
increasing the stability of this already mature base.

As said, we need to also see what makes sense content wise, and be
prepared for a quick release if something urgent comes up.

I am very happy to hear your feedback and thoughts on this. After the
discussion it would be good to update the wiki with jointly agreed release
plan for 4.8.

Yours,

Tuukka

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


Re: [Development] Importing sahumada: Can you import http://gitorious.org/qserialdevice/qserialdevice (the 2.0 branch) into playground/QtSerialPort

2012-02-13 Thread Denis Shienkov
Hi all.

Yes, most likely LGPL + commercial. So, there is no reason to worry.

Best regards,
Denis

14.02.2012, 04:08, marius.storm-ol...@nokia.com:
 Given that the QSerialDevice developers have accepted the CLA for the project 
 effective from start of the project, the project is now open for licencing 
 both under LGPL and commercial license; just like any other module in Qt. 
 AFAIK, though IANAL.

 --
 Sent from my Nokia N9

 On 2/13/12 16:56 ext Angel Perles wrote:
 Hi Denis,

 I have a question about the license for QSerialDevice. In gitorious it
 appears as GPLv3.

 I think it could be interesting to have a more permisive licensing
 option such as LGPL or BSD. This will allow to push forward this library
 compared with others such as QextSerialPort with not established license.

 Others guys and me (users of QextSerialPort) are seeking for an
 appropiate library for collaborating.

 Best regards,
 Àngel

 El 11/02/12 18:28, Denis Shienkov escribió:
 Hi all.

 I prepared for the first QtSerialPort review.
 But then I do not know what to do:
 Who will review my changes? Who will do the audit?
 Someone, please check the code, because I still have not figured much in the 
 features by:
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt

 Best regards,
 Denis

 09.02.2012, 23:46, marius.storm-ol...@nokia.com:
 On 09/02/2012 13:26, ext Denis Shienkov wrote:

   Hi Marius.

   I have a few more questions (or offers):

   1) Perhaps, instead of:
   ...
   and start pushing to refs/for/2.0 to the Gerrit repo.
   ...
   done refs/for/master? Because for the main branch is gerrit master,
   and not 2.0 (or am I misunderstanding something?).

 Sure, whatever you prefer. Gitorious' 2.0 branch was pushed to both 2.0
 and master, since Gerrit requires a 'master' branch. We didn't import
 the Gitorious master branch, since I think you only rebased the 2.0
 branch to avoid the commits without CLA signoff.

 How you proceed, with commits in the master or 2.0 branch is up to you
 as the maintainer.

   2) It may be worth in the current repository QSerialDevice Gitorious
   marked as deprecated (well, or something like that), and instead it
   create a new one with a new name (ex. QtSerialPort), etc. The reason
   is that QSerialDevice will not reflect the inner essence, after
   integration, and will mislead the majority of public users.

 Sure, I agree it's probably cleaner to do that. (Our internal sync
 script also infact requires the repositories to be named the same in
 Gerrit and in Gitorious.)

   3) Let us define - what the class name give, with prefix Qt, Q or no
   prefix? I looked at some of the projects Gerrit without CI (eg
   qtprocessmanager, qtjsonstream) and found that a all class names
   without the prefix. I also stick to this style?

 See
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#Using_the_module_name_in_application_code_and_documentation

   For Qt Add-On Modules, a C++ namespace is required to avoid class
   naming clashes with other modules in the public API. For the Qt
   Foo module the namespace would be QtFoo. Exception: in order to
   keep source compatibility with Qt 4, no namespace is required for
   former Qt 4 modules. When naming classes, the best practice is use
   simple non-prefixed class names within the C++ name space. Naming
   classes of add-ons like QMyClass is also OK.

   4) In the header of each source file, keep a reference to the
   original authors, like me, or mention only Nokia?

 Nokia did not develop the code, and must not be referenced as the
 author. Copyright remains with the author.

   5) How to make an example of the structure of the project is the
   addon for QtSerialPort (in order to make the image and likeness),
   from any Addon-project? Or maybe there is a specific example of a
   good where to get the project structure for addon?

 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#The_structure_of_a_new_module_repository

 --
 .marius

 08.02.2012, 22:08, marius.storm-ol...@nokia.com:
 On 2/8/12 11:59 AM, ext Denis Shienkovscap...@yandex.ru    wrote:

 Hi Marius.

 I do not understand this bit:
 --
 --
 For the other Qt repos we treat the Gitorious repo as public repo, so
 most people will clone from there. Then we regularly push from Gerrit to
 Gitorious to keep them in sync. However, we disable Merge Requests in
 Gitorious, since we want to force all contributions through the Gerrit
 system.
 --
 --

 ie I and other special/selected developers will commits/push to Gerrit,
 and then tested and approved by the pieces of code will be sent to
 Gitorious?

 Well, not more special than having a Jira/Gerrit account with an
 accepted CLA agreement :)

 For the Qt Essential modules we have a 

Re: [Development] Importing sahumada: Can you import http://gitorious.org/qserialdevice/qserialdevice (the 2.0 branch) into playground/QtSerialPort

2012-02-13 Thread Denis Shienkov
Hi all.

Well, what with the Code Review? Who controls it?

I prepared the first review here: http://codereview.qt-project.org/16042

1) Interested in the question about the type of macro QT_BEGIN_NAMESPACE_XXX, 
QT_END_NAMESPACE_XXX, etc.
What a way to more correct: leave these macros (as in the examples of projects 
from the playground Gerrit),
or replace them with standard type QT_BEGIN_NAMESPACE, etc. (for example, the 
module QtSensors, etc.)?

2) Used somewhere in the build scripts, etc. variables and PUBLIC_HEADERS 
PRIVATE_HEADERS in *. pro files of certain modules?
That is, These names are reserved specifically for the generation and 
integration of modules, or just this names and they are not used anywhere else 
except *.pro:
..
HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS
..
??

Best regards,
Denis

11.02.2012, 21:28, Denis Shienkov scap...@yandex.ru:
 Hi all.

 I prepared for the first QtSerialPort review.
 But then I do not know what to do:
 Who will review my changes? Who will do the audit?
 Someone, please check the code, because I still have not figured much in the 
 features by:
 http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt

 Best regards,
 Denis

 09.02.2012, 23:46, marius.storm-ol...@nokia.com:

  On 09/02/2012 13:26, ext Denis Shienkov wrote:
   Hi Marius.

   I have a few more questions (or offers):

   1) Perhaps, instead of:
   ...
   and start pushing to refs/for/2.0 to the Gerrit repo.
   ...
   done refs/for/master? Because for the main branch is gerrit master,
   and not 2.0 (or am I misunderstanding something?).
  Sure, whatever you prefer. Gitorious' 2.0 branch was pushed to both 2.0
  and master, since Gerrit requires a 'master' branch. We didn't import
  the Gitorious master branch, since I think you only rebased the 2.0
  branch to avoid the commits without CLA signoff.

  How you proceed, with commits in the master or 2.0 branch is up to you
  as the maintainer.
   2) It may be worth in the current repository QSerialDevice Gitorious
   marked as deprecated (well, or something like that), and instead it
   create a new one with a new name (ex. QtSerialPort), etc. The reason
   is that QSerialDevice will not reflect the inner essence, after
   integration, and will mislead the majority of public users.
  Sure, I agree it's probably cleaner to do that. (Our internal sync
  script also infact requires the repositories to be named the same in
  Gerrit and in Gitorious.)
   3) Let us define - what the class name give, with prefix Qt, Q or no
   prefix? I looked at some of the projects Gerrit without CI (eg
   qtprocessmanager, qtjsonstream) and found that a all class names
   without the prefix. I also stick to this style?
  See
  http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#Using_the_module_name_in_application_code_and_documentation

   For Qt Add-On Modules, a C++ namespace is required to avoid class
   naming clashes with other modules in the public API. For the Qt
   Foo module the namespace would be QtFoo. Exception: in order to
   keep source compatibility with Qt 4, no namespace is required for
   former Qt 4 modules. When naming classes, the best practice is use
   simple non-prefixed class names within the C++ name space. Naming
   classes of add-ons like QMyClass is also OK.
   4) In the header of each source file, keep a reference to the
   original authors, like me, or mention only Nokia?
  Nokia did not develop the code, and must not be referenced as the
  author. Copyright remains with the author.
   5) How to make an example of the structure of the project is the
   addon for QtSerialPort (in order to make the image and likeness),
   from any Addon-project? Or maybe there is a specific example of a
   good where to get the project structure for addon?
  http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#The_structure_of_a_new_module_repository

  --
  .marius
  08.02.2012, 22:08, marius.storm-ol...@nokia.com:
  On 2/8/12 11:59 AM, ext Denis Shienkovscap...@yandex.ru  wrote:
  Hi Marius.

  I do not understand this bit:
  --
  --
  For the other Qt repos we treat the Gitorious repo as public repo, so
  most people will clone from there. Then we regularly push from Gerrit to
  Gitorious to keep them in sync. However, we disable Merge Requests in
  Gitorious, since we want to force all contributions through the Gerrit
  system.
  --
  --

  ie I and other special/selected developers will commits/push to Gerrit,
  and then tested and approved by the pieces of code will be sent to
  Gitorious?
  Well, not more special than having a Jira/Gerrit account with an
  accepted CLA agreement :)

  For the Qt Essential modules we have a script which automatically pushes
  the latest changes to the Gitorious