Re: [Banshee-List] Google Summer of Code and Banshee



tl;dr version:  Most of the work that is keeping a re-vamped podcast
plugin from being released is Cairo related.  I don't have the time to
become proficient with it.  If you know Cairo and C# you can help get
a new podcast plugin for Banshee released.  Yes.  You.  Screenshots,
videos, and a breakdown of what's actually in the new plugin at the
end.

On Tue, Mar 23, 2010 at 12:11 PM, Gabriel Burt <gabriel burt gmail com> wrote:

David,

>> Mike Urbanski was working on Podcast as a Service. Under his project he
>> regularly posted videos though not many explanations of impact for users. In
>> interaction with users he has also occasionally called for testing of this
>> code. However it has to my knowledge not been merged and Mike has by and
>> large disappeared from the Banshee space. A defeat on two fronts.

I wouldn't say that I've disappeared from the project.  Quite the
contrary, after the completion of the GSoC term I continued hacking
for two months after SoC ended, continually updating the maintainers
of my status.  At a certain point I hit a wall, made every effort to
contact people who could help finish the code, but in the end, none
were able to contribute.

With the right person / people the code that I produced during GSoC
'09 could be released in a matter of days.

Many of the issues are, literally, cosmetic.  (i.e.  graphic design / cairo.)

I still ping people about once a month to see if they can help finish
the project, as of this writing, no one has been available.  I really,
really, really want to see this released.  I'm applying for jobs at
the moment and the first question that I'm asked is almost always:
"Why wasn't your GSoC work released?"

> Agreed, I'm disappointed by how this turned out, and I blame myself.
> I think we were too ambitious with this project, and did not have a
> good plan we could execute on for getting it into master.  I think
> that should be the #1 goal of any SoC project/mentor, since with the
> success of getting code into the actual project, I'm sure the odds of
> that contributor staying on rise.  I would recommend defining the
> smallest kernel

So what happened with my GSoC project last year?

I disagree that the project was too ambitious, you and I talked and
continued to redefine the scope of the project as the summer
progressed.  I feel that a lot of good code was produced and that much
of it should be released.

The Podcasting as a Service ("PaaS") aspect of the project got off to
a bad start (The Participatory Culture Foundation and the Miro / Miro
Guide communities took issue with the general concept of the project
[inexplicably, Godwin's law reared its head very early on in the
conversation.])  But, there was no real despair or productivity hit.
If no one wants it, I'll work on something else.  A prototype of the
Podcasting as a Service project was completed, and the focus of the
GSoC work quickly shifted towards a re-write of the podcast plugin /
finding a new way to interact with Miro Guide.

While I say re-write, it was more akin to a re-mix.  Many of the
underlying libraries that support the podcast plugin were written for
Banshee 0.x and were never cleanly modernized for Banshee 1.x.  During
the summer of 2008 I took some time to cleanup many of the libraries
and produce a few demo programs based upon the work.  During the GSoC
2009 re-write project, bugs were fixed, and the underlying libraries
were further refined or refactored to fit more cleanly into the
Banshee 1.x ecosystem.

I kept hacking for over two months after the GSoC period ended.

More bugs were fixed, performance problems were tracked down, and
really great support for browsing, searching, and sorting through Miro
Guide from within Banshee was added.

The re-write was extremely successful.  The result is a cleaner, more
extensible, more Banshee-y podcast plugin.  I'd say the PaaS portion
of the project was successful as well.  I've shown the prototype at a
few conferences and many have said some very kind things about it.

So why was the work (the re-write at least) never integrated into Banshee?

*
**
* * * d r u m r o l l * * *
**
*

Because I don't know Cairo.

The bulk of the work that needs to be done, I simply cannot do.

It's mostly graphics work, mostly cairo, and I knew that I didn't have
the background to make those components release worthy.  In the Gtk+
world Cairo people are worth their weight in platinum and are usually
over-employed.  It's extraordinarily hard to get the attention /
interest of someone who has the time and know how to do this kind of
work.

For my part, during September and October of 2009 I emailed several
developers (from multiple companies and projects) asking for help,
then went to Monospace and UDS in November to find hackers, and ask
for help.  Some people were interested, some art was produced, but
noting substantial came of any of the exchanges.  Everyone was
overworked as it was.

At this point, I had two choices, I could either learn the Cairo APIs
and do it myself, or start working on other projects.  In the end it
was my dwindling war chest that made the final decision for me:  I
simply had to move on to other projects.

It's been months since anyone has contacted me about this.  I'd love
to get it released!

--

David is correct in pointing out that I never took the time to fully
explain my intentions outside of the weekly GNOME Foundation status
report.  I'm a terrible blogger and don't necessarily enjoy writing
for an audience.

I've been hacking on Banshee for 4.5 years now and I've contributed
somewhere around 14 KLOC of code, but, I've probably sent 14 emails to
the list.  I'm a very shy person in public forums / lists / chats and
I don't think that that is going to change anytime soon.

So what's in the podcast plugin re-write?

* Browse / Search Miro Guide from within Banshee:  http://vimeo.com/6601743
* A Download Manager (reorder download tasks in queue, etc):
http://vimeo.com/5558055
* User Configurable Download Directories:  http://vimeo.com/5622238
* Pause / Resume Downloads.
* More Dialogs / Warnings.
* OPML Import / Export.
* Substantial Bug Fixes.
* Substantial Performance Improvements.
* Much of the code was upgraded to use LINQ.
* Completely rewritten Migo2 library (does the heavy lifting [RSS
parsing, task management, asynchronous downloads, etc.] for the
plugin.)

What needs to be done:

* Graphics, Graphics, Graphics.  See mockups below for examples of
what needs to be done.
* Bitrot needs to be addressed and work needs to be done to ensure
that the plugin can still safely be integrated, needs a db migration,
etc.  (I haven't touched the code since November 26, 2009)
* The Download Manager still needs a little work.
* A few class names need to be changed.  (legacy names from the PaaS
portion of the project)
* There's a bug in Mono's HttpWebRequest that keeps requests alive
even after calls to 'Abort'. (2.4+)

Here are some examples of the kind of Cairo work that needs to be done:

0.  The main Miro Guide description source needs art and copy:
http://banshee-mocks.s3.amazonaws.com/main-mg-window.png
1.  Channel description view for Miro Guide channel sources needs text
layout and a button widget:
http://banshee-mocks.s3.amazonaws.com/mg-mockup-2.png
2.  Need a download column renderer:
http://banshee-mocks.s3.amazonaws.com/mg-mockup-3.png

On the left, you have the current state of the UI, on the right you
have a mockup.  I just need something to handle text layout and draw
pixels on the screen.

There's really not much keeping the plugin from release.  I've been
using it daily since last July or so.

I like the re-written plugin, over the years some super talented
people have touched it, and I'm really proud of it.  While it isn't
perfect, with a little love it could easily be the best podcast client
for Linux.

I've loved working on Banshee these past few years.  I feel like I
gave it my best and simply need help to take it the last few yards.

If you have the time, please, help!


~Mike


The code can be found here:  git://github.com/mcu/banshee.git


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]