summaryrefslogtreecommitdiff
path: root/doc/grilo/overview.xml
blob: aa169ae80d20a962c491f0e3b3a9f533db5f1258 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
]>

<section id="overview">

<para>
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.
</para>


<para>
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:
<itemizedlist> 
  <listitem>Learning all the APIs involved.</listitem> 
  <listitem>Learning and integrating all the required technologies.</listitem>
  <listitem>Abstracting the differences among content providers.</listitem> 
  <listitem>Maintenance.</listitem>
</itemizedlist> 
</para>

<para>
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.
</para>

<para>
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:
</para>

<itemizedlist> 

<listitem>
<para><emphasis>Less work on the application side.</emphasis>
Plugin development happens in the framework and application
developers can focus on making good user interfaces instead.
</para>
</listitem>

<listitem>
<para>
<emphasis>Code reuse.</emphasis>
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.
</para>
</listitem>

<listitem>
<para>
<emphasis>Quick learning curve.</emphasis>
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.
</para>
</listitem>

</itemizedlist>

<para>
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.
</para>

<para>
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.
</para>

<para>
Grilo is licensed under the GNU Lesser General Public License (LGPL).
</para>

</section>