[maemo-developers] [GSOC Proposal] gPodder and Panucci integration
From: Nick Nobody me at nikosapi.orgDate: Fri Apr 3 05:26:56 EEST 2009
- Previous message: [pymaemo] PyMaemo (Python for maemo) alpha release for Fremantle
- Next message: microb consumes too much memory?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hello,
I know it's late to submitting a proposal but I didn't think I'd be able
to participate in the GSOC until today.
Please let me know what you think,
nick
------------------------------------------------------------------------
gPodder and Panucci integration for Maemo
As it stands downloading and listening to podcasts on Maemo is a tad
sketchy. The two best suited tools for the job at the moment are
gPodder and Panucci. gPodder is a very feature-rich podcast aggregator
and Panucci is a small, bookmarking media player built specifically
with podcast and audiobook listeners in mind. The problem is that they
don't play very well with each other; this proposal will change that. I
intend to make gPodder, Panucci, and a NIT the best combination of
hardware and software that a podcast listener can use to enjoy their
shows.
What major things need to be done in order to achieve this goal?
01) gPodder needs more of an MVC architecture so that changes to the
database can easily be propagated to the GUI.
02) gPodder needs a rich API that can be accessed over d-bus.
03) Panucci will have to be able to interact with this new API.
Things that are necessary for proper Maemo integration:
04) gPodder should be aware of Maemo's network layer and pause
downloads when the network connection is interrupted.
05) Maemo backup integration (gPodder bug #321)
06) Add a gPodder option to restrict downloading of large files when
the user is on a cellular Internet connection (gPodder bug #273)
07) In gPodder, delete episodes in a separate thread as not to lock
up the GUI (gPodder bug #268)
08) Panucci should support streaming of podcasts (now that gPodder
supports streaming)
09) Scrolling metadata labels for Panucci.
10) Translations for Panucci.
The specifics:
For the longest time gPodder has been relying on code in the GUI to do
things that really should be taking place behind the scenes. Lately
Thomas Perl (the gPodder lead developer) and others have started moving
chunks of code into their own respective modules but it's far from
complete. I propose to finish off where they left off and make gPodder
a prime example of MVC. This mundane task is necessary for the
completion of the next step, the d-bus API. I predict that this task
will take the longest to complete, on the order of 3 to 4 weeks.
The gPodder d-bus API will be relatively large to make it easier for
other application developers to interface with gPodder in a
language-neutral way. Although it is currently possible to import
gPodder's python modules this method doesn't really work while gPodder
is running. Features of this API will be things like adding/removing
feeds, accessing all sorts of metadata and remotely being able to
change settings. This will take on the order of 1 to 2 weeks to
complete.
The most important step is finally integrating both gPodder and
Panucci. Once the gPodder d-bus API is complete it should be fairly
trivial to connect the two. Some already community-requested features
(from ITT) include marking episodes as played in gPodder (once a
certain threshold has been reached in Panucci), getting cover art and
episode metadata to be displayed in Panucci and being able to delete
episodes from Panucci and propagating that change to the gPodder
database. Also, gPodder would be able to detect whether Panucci is
installed and if it is there would be additional menu items to allow
the user to add the file to a Panucci playlist. This step will probably
take on the order of 1 to 2 weeks to complete.
Since Panucci is still a pretty young project it still needs a bit of
polish when it comes to the Maemo platform. One of the biggest requests
is scrolling labels (much like on an iPod) for artist and title
information. Since there is no native scrolling-label widget in GTK
I'll have to come up with something to make this happen. The label will
have to be aware of the state of the device's screen in order to save
power by not moving the label if the screen is off. This should take no
more than a week.
In order to fully take advantage of the Maemo platform I intend to make
gPodder network-aware thus if the network connection is lost while
downloading episodes or refreshing the feed cache gPodder can pause the
downloads in question and abort the feed cache update gracefully. The
"pausing" of downloads will be very simple thanks to some new download
manager code that Thomas is working on at the moment, all I'd have to
do is interface with the Maemo network stack. This should take a day or
two at the most.
Another problem with downloading podcasts on an Internet tablet is the
large amounts of bandwidth required for long episodes. If the user is
on a cellular connection this can be quite costly and for that reason I
plan to implement a configuration option to restrict downloading of
large episodes unless the user is on a wifi connection (this will of
course be optional and up to the user to enable). This will take a day
to complete.
Keeping with the network-related theme, it would also be very nice to
make Panucci capable of playing network streams since gPodder is now
able to report stream URLs to the 'player' application instead of
having to first download the file. To make this work gPodder would have
an extra menu item that is titled something like "stream this episode"
which would just pass the download URL to Panucci. This will take 2 to
3 days to complete.
Backing up gPodder should also be done in a Maemo-centric way (using
the backup manager of course!). This is a trivial task but an important
one for most Maemo users. I'll have to find out exactly how to set this
up and then add it. This will take no more than a day to complete.
Deleting episodes using gPodder is also not the most pleasant
experience on Maemo, when deleting anything over a few megabytes the
GUI tends to lock up for a bit of time which is annoying for the user.
I will add a small progress dialog to let the user know the overall
progress of their file deletion and all deleting will be done in a
separate thread to prevent the GUI from locking up. This will take a
day to complete.
Finally it would be very nice to have Panucci translated into multiple
languages just like gPodder. I could probably take care of the French
translation and hopefully members of the gPodder project would lend a
hand to fill in the most popular languages. This would take about two
days to complete.
Project schedule:
May 1st to 23rd:
Discuss with Thomas and the rest of the gPodder team about how
to implement all of these changes.
May 23rd to June 16th:
Make gPodder use more of an MVC architecture. (1)
June 17th to June 26th:
Implement the gPodder d-bus API. (2)
June 27th to July 10th:
Integrate gPodder and Panucci. (3)
July 11th to July 17th:
Develop scrolling labels and implement them in Panucci. (9)
July 18th to July 29th:
Complete network-related tasks: 4, 6 and 8
July 30th to August 10th:
Make deleting threaded on gPodder (7)
Maemo backup integration (5)
Translations for Panucci (10)
August 11th to August 17th:
Work on API documentation
Squash bugs from the gPodder and Panucci bug trackers
Benefit to the Maemo community:
This work will benefit both the Maemo and podcasting communities by
offering top-notch podcasting software that isn't even available from a
non-free platform at the present time. As well as improving both the
gPodder and Panucci codebases which makes it easier for newcomers to
start hacking on these projects.
Short biography:
I'm a 19 year old Computer Engineering student at Concordia University
in Montreal, Quebec. I've been involved in contributing to free
software projects for about 3 years now. My favorite programming
language is Python but I've dabbled in C and am currently learning C++
as part of my courses at the university.
- Previous message: [pymaemo] PyMaemo (Python for maemo) alpha release for Fremantle
- Next message: microb consumes too much memory?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
