G'day everyone, I've just committed the plugin framework to cvs, with AudioScrobbler ported, basic Python plugin support, and two sample plugins (one C and one Python). This means that every can start running around coding up cool plugins. We don't have a Plugin Writers Guide (yet), so I'm going to answer a few questions before everyone asks them. To start a new plugin copy plugins/sample or plugins/sample-python to plugins/your-plugin-name, then edit plugins/Makefile.am and the files inside your plugin directory. Plugins are designed to be built inside the Rhythmbox source tree, and as such we aren't installing headers. The reason for this is that plugins use RB's internal API, and we don't want to give the impression that it is stable. In fact I can guarantee it will change, as we improve things, and will probably break plugins people write. What we can guarantee is that we will keep anything in CVS up-to-date with changes. That means that if a plugin is part of the "official plugins" set, we will try to ensure it doesn't get broken (and fix it if it does). The general consensus in a short discussion we had last week was that we will be fairly liberal in what we accept into the official plugins set. For a plugin to be added to the official set, it will need to be three things: Useful, Good and Legal. Useful is simple, it needs to be interesting to other people. This would be fairly hard to fail unless we already have a plugin that does basically what your does. If there already is a plugin, you'll need to start a discussion on the mailing list about why yours is better and should replace the existing one. Good has a number of facets. Good code: it follows the Rhythmbox coding style, doesn't have any obvious issues, and is easy to maintain. Good user-interface: it's not horribly complicated to use, and preferably has been posted to the mailing list so people can comment. Other good stuff: uses gettext for translation, etc. Legal, doesn't violate any licences. There was some discussion previously about having a RB plugin for the iTunes Music Store (based on SharpMusique); I haven't checked but this quite possibly violates the Terms-of-Service, and if it does we probably couldn't have it in the official set. One last thing is that there are a number of things in Rhythmbox that aren't currently capable of being extended at runtime, which means that right now there are things you can't do with plugins. We have plans to fix a number of these, and there are probably more that we haven't though of. If you want to develop a plugin, but can't because of limitation in Rhythmbox, please let us know - we're more likely to give it a higher priority on our TODO lists is we know someone wants to use it. If anyone has any questions, feel free to ask here or on IRC (#rhythmbox on irc.gimp.net). I'm hoping to get more internal API documentation done soon, but until then just ask. Cheers, James "Doc" Livingston -- Every fleeting thought you've ever had in your life, no matter how bizarre, is someone's lifelong obsession. And he has a website. -- Skif's Internet Theorem
Attachment:
signature.asc
Description: This is a digitally signed message part