Re: [Rhythmbox-devel][GNOME SoC] GNOME GSoC 09 question



On Tue, Mar 17, 2009 at 5:20 AM, Jonathan Matthew <jonathan d14n org> wrote:
> On Mon, Mar 16, 2009 at 11:59:45PM +0530, Easwar Hariharan wrote:
>> On Mon, Mar 16, 2009 at 10:09 AM, Alexandre <airmind gmail com> wrote:
>> >
>> > I have some experience writing Python plugins for Rhythmbox, so I'm hoping I
>> > can help you a bit.
>> >
>> > On Sun, Mar 15, 2009 at 3:06 PM, Adam Schreiber <sadam clemson edu> wrote:
>> >>
>> >> Reposting reply to list.
>> >>

<snip>

>> >> >>
>> >> >> IDEA:
>> >> >> A plug-in for Rhythmbox to preferentially play a track from hard disk
>> >> >> than from a Last.FM stream using the bitrate metadata as a parameter
>> >> >> to determine which audio is of better quality in Python,and add it to
>> >> >> the play queue while removing it from the stream,or,in an alternative
>> >> >> idea,to allow the user to see that he has the same track on disk,and
>> >> >> decide which to play.
>> >> >>
>
> I think this idea is too simple and small in scope for SoC.  It doesn't
> add anything visible to the application (the user would have to
> specifically go looking to see if it was working at all), and it would
> only give you experience with a few concepts in rhythmbox, rather than
> learning something useful about GNOME as a whole.
>
> On the matter of scale, I think I could implement this in about two
> hours and with less than 100 lines of code.  Comparing this with past
> rhythmbox SoC projects (DAAP, a system for streaming music to IM
> contacts, and the predictive playback project from last year), this
> doesn't even come close.

Well,I'm no judge of projects being big enough or not for SoC,GSoC 09
being my first,but I would like to point out that this particular idea
also bypasses the need for installing a client(officical or otherwise)
to receive Last.FM streams.

My plan was to replace tracks in the Recommended Tracks stream,so I
would say,that I would also be implementing listening to the
Recommended Tracks stream in RB,which AFAIK,is not available.(I have
not compiled the latest trunk,so I may be mistaken).

Also,it enables people to find out music in their library they might
not known are similar in taste etc to what they already listen
to,without wasting bandwidth,(which I may add,is not as plentiful
everywhere as in the West).

Consider the conflicting opinions from the RB-devel list and the GNOME
SoC list,the latter of which opines as follows:

On Tue, Mar 17, 2009 at 12:54 AM, Alexandre <airmind gmail com> wrote:
>Difficulties that will probably stop you from completing the project, at least as a separate >Python plugin.
>If you do want to make this project, I believe the best way would be hacking the Last.fm plugin >in C. But then there are a bunch of complications, such as understanding C, GObject, the >Last.fm source code and how Rhythmbox works. Not that it is not worth it, but it's a lot of >trouble. You will probably spend most of your time understanding how everything works.

>
>> > You are going to have problems implementing a separate plugin for this using
>> > Python. The Rhythmbox internals is not entirely exposed in Python and the
>> > Last.fm streaming plugin is written in C. You are going to have difficulties
>> > interfacing with the Last.fm plugin in Python, or you'll end up rewriting
>> > the Last.fm streaming code in Python to do all you want.
>>
>> Insurmountable difficulties as in enough difficulties to prevent me
>> from completing the project during SOC,or difficulties which can be
>> worked around with a bit of brain wracking?
>
> It doesn't really matter whether it's possible to do this or not.
> Implementing this feature as a separate plugin is a bad idea, and it's
> bad programming practice.  There's one obvious place where this feature
> should be added, and that's in the existing last.fm plugin.  Adding it
> anywhere else is just wrong.

hmm.

>
>> >
>> > Can I give another suggestion instead? You could make a plugin that takes
>> > any Last.fm feed (such as http://www.last.fm/api/show?service=285) and
>> > generates playlists with the Rhythmbox database. This would allow playing
>> > local music with data from Last.fm, giving an experience close to Last.fm
>> > stations without the streaming. And this could be implemented entirelly as a
>> > Python plugin, probably as a Rhythmbox source, with some nice GUI on top.
>> > I would really love if these (http://www.last.fm/api/show?service=301 and
>> > http://www.last.fm/api/show?service=329) APIs would be accessible that way.
>>
>> Hmm,the services themselves look interesting,specially the loved
>> tracks one.What I think I might have a problem with is with
>> implementing it as a RB source,IIRC,RB is written in glade(that's what
>> a programmer friend told me),plugin looks easier.
>
> This is a much more interesting and valuable project.  I think you should
> investigate how rhythmbox plugins work, how sources are implemented,
> what glade is, and how rhythmbox uses it before you base any decisions
> on your understanding of those things.

Beg pardon?Do you mean to say I should find how the things you
mentioned above work before I decide which of the two
features(Preferential play from disk,or Top Loved Tracks) I should
plan to implement?

On Tue, Mar 17, 2009 at 12:54 AM, Alexandre <airmind gmail com> wrote:
>A RB Source is simply a widget inside Rhythmbox, that communicates with the Rhythmbox >database. It can, and usually is, implemented as plugins. The Last.fm tab is a Rhythmbox >source, for instance. But it is implemented in C, while you can do it in Python, which is usually >much easier.
>I'm not sure about Rhythmbox using Glade, but that doesnt matter. A Glade file is a XML >representation of a window layout, such as where buttons and trees are located. You can load >that representation in your code and it automatically creates the objects for you. Maybe >Rhythmbox uses Glade for it's top window, I dont know and it doesnt matter to your plugin, but >your plugin could use Glade to create the plugin GUI. Just take a look at the Glade program, it >allows you to create user interfaces by drag-and-dropping components at a window.
>
>Why I said that idea is easier to you is especially because all you'll need to handle is a Python >plugin. Python is a very good starting point into Gnome and Rhythmbox, and eventually while >you learn about the Rhythmbox API, you learn about GObject and how many things fit together.
>Btw, there is a great page where to learn about Rhythmbox plugins: http://live.gnome.org
>/RhythmboxPlugins/WritingGuide
>There is a good description of RB Sources, and everything else you'll need to start writing a >plugin.

Thanks for the explanation.I'm aware of the writing guide.

Any other opinions from potential GNOME GSoC 09 mentors would be
valuable inputs to resolve conflicting opinions from the GNOME SoC
list,and the RB-devel list.

Regards,
Easwar
Registered Linux user #442065


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