[gpodder-devel] August 2009 status update on gPodder development

  • From: thp at gpodder.org (Thomas Perl)
  • Date: Wed, 26 Aug 2009 08:29:32 -0700

Hello, users and developers of gPodder!

In the last few weeks, I've carried out some long-awaited refactoring
of the gPodder codebase. Apart from splitting the different dialogs
of gui.py in separate modules (which allows for a more modular design
and also allows to replace and modify existing dialogs more easily),
I have also removed some global variables that have been used
previously (if you've been around in the code, you've probably
noticed the "gl" object that had the configuration attached to it).

So, the database and configuration objects are now created in
two spots only and passed to other objects from there:

 * For the GUI, it's created in gui.py
 * For the CLI + API, it's created in api.py

Several objects that were needed for gPodder to function (i.e. the
config object) had GTK+-related code inside them. Now, the GTK+-
related code has been moved to separate GUI model classes or to
subclasses of the original classes (for example the Config object is
GTK+-free, with its subclass UIConfig adding GTK+-related
functionality for the GUI mode).

These changes will allow for better unit testing in the future, and are
already coming in handy for some features and improvements.

I've also reworked the code for adding new subscriptions, which is now a
bit more slipstreamed. I have not added GUI code for the subscriptions,
so the GUI will freeze while new podcasts are being added, but it will
come before the next release.

The new structure will also allow easier support for different UI modes
(like Maemo 4, Maemo 5 and "normal" GTK+ mode) by allowing us to easily
exchange dialogs and modules with platform-specific ones.

Oh, and messages that are not critical are now displayed using libnotify
(except on Ubuntu, where notify-osd does not allow placement of the
notification bubbles - we fall back to a custom notification window
there).

I still need to clean up gui.py a bit more and factor some things out,
because there is still too much program logic hidden in the GUI code.

These big changes also mean that the next release will be delayed for
some weeks, but maintaining and testing will be easier after that ;)

If you're working with the Git version of gPodder (that'd be really
helpful for spotting any bugs I introduced during the refactoring),
please report problems that you encounter on http://bugs.gpodder.org.


Thanks,
Thomas




Other related posts: