- Wikipedia Article for GTK+
- The Official GTK Website
- GTK Features
- Wikipedia Article on QT Framework
- Nokia/Trolltech Information on QT
- Wikipedia Article on the Mono Project
- Mono Project Site
- More Information About the Mono Project
- A Discussion of the Mono Controversy
- Free Software Foundation's Advisory on Mono Project
The following is a list of capabilities of GTK+:
- Supports a wide variety of common components (Labels, Text boxes,Radio button, List boxes, windows, menus, etc.)
- Supports a variety of operating systems (Windows, Mac OS X, GNU/Linux, and Unix)
- Supports a variety of form factors with native look and feel (mobile devices, desktops, laptops,etc.)
- Supports a variety of different programming languages (C,C++,Ruby,Java, .NET,Perl,etc.)
However, GTK+ isn't the most clean and usable widget toolkit out there. The interfaces, and mechanisms in GTK+ to handle such things as event handling, are clumsy at times. While there are a lot of GTK+ GUI builders, they aren't the most easy to use. For instance, I have used the GLADE interface builder, and have difficulties laying out controls on a window. However with other interface builders, such as those built into Visual Studio, the interaction is simple drag and drop.
A relatively recent project that has been started is Vala, which attempts to bring the high level simplicity and abstraction found in C# and Java to GNOME developers. Vala is lightweight in the sense that it doesn't impose additional runtime requirements on developers. The syntax of Vala is similar to C#, and supports modern language features such as lambda expressions, exception handling, and generics. Finally, it is meant to accomplish all of these goals in a "free," and "open," license which allows applications developed in the language to be contributed to various FLOSS projects in an unencumbered way.
QT is yet another widget toolkit that is commonly used in the FLOSS community. It supports many of the capabilities found in GTK+ listed above. In addition, it provides a variety of different modules which provide support for databases, web rendering, and vector graphics to name but a few. Some people find QT friendlier to use than GTK+ in creating GUI applications. For instance, the QT Designer which allows developers to create QT GUIs, allows for components to be directly dragged, dropped and manipulated on the form. However, in GLADE (the GTK designer), careful window layout specifications need to be laid out before performing similar actions. In addition, there appears to be a more integrated development experience with the QT Creator (QT's IDE), as opposed to using GLADE and other third party tools separately to develop a full fledged application.
In terms of history, QT was originally created by a company called TrollTech, and they used a dual-licensing scheme where QT was licensed under the GPL for FOSS applications using the toolkit. Companies wanting to use QT in their proprietary applications could purchase a license from Trolltech for several thousand dollars per developer at the time to license it for their proprietary use. The thought behind this is that some of the proceeds from licensing the toolkit to proprietary software companies could then be used to support further development of the toolkit. This dual licensing scheme as we have seen in previous readings is somewhat controversial. In any event, Trolltech was purchased by Nokia (the handset makers) in 2008 and since then Qt is now triple licensed under the GPL,LGPL and QT Commercial Developer license. Therefore the only change since the Trolltech offering of QT is that proprietary developers can now use and link into the QT toolkit unmodified free of charge. Should they want to modify QT in anyway, then they would either need to purchase a commercial license or use the GPL license with its restrictions (see previous readings). There are also differences between these licenses in terms of support and services offered by Trolltech/Nokia for the product as well.
The last toolkit we will discuss, Mono is by far the most controversial one in use by the FOSS community and developers in general. Mono is essentially a free (as in freedom and beer), implementation of the C# language and consequently Microsoft's .NET Framework. Some advantages to Mono over the previous two toolkits are as follows:
- A language that support many of the capabilities found in a modern programming language (such as lambda expressions)
- A clean and relatively well designed framework (.NET Framework), that allows developers to code up solutions quickly and succinctly
- A Framework that supports a wide variety of different technologies (from XML to SOAP and everywhere in between)
- The ability to bring the rich set of .NET Framework applications developed in Windows for Windows systems over to other platforms (such as Linux or Mac OS X)
- The ability to take advantage of a large set of developers who have familiarized themselves already with the language and the framework
On first glance it may seem very advantageous for the Open Source community to adapt and contribute to the MONO project. However, the MONO Project is not without controversy. First and foremost the technologies that Mono project will support are covered under different types of patents (for instance on the implementation of the C# language). While Microsoft has promised to not enforce their patents against the community via the Microsoft Community Promise License, that same license states that the implementation must be exactly the same as the ECMA specifications of its technologies (i.e. C#). If Mono was not found to be compliant with it in any way, then the license would be invalid and people who developed the Mono project, as well as any applications developed under it might be violating Microsoft's patent rights and in turn the software may have to be either abandoned or significantly rewritten to not use technologies that may infringe in some way with Microsoft's patents. This is precisely why the Free Software Foundation amongst others in the FLOSS community have advised developers from developing applications against Mono, or any FOSS implementation of C#. A second issue with the Mono project is that since it goes against the spirit of free software, many distributions do not include Mono by default, meaning that applications that use Mono may have to include it with their software package, whereas with GTK+ you can rest assured that it is in nearly all Linux distributions.
No comments:
Post a Comment