Editing PyMaemo/GUI toolkit selection guide

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
This page describes the alternative toolkits with which graphical user interfaces can be created in [[PyMaemo]]. Their respective differences and future prospects are discussed to help any new PyMaemo developers make an informed technology selection.
+
== Introduction ==
 +
 
 +
This page describes the alternative toolkits with which graphical user interfaces can be created in PyMaemo. Their respective differences and future prospects are discussed to help any new PyMaemo developers make an informed technology selection.
In particular, the differences of GTK+ and Qt toolkits are described, as well as the roles of the PySide and PyQt Qt binding projects.
In particular, the differences of GTK+ and Qt toolkits are described, as well as the roles of the PySide and PyQt Qt binding projects.
Line 7: Line 9:
[http://www.gtk.org/ GTK+] is a widget toolkit for creating graphical user interfaces. While written in the C programming language, it is object oriented. Object orientation is achieved by using the Glib object system (GObject). In the open source community, Gtk+ is most notably used in the GNOME project.
[http://www.gtk.org/ GTK+] is a widget toolkit for creating graphical user interfaces. While written in the C programming language, it is object oriented. Object orientation is achieved by using the Glib object system (GObject). In the open source community, Gtk+ is most notably used in the GNOME project.
-
[[Hildon]] is an application framework developed by Nokia for the Maemo operating system. It primarily consists of a set of GTK+ extensions providing mobile device oriented functionality and a finger-friendly interface. It has been the primary graphical toolkit in Maemo devices until [[Open development/Maemo roadmap/Fremantle|Maemo 5]].
+
[http://maemo.org/api_refs/5.0/5.0-final/hildon/ Hildon] is an application framework developed by Nokia for the Maemo operating system. It primarily consists of a set of GTK+ extensions providing mobile device oriented functionality and a finger-friendly interface. It has been the primary graphical toolkit in Maemo devices until Maemo 5.
=== Python Hildon ===
=== Python Hildon ===
Line 15: Line 17:
Python Hildon has been available for many years and has been updated to support the features of the Maemo 5 platform. The bindings are stable and widely used in the Maemo developer community.
Python Hildon has been available for many years and has been updated to support the features of the Maemo 5 platform. The bindings are stable and widely used in the Maemo developer community.
-
If you plan to start developing software for the [[Nokia N900]] (Maemo 5) only, Python Hildon is probably the most straightforward selection. However, as the level of GTK+ and Hildon support in [[Open development/Maemo roadmap/Harmattan|Maemo 6]] is still unknown ([http://talk.maemo.org/showthread.php?t=36687 it will probably be community-supported only]), it might provide for a more difficult upgrade path in the future Maemo platform versions.
+
If you plan to start developing software for Nokia N900 (Maemo 5) only, Python Hildon is probably the most straightforward selection. However, as the level of GTK+ and Hildon support in Maemo 6 is still unknown ([http://talk.maemo.org/showthread.php?t=36687 it will probably be community-supported only]), it might provide for a more difficult upgrade path in the future Maemo platform versions.
== Qt-based toolkits ==
== Qt-based toolkits ==
Line 24: Line 26:
Any native Qt application written for Maemo 5 adopts the platform's native look and feel. Furthermore, these applications will be at least source-level compatible with Maemo 6 and will adopt its look and feel accordingly. Hence, Qt is the best selection as a toolkit if you want to future-proof your application.
Any native Qt application written for Maemo 5 adopts the platform's native look and feel. Furthermore, these applications will be at least source-level compatible with Maemo 6 and will adopt its look and feel accordingly. Hence, Qt is the best selection as a toolkit if you want to future-proof your application.
-
 
-
The development snapshot releases of next versions is available from extras-devel, and is marked with ’experimental’ in the package name (libqt4-experimental, python2.5-qt4-experimental, pyside-experimental). Use these packages only if you need cutting edge features and have no intention of publishing your software to end-users.
 
=== PySide ===
=== PySide ===
-
[http://www.pyside.org/ PySide] is a Python binding for the Qt framework, developed by Nokia at OpenBossa by the same team as PyMaemo itself. It was initially published in August 2009 and, on the Maemo 5 platform, provides full-featured bindings for Qt 4.7 (on Maemo 5, Qt 4.6, including the Maemo-specific QMaemo5 classes). PySide is licensed under LGPL, allowing both open source and proprietary software development. The generator tools for creating new bindings are also available, allowing developers to rapidly create new bindings if required.
+
[http://www.pyside.org/ PySide] is a Python binding for the Qt framework, developed by Nokia at OpenBossa by the same team as PyMaemo itself. It was initially published in August 2009 and, on the Maemo 5 platform, provides full-featured bindings for Qt 4.6 (including the Maemo-specific QMaemo5 classes). PySide is licensed under LGPL, allowing both open source and proprietary software development. The generator tools for creating new bindings are also available, allowing developers to rapidly create new bindings if required.
-
The PyMaemo team will provide the bindings for the Harmattan platform APIs (MeeGo Touch, Qt Mobility, select Harmattan platform APIs) using PySide.
+
The PyMaemo team will provide the bindings for Maemo 6 platform APIs (DirectUI, Maemo API) using PySide.
-
Since PySide is a relatively young project, it is still ongoing maturization period and faces more changes than PyQt.
+
Currently, the disk and memory footprint of PySide is still somewhat larger than PyQt (although the run-time performance is at least on par). This issue will be solved in March 2010 when the new binding architecture, [http://setanta.wordpress.com/2009/08/31/shiboken/ Shiboken], will replace the current Boost.Python based implementation. Also, since PySide is a relatively young project, it is still more buggy than PyQt.
-
If your project requires Maemo/MeeGo-specific Qt extensions or latest Qt features and you want your application to work in the future MeeGo platforms, PySide is the best choice for you.
+
If your project requires Maemo-specific Qt extensions or Qt 4.6 features and you don't mind the temporary memory impact of PySide and want your application to work as is in the future Maemo platforms, PySide is the best choice for you.
=== PyQt ===
=== PyQt ===
-
[http://www.riverbankcomputing.co.uk/software/pyqt/intro PyQt] is a Python binding for the Qt framework, developed by Riverbank Computing Ltd. It is a very established and stable set of bindings and widely used in the desktop world. On Maemo 5, it is maintained as a community effort. PyQt on Maemo 5 provides support for both Qt 4.6 and Qt 4.5. It will also support the future Qt 4.7 through experimental releases in extras-devel. PyQt for Qt 4.6 supports the Maemo 5 specific classes.
+
[http://www.riverbankcomputing.co.uk/software/pyqt/intro PyQt] is a Python binding for the Qt framework, developed by Riverbank Computing Ltd. It is a very established and stable set of bindings and widely used in the desktop world. On Maemo 5, it is maintained as a community effort. PyQt on Maemo 5 currently provides support for Qt 4.5 (which is shipped with the release firmware), without the Maemo-specific classes. Qt 4.6 support is already present in source, and the corresponding binary packages will be released in sync with the official PyQt release. It is licensed under GPL for Open Source projects, but a commercial license can be obtained from Riverbank for proprietary development. While new PyQt-compatible bindings can be created using [http://directory.fsf.org/project/Python-SIP/ SIP], no freely available automatic binding generation tools exist, making independent generation of bindings for large libraries impractical.
-
 
+
-
It is licensed under GPL for Open Source projects, but a commercial license can be obtained from Riverbank for proprietary development. While new PyQt-compatible bindings can be created using [http://directory.fsf.org/project/Python-SIP/ SIP], no freely available automatic binding generation tools exist, making independent generation of bindings for large SIP-based libraries impractical.
+
-
 
+
-
PyQt cannot be intermixed with the future Harmattan platform API bindings created using PySide (though such bindings might become available via PyQt).
+
-
 
+
-
PyQt is currently the most mature set of Qt bindings for PyMaemo. It provides a stable, and bugfree set of Python Qt bindings. Moreover, the source-level compatibility of PySide with PyQt is rather high, making porting PyQt programs to PySide (and vice versa) an easy task, thus providing an upgrade path for PyQt developers in the future. PyQt (as a Qt 4.5 binding) is also available on the legacy [[Nokia N800|N800]] and [[Nokia N810|N810]] devices and pre-PR1.2 N900s.
+
-
 
+
-
If you want to release a Python Qt 4.5 or Qt 4.6 application with as stable bindings as possible, and are prepared to possibly port your code to PySide in the future, then PyQt is the right choice for you.
+
-
 
+
-
==== Current Versions ====
+
-
PyQt 4.7 for N900 was released in Feb 2010 announced [http://talk.maemo.org/showthread.php?t=42754 here]
+
PyQt cannot be intermixed with the future Maemo 6 platform API bindings created using PySide.
-
PyQt 4.7.3 for N900 [[Maemo 5/PR1.2|PR1.2]] (Qt4.6) was released in Apr 2010 announced [http://talk.maemo.org/showthread.php?p=626443 here]
+
PyQt is currently the most mature set of Qt bindings for PyMaemo. If no Qt 4.6 features or Maemo-specific Qt extensions are required, it provides a stable, small, and bugfree set of Python Qt bindings. Moreover, the source-level compatibility of PySide with PyQt is rather high, making porting PyQt programs to PySide (and vice versa) an easy task, thus providing an upgrade path for PyQt developers in the future. PyQt (as a Qt 4.5 binding) is also available on the legacy N800 and N810 devices.
-
[[Category:Python]]
+
If you want to immediately release a Python Qt 4.5 application with as stable bindings as possible, don't require the Maemo-specific pieces, and are prepared to possibly port your code to PySide in the future, then PyQt is the right choice for you.

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)