[GSoC] Preliminary UPnP support proposal

Nikhil Marathe nsm.nikhil at gmail.com
Sun Mar 21 15:15:46 UTC 2010


Hi,

I would really love to participate in GSoC and get KDE to have
seamless UPnP support and allow
Amarok to treat the network as a great collection. I have been working
on understanding the UPnP
stuff and using the Hupnp library and a bit of Coherence for the past
2-3 weeks, and been in contact
with Bart Cerneels, the prospective mentor. Based on all this, here is
my first draft of the proposal.

Please do comment on it so that I'm in good shape for submission on
socghop. Thanks.

- Nikhil
Proposal follows

Amarok and KDE UPnP integration
===============================

Name: Nikhil Marathe

email: nsm.nikhil at gmail.com

Freenode IRC Nick: nsm

IM:
Google Talk: nsm.nikhil at gmail.com

Location: Mumbai, India ( GMT+530 ) during the summer.
          Gandhinagar, India ( GMT+530 ) current.

Proposal Title: Rediscover your music, and discover your network's music.

Motivation for Proposal/Goal:
============================

The KDE project has always been known for its network transparency and
the kioslave concept.
Yet as the network becomes more and more a part of the computer, I
think it it important
to be able to have applications also make use of this transparency.
UPnP is a set of
standards which allow various devices on the network to share content,
including music
and photos. I myself particularly hate filling my storage with
redundant data ( except backups )
so the concept of having a central place to store music and access it
over the network is very
appealing. Imagine that a use just clicks on the Network panel in
Dolphin and he can see
all devices or users sharing content over UPnP and he can just listen
to some new music.
Or you friend just putting his pics in his UPnP device, and without
any hassles, digiKam
is ready to tag and mince and match them.

Amarok itself stands to benefit a lot. UPnP media devices allow a
simple collection concept.
I would like Amarok to have seamless integration of those collections
into its own collections
and support the same operations of filtering and sorting. This way I
can have my music in
assorted places and not worry about where it is, but just tell Amarok to Play.

So to sum it up, I hope to implement a kioslave which allows all
common file like operations
on UPnP content providers. This will be followed by Amarok getting a
Collection backend to
browse and play tracks on the remote servers.

Implementation Details:
======================

Please see the note about the slave implementation.
That aside I am reading about the UPnP protocols and working my way
around Hupnp.
I have a working kioslave which can list upnp devices on the network. Once I get
more familiar with the code I will elaborate on this. I am also waiting for
a response on kde-hardware-devel[0] which will help me plan this out further.

Note about kioslave implementation
----------------------------------

The current kioslave implementation uses Coherence [1], a Python project,
over D-BUS for the UPnP handling. Meanwhile a fledgling project HUpnp
[2] is a C++ library
using Qt and signals and slots. Now I have no personal problems
against either Coherence or
JOLIE, but rather with the dependencies that increase. Considering that a lot
of users in developing countries ( which are increasingly switching to FOSS )
don't have high bandwidth unlimited connections, increasing the
size/dependencies
of core KDE components should be avoided. Coherence for example requires
about 6Mb of additional components due to Twisted. JOLIE hasn't been explored
at all but perhaps it too will have dependencies like the Java Runtime
and so on.

Meanwhile having a library like HUpnp will keep the core pretty small.
It provides
the Control Point and device discovery support that is the basic requirement for
now. I have been in contact with Tuomo Pettinen and he is working hard
on the library
with version 0.5 expected to be out in a few days. He is aiming for
API/ABI stability,
and I'm sure that since most of the implementation will be wrapped behind solid,
hopefully it won't make a HUGE difference.


Tentative Timeline:
===================

May - Read the UPnP standards, get comfortable with the library of
choice, write lots
of little code snippets to do specific things, so as to get a feel for
the system.

May 15th - June 7th
  Work on getting Solid backend listening to UPnP devices and presenting
  them to applications/slaves. This includes writing documentation
  about how to get KDE Apps to access UPnP services.

June 8th - June 30th
  Implement the UPnP kio-slave completely, ie:
   * Detect browsable devices ( MediaServer )
   * Allow querying for devices which support it.
   * Copying of files and watching for events about any changes in files

July 1st - July 12th
  Implement Amarok Collection, which can browse servers and integrate
  their content so that tracks can directly be played by Amarok. Allow
  copying content to local collection, and so on. This is the time of
  Mid-term review. Ideally what will be pending now is the in-memory
query maker.

July 12th - July end
  Amarok Collection supports queries. If remote server doesn't support queries
  an MemoryQueryMaker takes over. Ensure the code works for edge cases
and so on.
  Start working on creating PlaylistProvider in a separate branch. Since this is
  an optional part which I can continue working on after GSoC.

August
  As 'pencils-down' approaches, get the code in order, clean it up, take notes,
  clear bug reports and get ready for the merge :)


About Me:
========

I am currently pursuing a B. Tech. in Information and Communication
Technology, being in the second ( sophomore ) year.

I have been a KDE user for 7 years now, and a contributor for about a
year. The reason I was attracted to
KDE was the great configurability it offered and the obviously good
looks. In recent years KDE has been
an attractor of brilliant new technologies, and has tried to tap into
emerging phenomena like the social
and semantic web. I identify with this spirit of continually pushing
technology to its boundaries and
that is my primary motivation to develop for KDE. As for my
development efforts, my main focus is kwin-tiling[1] which
will be integrated soon into KDE trunk. Apart from that I have minor
contributions to KGet and Plasma, covered below.

Amarok has been my defacto music player for years now. I hope to
contribute to it to create a player
which stands head and shoulders above any other player, by providing
users with a seamless music experience.

Besides being familiar with C and C++, I have extensive experience
with code reading and working with other
people's code. I also love working with bleeding-edge technology like
NoSQL databases, evented-I/O ( node.js )
and generally staying abreast with the open-source development world
and I am good at adopting them quickly.

KDE contributions:
Developer of kwin-tiling to add tiling window management to KWin
[1] http://websvn.kde.org/branches/work/kwin-tiling

KGet:
[Bug 184127] Kget closes automatically when a download is marked as
finished in the list
https://bugs.kde.org/show_bug.cgi?id=184127

Pastebin applet:
Added Imgur backend -
http://websvn.kde.org/trunk/KDE/kdeplasma-addons/dataengines/pastebin/backends/imgur.cpp?view=log
and other files.

Links:
Code - http://bitbucket.org/nikhilm
       http://22bits.exofire.net/browse/code
       http://github.com/nikhilm

CV - http://22bits.exofire.net/resume.html

Other FOSS activities include:
Discussing simple KDE application development at FOSS.in 2009, Bangalore India
[Slides] http://22bits.exofire.net/downloads/foss_in_KDE_mainwindow.pdf

Core member and principal speaker of Open Source Initiative at DA-IICT
where I give talks on Python, KDE, version control and open source in general.

Contributing to node.js - redis-node-client and nerve web framework.

Links
=====
[0] http://mail.kde.org/pipermail/kde-hardware-devel/2010-March/000749.html
[1] http://coherence.beebits.net
[2] http://herqq.org



More information about the Amarok mailing list