From gPodderWiki
Jump to: navigation, search

This page lists some potential ideas that could be offered to students if gPodder participates in GSoC 2013.

If you are interested in implementing one of these project, please write to the gPodder Mailing List.

If you would like to contribute a new idea, just add it to the list. If you can also mentor it, even better!


Contents

Device Sync as Extension in gPodder 3[edit]

Current Situation[edit]

gPodder 3.0.0 removed support for the old method of syncing podcasts to portable audio players. Some people have expressed their sadness about seeing that feature go. The feature as it was implemented in 2.x was not well maintained, and while it worked, it didn't provide the necessary flexibility that users demanded, so we decided to remove it in 3.x (which also made it possible to clean up some other spots). Of course, there's no problem with re-implementing an even better device sync module for 3.x. [1] [2]

Right now, gPodder 3 only has support for filesystem-based MP3 players. The goal of this project is to implement iPod and MTP device sync, as well as update and clean up the MP3 player sync code.

Goals[edit]

  • Design and Implement device synchronization based on the already collected User Stories.
  • Rewrite existing MP3 player sync code as Extension Module for gPodder 3
  • Implement support for iPod (via libgpod) and MTP (via libmtp / pymtp) devices

Possible Mentors[edit]

  • Thomas Perl

Native Android port of gPodder[edit]

TODO: this project has probably been superseeded by Detlef. I'll remove it before submitting the application --Stefan Kögl (talk) 16:53, 11 March 2013 (UTC)

Current Situation[edit]

Currently there is only an experimental Web UI (HTML-based) on top of the Python codebase, running inside SL4A. The Android lifecycle is not really followed, and it's not too well integrated into the Android system.

Goals[edit]

Provide a native podcast client for Android, similar to the mobile versions of gPodder for Maemo. The backend should have the same package/class structure as the Python backend, but utilizing Java technologies and libraries. Students are expected to exchange ideas on architecture/structure improvements, and those can be merged into the Python backend as well (so that at the end of the project, the Python backend and Java backend are feature-wise and structurally "in sync").

Implementation Hints[edit]

  • The backend should be written in Java, following the structure of the gPodder backend written in Python
  • The on-disk data format should be the same as the one for gPodder (SQLite + Download directory)
  • The UI should be optimized for mobile usage, and using the backend (but split from the backend)

Possible Mentors[edit]

  • Thomas Perl


Web-based Podcasting-Client in gpodder.net[edit]

Current Situation[edit]

Currently gpodder.net is a Podcasting-Webservice that gPodder and other clients can interacts with. It additionally offers various functions to discover podcasts.

However, playing podcasts via gpodder.net could be handy when you are using a friend's/work computer or if your plattform isn't supported by the gPodder client.

Goals[edit]

The goal of this project is to extend the gpodder.net webservice so that podcasts (ideally both audio and video) can be played via the web. As with the gPodder client, feedback such as play-events should be fed back to the webservice.

The web-based client should be able to act as a virtual device (in the gpodder.net terminology) which would enable it to manage its own subscription list, sync with other real devices, have its own history, etc.

Implementation Hints[edit]

Probably this would involve combining multiple solutions such as

  • using HTML5 audio/video (if the server hosting the content allows cross-domain usage)
  • downloading and caching media files and serving them via HTML 5 audio/video (if the server does not allow cross-domain usage, but the license does allow re-distribution)
  • using a flash-based player (for supported media formats)

Possible Mentors[edit]


Integrating the Podcast Directory into Clients[edit]

Current Situation[edit]

Currently gpodder.net offers a simple podcast directory which lists the most-used categories and their most-subscribed podcasts. However, this directory can only be accessed via the webservice but not from within gPodder.

Goals[edit]

The goal of this project is to integrate the gpodder.net podcast directory into gPodder so that categories can be listed, browsed and podcasts from these categories can be subscribed from within gPodder.


Implementation Hints[edit]

  • The API needs to be implemented in the client library
  • The directory functionality needs to be implemented in the gPodder backend
  • GUIs for the various platforms (GTK+, Maemo 4/5) need to be designed and implemented

