[GSoC] Preliminary UPnP support proposal

Bart Cerneels bart.cerneels at kde.org
Wed Mar 24 11:09:47 UTC 2010


On Sun, Mar 21, 2010 at 16:15, Nikhil Marathe <nsm.nikhil at gmail.com> wrote:
> 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
> _______________________________________________
> Amarok mailing list
> Amarok at kde.org
> https://mail.kde.org/mailman/listinfo/amarok
>

Hey Nikhil,

Sorry I didn't reply yet. I have been very busy indeed and also felt
the other comments were already in line with my feelings. In short:
excellent proposal.
What the others might not know is that Nikhil already contacted me
over a month ago, might even have been before I put the GSoC idea on
the 2010 ideas page on techbase. He's been investigating UPnP and
already actively discussing with the Solid team.
I jokingly said to leave some work for the actual GSoC :)

I fully agree with the timeline and think it's more then reasonable
with someone with your skill and enthusiasm.

Bart



More information about the Amarok mailing list