Wednesday, August 25, 2010

GSoC: Media and Plugins

Hello World! 
This is my very first blog post (yay!) and now I'd like to share with you guys my results, which I achieved this summer in Google Summer of Code. I had a really great experience and successfully finished my project.
I worked with the application called Plasma MediaCenter (PMC), which is - you guessed it - a media center. However, before I got accepted I already worked on this project and the idea was to provide content, which is not on your computer:)
Under the hood it means to have a DataEngine (which was there) and to provide an interface for plugins that fetch media data (sending search queries) from multimedia content providers such as youtube or flickr. 
Since all this above mentioned program/plugins are written in C++, my contribution in GSoC was to write all this in JavaScript.
Why addons? Because each media provider has its own API implementation and therefore it offers such concept.

In the middle of the project time, we noticed that DataEngines are not really suited well, because search queries should not be stored. Then the idea came up with to make a service out of it.
So now we have a service that binds the plugins dynamically, returns results and offers the plugins a general datastructure.
I wrote a service that can bind the plugins dynamically, returns results and offers the plugins a general datastructure.
The plugins are have the functionality to send requests to the multimedia providers and fill the offered datastructure.

Here are some screenshots:
Service with its loaded addons

Searchresults of s flickr request
Now with that API and addons in JavaScript we can update the addons without recompiling it, and users can easily get updates from GHNS.

Of course all this couldn't be done without the help of my mentor Alessandro Diaferia (alediaferia), who was always engaged and helped me when I had questions or troubles, Aaron Seigo (aseigo), who made DataEngines and Services in JavaScript possible and also for helping me out, when I had questions or troubles, last but not least I want to thank Marco Martin (notmart) for helping out, when I had some rookie kde build problems :)