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
Last revisionBoth sides next revision
qt:motivations [2011/01/01 10:00] – [A word on multi-platform programming in general] mithatqt:motivations [2011/03/21 21:04] – [A word on multi-platform programming in general] 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 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.txt · Last modified: 2011/12/03 17:24 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki