[Poll] Which direction should Qt Quick 2.x development take?
-
p{color:#777}. ----------------------------------------------------------------------------
p{color:#258}. Qt 5.0 (which is already in feature-frozen alpha stage) introduces the new scene-graph based Qt Quick 2.0 framework. While the foundations are there, and for many use-cases (mobile apps, certain types of games, ...) it is already deemed a vastly superior way of creating UI's, it is definitely not yet ready for replacing the Qt Widget framework everywhere.
p{color:#258}. Considering that only finite development resources are available, which potential improvement/add-on for Qt Quick 2.x should - in your opinion - have the highest priority for Qt 5.1 and 5.2?
%{color:white}.%
-
Desktop Components
|{text-align:left}. a comprehensive set of Qt Quick UI elements with native look & feel on all supported desktop platforms.|
|{text-align:left;color:#BF5F00}. %{text-decoration:underline}Note:% There is currently a "labs project":http://labs.qt.nokia.com/2011/03/10/qml-components-for-desktop/ for this.| -
Generic Theming Support
|{text-align:left}. a way to easily create themeable components, similar to what QStyle make possible for QWidget subclasses| -
Binary QML
|{text-align:left}. support for translating QML into a corresponding binary data structure at compile time (rather than letting the Qt Quick engine do it during application start-up), for IPR(intellectual property rights) protection and reduced application start-up time| -
Expanded C++ Component API
|{text-align:left}. support for extending existing Qt Quick components, and more convenience for implementing new ones, in C++|
|{text-align:left;color:#BF5F00}. %{text-decoration:underline}Note:% Qt Quick 2.0 does already allow C++ developers to create custom components by subclassing "QQuickItem":http://doc.qt.nokia.com/qt5-snapshot/qquickitem.html or "QQuickPaintedItem":http://doc.qt.nokia.com/qt5-snapshot/qquickpainteditem.html. However, the built-in components (like "Rectangle":http://doc.qt.nokia.com/qt5-snapshot/qml-qtquick2-rectangle.html, etc.) are not exposed to C++ and hence cannot be extended/re-used, and also some users feel that in general more C++ convenience API could be provided.| -
Full C++ API %{color:#BF5F00}(should have been better named: "Dedicated C++ Front-end API")%
|{text-align:left}. first-class support for instantiating Qt Quick elements and populating the Qt Quick scene graph directly from C++, without using any QML - potentially allowing C++11 lambdas (or a custom signal/slot based solution) instead of JavaScript expressions for property bindings|
|{text-align:left;color:#BF5F00}. %{text-decoration:underline}Note:% Qt Quick 2.0 does already provide some C++ API for manually populating the scene graph through "QSGNode":http://doc.qt.nokia.com/qt5-snapshot/qsgnode.html, "QSGGeometry":http://doc.qt.nokia.com/qt5-snapshot/qsggeometry.html, "QSGMaterial":http://doc.qt.nokia.com/qt5-snapshot/qsgmaterial.html, etc. However, some things - like instantiating built-in components - is not possible without passing around at least small snippets of QML, and no clean C++-only alternative is provided for property bindings (one of the things that make Qt Quick so powerful), and altogether some users feel that the existing C++ scene-graph API should be either expanded, or complemented by a different one (e.g. declarative, but still native C++) to make it a "first-class citizen" alternative to the QML "front-end" for Qt Quick.| -
Optional V8 Dependency
|{text-align:left}. support for building & deploying Qt Quick without the V8 engine for applications which don't need any of the JavaScript-depending features| -
Graphics View Component
|{text-align:left}. a Qt Quick component providing similar massive-data-visualization functionality as the QWidget-based QGraphicsView (including things like BSP tree indexing of items, collision detection, ...)| -
some other improvement/add-on (specify in comment section)
-
nothing - I'm happy with what Qt Quick 2.0 (to be shipped with Qt 5.0) provides
-
nothing - I don't like Qt Quick altogether, I'd like to see more resources put into improving other parts of Qt
%{color:white}.%
p{color:#258}. Other things which have been requested before in various places, but which I missed at the time when I created the poll (if applicable to you, select "some other improvement/add-on" in the poll and specify by leaving a comment):
%{color:white}.%-
Sandboxed Mode
|{text-align:left}. Ability to safely run QML files from non-trusted sources, e.g. for using Qt Quick as a Powerpoint replacement.|
|{text-align:left;color:#BF5F00}. %{text-decoration:underline}Note:% For an idea of what QML makes possible for "presentation" use-cases, see this "labs project":http://labs.qt.nokia.com/2011/05/30/a-qml-presentation-system .| -
Better Model/View Support
|{text-align:left}. More convenience for creating QML views for complex custom data models implemented in C++.|
p{color:#777}. ------------------------
[Disclaimer: This poll does not have an official status of any kind. I am just a fellow Qt user myself, and the results of this poll will be for everybody's information only. Those contributing to Qt (or their respective employers) decide for themselves what to work on/what to prioritize. Everybody is free to contribute to Qt thanks to "Open Governance":http://labs.qt.nokia.com/2011/10/21/the-qt-project-is-live...] -
-
I appreciate you putting together this poll. The topic items seem fairly inclusive of various things people have been talking about. Thank you!
-
As I see here: the desktop and c++ lead the poll.
IMHO: the QML/JS line exists only for (Nokia) mobil, this is a minority in the whole Qt development.
But the majority use the Qt in multiplatform desktop c++ applications.
Probably, this is because, Qt has C++ dekstop origin... -
[quote author="broadpeak" date="1335621393"]As I see here: the desktop and c++ lead the poll. IMHO: the QML/JS line exists only for (Nokia) mobil, this is a minority in the whole Qt development. But the majority use the Qt in multiplatform desktop c++ applications. Probably, this is because, Qt has C++ dekstop origin...[/quote]
Is this so strange?
It almost seems that most people do not understand the reason and origin of Qt anymore.
Qt is (was?) a cross desktop C++ api.
It now becomes a very limited platform for creating flash/html5 like apps and games (that's my opinion of course).I do not mind that the QML capability gets added.
I do greatly mind that bigger parts of Qt need to suffer from this.
I do not have the money, I do not have the knowledge and I do not have the time to turn this around. I only have my voice and passion for Qt. I'm very sad and deeply disappointed that Nokia steers Qt in the current way.However, I would at the same time like to invest time in QML with the Raspberry Pi as I think on this platform it can be a nice tool.
-
some other improvement/add-on
Easier connecting of advanced QAbstractItemModel to QML.
-
I wouldn't mind QtQuick so much, if it weren't for the extreme awkwardness of communicating with the backend. It's almost like Qt is deliberately discouraging the use of C++ anywhere.
-
It agree it would be nice to see what people are thinking in the community. I'd just like to annotate with some points on the scope of these options (very important for anyone who wants to actively prioritize something by contributing). This might also provide some insight on how realistic it is for these to happen by 5.1.
[quote author="jdavet" date="1335468153"]
- Desktop Components
[/quote]
Everyone agrees this should be done, it fits into the QML picture well, and there's a labs project already. If a common API or architecture can be achieved (even a de facto one by convention) then per platform implementations shouldn't be too hard.
[quote author="jdavet" date="1335468153"]
- Generic Theming Support
[/quote]
Already multiple labs level projects, http://qt-project.org/wiki/QtDesktopComponents and http://codecereal.blogspot.com.br/2012/04/qml-themingstyling.html . Everyone also seems to agree this should be done as part of QtQuick, just that no-one has had time to do it.
[quote author="jdavet" date="1335468153"]
- Binary QML
[/quote]
Already done ;) . The only thing missing is allowing the compile phase to be run separately to instantiating the scene, so that the binary data can be stored. This extra step wouldn't be in conflict with any existing QML direction, but no-one has gotten around to it.
[quote author="jdavet" date="1335468153"] - Expanded C++ Component API
[/quote]
This one is big. Not just in terms of relative furor, but in terms of the work involved too. For UI elements we have usually found the ideal QML API to be different to the ideal C++ API, and for the QtQuick UI primitives we have been focusing the first several years on just getting a good QML API. I'm not even sure we're done with that challenge.
Creating an adjacent C++ API sharing the same implementation without causing drawbacks for one or both APIs is not theoretically impossible. But it will be tough, and there's a lot of work involved. I don't really know how that would look. Eventually, when the QML API is finished, core QML contributors will probably start to tackle this problem. But I can't see visible progress being made by 5.1, there's just too much to do.
[quote author="jdavet" date="1335468153"]
- Full C++ API %{color:#BF5F00}(should have been better named: "Dedicated C++ Front-end API")%
[/quote]
Basically a subset of the last one. Once C++ APIs have been developed to allow that sort of fine control from C++, basic instantiation and manipulation should come for free.
[quote author="jdavet" date="1335468153"] - Optional V8 Dependency
[/quote]
Plausible, but it's not a clear usecase. You've thrown away much of QML by removing full JS bindings even if we still allowed optimized bindings. While simpler than adding a C++ API, that sounds like the correct solution for this usecase.
[quote author="jdavet" date="1335468153"]
- Graphics View Component
[/quote]
Interesting idea. I haven't heard of this one before, so I don't know if it's something that should be done by QQuickCanvas (as a 'better' QGraphicsScene/View) or whether there should be a separate element for this more specialized usecase. A clear usecase or a labs-level prototype might be necessary to convey this idea effectively.
[quote author="jdavet" date="1335468153"] - nothing - I'm happy with what Qt Quick 2.0 (to be shipped with Qt 5.0) provides
[/quote]
QtQuick is still very young - I'm quite suspicious of anyone who says this ;) .
[quote author="jdavet" date="1335468153"] - Sandboxed Mode
[/quote]
This is a good idea that should be straight forward. All you need is a network access manager that denies loading external resources (and xmlhttprequest), and a strict limit on the C++ plugins that can be imported (e.g., only allow "QtQuick 2.0" to import C++ plugins).
[quote author="jdavet" date="1335468153"]
- Better Model/View Support
[/quote]
This one's already on my list as a future research project :) . Very ill-defined scope at the moment though.
[quote author="jdavet" date="1335468153"]
[Disclaimer: This poll does not have an official status of any kind. I am just a fellow Qt user myself, and the results of this poll will be for everybody's information only. Those contributing to Qt (or their respective employers) decide for themselves what to work on/what to prioritize. Everybody is free to contribute to Qt thanks to "Open Governance":http://labs.qt.nokia.com/2011/10/21/the-qt-project-is-live...][/quote]This disclaimer explains the official way to prioritize things - contributors all get to decide for themselves. Becoming a contributor is an easy way to advance many of these forward (well, easy if you have C++ skills already). Commercial customers should be able to influence what Digia prioritizes via separate channels.
- Desktop Components
-
While polls are definitely useful for knowing what people want, it's not how the decisions are made in Open Governance. Doers (active contributors) get to decide what is done, how and when. So, if you want to affect the direction of Qt, pick up your battle-axe and get crackin' on your contribution. Do not expect others to scratch your itch for you.
That said, the perfect opportunity for affecting the direction of Qt is to participate in the Qt Contributor Summit, where Maintainers, Contributors and Sponsors gather to discuss where we want to take Qt for the next release(s). Signup for the event is here http://qt-project.org/groups/qt-contributors-summit-2012/wiki
-
Better Model/View Support
-
[quote author="MStormO" date="1335840907"]While polls are definitely useful for knowing what people want, it's not how the decisions are made in Open Governance. Doers (active contributors) get to decide what is done, how and when. So, if you want to affect the direction of Qt, pick up your battle-axe and get crackin' on your contribution. Do not expect others to scratch your itch for you. That said, the perfect opportunity for affecting the direction of Qt is to participate in the Qt Contributor Summit, where Maintainers, Contributors and Sponsors gather to discuss where we want to take Qt for the next release(s). Signup for the event is here http://qt-project.org/groups/qt-contributors-summit-2012/wiki [/quote]
Or how to keep the voice of the little open source desktop developer quiet.
I don't understand your post at all.
The only way I can voice my opinion is through these forums/blogs and polls.I can't attend your contributor summit. I do not have the right credentials, I do not have the time, I do not have the money to travel and the amount of people that can attend is limited.
I can't help with writing core parts of Qt. I do not have the knowledge and I do not have the time. Did you know I'm a user of Qt not a developer? I use Qt to make my daily work easier.Tell me how I can not interpret your post as anything else as "get bent" ?
There are few things I can't stand in this world, one is unfairness. You are unfair! -
[quote author="tbscope" date="1335856732"]I don't understand your post at all.
The only way I can voice my opinion is through these forums/blogs and polls.[/quote]Nobody said you can't voice your opinion. The point being made is that code doesn't come out of thin air, it requires people to actually work on it. As the open source developer you profess to be, surely you understand that, so I won't go into too much detail.
So, assuming we can agree that for code to materialise, it needs developer time. There's a number of different ways to get developer time. I've covered these elsewhere, but here's a rough list:
- do it yourself
- pay someone else to do it for you (Digia, other consultancies)
- hope that you find someone else that is willing to do one of the above
I'm perfectly happy for you to be in category #3 on that list, I really don't mind. But you need to adjust your expectations as to how likely it is that someone is going to pay attention to you and do what you want when you're offering nothing but opinions.
Opinions don't pay engineer's salaries, add features, or fix bugs.
Now, that doesn't mean that your complaints may not be valid - I don't think anyone here has said anything like that - but it does mean that they most likely won't get the priority you think they deserve.
Marius was pointing out - quite rightly - that Qt is a meritocracy. A do-ocracy. A community of people who work to improve Qt together. If you're here because you're getting something for 'free', then you're lucky that open source allows for that to happen. It just doesn't mean anyone has to pay attention to you.
Finishing with a quote from Linus Torvalds, who said it best: "talk is cheap, show me the code":https://lkml.org/lkml/2000/8/25/132.
-
Something worth addressing seperately:
[quote author="tbscope" date="1335856732"]I can't help with writing core parts of Qt. I do not have the knowledge and I do not have the time.[/quote]
Writing Qt is pretty much the same as writing any other code. There's nothing about it that makes it special, or magical, apart from your preconceptions. Sure, there are somewhat strict quality standards (meaning you need to write tests to prevent bugs from reappearing etc), but many other projects have these, and they aren't so hard to understand.
What's more is that there are plenty of people around the project who will more than happily help out if you want to work on something - anything. You're welcome here.
"I don't have the time" - well, I can understand that to some degree. The work I do on Qt is done in my own free time, too - I'm not paid for it. But Qt as a whole is greater than the sum of its parts: the more everyone chips in a little, the more we get done as a whole.
Finally, you've got to admit that there's something cool about thousands of developers and millions of people worldwide using code you wrote, no matter how small.
-
I'm glad to see this poll appear. It seems way more balanced than the previous one. It is rather limiting though, in the sense that you can only select one item, while I think more than one item on the list is important.
I voted for the Desktop Components. This labs project, already demonstrated at last years Contributors Summit, really deserves more attention. However, I think that should be in the context of a wider effort to make components more compatible in terms of API across the range of platforms.
Model/View is also of prime importance, I think. However, I think this cannot stand separately from a re-thinking of the current C++ model view classes. This is a big task to do right, I think.
I think it should be a goal that at least the components become easier accisible from C++, but I understand the need to stabilize them first before freezing the API by making them public. However, being able to compile-in QML in binary form and get rid of the V8 engine if you want would be very nice. If only because it would make distribution to Apple devices and systems easier. Yes, you loose features in QML if you do that, but those that can live with that really benefit in terms of cross platform compatibility and distribution file size, as well as in startup times.
-
Hi.
I would like to know if there are any ongoing work to use ANGLE (http://code.google.com/p/angleproject/) inside the QDeclarative module, this topic seemed the right place to ask.
It's a feature I really like to see.
On some windows computer, opengl is not supported ( mostly because the drivers are not installed or outdated) but directX 9 is supported. So ANGLE would be a way to support QML 2.0 on most of the windows desktop out there.
If not, is it possible to have a quick evaluation of how much efforts this would cost ?
Thanks ! -
@cor3ntin:
There has been some talk about it, but as far as I know, no one has yet experimented with it.Feel free to do some experiments and report them on the development mailing list, which you will find here: http://lists.qt-project.org/mailman/listinfo
-
1.) Desktop components
but PLEASE focus on making it possible to have the SAME api for ALL components - at least for those components which are generic on all platforms.
Example: I don't want to write 3 Qml Uis for Windows, Linux and OSX just for supporting all of them - the platform desktop components should take care about everything for me by just including something like:
import org.qt.qml.desktopcomponents; -
This poll is impossible to answer, because it lists multiple things that are fundamental requirements as mutually exclusive choices :-)
-
[quote author="miroslav" date="1337777681"]This poll is impossible to answer, because it lists multiple things that are fundamental requirements as mutually exclusive choices :-)[/quote]
Yeah, the forum does not support multiple-answer polls. So you'll need to prioritize... :-)
The "right way" to do this would actually require setting up a special survey web page, and allow the audience to rate each feature on a scale like this:
|\6{text-align:left;padding:3px}. 3. Binary QML |
|\6{text-align:left;padding:3px}. %{color:white}...% Adding this feature right now (for Qt 5.1) would be...|
|{border-top:none}. |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#c32}harmful% |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#b82}not useful% |{border-top:none}. !{vertical-align:bottom}http://img688.imageshack.us/img688/6915/rbchecked.gif! %{color:#ab2}nice to have% |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#7b2}very useful% |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#3b2}vital% |
|\6{text-align:left;padding:0}. %{color:white}...% Adding this feature eventually (at some point in the future) would be...|
|{border-top:none}. |{border-top:none}. !{vertical-align:bottom}http://img406.imageshack.us/img406/7249/rbdisabled.gif! %{color:#c32}harmful% |{border-top:none}. !{vertical-align:bottom}http://img406.imageshack.us/img406/7249/rbdisabled.gif! %{color:#b82}not useful% |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#ab2}nice to have% |{border-top:none}. !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! %{color:#7b2}very useful% |{border-top:none}. !{vertical-align:bottom}http://img688.imageshack.us/img688/6915/rbchecked.gif! %{color:#3b2}vital% |Doing it as a proper survey would also allow correlating the results with different user groups, by adding questions like...
|\6{text-align:left;padding:3px}. What will you use Qt Quick for primarily, in the forseable future? |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! freeware or open-source project(s) |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img688.imageshack.us/img688/6915/rbchecked.gif! commercial software ||\6{text-align:left;padding:3px}. What's your experience level with Qt Quick? |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! don't know much about it yet |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! read lots of documentation, but didn't get my hands dirty yet |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! already experimented with it somewhat |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! wrote one or more small apps with it (or ported existing ones) |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img688.imageshack.us/img688/6915/rbchecked.gif! successfully wrote a large, complex application with it (or ported an existing one) |
|{text-align:left;border-top:none;padding:3px}. %{color:white}..........% → type of application: !http://img717.imageshack.us/img717/8218/textfield.jpg! |
|{text-align:left;border-top:none;padding:3px}. %{color:white}...% !{vertical-align:bottom}http://img545.imageshack.us/img545/9942/87517568.gif! helped to design/develop Qt Quick itself |But for this to happen, the Qt Project (or Nokia or Digia) would have to get behind it and do it as an official survey.
-
I'd like to see Qt Mobility made available for Desktop targets in Qt Creator (I haven't tried 5.0 yet, but in Qt 4.8 I am not able to compile for desktop if I use Mobility). Also, if Mobility gets allowed for desktop targets, I'd like to see it renamed to something more suitable because a desktop target clashes with the "mobile" aspect of the name "Qt Mobility".
-
[quote author="broadpeak" date="1335621393"]As I see here: the desktop and c++ lead the poll.
IMHO: the QML/JS line exists only for (Nokia) mobil, this is a minority in the whole Qt development.
But the majority use the Qt in multiplatform desktop c++ applications.
Probably, this is because, Qt has C++ dekstop origin...[/quote]It'd be nice if QML/JS was officially supported for all mobile platforms. I heard that Necessitas (Qt for Android) will be merged with Qt in the near future. That's great to hear. I hope the same will happen with the iOS efforts, and that a common API will be created to access device hardware and common functionalities regardless of plarform.