On 25/05/2011, at 2:13 AM, Jason H wrote:

I think if we could lock the lib and exe to specific versions (like Windows SxS)
we'd be better off. We just need a way to link to specific versions of the Qt
libraries. (Though SxS is still problematic, I think it is an improvement)

You technically already have what you need with the current releases. The major 
part of the version is also part of the library name that applications link to 
(or should link to!). Under Mac and linux, binaries link to llibQtCore.4.dylib 
and ibQtCore.so.4 respectively. Under Windows, the major version is made part 
of the library name itself rather than as part of the extension (ie 
QtCore4.dll) so you have no choice but to link against a specifc major version. 
Thus, there is already the mechanism required  for an application to link to 
specific binary compatible levels of Qt.

Perhaps part of the problem is that the major part of the Qt version changes 
very slowly. This in turn means that backwards compatibility has to be 
maintained for long periods. It's somewhat unfortunate that the Qt 
business/marketing is linked to the technical aspect of version numbering. From 
a technical point of view, a version number has some fairly well established 
conventions that many (most?) mature libraries follow. The major part of the 
version number is what libraries and executables link against (or should link 
against!). If you build against the earliest release of a particular major 
version, it should work with all later releases for the same major version. For 
example, if I built against Qt 4.0.0, it should work with any 4.x.y version. 
The problem with Qt is that the major part changes slowly and new features 
people want are introduced with minor point releases. This leads developers to 
situations where they have to say their software "requires Qt 4.x or later" i
 nstead of simply "requires Qt 4". This makes the problem of what to link 
against much harder, because if you make your application link against, say, 
version 4.4 instead of just 4, then it won't work with 4.5 or later! This is 
particularly evident as of around Qt 4.6, which had a number of new things 
added (the pattern of adding more new things continued with 4.7).

So the mechanism is there to link against specific versions, it's just that the 
way Qt increments its version numbers sometimes works against the developer. 
Now, from a marketing aspect, Qt has a pattern of keeping its major version the 
same for long periods. People like to be able to say "Uses Qt4", but in 
reality, "Qt4" isn't enough any more. Too often, I have to ask "Which version 
of Qt4?", meaning which minor release, since new features appear only in 
certain minor releases. This is where marketing "Qt4" becomes at odds with what 
developers need "Qt4" to mean from a technical point of view.

There are different ways to address this. One is to decouple the public 
"marketing" release version from the underlying "technical" version. Examples 
of this are where you see things like "Autodesk Maya 2010", which makes no 
mention of the major version number used by the underlying libraries you would 
link against (it uses Qt 4.5.3, incidentally). They have the freedom to change 
or keep the major version as they need to from release to release. This sort of 
decoupling may appeal to some but may also be unattractive to others. Another 
option is to simply have more frequent major releases. Anything longer than a 
year is probably too long for the Qt community (many would argue even that is 
too long), but anything shorter and you risk making Qt too much of a moving 
target. I suspect that the compliance costs for things like LSB also get higher 
the more often you change the major version.

So that's a couple of ideas for improvement. I'd be particularly interested in 
hearing if Nokia is willing to consider changing how it handles major version 
increments to help address this issue, but let's see what other ideas and 
opinions people have too. ;)


--
Dr Craig Scott
Computational Software Engineering Team Leader, CSIRO (CMIS)
Melbourne, Australia



_______________________________________________
Qt5-feedback mailing list
Qt5-feedback@qt.nokia.com
http://lists.qt.nokia.com/mailman/listinfo/qt5-feedback

Reply via email to