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: [email protected] Freenode IRC Nick: nsm IM: Google Talk: [email protected] 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 _______________________________________________ Kde-hardware-devel mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-hardware-devel
