2012-08-10

Ads on gpodder.net

We recently upgraded our server for gpodder.net, which should have had a positive affect one the overall site performance. At the same time, it also affected our hosting budget, which is currently covered mostly by our private money and occasional donations (thanks to all donors, by the way!).

Therefore we recently started experimenting with Google AdSense on gpodder.net. The ads are shown at the bottom of most pages, and should not distract from the page itself. As it is not our intention to make money with other people's data, ads are disabled on podcast and episode pages, but are currently shown on all other pages, such as the directory, toplists, your subscription lists, etc.

The advertisement experiment will probably last for up to three month, after which we should know if it is worth the trouble of having ads on the site. If we decide to keep the ads, there will be some way of getting rid of them, maybe by donating, becoming some kind of premium user, etc. This still needs to be decided, and input is always welcome!

Please post your comments and thoughts on the ads either here or to the gPodder mailing list. Thanks!

2012-08-09

Avoiding re-parsing of unchanged feeds

I've recently been thinking of an idea to speed up feed parsing in gPodder in cases where the feed contents don't change (i.e. no new or changed episodes), but the server doesn't support E-Tag or If-Modified-Since headers.

Right now, whenever gPodder updates a podcast feed, it sends the E-Tag and Last-Modified headers to feedparser, which will use it to make a conditional HTTP request. In case the server supports it, this will avoid parsing (and downloading) the whole feed, and the server will just tell the feedparser "Nothing new", which in turn will finish the feed update for gPodder - avoiding both the download of the whole feed data, and the parsing inside feedparser and gPodder.

Now, the idea here is that on mobile devices like the N9, we want to avoid CPU usage as much as possible (in addition to keeping the traffic down if possible). One idea now would be to calculate a hash over the downloaded feed content, and remember that hash. In cases where the server doesn't support E-Tag or If-Modified-Since, this could effectively avoid having to parse the feed again. Of course, a hash of the feed contents can only be calculated if the content is downloaded first, so this won't allow for avoiding re-downloads, but in general, I guess that it could improve performance on devices where parsing takes up a non-trivial amount of time.

This might need some experimentation if it is effective in the general case. One idea could be to check the gpodder.net Top 100 podcasts lists and see how many of them support E-Tag and If-Modified-Since and how many of them would benefit from having this special "content hash" in place to avoid re-parsing.

The issue has been filed here, let's see if it's something that could go upstream: feedparser issue 370

Update: Patch added for gPodder and feedparser, both patches can be found in gPodder bug 1634.

2012-07-28

gPodder 3.2.1 bugfix release for N9 users

This is a quick fix-up for bug 1627, which has affected several N9 users. gPodder 3.2.1 is the same as 3.2.0, but with a fix in the packaging (postinst) that will make sure that installation and symlinking (optification) works properly, even if leftover files from previous gPodder installations are in place.

tl;dr: gPodder 3.2.1 will appear on your N9 as an update soon (for both AFM and Nokia Store users), and it will fix your startup problems. A temporary fix is also available as .deb for all users who can't wait ;)