Possible Mentors[edit]

  • Thomas Perl


Integrate Your Favorite Podcast-Client with gpodder.net[edit]

Current Situation[edit]

Currently users can synchronize podcast subscriptions and episode states between a number of clients. However, there are many more podcast clients that still lack the ability to synchronize with gpodder.net.

Goals[edit]

The goal of this project is to integrate you favourite podcast client (Banshee, Rhythmbox, iTunes, WinAmp ...) with gpodder.net so that users of the client can make use of

  • synchronization between different clients
  • subscription management via the web
  • subscription / listening history on the website
  • retrieving toplists, directory, etc

Implementation Hints[edit]

  • Client-Libraries are available in Python and C++/Qt
  • API documentation is available
  • Contact with the client maintainers should be established

Possible Mentors[edit]

  • Thomas Perl
  • Stefan Kögl


Write playback position plug-ins (D-Bus) for Desktop media players[edit]

Current Situation[edit]

gPodder supports a D-Bus API for receiving playback events (started, stopped - both with position information) that can be used to synchronize the playback progress to gpodder.net and with other devices. Support for this API has been implemented in gPodder for Maemo 5 through the MAFW plug-in, and preliminary support also exists in [Panucci].

Goals[edit]

The goal of this project is to write plug-ins for the following Desktop media players. The list of media players is negotiable, if you want to add your favourite media player, but want to skip one of the players in this list, that's okay, but please specify the list of media players in your application.

  • Amarok
  • Rhythmbox
  • Banshee
  • VLC Media Player
  • mpd (via a MPD client interface)
  • Audacious
  • Totem
  • SMPlayer

Implementation Hints[edit]

  • Most media players support plug-ins, you to write one that emits signals on D-Bus when playback is started and stopped (with position information)
  • Those players that don't support plug-ins should get a patch that is submitted upstream for integration
  • The D-Bus API should be extended to allow for playback resuming
  • The D-Bus interface is described in Media Player D-Bus API
  • As a student for this project, you are expected to learn how to write plug-ins for several media players (possibly in different languages) and deal with both the gPodder developer community (for specifying the API and verifying integration) as well as the communities around the media players

Possible Mentors[edit]

  • Thomas Perl


Port the gPodder Gtk UI to Gtk3 / GObject Introspection[edit]

  • Use PyGObject (GObject Introspection-based bindings) instead of PyGTK
  • Utilize new features of the new bindings, clean-up old cruft/hacks for PyGTK
  • Change the Ubuntu extensions so that they don't fork, but run in-process
  • Replace old widgets/classes with new, modern Gtk 3 widgets

Benefits for the student[edit]

  • Learn to convert an existing codebase to a new API
  • Get to learn both "classic" PyGTK and modern PyGObject

Benefits for the project[edit]

  • Up-to-date codebase using the current state of the art bindings
  • Easy Python 3 support due to PyGObject being available for Python 3

Possible mentors[edit]

  • Thomas Perl

Internal audio/video playback in the Gtk UI[edit]

  • Implement GStreamer-based (or libvlc-based) media playback for the Gtk UI
  • Hook up the code with the database (playback resuming, gpodder.net syncing)

Benefits for the student[edit]

  • Learn how to integrate media playback into existing applications
  • Get to know GStreamer, VLC, MPlayer libraries, bindings
  • Deal with playback resuming issues / web service syncing

Benefits for the project[edit]

  • Integrated media playback is welcomed by some of our users
  • Resuming and playback position syncing work hand-in-hand with the player
  • The core application doesn't need to depend on an external player app

Possible mentors[edit]

  • Thomas Perl


Podcast Best-Practices Evaluation[edit]

Current Situation[edit]

RSS and Atom feeds are commonly used to distribute and describe podcasts. Due to their generic definition, they can be ambigously interpreted for the use case of podcasts. This often resulted in incompatible uses of these standards which then caused problems when processing some podcast feeds.

The gPodder project is currently creating a best practice guide for publishing and interpreting podcast feeds.

Goals[edit]

The goals of this project are to automate the evaluation of a podcast feed against the guidelines, and to collect statistics based on such an evaluation. An extensive list of podcast feeds would be provided for the execution of the evaluation.

