[GSoC] Preliminary UPnP support proposal
Nikolaj Hald Nielsen
nhnfreespirit at gmail.com
Wed Mar 24 10:04:39 UTC 2010
Hi Nikhil
I think this looks like a very well thought out proposal.
Unfortunately I cannot really comment on he technical merits as my
knowledge of UPnP is limited at best. We should get Bart to comment on
it, as he is our resident UPnP expert, but it seems he is quite busy
at the moment. I am sure he will provide feedback on your proposal as
soon as he has tie, as getting UPnP support into Amarok is something
he is very interested in.
- Nikolaj
On Sun, Mar 21, 2010 at 4:15 PM, 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
>
More information about the Amarok
mailing list