Also, if you are a N9 user and your 3.2.0 update worked fine, you can ignore this (the bug didn't affect all users) - you are affected by this bug if after installation your gPodder app does not start at all.

For all other platforms, 3.2.0 is the latest version, and there will never be a "3.2.1" release to avoid confusion (we'll simply bump the next official release to a higher number to get all platforms back in sync). The version bump is because Nokia Store uploads require "x.y.z" version numbers, and don't support Debian package revisions ("x.y.z-r"), which would really be what we want to have here, since it's really just a packaging change (for those not familiar with Debian packaging: "3.2.0-1" would be the first Debian package revision, and if the packaging changes without a new upstream version, the second revision would be called "3.2.0-2", so think of "3.2.0 for N9" as "3.2.0-1" and think of "3.2.1 for N9" as "3.2.0-2" - confused yet? ;).

Some background info: Since the 3.1.2 release (not to be confused with 3.2.1 ;), gPodder for the N9 installs into /opt, and then symlinks itself into /usr where appropriate, whereas older versions simply installed into /usr. The whole optification problem has quite some history (it started with Maemo 5 and lack of free space on the root partition), but isn't relevant to the N9 anymore (there's enough space on rootfs now). Still, Nokia Store QA has a rule that says that most files (apart from some exceptions) have to go into /opt. For 3.1.2 (again, that's not the same as 3.2.1), I therefore made postinst/prerm scripts that link files installed from /opt into /usr (basically what maemo-optify did back in the day, but Harmattan SDK doesn't have maemo-optify anymore, and on the AFM OBS, I can't just install build-dependencies like that). The symlinking failed when leftover files were sitting in /usr at installation time. The details on what the problem was can be found in bug 1627 - thanks to all who reported the problem, and a special thanks to Reiner for taking the time to investigate the problem (I personally never experienced this bug on my own N9, otherwise I would have had fixed it before the release ;).

2012-07-25

gPodder 3.2.0 "The Great Radish Famine" released

We've been on a short summer break the last two months, and have waited to release this version until we got Flattr support and MP3 player device sync back into mainline gPodder. This means that packagers can now start packaging gPodder 3 for their distributions if they have been keeping back because of the device sync features. The device sync patches have been ported from gPodder 2.x by Joseph Wickremasinghe and the Flattr support was mostly implemented by Bernd Schlapsi - thanks to both of them for the great support! Other fixes:
  • QML UI: Show cover art in "All episodes" (bug 1602)
  • Add "on_channel_context_menu" (patch by Nick Stevens)
  • MP3 player device sync support (bug 1579, by Joseph Wickremasinghe)
  • Threading: Use util.run_in_background to spawn threads
  • QML UI: Set title bar text for multi-select sheet
  • QML UI: Scroll episode list when opening last item
  • Gtk UI: Initial hack for embedded shownotes display
  • CLI: Show more of the title when updating feeds
  • Flattr integration (bug 1576, by Bernd Schlapsi)
  • DB schema: Cleaner upgrades, fix column order
  • Updated translations and various bug fixes
As always, a detailed changelog is available at gpodder.org/changelog/3.2.0.

md5sum: 29587ee5d88c9802a862ec41686bdd52
sha1sum: bd363a488338455144f4a994d89b204d62dc69f4
 
For packages in distributions, see the downloads page.

Thanks to all users who supported the gPodder project by providing bug reports, patches, documentation, feedback or donations / Flattrs.

2012-05-28

gPodder 3.1.2 "Capture the Moon" released

Another month has passed, so it's once again time for your monthly fix of gPodder updates. This month brings mostly improvements to the translations, the Web UI and CLI / QML UI updates:
  • Web UI
    • Now based on JQuery Mobile
    • Add Episode details page
    • Streaming audio using HTML5 <audio>
  • Command Line UI ("gpo")
    • Fix line length calculation for byte strings (bug 1598)
  • QML UI / MeeGo Harmattan
    • Option to hide podcasts in Music app
    • Make episode list tool button wider
  • Tooling / setup.py
    • Allow "--help install" on command line
    • Manual page install path option (for easier FreeBSD packaging)
  • Translations and translation tooling
    • tools/i18n: Fix merge-from-transifex.sh script
    • New translations: Catalan, Spanish MX, Indonesian
    • Updated translations from Transifex
    • Updated German translation
As always, a detailed changelog is available at gpodder.org/changelog/3.1.2.

md5sum: a2076ff51beb2f99bf42f2b3c0cb756f
sha1sum: 3a567b2b2f33e1d5cc42787a44cb4add006b3fb4

For packages in distributions, see the downloads page.

Please note that the Desktop version of gPodder 3 does not yet contain the MP3 player syncing feature. This is also the reason why the Ubuntu PPA won't be updated to the 3.x releases yet. Users depending on MP3 player syncing are recommended to stay on gPodder 2.20.1 until we get MP3 player syncing into the 3.x releases. When MP3 player syncing lands in 3.x, we will start updating the Ubuntu PPA again. Ubuntu users not requiring the MP3 player sync feature can use gPodder 3 packages from Debian Experimental in the meantime. See this blog post for more information and add your use cases and offer for volunteering to this wiki page. Thanks for your help!

2012-04-29

gPodder 3.1.1 "The Preachification of Convincing John" released

Our monthly release cycle continues with this small update to your favorite media aggregator. The Gtk+ UI (for Desktop operating systems) regained the "Open Download Folder" menu item for the podcast list, while the QML UI gained multi-episode selection menus for downloading, deleting and playing back multiple episodes. Some minor bugs were also fixed. Here's the list of changes:
  • Gtk UI: Reintroduce "Open Download Folder" menu item
  • Fix "gPodderDownloadHTTPError' object has no attribute 'errcode'
  • CLI: Fix error handling bug with strerror
  • JSON Config: Convert float to int (bug 1590)
  • QML UI: Implement multi-episode selection (bug 1594)
  • QML UI: Selection menu for multi-selector (bug 1463)
As always, a detailed changelog is available at gpodder.org/changelog/3.1.1.

md5sum: dcf70c4913278a05a5a59ed74a080945
sha1sum: 84c14cdb73045b00b541a173a0f70662c931346f

For packages in distributions, see the downloads page.

Please note that the Desktop version of gPodder 3 does not yet contain the MP3 player syncing feature. This is also the reason why the Ubuntu PPA won't be updated to the 3.x releases yet. Users depending on MP3 player syncing are recommended to stay on gPodder 2.20.1 until we get MP3 player syncing into the 3.x releases. When MP3 player syncing lands in 3.x, we will start updating the Ubuntu PPA again. Ubuntu users not requiring the MP3 player sync feature can use gPodder 3 packages from Debian Experimental in the meantime. See this blog post for more information and add your use cases and offer for volunteering to this wiki page. Thanks for your help!

2012-04-20

Talk slides from Semana da Ciência e Tecnologia

On Tuesday, I've given a talk about the history and development methodology of and in the gPodder project at the Science and Technology Week in Evora, Portugal. You can find more details on the talk page or take a look at the slides.


You can download the slides PDF here: gPodder talk 2012-04-17

The target audience for this talk were students who want to get involved in open source development, and who know about the general development topics, but want to know more about what infrastructure and content is needed to maintain a proper open source project.

I've been doing talks about gPodder from different perspectives since 2008, the next one will be at the Tizen Conference 2012 in San Francisco - with focus on mobile development and the web service. If you want me to give a talk about open source development at your event, company or meetup, drop me a line and I'll see what I can do for you.