Re: [Rhythmbox-devel] architecture



Quoting Colin Walters <walters@verbum.org>:

> 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.
> 
Hm shit, I'm on holidays soon and I promised my girlfriend not to look at any 
computers, especially computers connected to the internet.

> 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.  
> 
If you need speed, connect to the database directly. You only want to connect 
via Bonobo (or D-BUS) if you want to do IPC with Rhythmbox directly. And we 
need an IPC interface for applets and scripting. And the only way to make this 
interface not suck is to force ourselves to provide the same API that our 
frontend uses. Or you'll end up with the current Bonobo mess.
And direct Db access is not easily doable, because you need to notify all 
connected frontends about changes. Though you could probably use D-BUS for that 
and have a mixed D-BUS/libgda connection method for the library.

> Incremental rewriting.
> 
That was my goal exactly, I just wanted to outline where i want to arrive in 
the end.

> 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.
> 
Any app before 1.0 is free to break plugin API/ABI anyway it wishes, we could 
even make the plugin interface internal to be sure we can mess around all we 
like.
Oh and the plugin interface would definitely come later.

> Ugh.  The proliferation of foo-remote apps sucks.  This is something
> that D-BUS is great for.
> 
#! /bin/bash
for track in `rb-remote --get-tracks`; do
  ALBUM=`rb-remote --get-album $track`;
  TITLE=`rb-remote --get-title $track`;
  ARTIST=`rb-remote --get-artist $track`;
  FILE=`rb-remote --get-file $track`;
  mv $FILE /path/to/mp3s/$ALBUM/$ARTIST - $TITLE.mp3;
done

If you can buy me something like this somehow, I'm happy. I don't know another 
way than using some rb-remote "crap". Give me something to script all my GUI 
apps, preferrably from my shell.


Benjamin




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