GSoC Proposal

Plasma Media Center Components

Alessandro Diaferia


Name: Alessandro Diaferia

Email Address: alediaferia@gmail.com

Freenode IRC Nick: alediaferia

Location (City, Country and/or Time Zone): Bari, Italy

Proposal Name: Plasma Media Center Components


Motivation for proposal/goal


One of the aspects that can help making KDE even more competitve over the desktop scene is, for sure, the way it manages multimedia contents. An easy to use and, at the same time, beautiful set of tools designed to help the user manage his own media contents would represent for sure one step forward in order to meet a wider range of user needs.


Currently Plasma does not provide a set of widgets able to manage media contents even if a mediaplayer plasmoid is currently being developed. The aim is, then, to provide a full set of widgets capable of browsing and reproducing media contents and, possibly, a stand-alone Media Center Application that makes use of Plasma::Corona to import the Plasma media widgets.


Use case scenario


First Scenario: Joe is just back from work and he is really tired. He just wants to relax and watch a DVD-Video. So he just picks his new DVD and puts it in the PC. The Plasma Media Center Dashboard asks him whether to play the video or not and he just can sit and enjoy. The Media Center takes care of displaying it fullscreen keeping track of the progress in order to allow a quick restore in case of current failures.


Second Scenario: Mark has just bought and new and powerful PC but the old one is not so old and he does not want to throw it away. So he configures the PC with the Plasma Media Center stand-alone application running and connects it to a TV monitor. Both Plasma and the Media Center are really nice appealing and he invites his friends to watch a film and to show them how amazing and powerful can the Media Center be. Once they finish watching the film Mark just puts on some music quickly picking his favourite tracks from the Browsing Applet. The Browsing Applet shows the most played tracks thanks to the Nepomuk indexing backend.



Implementation Details


Browsing the contents: The core component of the Media Center is going to be an applet specifically designed to browse through the media contents of the PC (audios, videos, pictures). Thus, a database seems a sensitive idea in order to keep track of the contents and their changes. So here comes a Nepomuk integration that is going to ease the indexing of media contents browsable by the Media Content Browsing Applet (MCBA from now on).


The mediaplayer: In addition to the MCBA a mediaplayer applet is of course needed. This particular applet is already under development and I would integrate it in my work. The mediaplayer applet will simply be a widget that makes use of the Phonon::VideoWidget to play movies and generally use the Phonon backends to reproduce audio.


The playlist: A playlist applet will allow the user to handle the reproduction order of his own media contents. The playlist applet will simply show the media contents in the queue, easily editable through simple drag and drop mechanisms. The playlist will be populated either clicking items in the browsing applet or just dropping reproduceable contents over the playlist applet.


A DBUS interface: Having each component able to communicate with each other is for sure an advantage. A simple but effective DBUS interface will be developed in order to make each component available through the entire Plasma Desktop. A DBUS interface will also help sending the media content from the playlist applet to the mediaplayer one. In addition to this, the availability of a DBUS interface will ease the interoperability through media playing applications and through the whole desktop in general.


Interoperability (and a DataEngine?): As stated before, a DBUS interface is vital to make everything more versatile. For example inserting a DVD-Video will make the DeviceNotifier applet inform the Media Center Data Engine that a new media content is available and ready to be played. This will of course mean a little patch to the DeviceNotifier, but I'm already friendly with it since i've worked a lot on it and on its last refactoring.


An external application: This huge set of tools will give me the possibility to develop, in the future, even an external and more consistent Media Center stand-alone application. This will be a classical Media Center application with the well known full-screen feature, but it will be fully developed using a Plasma Corona as MainWindow. This way, helped by Nuno Pinheiro's mockups, I will be able to develop a modern and appealing application that will make use of the Media Center applets stated before in this document. A friendly welcome screen will be shown as the application is launched maybe showing the most seen videos or the most played tracks integrating the Media Center Browsing Applet. Through the use of Qt Kinetic widgets will be nicelly animated so that, for example, the mediaplayer applet flows from the top to the center when a video is asked to be played and so on..


The design: The media center components should be realized following Nuno Pinheiro's mockups as guideline. The browsing applet might follow, for example, this mockup:

http://img213.imageshack.us/img213/3200/image3231picturefz5.png . As you can see contents need to be displayed taking as much space as possible. This means that most of the times the user should reserve a whole activity to the media center components. But, instead of a reserved activity, a reserved Plasma Dashboard can be developed in order to host the media center components. This way Plasma might have a Media Center Dashboard that takes care of managing the media components as they become available.





Tentative Timeline:


April 20 – May 22: Asking for graphics suggestions and mockups from KDE artists. Coding first plasmoids stubs and experimentation with the stand-alone corona-based application and first stub of the indexing Nepomuk backend. Patch to allow the Device Notifier globally inform about a media device available. Experiments with a new Dashboard development.


May 23 – July 5: Real implementation of the Media Player applet. Implementation of the Browsing Applet integrating the first stub of the Nepomuk backend. Improvement of the backend. Implementation of a simple Playlist Applet. Initial tests with the DBUS communications between applets. Applets follow the graphics suggestions by KDE artists.


July 6 - July 16 (official start): The stand-alone application takes advantage of the developed applets. Real development of the reserved Media Dashboard capable of filtering widgets showing only the media-type ones and rearranging them. Alternative scrolling ways for the Playlist (mobile devices are kept in mind while developing the applet).


July 17 – July 31: Bugfixing, configuration dialogs, optimizations. The Nepomuk backend gets finished. Each applet becomes full featured: complete respect of the mockups; indexing highly customizable through the browsing apple. Cross-platform testing and improvements specifically for the stand-alone application.


August 1 – 24 (pencils down): Documentation, testing, bugfixing.




Do you have other obligations from late May to early August (school, work, etc.)?

July is the exam period at my university but I think i'll be able to share time between study and development.


About Me (let us know who you are!):

I'm a Computer Science Engineering student at the “Politecnico di Bari” in the southern Italy. The Open Source world, and especially GNU/Linux, drew my attention about 7 years ago. I've always used KDE as desktop environment for my installed distros and currently I use it on my Gentoo. I started developing my own archive management application from scratch since I really wanted to learn Qt/C++ and kdelibs. Later I really got interested about KDE 4 development and I started my active contribution about a year ago sending patches to kdelibs and Plasma. My first plasmoid was the Previewer Plasmoid which I should really take care of before the KDE 4.3 release. Currently I spend most of my coding time working on Plasma. At the moment I'm working on the Raptor Menu for KDE and i've just finished with a graphical restyling of the Device Notifier applet. My experience with the Raptor Menu and custom view widgets in general will really be helpful in developing the Browsing Applet and the Playlist one making them as much graphically near to mockups as possible. I think my experience with the Plasma libraries and KDE development in general will help me being really fast in developing the Media Center Components. I often blog about my contribution to KDE at http://alediaferia.wordpress.com .