User Tools

Site Tools


qt:motivations

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
qt:motivations [2011/01/01 10:00] – [A word on multi-platform programming in general] mithatqt:motivations [2011/12/03 17:24] (current) – [Decisive factors] mithat
Line 1: Line 1:
 ====== Motivations ====== ====== Motivations ======
-I have decided that I need to teach myself **[[http://qt.nokia.com|Qt]]** in my [[http://encyclopedia2.thefreedictionary.com/copious+free+time|copious free time]]. I had long resisted learning Qt for a few reasons, topping the list being Qt's heavyweight (i.e., non-native) widgets and the lack of a good fully integrated IDE. However, at some point Qt began painting with native widgets when possible on many platforms (KDE was always native; I believe GTK+, Windows, and OS X now also paint with native OS widgets), and recent releases of the [[http://qt.nokia.com/products/developer-tools/|Qt Creator]] IDE work acceptably well in integrating GUI design and code writing (automatically linking the two as with [[http://www.embarcadero.com/products/delphi|Delphi]], [[http://www.microsoft.com/visualstudio/en-us/|Visual Studio]], [[http://www.netbeans.org/|Netbeans]], [[http://www.lazarus.freepascal.org/|Lazarus]], and [[http://www.icsharpcode.net/opensource/sd/|SharpDevelop]]).+I have decided that I need to teach myself **[[http://qt.nokia.com|Qt]]** in my [[http://encyclopedia2.thefreedictionary.com/copious+free+time|copious free time]]. I had long resisted learning Qt for a few reasons, topping the list being Qt's heavyweight (i.e., non-native) widgets and the lack of a good fully integrated IDE. However, at some point Qt began painting with native widgets when possible on many platforms (KDE was always native; I believe GTK+, Windows, and OS X now also paint with native OS widgets), and recent releases of the [[http://qt.nokia.com/products/developer-tools/|Qt Creator]] IDE work acceptably well in integrating GUI design and code writingautomatically linking the two as with [[http://www.embarcadero.com/products/delphi|Delphi]], [[http://www.microsoft.com/visualstudio/en-us/|Visual Studio]], [[http://www.netbeans.org/|Netbeans]], [[http://www.lazarus.freepascal.org/|Lazarus]], and [[http://www.icsharpcode.net/opensource/sd/|SharpDevelop]].
  
 My enthusiasm for Qt had also been tempered by its licensing. In the past, it was available under a libre and gratis GPL or an expensive commercial license, and anything made with the GPL version was required to be published under a GPL-compatible license. In early 2009, Qt [[http://labs.qt.nokia.com/2009/01/14/nokia-to-license-qt-under-lgpl/|converted]] their GPL offering to LGPL, which lets you link to Qt libraries even in proprietary apps. So licensing is no longer an issue. My enthusiasm for Qt had also been tempered by its licensing. In the past, it was available under a libre and gratis GPL or an expensive commercial license, and anything made with the GPL version was required to be published under a GPL-compatible license. In early 2009, Qt [[http://labs.qt.nokia.com/2009/01/14/nokia-to-license-qt-under-lgpl/|converted]] their GPL offering to LGPL, which lets you link to Qt libraries even in proprietary apps. So licensing is no longer an issue.
Line 37: Line 37:
 As far as desktop programming solutions that are not FOSS, multi-platform, or both, [[http://www.embarcadero.com/products/delphi|Delphi]] and [[http://www.microsoft.com/visualstudio/en-us/|Visual Studio]] come to mind. Both are arguably easier to set up and work with than any of the above--the latter offering a range of programming languages if you don't mind making .NET apps. This ease comes at a cost: neither Delphi nor Visual Studio are multi-platform, and neither encourage you to make a clean separation between GUI and processing logic. (Again, it's possible; it's just not "natural".) [[http://www.icsharpcode.net/opensource/sd/|SharpDevelop]] is a Windows-only FOSS IDE that lets you write .NET applications in a number of .NET languages (Boo, anyone?) and includes GUI building support for most of them. Apple has the [[http://developer.apple.com/technologies/tools/xcode.html|XCode]] suite of tools for OS X and iOS development, but this can hardly be called a multi-platform solution. As far as desktop programming solutions that are not FOSS, multi-platform, or both, [[http://www.embarcadero.com/products/delphi|Delphi]] and [[http://www.microsoft.com/visualstudio/en-us/|Visual Studio]] come to mind. Both are arguably easier to set up and work with than any of the above--the latter offering a range of programming languages if you don't mind making .NET apps. This ease comes at a cost: neither Delphi nor Visual Studio are multi-platform, and neither encourage you to make a clean separation between GUI and processing logic. (Again, it's possible; it's just not "natural".) [[http://www.icsharpcode.net/opensource/sd/|SharpDevelop]] is a Windows-only FOSS IDE that lets you write .NET applications in a number of .NET languages (Boo, anyone?) and includes GUI building support for most of them. Apple has the [[http://developer.apple.com/technologies/tools/xcode.html|XCode]] suite of tools for OS X and iOS development, but this can hardly be called a multi-platform solution.
  
-===== Decisive factors =====+===== Decisive factors (obsolete!!!) =====
  
 Perhaps what really tilted the scales for me was the adoption of Qt as the native platform in [[http://meego.com/|Meego]] and (to a lesser extent) the porting of Qt to Symbian. I really like the idea of Meego and hope it takes off. And if and when it does, I want to be ready to join the party. As a plus, being able to write apps for Symbian (which Nokia just refuses to kill) with very little or no extra learning curve is no small thing as it might provide an effective means to reach users who can't afford more advanced smartphones. Perhaps what really tilted the scales for me was the adoption of Qt as the native platform in [[http://meego.com/|Meego]] and (to a lesser extent) the porting of Qt to Symbian. I really like the idea of Meego and hope it takes off. And if and when it does, I want to be ready to join the party. As a plus, being able to write apps for Symbian (which Nokia just refuses to kill) with very little or no extra learning curve is no small thing as it might provide an effective means to reach users who can't afford more advanced smartphones.
Line 46: Line 46:
 The goal of multi-platform programming is to write once and compile anywhere.((Or, as in the case with Java, compile once and deploy anywhere.)) This is a huge goal, and one that not unexpectedly is essentially impossible to achieve perfectly. There are just too many differences in the way platforms work--from the OS level up all the way up to interface conventions. This leads to the following statement: The goal of multi-platform programming is to write once and compile anywhere.((Or, as in the case with Java, compile once and deploy anywhere.)) This is a huge goal, and one that not unexpectedly is essentially impossible to achieve perfectly. There are just too many differences in the way platforms work--from the OS level up all the way up to interface conventions. This leads to the following statement:
  
-**If you plan to develop your project to reach multiple platforms using //One Holy Code Base//™, you must accept compromises.**+**If you plan to develop your project to reach multiple platforms using //OneHolyCodeBase//™, you must accept compromises.**
  
-There are people who tell you this isn't the case. They are lying. There are people who say multi-platform development is doomed to failure. I believe they are lying as well. The simple truth is that multi-platform development based on One Holy Code Base is possible, isn't perfect, and may not be the best (or even easiest) way for you to solve your multi-platform problem. The key is to develop an understanding of what the limitations (and strengths) of multi-platform programming are, and then apply it when it makes sense. And I can't think of anything but experience to give you this understanding.+There are people who tell you this isn't the case. They are lying. There are people who say multi-platform development is doomed to failure. I believe they are lying as well. The simple truth is that multi-platform development based on OneHolyCodeBase™ is possible, isn't perfect, and may not be the best (or even easiest) way for you to solve your multi-platform problem. The key is to develop an understanding of what the limitations (and strengths) of multi-platform programming are, and then apply it when it makes sense. And I can't think of anything but experience to give you this understanding.
qt/motivations.1293876050.txt.gz · Last modified: 2011/01/01 10:00 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki