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