Planned Features

This is a rough list of ideas the current Grilo developers came up with. If you are interested in knowing what new features may be landing in Grilo in the future this should give you an approximate idea. Also, if you want to contribute to Grilo but you don't know where to start this list is a good place: check our ideas, select one that you feel like working on and contact us to get some help and guidance.

Of course, this is not a static list, we have plans to update this list periodically and try our best to keep it up-to-date with the latest thoughts and plans we have for Grilo. To make things a bit more dynamic while keeping this list open for everybody we have two sets of features. The Main Set is for features already discussed in the mailing list and / or IRC channel. These are ideas selected and agreed as interesting by the main developers, things we would like to have. The Request Set are other ideas that have not been discussed yet with the developers and, because of that, may need some extra thought or discussion before someone starts working on them. The Others Set is for ideas that have been considered to be not particularly important at the moment, even when they may have a point.

If you have any new ideas or feature requests, please discuss them with us on the mailing list and/or the IRC channel or just write them down below in the Request Set for consideration.

Main Set

Feature

Type

Proposed by / contact

Assigned to

Description

Lyrics plugin

New plugin

jasuarez

-

Implement a new metadata source plugin capable of retrieving song lyrics

Tracker plugin

New plugin

jasuarez

-

Implement a new media source plugin using Tracker to access local media content. Would be nice to make the hierarchy of content exposed by the plugin through its browse interface configurable.

TMDb plugin

New plugin

spenap

-

A metadata source plugin to retrieve movie information from The Movie Database: http://www.themoviedb.org/

TVDb plugin

New plugin

spenap

-

A metadata source plugin to retrieve TV shows information from The Online TV Database: http://thetvdb.com/

Port plugins from other apps

New plugin

itoral

-

Take plugins from other apps like Totem or Rhythmbox and move them to Grilo

Auto-expand big containers

Core

jasuarez

-

Some containers exposed by certain services may have various thousands of items. Usually application developers need to handle this situation efficiently and there are various solutions to that problem. Still, some applications may benefit from intelligent plugins capable of splitting big containers automatically by creating subcategories with a reasonable number of items. For example, a category which has 10000 items, when browsed, could show 20 subcategories named: 0-500, 500-1000, 1000-1500,... ensuring a maximum of 500 items per category. The idea would be to provide this feature at the framework level so that plugins get this for free and don't have to deal with the problem themselves.

Map search/query operations to browse categories

Core

itoral

-

Searchable plugins would be benefited from the option of saving the search parameters of specific search operations and expose the option of repeating the same search in the future through the browse interface. In this case, searchable plugins, when browsed, would expose a "Saved searches" category with one subcategory per saved search. When these saved searches subcategories are browsed, the system retrieves the search parameters associated with them and executes a search operation that would be experienced by the user as a regular browse.

Support for services like Last.FM

Core

jasuarez

-

Services like Last.FM work in a different way when compared to others like Youtube or Jamendo. This task is intended to investigate how the APIs for these services fit with our browse and search APIs and check if we would need to tweak our APIs for these services or if we need new APIs, etc

Music Store Support

Core

jasuarez

-

Support music store functionality for plugins interacting with services that support this option. It is not clear if we would need a new type of plugin other than Metadata Source or Media Source or if this would be just a matter of adding a buy API method to the Media Source class that plugins can implement optionally. Probably we would only need the latter.

D-BUS API

Core

jasuarez

-

Expose Grilo's API over D-Bus. This would mean implementing a daemon (media-server) exposing Grilo's APIs as services on the bus.

XML/Json plugins

Core

jrocha

-

There are many plugins that are very similar in spirit: get some XML from a service, parse it and extract the metadata from it. We could probably create a prototype for these services and manage the differences by scripting or configuring this prototype through plain XML/Json, that way we could write new plugins like these with minimum effor and at the same time reduce the amount of code to be maintained.

Python plugins

Core

