<span class="gI"><span class="gD" style="color: rgb(0, 104, 28);"><span style="color: rgb(0, 0, 0);">Bart Cerneels contacted me today and urged me to submit my proposal to Google so I did. this is what I sent exactly<br><br>
Title: Amarok DLNA UPnP Functionality<br><br>Abstract: <br><br>Provide the functionality of DLNA DMP, DMS, DMR and DMC to the amarok audio player.<br><br>Many modern home entertainment devices (most notably the Xbox 360 and PS3) have the ability to play content of of UPnP shares. There are several open source backends allowing a user to set up a mediaserver on their linux pc (coherence, ushare) and others allowing the browsing of and rendering of those shares(coherence, djmount). <br>
<br>UPnP is a standard maintained by the DLNA (digital living network alliance). The standard has several types of devices. Most notable for amarok and this project are:<br><br>DMS (DLNA Digital Media Server) - These devices store content and make it available to networked digital media players (DMP) and digital media renderers (DMR). <br>
<br>DMP (DLNA Digital Media Player) - These devices find and browse content on digital media servers (DMS) and provide playback and rendering capabilities.<br><br>DMC (DLNA Digital Media Controller) More easily understood as a protocol. DMC can browse a DMS and control a DMR.<br>
<br>DMR (DLNA Digital Media Renderer) Provide the ability to be controlled by a DMC. Renders content.<br><br>Content<br><br></span></span></span><p><b>Name:</b></p>
<p>Jeff Balinsky<br></p>
<p><b>Email Address:</b></p>
<p><a href="mailto:jebsky@gmail.com">jebsky@gmail.com</a><br></p>
<p><b>Freenode IRC Nick:</b></p>
<p>jebsky<br></p>
<p><b>Location (City, Country and/or Time Zone):</b></p>
<p>Edgewater, Maryland United States Eastern Time Zone<br></p>
<p><b>Proposal Name:</b></p>
<p>Amarok DLNA UPnP Functionality<br></p>
<p><b>Motivation for Proposal / Goal:</b></p>
<p>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
<style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
</style>
</p><p style="margin-bottom: 0in;"><b>Me and Open Source</b></p>
<p style="margin-bottom: 0in; font-weight: normal;"> About 2 years ago
I changed to using almost exclusively open source software and
operating systems. This was after being raised and taught using
proprietary everything. After some years of study in the computer
science field I have come to believe that open source is the future.
In utopia computers help people and they don't have their figurative
hands out asking for money to do so.</p>
<p style="margin-bottom: 0in; font-weight: normal;"><b>Why Amarok? Why
This Project?</b></p>
<p style="margin-bottom: 0in; font-weight: normal;"> I listen to music
all day, I always have. Amarok was the reason I switched to linux in
my daily life. Amarok was the best tool for playing and managing my
music that I had ever used (I have tried countless music
players/managers). This project allows me to contribute and make my
favorite music manager better and more useful in my daily life.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> I have a large
music collection and I like having access to it where ever I go. At
the completion of this project all my devices that play music in my
life would be able to sing in harmony.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> I am a Computer
Science major because computer programming was intuitive to me from
the moment I started. This project will allow me to combine one of my
greatest passions with one of my best skills.</p>
<p><b>Implementation Details:</b></p>
<p>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
<style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
</style>
</p><p style="margin-bottom: 0in;"><b>Goals </b>
</p>
<p style="margin-bottom: 0in;"><b> </b></p>
<p style="margin-bottom: 0in; font-weight: normal;">DLNA DMP</p>
<p style="margin-bottom: 0in; font-weight: normal;">The most useful
for amarok and its user base would to be able to play content off of
networked DMS. This is also probably the least complicated. This is
the primary goal of this project.</p>
<p style="margin-bottom: 0in; font-weight: normal;">DLNA DMR</p>
<p style="margin-bottom: 0in; font-weight: normal;"> Theoretically
after having DMS functionality adding DMR functionality shouldn't be
absurdly difficult. This being because (to my current understanding)
DMPs and DMRs are both handled by the same media_renderer.py class in
coherence.</p>
<p style="margin-bottom: 0in; font-weight: normal;">DLNA DMS</p>
<p style="margin-bottom: 0in; font-weight: normal;"> Also useful would
be the ability to share the content of the amarok library as a DMS
allowing other DMPs and DMRs to play the content. The secondary goal
of this project will be DMS functionality. An amarok goal for this
part would be to update the amarok library on a remote play.</p>
<p style="margin-bottom: 0in; font-weight: normal;">DLNA DMC</p>
<p style="margin-bottom: 0in; font-weight: normal;">Useful to some
users would be DMC functionality (those that have both a DMS and DMR
on the network). A tertiary goal of this project will be DMC
functionality.</p>
<p style="margin-bottom: 0in;"><b>Details/Implementation</b></p>
<p style="margin-bottom: 0in; font-weight: normal;"> Coherence
(<a href="http://coherence.beebits.net/">http://coherence.beebits.net/</a>) is to be used as a backend for the
implementation of this project. It has an emerging DBus API. It
is to be used by kdelibs for a KIO slave and is multiplatform. I will
need to work with the coherence developers in progressing their API
as it is not currently very through. The classes in coherence that I
will be most likely dealing with are the media_renderer.py,
media_server.py and control_point.py UPnP device classes.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> </p>
<p style="margin-bottom: 0in; font-weight: normal;"> For the DMP
functionality I will write a new Collection class. This will allow
browsing of DMS and will Allow files on a DMS to be inserted in the
playlist.
</p>
<p style="margin-bottom: 0in; font-weight: normal;">I plan implement
the DMS as a script. This allows it to be optional for the end user
and also allows it to be upgraded fairly easily.</p>
<p style="margin-bottom: 0in; font-weight: normal;"> </p>
<p style="margin-bottom: 0in; font-weight: normal;"> I will work with
the amarok developers to determine the best and most effective
methods of implementing DMR and DMC functionality. In theory once DMP
is implemented DMR capabilities could be added transparent in
difference to the user. That is the user does not need to understand
UPnP device classes to understand that they can browse and play of
DMS and also be controlled via DMC. To implement DMC the same
collection class could be used to browse but there will need to be
work done to have the playlist act to control DMR.</p>
<p><b>Tentative Timeline:</b></p>
<p>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
<style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
</style>
</p><p style="margin-bottom: 0in; font-weight: normal;">GoSoC Has two
evaluation deadlines midterm in early July (~6 weeks in) and final in
late August thus I will probably split this in two parts. It is
around 13 weeks long.</p>
<p style="margin-bottom: 0in; font-weight: normal;">Start May 23<sup>rd</sup></p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 weeks make
sure I am set up. Investigate Coherence, Contact Coherence
developers, investigate Collection classes in Amarokk and DLNA
compliance specifications</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week write DMS
Browser (for DMP) Collection class.</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week raise to
DLNA DMP full compliance specifications</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-2 weeks
Investigate Scripting in amarok possibly more into Coherence
(Qtscript whatever I need)</p>
<p style="margin-bottom: 0in; font-weight: normal;">- Midterm
evaluation?</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1-3 weeks write
DMS script</p>
<p style="margin-bottom: 0in; font-weight: normal;">~1 week raise to
DLNA DMS full compliance</p>
<p style="margin-bottom: 0in; font-weight: normal;">~remainder
investigate DMR/DMC</p>
<p><b>Do you have other obligations from late May to early August (school, work, etc.)?</b>:</p>
<p>None, This project would be the focus of my life this summer.<br></p>
<p><b>About Me (let us know who you are!):</b></p><p>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
<title></title>
<meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)">
<style type="text/css">
<!--
@page { margin: 0.79in }
P { margin-bottom: 0.08in }
-->
</style>
</p><p style="margin-bottom: 0in;"><b>Qualifications</b></p>
<p style="margin-bottom: 0in; font-weight: normal;"> In the fall of
'09 I will be a senior CS major at Hood College (<a href="http://cs.hood.edu">http://cs.hood.edu</a>).
I have been programming for about 5 years through high school and
college. I am currently using Qt and C++ and am comfortable with
both. The idea of using kdelibs doesn't particularly bother me. I
consider myself functionally knowledgeable in networking and data com
theory. I want to do more network type programming.</p><p style="margin-bottom: 0in; font-weight: normal;"><b>Fun</b></p><p style="margin-bottom: 0in; font-weight: normal;">Growing up in Annapolis Maryland I play and love the game of lacrosse
(<a href="http://en.wikipedia.org/wiki/Lacrosse">http://en.wikipedia.org/wiki/Lacrosse</a>). I do not own a car and I ride
my longboard skateboard to school every day. I am a very auditory
person and music is an obsession of my life.<br></p>
<p>I am still able to edit this on the gosoc site so if there are any glaring mistakes please let me know.<br></p><span class="gI"><span class="gD" style="color: rgb(0, 104, 28);"><span style="color: rgb(0, 0, 0);"></span></span></span>