Amarok, EtherMedia, SoK and moving on
I applied for GSoC again this year, and sadly, I did not get selected to work on Amarok for KDE. Quite disheartening, yes, but then, Bart Cerneels sends me an awesome email, inviting me to work with him on the project via SoK.
No money this time (not very happy about that), but I do get a t-shirt (quite happy about that) and above and beyond all, the feature I plan to implement in Amarok for my SoK tenure is a really exciting idea.
I call this feature ‘EtherMedia’, and an excerpt from my proposal:
EtherMedia is a proposed addition for the Amarok audio player which enables users to share or stream their media with other users via networks like Instant Messaging. EtherMedia is built with strict semantics in mind and follows a highly deterministic protocol. The term ‘highly deterministic’ is covered further in this document. While the main focus of sharing is via IM networks during an ongoing conversation, EtherMedia works on the principles of ‘Ethers’. An ‘Ether’ is any medium with which this stream can be shared. The scope of this project is limited to implementing the IM channel to a complete functional implementation, but keeping open the option for more channels to be devleoped in the future.
Hmm, quite bookish, one would say. Allow me to illustrate. Consider the following to scenarios, both being, again, an excerpt from my proposal:
Firstly, consider this typical scenario, where Aliya wants to share her media:
- Aliya logs in, selects a playlist and goes to
Playlist > Share with EtherMedia.
- Once she has decided the playlist/files to share, she can select which all users can listen to her shared playlist. This ‘userlist’ will be the list of all the contacts she has on Kopete, GAIM or any of the clients accessible via Telepathy. If she wishes to share it with a few of her contacts privately, she can set a passkey and only the users with that password can listen to that shared playlist.
- She can also select if she just wants her current playing track to appear in her status, clicking on which her contacts can stream over the current playing track. Or the status could also be a custom title like, ‘Listen to my new Melodic Death Metal compilation’
- On the other side of the IM conversation, the users she has selected to share it with will see a new chat window open up (or within the same window, if one is already open) saying ‘Aliya wants to share ‘Melodic Death Metal compilation’ with you [Browse]‘.
- Users on the other end of the IM application can then access the media, browse the library, stream it etc.
Also, consider the case, when Aliya shares here entire Media Library with her contacts. Now, her contact Betty, can perform the following actions:
- In her Kopete window, she sees a new link come up, saying ‘Aliya wishes to share her Media Library with you. [Browse]‘
- She wishes to browse all the songs Aliya has by the artist ‘Sigur Ros’. So, using the available filter editor she says ‘All songs by Sigur Ros’. This is translated directly to ‘playlist:(artist:Sigur Ros)’ and is sent to amarok on Aliya’s computer.
- Since, Aliya has allowed Betty to view her entire Media Library, Betty can now browse and stream all the songs from Aliya’s Media Library by the artist ‘Sigur Ros’.
- Alternatively, Betty can also request for Aliya’s entire Media Library’s metadata (albeit partial). The reason this does not happen by default is because it is quite common to have 3000-4000 songs. An entire library’s metadata can easily run into MBs which is not very favorable for hosting from home-oriented internet conections.
The entire proposal from which I have taken this excerpts since I was too lazy to type out those descriptions again is available here