Thanks to KDE France, I have the chance to conduct a phone interview with Trolltech CEO Eirik Eng. If you have questions on Qt and Trolltech, now is the time to ask! I will harvest questions from LinuxFr, KDE France and of course here. A possible set of topics includes: the future of Qt, Trolltech's status as a company, Qt's market penetration internationally, competition with Red Hat and GTK+, Qt on MacOS X (ed: recent OSNews article). If you have any other ideas, please be quick to voice them as the interview time is imminent.
Not all of them, but many. That's why I like Qt.
There are, however, many features that I would like to have and that are not possible in C++, especially those that are made possible by the VM (reflection, garbage collection, method attributes, secure code execution etc). Right now a number of problems with Java and C# keep me from using them for non-custom software - the VMs still feel immature and I also miss features like templates. But in a few years this may be different...
moc extends c++ to give you reflection for QObject (that's why it's better than template based signal/slot solutions), there are third party libs that give garbage collection (great circle), not sure what you mean by method attributes maybe similar to Qt properties? secure code I have no answer for.
Moc is a step in the right direction, but AFAIK there is no public API for invoking slots and you can not call constructors.
Attributes in C# are user-defined markers/tags for classes, methods, member fields etc. They do not generate any code, but are part of the classes meta information. This allows you, for example, to mark fields as persistent/transient for persistence frameworks, specify whether methods are transactional in application servers, mark methods as async/one-way for RPC and so on.
Okay, as I said, the next version of the C++ standard library will probably offer most things on your list (see http://www.linuxworld.com/linuxworld/lw-2001-02/lw-02-stroustrup.html).
BTW, I don't think that a standard library should offer e.g. a GUI library, because the requirements are just too different. For example, Qt is a very good lib for an modest to bigger size application. At work I created an application that just transfers data from A to B and Qt would be way too heavy for this. So I used Fltk.
Also if the standard lib of Java is so great (Swing) why is everybody so interested in SWT?
According to the article the next version will not have single item of my list. Have I missed something?
A GUI lib is controversial indeed, but both Java and C#/DotNet have one. And Qt is pretty cross-platform as well, so it can't be impossible (even if the integration of the GUI may be not perfect).
Swing is annoying, indeed, but I said >=5 years. Whatever problems Swing has, I am confident that there will be a much better solution for Java GUIs in 5 years.
Hi Tim, :-)
Okay, *most on your list* was probably an exaggeration, but some points are there:
* database --> persistence
* basic network support --> platform-independent system facilities
Some of the other points are problematic:
* GUI - would have to support small to very large apps.
* IPC/RPC - standards come and go.
(small list: XMLRPC/SOAP/CORBA/DDE/DCE/RMI/DCOP :-) )
* 3D rendering - Direct3D or OpenGL ??
About Swing...even if there will be a much better solution in 5 years, Java would still have to support Swing for compatibility reasons (like AWT now). This way Java will become pretty heavy.
Certainly all these features have problems. But each JavaSDK comes with a huge selection of well-integrated and systematically-documented libraries for almost everything that I can imagine. DotNet is similar. For me, as an application developer, the reason why something is not implemented is not important. I just see that for Java the functionality is readily available, and for C++ it is not.
Qt+KDE are the only solution that make the situation somewhat bearable for me, and other problems with Java/C# (performance, bad integration with the system, installation hell, bad toolkits, lack of templates etc) are what keep me using C++. I just don't know for how long.
BTW DotNet has an interesting feature for transport-independent RPC (called Remoting).
People use SWT because
a) they think Swing is too complicated or they are not willing to learn a powerful toolkit
b) they think that you get worthwhile optimisation from linking into the native peers with native methods.
Swing is great. A 2GHz super scalar pipline machine avereages 1 instruction per clock. Thats 2billion instructions per sec. Why would you care if there is a interpreted layer. So, in short, because they are confused.
Stdlib+Boost is pretty pathetic compared to the breadth that the standard libraries of Java and DotNet offer.
That's because Java and .NET are platforms, not languages. There are lots of libraries for doing the things you mention available for C++. In most cases, these libraries are superior to the ones included in the Java or .NET platforms, since the developers can usually just concentrate on one project, while the Java and .NET guys have to implement a huge range of libraries. In most cases, the time required to find a good library (hint: Google is your friend) is much less than the time it takes to read all the documentation and learn how to properly use it. You still have to do the latter, so eliminating the former isn't really a big savings.
C++ allows platform independent programming as well. Actually, it allows BETTER platform independent programming than C#.
Currently maybe, but if Microsoft will really abandon backward compatibility for Win32 in Longhorn and make .Net the primary development platform, it could become hard to write anything in C++ at all.
Writing C++ in a .NET centric world won't be any harder than writing UNIX code in a Win32 centric world.
I have strong concerns that microsoft will ever use C# or the .net itself for it's apps, as they sure dislike the nice decompile feature of the dotnet environment. they will provide it for their nice advertising of "we support all platform, we are cross platform, cool, better than sun's java" but won't kill C/C++ as it's the only way to hide their internals from public (which has been ever the main goal). (yes, there are obfascicators, but that only makes it harder, not that hard as to try to "decompile" other code
I think it's also a simple matter of noone rewriting something as large as Microsoft's
product set in a totally different programming language. People just don't do that.
For a good example of how reusing old code is important, take for example the Motif
integration support in Qt -- it's there exactly because people want to reuse old code,
and even when changing it, because they want to migrate gradually.
Take a look at Visual Studio.Net,
You can use several languages out-of-the-box, among which C++.
If you want to use C++ for .Net applications, there are a few limits,
e.g. you have to abstain from using multiple inheritance...
But M$ does support C++ for .Net.
How do you come to your conclusions?
Take a look at:
There it is said
The Gartner Group reports that: "COBOL is still the most widely used programming language in business with a tremendous impact on the international economy, and on peoples' daily lives as well."
70 percent of the world's business data is processed by COBOL applications.
9 out of 10 ATM transactions are processed using COBOL.
30 billion online COBOL transactions are processed daily.
Current investments in software written in COBOL top $3 trillion.
492 of the Fortune 500 use COBOL including the entire Fortune 100.
Cobol is from the 50s afaik and C isn't much younger and is widely used. Atm C++ offers advantages over JAVA/C# etc. i don't see them disappearing in future.
In the Qtopia feature list I spotted SOAP among the future features. Will there be SOAP support in the regular Qt as well?
What is Trolltech's position on OPIE, the open-source fork of Qt/Embedded. OPIE is one of three GUI alternatives (as opposed to GPE, the GTK-based GUI, and "bare" X) for the Familiar handheld Linux distribution (http://opie.handhelds.org/ and http://familiar.handhelds.org/).
Is OPIE considered a welcome effort to accelerate the use of Qt on handhelds, or a rogue knock-off? Is the Qt/Embedded license compatible with the Familiar distribution (ie., supported under GPL)?
1. Are there any plans to introduce a component model? In the past such a project was canceled.
2. You should split your library in several parts, like gui, network ...
2. Ever heard of qt plugins? It's already like this.
Qt shouldn't ever be split more than this however; for most companies, a complete solution is needed.
I have been enjoying the use of the QT Desktop for linux and syncronizing my Zaurus for some time. When will the QT Desktop be released for Mac OS X? I really would love to sync my Zaurus with OS X!!
It already has been:
Dear Eirik Eng,
Would it be possible to split the Qt library into smaller modules, like all the non GUI classes in one library, all database classes in one library , all gui classes in one library and so on? I would like to use Qt in a non gui project, and would prefer to link to a smaller library.
Also there could be a more flexible pricing sceme. the non-gui classes could go out for cheap for instance, or even be LGPL since that functionality is available in other libraries for free anyway (std::string, STL ...).
Qt, is really a good idea, but i have this suggestions:
1.is extremely important that qt humanize the forms, because you in microsoft windows, and mac os X you can make translucent forms and forms with any shape form(like skins)
2.Qt forms must accept transparent background, in the widgets such textlabels or buttons,because if you use a custom background your application widgets look very ugly
3.the SQL module really need to be simplified and integrated into qtlibs, because as plugin is a nightmare
4.Qt really need more integration with x, and x extensions
5.Qt and kde, need flexibility on styles and windeco, must be great if you can call from qt or kde a form with another style an windeco
6. qt need rewrite the widgets flags, its a miracle works with that flags
!sorry my english!
> 1.is extremely important that qt humanize the forms, because you in microsoft windows, and mac os X you can make translucent forms and forms with any shape form(like skins)
You can with Qt and X11 already.. you can either do this the Qt way (QWidget flags), or the KDE way (setting NET::Override)
> 2.Qt forms must accept transparent background, in the widgets such textlabels or buttons,because if you use a custom background your application widgets look very ugly
Well, this is ofcourse true for any GUI toolkit. Custom backgrounds usually don't work too well with the rest of the desktop :)e
> 4.Qt really need more integration with x, and x extensions
Which X Extentions? It's intregrated with pretty much all, and when new ones are written, Qt usually supports em quick. Take for example randr, xft2/fontconfig recently.
> 5.Qt and kde, need flexibility on styles and windeco, must be great if you can call from qt or kde a form with another style an windeco
You can already with other styles. See qapplication (I think)'s setStyle()..
why would you need multiple window decs?
> 6. qt need rewrite the widgets flags, its a miracle works with that flags
My questions would be "Which part of Qt is the most diffcult to keep portable".
I mean is it more difficult to have crossplatform UI, or is it the IO stuff, or the database parts, or maybe containers because of lousy compilers.
My main question is, why does TrollTech keep Qtopia Desktop under a proprietary license while making the (assumedly) much more valuable Qtopia itself a GPL'ed package? Wouldn't it make sense to make Qtopia Desktop Free Software too so that it could provide Qtopia-powered handhelds (such as the great Sharp Zaurus) better integration with non-Windows desktops?
Secondary question: assuming Qtopia moves to Qt 3.0 some day (or 4.0) will TrollTech attempt to implement a Binary Compatiblity Module so that Qtopia powered handhelds can remain legacy friendly like Palm OS-based handhelds?
Does Trolltech have any plans to produce a full-fledged IDE developer platform to compete with Visual C Studio or Borland C++ Builder? On linux KDevelop is close but not quite sufficient for most companies.
QT support (i.e. QT designer) as a plug-in for Eclipse?
(The C/C++ version of Eclipse)
As far as I know Trolltech as no real plan and I doubt they will spend much time on this because the open source community has already taken it over. Three usable IDEs are already available, all of them have the basics requested for an IDE but each have taken a different approach :
Monkey Studio : rushes to high version numbers and, most of the time, is the last to offer new features. However it is, until now,the most downloaded.
QDevelop (a.k.a QIde) : rushes to new features, sometimes without expanding those already present, which results in a decent list of features but lot of frustration as soon as you want a more in-depth feature (like include file support in pro files or several project openned at the same time). Besides the class browsing and code completion are very slow.
Edyuk (elderly DevQt) : has the most extanded variety of features and is by far the most flexible through it fully pluginized architecture, its perspective system and its extended edititng framework. It is also the only one to offer Assistant integration, Designer integration and a widget designed for .qrc files editing. It also has debugging and the next version will bring class browsing and code completion. One reproach remains : long time elapses between releases.
Sidenote : I'm the developer of Edyuk so you'd better try them all because I might not be fully objective.
Try also Handcoder's ide for QT (HiQT) that you can find on qt-apps.org
Hi there, I am the author of the "Handcoder's IDE" that Mattias mentioned. Those who like it, please spread the word... and send me encouragement to keep it going!
< 2 months old - solid foundation would you agree?
A new beta version of Monkey Studio is out, you can learn more here : http://www.monkeystudio.org
Can we expect to see crypto classes included in Qt any time soon? With so many programs now being developed to interact with web services, etc. things like SSL support are becoming increasingly important. In addition, functions like MD5, SHA1, AES, DES, 3DES, etc. would be very useful in developing more advanced applications.
I'm working on a project called 'Qt Crypto Architecture' (or QCA), basically a simple wrapper library for crypto stuff. My initial goal is to support SHA1, MD5, AES, 3DES, SSL/TLS (and X509), and SASL. The functionality will be provided via plugins.
I'm not sure yet how I want to rig this, but I'm thinking of binding very close to Qt, maybe by storing the plugins in the Qt plugin path (under "security").
If you would like more information, send me an email ([email protected]).
What steps is Trolltech taking to make Qt relevant for the future? With Microsoft and other companies building in web services support (i.e. SOAP, UDDI, WSDL, etc.) into their development libraries, where is the support for these functions on Linux using a high-quality library? Non-existant. As more and more companies (specifically large, enterprise companies) move to Linux, the need for these features will become even greater. Is Trolltech currently working on things like web service solutions and other emerging technologies so that Qt can become as advanced as the other big names?
Will Trolltech ever release a GPL or non-commercial version of Qt 3.x for Windows? I know that there was a 2.x release some time ago, but nothing for 3.x. There are a lot of people like me who are just hobby developers and would like to develop for Windows. Kudos on releasing one for the Mac!
Would you employ Bjarne Stroustrup?
It's really a great idea.
And Qt will become the new standard lib for C++ ^^
I have a dream...
Stroustrup complains that C++ doesnt have a major supporter like Delphi - Borland, Java - Sun, C# - Microsoft...
C++ is always in the also supported section. Listen, Trolltech! Employ this guy and become THE C++ company.
Yes, and we are all with you. Come on Trolls, you are big guys now ;-)
Hrmmm.. let's look at the facts..
Borland invented Delphi.
Sun invented Java
Microsoft invited C#
TrollTech invents C++?? :)
TrollTech invented Qt!
I have no clue of c++ but can code in Qt just fine :-)
No but if they employ him they can say: Someone in our Company invented C++ ;)
Heyyy Philippe, have you really ask all the good questions to Eirik Eng by phone ?
Aï aï la facture de téléphone (phone cost) ;-))
Would you see a significant chance to get QT on this Systems ?
Have you already heard about theses OSs ?
Do you see a chance for QT in forseeable time ?
As you might know, QTable is horrible broken. Is there any chance to get bugfixes for GPL users?
Hi Eirik Eng,
I am a independant developper, mainly working on database feature (actually creating a database dedicated to C++/Qt -direct support for C++ class, slot/signal within the database object, automatic generation of databse driven application (query/search/result display/editing/creation) from data description,...). Would Trolltech be interested working with external party for better integration.
Typically, I miss some festure in QObject that make the support quite difficult. Best would be to modify the meta model to accomodate my feature.
Have you had, or are you having any plans for implementing support for your signal/slot syntax directly in gcc and thus avoid the moc? Would be neat...
I think this once was an April's fools day joke by Bjarne Stroustroup...