Recap of the Qt Contributors Summit
The Qt Contributors Summit occurred June 10-11 in Berlin. Here is a quick summary of my impressions:
1) Unifying Qt
Qt Project is highly interested in unifying Qt Commercial offerings with Qt Open Source. This was a major point made by Lars Knoll in his keynote speech and there were two discussion sessions on the matter.
They are worried about the confusion in the marketplace as to what Qt Open Source contains vs. Qt Commercial. The project would like to have Qt available for download from one source and have the installer / maintenance tool offer extra commercial packages.
This unification may happen on a different URL separate from qt-project.org. That new URL would be a neutral place for all partners including Digia to promote their wares. As for qt-project.org, it would continue as a home for Qt Development rather than end users. The feeling is that it would take a year or more to make a transition like this.
2) Qt Open Source
Qt Open Source is doing really well. There has been approximately 250,000 downloads of Qt 5.3 in the first seven days. Over 1,000,000 downloads of Qt 5.2 so far since its release.
3) Many Things in Qt Are Stable and Rather Quiet
QtCore is relatively quiet. Hot topics are combining Qt's UNICODE support with that of (libICU) and fixing issues with QProcess. Thiago Macieira, one of the Qt Project maintainers, wants to keep QtCore from becoming the kitchen sink library.
Qt Scene Graph is also now considered almost done. Some works still needs to support QQuickWidget, QOpenGLWidget and Dynamic Context Switching. Also, a new QQuickRenderControl is currently private, but will be public in Qt 5.4.
Qt Widgets is of course, considered stable and done. It also lacks a maintainer, which needs to be rectified.
4) Other Things Need a Ton of Work
Qt QML and QtQuick topics dominated the agenda. There are new QML language features being discussed such as private properties and a strict mode that will provide a slew of warnings against doing this. Several examples that are not recommended such as accessing ids from above your file scope or writing lots of procedural code where declarative code should be used.
There is one major project in particular that the QtQuick team is seeking assistance. That is making the view system more abstract to make it easier to create custom views without bastardizing PathView. The new system is roughly designed, but has no one working on it. The system they are looking to implement consists of:
a) Layout instance that will describe how the items appear geometrically
b) Controller instance to control how the user navigates the view (think horizontal page based parallax scrolling for list view)
c) Delegate Factory that can create different delegates based on model data
d) Delegate - The usual
e) Model - The usual
The QtQuick designer in Qt Creator is getting a lot of attention, but it's proving difficult to implement. As soon as procedural code is used things go off the rails. There could be a solution by adding more hooks into the quick engine or implementing a more widgets designer like pattern where the file edited by the designer is not edited by the user.
QtPrintSupport will get a lot of attention in 5.5 and is expected to be completed by 5.6. There are tons of platforms to support and dialogs that need to be written as well.
Qt3D was re-written. New implementation is looking good although it depends on KDE's ThreadWeaver library, which is LGPL. They are looking to swap that out before final release or Qt3D would be LGPL only.
5) Other Considerations
Ford wants to contribute some of its research projects back to Qt.
a) The Replicant IPC system is basically a publish-subscribe system using Qt Properties, signals and slots via a master/slave relationship. The slave side stores a local cache of the properties, which meshes nicely with QML's requirement of being able to do Synchronous gets of properties. There was a lot of discussion about this topic. Some think it overlaps too much with DBus and DBus should be upgraded to 1.0 to make it cross-platform.
b) Full QtStateMachine in QML. Ford wrote wrappers for QtStateMachine's C++ functionality. This included nested states, parallel states, state history, etc. They also wrote a Qt Creator plugin to edit the state machine graphically. It's pretty sweet, was very well received and may see it the development branch soon.
References
1.Networking, Qt Project Wiki, Qt Contributors Summit 2014, accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCS14QtNetwork
2. Qt3D, Qt Project Wiki, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/Qt3D
3. QtWayland, Qt Project Wiki, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCS2014_QtWayland
4. QtPrintSupport, Qt Project Wiki, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtPrintSupport
5. Qt Quick, Qt Project Wiki, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCS14TouchAndGesture
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCS14QtQuick
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCs14MoreDeclarative
6. Qt in Scientific Research, Qt Project, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/QtCs14QtInScientificResearches
7. Qt Core, Marshut.com, Qt Contributors Summit 2014; accessed June 20, 2014:
www.marshut.com/iykszq/qtcs-qtcore-session.html
8. Windows, Qt Project Wiki, Qt Contributors Summit 2014; accessed June 20, 2014:
qt-project.org/groups/qt-contributors-summit-2014/wiki/Qs2014Windows