Re: [Rhythmbox-devel] architecture

On Mon, 2003-08-18 at 12:09, wrote:

> 1) librhythmbox

I have started on "inverting" the node system and turning it into an API
more resembling a real database.  What I have so far is a design doc and
a .h file.  I'll commit it fairly soon so it can be used for discussion.

However, it's a fairly big jump from there to accessing the library via
Bonobo/D-BUS or whatever.  D-BUS especially isn't designed for this kind
of very high-traffic stuff.  I mean, we're querying the library a *lot*.

Now scalability is an issue - and maybe for people who have 15000 songs,
the ability to talk to real database over libgda might outweigh the
Bonobo overhead.  

So my current work is going to make it easier to replace the node system
with a real database.  We can then extend things from there. 
Incremental rewriting.

> 2) librhythmboxui
> This is a place for two things:
> - widgets for librhythmbox
> They would be used in Rhythmbox, but might be useful for other apps who want to 
> use librhythmbox, too. (ideas: RbButtonList - the buttons top left, useful for 
> the applet; RbCurrentTitle - label displaying the current title)
> - hooks for plugins
> Predefined ways for plugins to hook into Rhythmbox (idea: 
> rb_properties_add_page for a musicbrainz plugin)
> Maybe I'D want to split this, I don't know.

I don't see a big need for separating these widgets from Rhythmbox. 
Doing so would be a fair amount of work - you'd need to dig out all the
rb-specific GConf prefs they set and have an API to use that, add
callbacks...which is pretty tedious work when you consider that it's
very unlikely anyone else would actually use it.

> Plugins seem to be useful stuff for me, because there's a lot of extensions in 
> current Rhythmbox that are only marginally useful. And on top of that there are 
> many parts of the code which should just coexist but not interact directly, 
> which can easily be achieved with plugins.
> Examples of plugins: Bonobo backend, mmkeys, cd burning, export to 

Eventually, a plugin thing would be good.  But right now we are going
through so many changes that there is no chance we could provide a
stable API, not to mention ABI.

> 5) other apps
> This would be apps that are external to Rhythmbox but want to interfere with 
> it. This would include a command line scripting tool (#> rb-remote --next),

Ugh.  The proliferation of foo-remote apps sucks.  This is something
that D-BUS is great for.

>  an 
> applet, a GKrellm plugin or whatnot.

These could use either the D-BUS interface or the Bonobo interface. 
Probably the Bonobo one.

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