Port UI to PyGObject
Summary
Port the Anaconda UI from PyGTK to PyGObject.
Owner
- Name: Will Woods
Current status
- Targeted release: Fedora 17 (or earlier)
- Last updated: 12 Jan 2011
- Percentage of completion: 0%
Detailed Description
Anaconda's UI is written in PyGTK, which provides Python bindings for GTK+ 2.x.
PyGTK will not support GTK+ 3. pygtk.org says:
Existing authors of PyGTK applications are also recommended to port their applications to PyGObject to take advantage of new features appearing in GTK-3 and beyond. More information on PyGObject and GObject-Introspection can be found at http://live.gnome.org/PyGObject.
(from the PyGTK 2.22.0 release notes, 25 Sep 2010)
Thus, if we want Anaconda to use GTK+ 3, we will need to port to PyGObject. While this isn't immediately necessary there's some good reasons to get started now:
- The Anaconda UI code is old, messy, and inflexible, and could use some reworking anyway.
- There are several other features that also involve major changes to the Anaconda UI - including ThreadedGUI and the entire UX Redesign project.
- In the not-too-distant future, GTK+ 2.x will be deprecated. It would be good to have this fixed before it becomes an emergency. (Colin Walters suggests that won't happen before Fedora 17.)
Benefit to Fedora
- Future-proof Anaconda against the eventual transition to GTK+ 3
- Prettier UI, with a GTK theme that matches the rest of the system
- Cleaned up Anaconda UI backend
Scope
This involves porting all the UI code to use PyGObject. Exploratory work is underway to determine how much effort this will take.
There is a script to help convert PyGTK to PyGObject.
Test Plan
Unit tests will be written to ensure the UI behaves as expected, at least for the simple cases. More complex UI interactions will be tested as a side-effect of other Anaconda testing.
User Experience
Anaconda's UI uses the same nice GTK3 code and themes as the rest of the system, making the UI prettier and more responsive.
Dependencies
Requires the availability of pygobject2 in the installer image.
Contingency Plan
Continue using the existing UI and providing PyGTK and its dependencies in the installer image.
Documentation
TBD
Release Notes
TBD