# Overview

Modern media player applications enable users to consume content from various service providers, both local and remote: Youtube, Jamendo, Flickr, SHOUTCast or UPnP are a few examples of this trend.

Creating powerful, modern media applications that integrate content from multiple services is a time consuming task that demands a lot of effort on various fronts:

- Learning all the APIs involved.
- Learning and integrating all the required technologies.
- Abstracting the differences among content providers.
- Maintenance.

Unfortunately, applications that implement support for these services nowadays do so in a way that is too application-specific. This disables the possibility of reusing the solution in other projects directly, meaning that other solutions have to do all that work again if they want to accomplish the same target, which is rather inefficient and makes this type of solutions quite expensive in terms of development time and maintenance.

In this context, the target of Grilo is to provide application developers with a framework where they can work together in the development of application-independent plugins for managing media content that can be reused directly in modern media applications. This model comes with a number of important benefits:

- Less work on the application side. Plugin development happens in the framework and application developers can focus on making good user interfaces instead.

- Code reuse. There are many applications allowing users to access media content from various providers though application-specific plugins. If the plugins were developed on the framework side, all these developers could share efforts and write support for these services only once in the framework, making them available for all the applications using the framework for free. Every one wins.

- Quick learning curve. If you want to write a media player with support for various content providers, you have to learn about each one of them independently: Want to add Youtube videos? then you need to learn about the Youtube data API. Want to add music from Jamendo? then you need to learn the ins and outs of the Jamendo API Want access to local media? Then you might want to learn about Tracker and its APIs. Want to access UPnP media servers? Then it is time for you to learn about the UPnP protocol and the GUPnP library, etc. This is a lot to learn, and even more code to implement and maintain. The framework approach would make all this a lot more straight forward for application developers, they would need to learn only one API (the framework API) and that would enable them to access all these services through the framework plugins.

Application developers will find in Grilo a framework they can use to gain access to a variety of media resources exposed by different services, all that using a single API that abstracts the differences and particularities of each one, easing remarkably the development of modern players.

Platform developers will find in Grilo a framework where they can cooperate in the development of plugins for managing media content from various services, making the platform more appealing to media developers.

Grilo is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later.