itoral

-

Many developers may feel more comfortable writing plugins in Python rather than C. It would also make it easier for us to import code from plugins developed in other projects. We should look into libpeas for this purpose.

Async plugin loading

Core

itoral

-

At the moment, Grilo loads plugins synchronously, and thus it blocks the even loop at this stage. This would be troublesome in certain scenarios when a lot of plugins are available or their init functions are expensive. It would be nice to re-implement this part of Grilo to make it fully non-blocking.

Refine upload/store API

Core

itoral

-

The store API in Grilo is intended to push content to the actual services. It is being used, for example, to save the podcasts feeds (podcasts plugin) or the media bookmarks (bookmarks plugin) the user is interested in, but it has not been designed to push content to real services like Youtube, Flickr, etc. The idea would be to try and implement the store interface for one of the existing plugins (for example Youtube) and, based on that experience, propose a new API. Also, when implementing this interface in any Grilo plugin we should consider if using libsocialweb can help.

Operation options

Core

itoral, jasuarez

guijemont

We need generic means to declare and specify options for some operations like sorting, filtering etc

Unit tests

Core &plugins

itoral, jasuarez

-

Add unit tests to test the most complex features in Grilo (filters, full-resolution, etc) It would be good to have also a set of tests suited for plugin developers, that can be used to test if plugins fulfil Grilo requirements

Grilo Examples

Documentation

itoral

-

Have a directory in grilo with a collection of short examples that people can compile and run easily

Re-design the GrlMediaPlugin, GrlMetadataSource, GrlMediaSource hierarchy

Core

itoral

jasuarez

GrlMediaPlugin shouldn't be the base class of this hierarchy, it should be on its own separate hierarchy and be aggregated by the "Source" hierarchy classes. Still, the "Source" hierarchy would need a common base class for both Metadata Source and Media Source.

Document how to write plugins for Grilo

Doc

itoral

itoral

Idem

Totem integration

External

itoral

jasuarez

Grilo plugin merged in upstream Totem

XBMC integration

External

itoral

-

Grilo plugin for XBMC, check how the XBMC community feels about Grilo and study collaboration possibilities

Document how to setup the environment for Grilo

Doc

itoral

itoral

Idem

Mature the current plugin set

plugins

itoral

-

Review the current plugins and check for missing features and improvements

Request Set

Feature

Type

Proposed by / contact

Assigned to

Description

Qt bindings

Core

itoral

-

Grilo can be used directly from Qt applications already, however, having Qt bindings available would make it even more natural for Qt developers to use Grilo.

Configuration API

Core

itoral

-

Probably, we will be adding features to Grilo that may need some configuration at framework level and for that we would need a configuration API. Examples of these configurations options could be related to tasks like those related with the caché support or the auto-split of big containers to mention a few examples.

GObject-Introspection bindings for Vala

Core

itoral

-

Make sure we have these when GObject-Introspection works for Vala

i18n in Grilo

Core

vjaquez

-

Check what we should do about i18n in Grilo and make sure we do it

DeInit functions

Plugins

itoral

-

Some plugins are not implementing DeInit functions and they should, to make sure they can be unloaded properly. Example: the Youtube plugin does some caching operations that are spawned by the init function. If the plugin is shutdown before these finish it will crash.

Migrate Documentation to Mallard

Doc

jasuarez

-

Idem

Flicks plugins to use Frogr flickr library

plugins

jasuarez

-

Idem

Grilo gvfs backend

External

guijemont

-

Idem

Others Set

Feature

Type

Proposed by / contact

Assigned to

Description

Twitter plugin

New plugin

jrocha

-

Implement a new media source plugin allowing people to use Grilo both for reading and pushing tweets. The idea would be to illustrate how the Grilo framework can be used in contexts other than multimedia.

Projects/Grilo/PlannedFeatures (last edited 2013-11-23 14:38:34 by WilliamJonMcCann)