Benefits for the Student[edit]

The student would learn how to read and interpret best-practices guide and related standards. She would further learn how to transfer such texts into an implementation, and would be able to test the resulting work on a large number of real podcast feeds.

Benefits for the Project[edit]

The project would benefit from this project in several ways. It could provide podcast publishers feedback about the quality of their podcast feeds. The work would yield results that could help to further improve the podcast parser. Additionally the real-world applicability of the best-practices guide would be evaluated.

Possible Mentors[edit]


Per-User Database in gpodder.net[edit]

Current Situation[edit]

gpodder.net uses CouchDB as its main data store. Currently the data of all users (and pocasts) is contained in one database, which makes queries easy (because data of all document types can be combined in views), but makes the handling of data inflexible.

Goals[edit]

Some work has already be done to split the main database into several smaller ones that can hold the data of one user or a group of users. This would requires directing queries to the correct databases, and producing aggregated data from a set of databases instead of a single one.

Benefits for the Student[edit]

In this project the student could learn to design and implement a distributed application backend. The project involves issues like scaling, failure scenarios and query distribution, for which guidance would be provided. The student could learn the trade-offs of different application architectures in real-life situations.

Benefits for the Project[edit]

With this idea implemented, the project could make better use of small, low-powered servers for running gpodder.net (especially as the webservice is funded by donations). It would also allow more flexible data migration between servers for scaling and maintenance.

Possible Mentors[edit]

Deeper integration between gpodder.net and Podcatcher (Windows Phone podcast client)[edit]

Current Situation[edit]

Podcatcher is one of the major (open source) podcast client available for Windows Phone. It currently offers podcast search and user's subscription import through the gpodder.net service. But gpodder.net provides a lot more potential that Podcatcher could leverage which would also benefit the users of gpodder.net.

Goals[edit]

The goal of the project is to expand the support of gpodder.net in Podcatcher. With this project, gpodder.net users' podcast information would be synced two ways; from gpodder.net to the Podcatcher client as well as from the client to gpodder.net. The information that would be synced is users' podcast subscriptions and episode listening states within those subscriptions. This way users would have all their podcast information synced throughout all his/her devices.

Benefits for the Student[edit]

The student would be able to learn Windows Phone development, database design and programming on the Windows Phone platform with LINQ as well as client-server programming with REST APIs and data processing.

Benefits for the Project[edit]

With this idea implemented, gpodder.net would have a major Windows Phone podcast client support the majority of its main features. This would benefit both the users of gpodder.net as well as the users of Podcatcher.

Possible mentors[edit]

  • Johan Paul (author of Podcatcher)
  • Stefan Kögl (talk) (for the server-side part)

Deeper integration between gpodder.net and Volksempfänger/HoloPod (Android podcast client)[edit]

Current Situation[edit]

Volksempfänger is an open source podcast client available for Android. It currently offers podcast search through the gpodder.net service. But gpodder.net provides a lot more potential that Volksempfänger could leverage which would also benefit the users of gpodder.net. To prevent confusion it should be mentioned that the app probably will be renamed to "HoloPod" on the next release.

Goals[edit]

The goal of the project is to expand the support of gpodder.net in Volksempfänger. With this project, gpodder.net users' podcast information would be synced two ways; from gpodder.net to the Volksempfänger client as well as from the client to gpodder.net. The information that would be synced is users' podcast subscriptions and episode listening states within those subscriptions. This way users would have all their podcast information synced throughout all her devices.

Benefits for the Student[edit]

The student would be able to learn developing for the Android platform. She especially would learn how to integrate an App with an webservice but also get to know many other parts of the platform, for example how to integrate accounts into the Android system.

Benefits for the Project[edit]

With this idea implemented, gpodder.net would have an Android podcast client support the majority of its main features. This would benefit both the users of gpodder.net as well as the users of Volksempfänger.

Possible mentors[edit]

  • Vincent Schüßler (author of Volksempfänger)
  • Julian Brost (author of Volksempfänger)
  • Stefan Kögl (talk) (for the server-side part)