<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gkovacs</id>
	<title>Sugar Labs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sugarlabs.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gkovacs"/>
	<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/go/Special:Contributions/Gkovacs"/>
	<updated>2026-05-14T17:14:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27462</id>
		<title>Summer of Code/Interviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27462"/>
		<updated>2009-04-15T06:54:25Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Undo revision 27461 by Gkovacs (Talk) actually that time would indeed be fine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We would like to interview the candidates for Google Summer of Code under Sugar Labs. Please sign up for a time below. If you have been told the name of your provisional prospective mentor, and your mentor has put his/her preferred times below, please try to find a time which works for your mentor. (Note that mentor assignments are still in flux; if your provisional prospective mentor changes, we will try to accommodate your chosen time or reschedule at a convenient time for you.)&lt;br /&gt;
&lt;br /&gt;
Interviews will be conducted over IRC; even hours on #sugar-interview0 and half-hours on #sugar-interview1 . Please treat these like real rooms, ie, do not lurk unless you are a mentor. If you have some quick pre-interview questions, we will be in #sugar too.&lt;br /&gt;
&lt;br /&gt;
If you have specifically been told to sign up to interview, please sign up here. Even if your provisional prospective mentor has not indicated availability, put your available times, and your mentor will renegotiate with you later if necessary. We have invited the 9-10 proposals which are currently ranked highest, for the 4-6 slots we will probably get. However, we &#039;&#039;do&#039;&#039; want to interview you even if you have not specifically been invited; although your proposal is a long shot in that case, you may impress us, and in any case we&#039;d like to talk to you about participating in Sugar outside of GSoC.&lt;br /&gt;
&lt;br /&gt;
Like many other organizations participating in GSoC, we have received more good applications than we will have funding from Google for. Almost all of the applications we&#039;ve received are things that we&#039;d really love to have you working on, even if we don&#039;t have space for you in GSoC. If you are interested in finishing your project and would like a mentor assigned even though we can&#039;t give you a slot, you can also contact us on the sugar-devel or gsoc mailing list and we&#039;ll work something out.&lt;br /&gt;
&lt;br /&gt;
== Sunday Apr 1 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Guido van Rossum, Linus Torvalds, Bill Gates ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=1&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: [[User:example|example]] 18:11, 13 April 2009 (UTC) (Spanish interview preferred) (just an example - I used &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; to add a signature, and added any special requests after.)&lt;br /&gt;
&lt;br /&gt;
== Wed Apr 15 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Luis G. Lira, [[User:Aa|aa]], [[User:Tomeu|Tomeu]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=15&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: Vamsi Krishna Davuluri (iwikiwi)&lt;br /&gt;
&lt;br /&gt;
* 1430 UTC: Eduardo Silva (edsiper)&lt;br /&gt;
&lt;br /&gt;
* 1500 UTC: Lucian Branescu (lucian1900)&lt;br /&gt;
&lt;br /&gt;
* 1530 UTC: Deepank Gupta (deepank)&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 (Wed 15 in the western hemisphere) ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, [[User:Aa|aa]], [[User:BryanWB|BryanWB]], [[User:Nrp|Nirav Patel]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=0&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 0000 UTC]:&lt;br /&gt;
* 0030 UTC:&lt;br /&gt;
&lt;br /&gt;
* 0100 UTC:Felipe López Toledo (subzero)  ?Can we move this to 0100 UTC? I usually just wake up at this time. [[User:BryanWB|BryanWB]]- sure (subzero).&lt;br /&gt;
&lt;br /&gt;
* 0130 UTC: [http://wiki.sugarlabs.org/go/Summer_of_Code/2009/Multimedia-broadcasting Geza Kovacs (gkovacs)]&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Sayamindu Dasgupta, Assim Deodia, [[User:Tomeu|Tomeu]], ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=18&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1800 UTC]: Satya Komaragiri (mavu)&lt;br /&gt;
&lt;br /&gt;
* 1830 UTC: [http://wiki.sugarlabs.org/go/speech-synthesis chirag jain (chirag)]&lt;br /&gt;
&lt;br /&gt;
* 1900 UTC: [http://wiki.sugarlabs.org/go/Marbles Puneet_Girdhar]&lt;br /&gt;
&lt;br /&gt;
* 1930 UTC: Kartik Rustagi&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27461</id>
		<title>Summer of Code/Interviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27461"/>
		<updated>2009-04-15T06:51:52Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: misread time, sorry&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We would like to interview the candidates for Google Summer of Code under Sugar Labs. Please sign up for a time below. If you have been told the name of your provisional prospective mentor, and your mentor has put his/her preferred times below, please try to find a time which works for your mentor. (Note that mentor assignments are still in flux; if your provisional prospective mentor changes, we will try to accommodate your chosen time or reschedule at a convenient time for you.)&lt;br /&gt;
&lt;br /&gt;
Interviews will be conducted over IRC; even hours on #sugar-interview0 and half-hours on #sugar-interview1 . Please treat these like real rooms, ie, do not lurk unless you are a mentor. If you have some quick pre-interview questions, we will be in #sugar too.&lt;br /&gt;
&lt;br /&gt;
If you have specifically been told to sign up to interview, please sign up here. Even if your provisional prospective mentor has not indicated availability, put your available times, and your mentor will renegotiate with you later if necessary. We have invited the 9-10 proposals which are currently ranked highest, for the 4-6 slots we will probably get. However, we &#039;&#039;do&#039;&#039; want to interview you even if you have not specifically been invited; although your proposal is a long shot in that case, you may impress us, and in any case we&#039;d like to talk to you about participating in Sugar outside of GSoC.&lt;br /&gt;
&lt;br /&gt;
Like many other organizations participating in GSoC, we have received more good applications than we will have funding from Google for. Almost all of the applications we&#039;ve received are things that we&#039;d really love to have you working on, even if we don&#039;t have space for you in GSoC. If you are interested in finishing your project and would like a mentor assigned even though we can&#039;t give you a slot, you can also contact us on the sugar-devel or gsoc mailing list and we&#039;ll work something out.&lt;br /&gt;
&lt;br /&gt;
== Sunday Apr 1 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Guido van Rossum, Linus Torvalds, Bill Gates ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=1&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: [[User:example|example]] 18:11, 13 April 2009 (UTC) (Spanish interview preferred) (just an example - I used &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; to add a signature, and added any special requests after.)&lt;br /&gt;
&lt;br /&gt;
== Wed Apr 15 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Luis G. Lira, [[User:Aa|aa]], [[User:Tomeu|Tomeu]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=15&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: Vamsi Krishna Davuluri (iwikiwi)&lt;br /&gt;
&lt;br /&gt;
* 1430 UTC: Eduardo Silva (edsiper)&lt;br /&gt;
&lt;br /&gt;
* 1500 UTC: Lucian Branescu (lucian1900)&lt;br /&gt;
&lt;br /&gt;
* 1530 UTC: Deepank Gupta (deepank)&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 (Wed 15 in the western hemisphere) ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, [[User:Aa|aa]], [[User:BryanWB|BryanWB]], [[User:Nrp|Nirav Patel]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=0&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 0000 UTC]:&lt;br /&gt;
* 0030 UTC:&lt;br /&gt;
&lt;br /&gt;
* 0100 UTC:Felipe López Toledo (subzero)  ?Can we move this to 0100 UTC? I usually just wake up at this time. [[User:BryanWB|BryanWB]]- sure (subzero).&lt;br /&gt;
&lt;br /&gt;
* 0130 UTC:&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Sayamindu Dasgupta, Assim Deodia, [[User:Tomeu|Tomeu]], ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=18&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1800 UTC]: Satya Komaragiri (mavu)&lt;br /&gt;
&lt;br /&gt;
* 1830 UTC: [http://wiki.sugarlabs.org/go/speech-synthesis chirag jain (chirag)]&lt;br /&gt;
&lt;br /&gt;
* 1900 UTC: [http://wiki.sugarlabs.org/go/Marbles Puneet_Girdhar]&lt;br /&gt;
&lt;br /&gt;
* 1930 UTC: Kartik Rustagi&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27460</id>
		<title>Summer of Code/Interviews</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/Interviews&amp;diff=27460"/>
		<updated>2009-04-15T06:46:42Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We would like to interview the candidates for Google Summer of Code under Sugar Labs. Please sign up for a time below. If you have been told the name of your provisional prospective mentor, and your mentor has put his/her preferred times below, please try to find a time which works for your mentor. (Note that mentor assignments are still in flux; if your provisional prospective mentor changes, we will try to accommodate your chosen time or reschedule at a convenient time for you.)&lt;br /&gt;
&lt;br /&gt;
Interviews will be conducted over IRC; even hours on #sugar-interview0 and half-hours on #sugar-interview1 . Please treat these like real rooms, ie, do not lurk unless you are a mentor. If you have some quick pre-interview questions, we will be in #sugar too.&lt;br /&gt;
&lt;br /&gt;
If you have specifically been told to sign up to interview, please sign up here. Even if your provisional prospective mentor has not indicated availability, put your available times, and your mentor will renegotiate with you later if necessary. We have invited the 9-10 proposals which are currently ranked highest, for the 4-6 slots we will probably get. However, we &#039;&#039;do&#039;&#039; want to interview you even if you have not specifically been invited; although your proposal is a long shot in that case, you may impress us, and in any case we&#039;d like to talk to you about participating in Sugar outside of GSoC.&lt;br /&gt;
&lt;br /&gt;
Like many other organizations participating in GSoC, we have received more good applications than we will have funding from Google for. Almost all of the applications we&#039;ve received are things that we&#039;d really love to have you working on, even if we don&#039;t have space for you in GSoC. If you are interested in finishing your project and would like a mentor assigned even though we can&#039;t give you a slot, you can also contact us on the sugar-devel or gsoc mailing list and we&#039;ll work something out.&lt;br /&gt;
&lt;br /&gt;
== Sunday Apr 1 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Guido van Rossum, Linus Torvalds, Bill Gates ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=1&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: [[User:example|example]] 18:11, 13 April 2009 (UTC) (Spanish interview preferred) (just an example - I used &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt; to add a signature, and added any special requests after.)&lt;br /&gt;
&lt;br /&gt;
== Wed Apr 15 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Luis G. Lira, [[User:Aa|aa]], [[User:Tomeu|Tomeu]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=15&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=14&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1400 UTC]: Vamsi Krishna Davuluri (iwikiwi)&lt;br /&gt;
&lt;br /&gt;
* 1430 UTC: Eduardo Silva (edsiper)&lt;br /&gt;
&lt;br /&gt;
* 1500 UTC: Lucian Branescu (lucian1900)&lt;br /&gt;
&lt;br /&gt;
* 1530 UTC: Deepank Gupta (deepank)&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 (Wed 15 in the western hemisphere) ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, [[User:Aa|aa]], [[User:BryanWB|BryanWB]], [[User:Nrp|Nirav Patel]], [[User:Bobbyp|Bobby]] ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=0&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 0000 UTC]:&lt;br /&gt;
* 0030 UTC:&lt;br /&gt;
&lt;br /&gt;
* 0100 UTC:Felipe López Toledo (subzero)  ?Can we move this to 0100 UTC? I usually just wake up at this time. [[User:BryanWB|BryanWB]]- sure (subzero).&lt;br /&gt;
&lt;br /&gt;
* 0130 UTC: [http://wiki.sugarlabs.org/go/Summer_of_Code/2009/Multimedia-broadcasting Geza Kovacs (gkovacs)]&lt;br /&gt;
&lt;br /&gt;
== Thurs Apr 16 ==&lt;br /&gt;
&lt;br /&gt;
Mentors attending: Jameson Quinn, Sayamindu Dasgupta, Assim Deodia, [[User:Tomeu|Tomeu]], ...&lt;br /&gt;
&lt;br /&gt;
* [http://www.timeanddate.com/counters/customcounter.html?day=16&amp;amp;month=04&amp;amp;year=2009&amp;amp;hour=18&amp;amp;min=0&amp;amp;sec=0&amp;amp;p0=0 1800 UTC]: Satya Komaragiri (mavu)&lt;br /&gt;
&lt;br /&gt;
* 1830 UTC: [http://wiki.sugarlabs.org/go/speech-synthesis chirag jain (chirag)]&lt;br /&gt;
&lt;br /&gt;
* 1900 UTC: [http://wiki.sugarlabs.org/go/Marbles Puneet_Girdhar]&lt;br /&gt;
&lt;br /&gt;
* 1930 UTC: Kartik Rustagi&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27237</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27237"/>
		<updated>2009-04-12T01:41:34Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: moved back personal information to match format of the rest of the proposals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia broadcasting to students on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users (primarily teachers or students presenting material in clas) to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers (the rest of the classroom). This would be of use for various other purposes as well, such as for displaying lecture slides. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software; rather it aims to displace the usage of expensive projectors for displaying lecture slides and multimedia. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information, whether it be a video feed from a presentation or just lecture slides, to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience and cost; it eliminates the need for an expensive projector to display lecture slides, and if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; alternatively Farsight&#039;s RTP multicast may also be of use; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
Alternatively, bandwidth usage when broadcasting to a large classroom with unicast could also be limited by broadcasting a low-framerate stream based on the number of users. While this would lead to a clear degradation in quality in the case of full-motion video, this is a rather niche medium to be shown in class; rather, lecture slides, which are what projectors are usually used for, would appear perfectly with a low-framerate stream.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of. However the combined usage of multicast and unicast streams on a single access point introduces many performance issues, so this may not be realistic in the context of broadcasting full-motion video (though for the primary target usage, lecture slides, which requires considerably less bandwidth to broadcast, there shouldn&#039;t performance issues with either unicast or multicast).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. Capturing X11 desktop output would additionally allow for presentation of lecture slides via this system. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contingency Plan&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussions on the mailing list have made it clear that full-motion video broadcasting over a wireless network to a large classroom, either via unicast or multicast, is going to be a very difficult technical challenge. Potential solutions to this are listed under &amp;quot;Addressing Bandwidth Issues&amp;quot;. Should all of this nevertheless run into technical issues that prevent large-scale broadcasting of full-motion video due to bandwidth and airtime issues, this activity could still be a useful means to broadcast lecture slides, which require much lower framerates and bandwidth and are thus less likely to run into bandwidth issues, or perhaps for small-scale audio and video broadcasting (aka one-to-one video conferencing).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have created successful (2 million+ downloads) FOSS projects in the past, with similar intense development timelines of a few weeks (please see details on the two major FOSS projects I created, [http://wubi-installer.org/ Wubi] and [http://unetbootin.sourceforge.net/ UNetbootin], described above, as well as my [http://launchpad.net/~gezakovacs Launchpad] profile).&lt;br /&gt;
&lt;br /&gt;
With respect to experience this field of multimedia broadcasting I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast multimedia such as lecture slides, live lab demonstrations, live demonstrations on software usage, or other multimedia. The potential for this project to reduce teachers&#039; dependence on projectors, and even replace the need for expensive projectors, would also make it attractive financially for any budget-limited schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27236</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27236"/>
		<updated>2009-04-12T01:29:45Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: added contingency plan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia broadcasting to students on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users (primarily teachers or students presenting material in clas) to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers (the rest of the classroom). This would be of use for various other purposes as well, such as for displaying lecture slides. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software; rather it aims to displace the usage of expensive projectors for displaying lecture slides and multimedia. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information, whether it be a video feed from a presentation or just lecture slides, to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience and cost; it eliminates the need for an expensive projector to display lecture slides, and if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; alternatively Farsight&#039;s RTP multicast may also be of use; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
Alternatively, bandwidth usage when broadcasting to a large classroom with unicast could also be limited by broadcasting a low-framerate stream based on the number of users. While this would lead to a clear degradation in quality in the case of full-motion video, this is a rather niche medium to be shown in class; rather, lecture slides, which are what projectors are usually used for, would appear perfectly with a low-framerate stream.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of. However the combined usage of multicast and unicast streams on a single access point introduces many performance issues, so this may not be realistic in the context of broadcasting full-motion video (though for the primary target usage, lecture slides, which requires considerably less bandwidth to broadcast, there shouldn&#039;t performance issues with either unicast or multicast).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. Capturing X11 desktop output would additionally allow for presentation of lecture slides via this system. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contingency Plan&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Discussions on the mailing list have made it clear that full-motion video broadcasting over a wireless network to a large classroom, either via unicast or multicast, is going to be a very difficult technical challenge. Potential solutions to this are listed under &amp;quot;Addressing Bandwidth Issues&amp;quot;. Should all of this nevertheless run into technical issues that prevent large-scale broadcasting of full-motion video due to bandwidth and airtime issues, this activity could still be a useful means to broadcast lecture slides, which require much lower framerates and bandwidth and are thus less likely to run into bandwidth issues, or perhaps for small-scale audio and video broadcasting (aka one-to-one video conferencing).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have created successful (2 million+ downloads) FOSS projects in the past, with similar intense development timelines of a few weeks (please see details on the two major FOSS projects I created, [http://wubi-installer.org/ Wubi] and [http://unetbootin.sourceforge.net/ UNetbootin], described above, as well as my [http://launchpad.net/~gezakovacs Launchpad] profile).&lt;br /&gt;
&lt;br /&gt;
With respect to experience this field of multimedia broadcasting I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast multimedia such as lecture slides, live lab demonstrations, live demonstrations on software usage, or other multimedia. The potential for this project to reduce teachers&#039; dependence on projectors, and even replace the need for expensive projectors, would also make it attractive financially for any budget-limited schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27235</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27235"/>
		<updated>2009-04-12T01:11:32Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia broadcasting to students on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users (primarily teachers or students presenting material in clas) to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers (the rest of the classroom). This would be of use for various other purposes as well, such as for displaying lecture slides. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software; rather it aims to displace the usage of expensive projectors for displaying lecture slides and multimedia. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information, whether it be a video feed from a presentation or just lecture slides, to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience and cost; it eliminates the need for an expensive projector to display lecture slides, and if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; alternatively Farsight&#039;s RTP multicast may also be of use; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
Alternatively, bandwidth usage when broadcasting to a large classroom with unicast could also be limited by broadcasting a low-framerate stream based on the number of users. While this would lead to a clear degradation in quality in the case of full-motion video, this is a rather niche medium to be shown in class; rather, lecture slides, which are what projectors are usually used for, would appear perfectly with a low-framerate stream.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of. However the combined usage of multicast and unicast streams on a single access point introduces many performance issues, so this may not be realistic in the context of broadcasting full-motion video (though for the primary target usage, lecture slides, which requires considerably less bandwidth to broadcast, there shouldn&#039;t performance issues with either unicast or multicast).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. Capturing X11 desktop output would additionally allow for presentation of lecture slides via this system. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have created successful (2 million+ downloads) FOSS projects in the past, with similar intense development timelines of a few weeks (please see details on the two major FOSS projects I created, [http://wubi-installer.org/ Wubi] and [http://unetbootin.sourceforge.net/ UNetbootin], described above, as well as my [http://launchpad.net/~gezakovacs Launchpad] profile).&lt;br /&gt;
&lt;br /&gt;
With respect to experience this field of multimedia broadcasting I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast multimedia such as lecture slides, live lab demonstrations, live demonstrations on software usage, or other multimedia. The potential for this project to reduce teachers&#039; dependence on projectors, and even replace the need for expensive projectors, would also make it attractive financially for any budget-limited schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27234</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27234"/>
		<updated>2009-04-12T01:08:08Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: noting that this can be used for low-bandwidth lecture slides as well&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia broadcasting to students on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users (primarily teachers or students presenting material in clas) to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers (the rest of the classroom). This would be of use for various other purposes as well, such as for displaying lecture slides. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software; rather it aims to displace the usage of expensive projectors for displaying lecture slides and multimedia. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information, whether it be a video feed from a presentation or just lecture slides, to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience and cost; it eliminates the need for an expensive projector to display lecture slides, and if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; alternatively Farsight&#039;s RTP multicast may also be of use; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
Alternatively, bandwidth usage when broadcasting to a large classroom with unicast could also be limited by broadcasting a low-framerate stream based on the number of users. While this would lead to a clear degradation in quality in the case of full-motion video, this is a rather niche medium to be shown in class; rather, lecture slides, which are what projectors are usually used for, would appear perfectly with a low-framerate stream.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of. However the combined usage of multicast and unicast streams on a single access point introduces many performance issues, so this may not be realistic in the context of broadcasting full-motion video (though for the primary target usage, lecture slides, which requires considerably less bandwidth to broadcast, there shouldn&#039;t performance issues with either unicast or multicast).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. Capturing X11 desktop output would additionally allow for presentation of lecture slides via this system. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I have created successful (2 million+ downloads) FOSS projects in the past, with similar intense development timelines of a few weeks (please see details on the two major FOSS projects I created, [http://wubi-installer.org/ Wubi] and [http://unetbootin.sourceforge.net/ UNetbootin], described above, as well as my [http://launchpad.net/~gezakovacs Launchpad] profile).&lt;br /&gt;
&lt;br /&gt;
With respect to experience this field of multimedia broadcasting I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27120</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27120"/>
		<updated>2009-04-10T16:10:33Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: farsight may work as well&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; alternatively Farsight&#039;s RTP multicast may also be of use; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27119</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=27119"/>
		<updated>2009-04-10T15:54:56Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: may need to use Helix or VLC as streaming server instead due to Icecast&amp;#039;s lack of multicast support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
Since Icecast lacks support for multicast broadcasting, another FOSS streaming server such as Helix Server or VLC may need to be used; I will investigate this prior to the start of GSoC.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
The usage of UDP multicast broadcasting will also help conserve bandwidth and prevent lag in the video, thus as mentioned in &amp;quot;Architecture&amp;quot; if a streaming server such as Helix Server is used instead then this can be taken advantage of.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Gkovacs&amp;diff=25810</id>
		<title>User:Gkovacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Gkovacs&amp;diff=25810"/>
		<updated>2009-04-06T22:28:19Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Projects===&lt;br /&gt;
&lt;br /&gt;
[[Summer_of_Code/2009/Multimedia-broadcasting]]&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25809</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25809"/>
		<updated>2009-04-06T22:27:34Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: moved personal info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Personal information has been moved to [[User:Gkovacs]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=User:Gkovacs&amp;diff=25808</id>
		<title>User:Gkovacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=User:Gkovacs&amp;diff=25808"/>
		<updated>2009-04-06T22:27:21Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: created page including&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Projects===&lt;br /&gt;
&lt;br /&gt;
[[Summer_of_Code/2009/Multimedia-broadcasting]]&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Multimedia-broadcasting&amp;diff=25805</id>
		<title>Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Multimedia-broadcasting&amp;diff=25805"/>
		<updated>2009-04-06T22:25:01Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Multimedia-broadcasting moved to Summer of Code/2009/Multimedia-broadcasting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Summer of Code/2009/Multimedia-broadcasting]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25804</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25804"/>
		<updated>2009-04-06T22:25:01Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Multimedia-broadcasting moved to Summer of Code/2009/Multimedia-broadcasting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25443</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25443"/>
		<updated>2009-04-04T16:30:45Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Broadcasting Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Upon launching the activity, the user will be presented with a &amp;quot;Broadcast&amp;quot; button. Upon clicking this, the user will be presented with a list of possible video sources the user can select - webcam or screen. The user will also be given the option to broadcast an audio source - in this case a microphone. The user will also be shown a map of laptops on the local neighborhood to which the stream can be broadcast and the associated laptop&#039;s user&#039;s name. and the user may either individually check laptops to broadcast the stream to, or press a &amp;quot;broadcast to all&amp;quot; button which would broadcast to all the local laptops, or if bandwidth issues would be encountered due to the presence of too many laptops, the situation would be handled as mentioned in the next section. After selecting multimedia sources and broadcasting targets, the user would press a &amp;quot;Start Broadcasting&amp;quot; button, and the laptop would display the stream that is currently being broadcast, and a &amp;quot;stop broadcasting&amp;quot; button to end the broadcast.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Viewing Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25442</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=25442"/>
		<updated>2009-04-04T16:12:42Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Addressing Bandwidth Issues&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For extremely large classrooms, bandwidth issues may arise due to limitations of the wireless network. In this case, to ensure that all students are able to view the stream without saturating the network, when the teacher selects &amp;quot;Broadcast to All&amp;quot;, the software would first determine the number of new streams that could be streamed based on existing network activity, bandwidth required per stream, and the network&#039;s bandwidth capacity. Then, it would retrieve the locations of the laptops in the classroom, and select a number of laptops equivalent to the number of supported streams such that the selected laptops would be in proximity to the unselected laptops, thereby allowing those students who are not receiving the streams to their own laptop to view the stream on a nearby laptop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24998</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24998"/>
		<updated>2009-04-03T11:12:06Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this time I not certain of whether I will be spending my summer in Cambridge, MA, or Garden Grove, CA. I believe, however, that I will likely be at the former location. I believe there are already some deployments nearby that I can visit, and have no particular preference for the other questions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24997</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24997"/>
		<updated>2009-04-03T11:06:15Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. This would benefit Sugar Labs by providing more interested pilot schools. The potential for this project to reduce teachers&#039; dependence on projectors, and arguably even replace them in certain contexts, would also make it an attractive feature for any schools considering participation in the pilot program.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first time I entered the local public library with the intention of checking out books for personal reading enjoyment, I went through the fiction section and checked out many well-known fantasy novels, then spent the next 3 weeks reading through them, probably doing more reading than I had ever done before. Though I didn&#039;t learn much factual information, the experience instilled in me a passion for reading.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24996</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24996"/>
		<updated>2009-04-03T10:56:51Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server. The Icecast server does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop; it would merely need to advertise its service via mDNS. Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult. By utilizing an external Icecast server to handle the video broadcasting itself, even a resource-constrained machine such as an XO-1 should be able to broadcast video, albeit encoded with less cpu-intensive codecs and settings to compensate for the lack of cpu power on such machines.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. This would benefit Sugar Labs by providing more interested pilot schools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24988</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24988"/>
		<updated>2009-04-03T10:20:56Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. This would benefit Sugar Labs by providing more interested pilot schools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:Gkovacs-reboot-task.png|thumb|right|Replaced &amp;quot;Reboot&amp;quot; with &amp;quot;gkovacs@mit.edu&amp;quot;.]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=File:Gkovacs-reboot-task.png&amp;diff=24987</id>
		<title>File:Gkovacs-reboot-task.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=File:Gkovacs-reboot-task.png&amp;diff=24987"/>
		<updated>2009-04-03T10:18:50Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24986</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24986"/>
		<updated>2009-04-03T09:50:13Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received.&lt;br /&gt;
&lt;br /&gt;
To summarize, this is essentially more of an attempt to replicate what projectors, presentations, and laser pointers are used for today (broadcasting info to the students and soliciting their feedback), rather than an activity-specific rich-immersion one-on-one student&lt;br /&gt;
collaboration attempt. The advantage is merely convenience; if the student is receiving the stream from the teacher, he can view it from&lt;br /&gt;
the convenience of his laptop, or he can for example pause, rewind, or record the stream if it&#039;s being cached, which he would be unable to do&lt;br /&gt;
if the teacher is merely displaying information on a projector.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed. If the stream is being cached to the disk, the student will also have an option to pause and rewind the video stream.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video stream; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Answer from me:&lt;br /&gt;
&lt;br /&gt;
The completion of this project would give teachers more dedicated to traditional, presentation-based curriculum a new means to broadcast their information. This would benefit Sugar Labs by providing more interested pilot schools.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What will you do if you get stuck on your project and your mentor isn&#039;t around?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would utilize the mailing lists to get help from others. Given that the bulk of this project consists of several mostly-independent backend components, I could also fix issues with the other backends, or work on writing documentation and cleaning code up while awaiting help.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For documenting general progress and milestones achieved, I will be using a page on the Sugar Wiki which can be watched by any interested members. For any problems or questions I encounter, I will be sending email to the appropriate mailing lists, so those subscribed to them would be informed about it.&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
&#039;&#039;&#039;What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Describe a great learning experience you had as a child.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24984</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24984"/>
		<updated>2009-04-03T09:32:45Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
The interface will also include options to save streams to the journal, from which they could later be viewed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. For the sake of cpu usage efficiency on less powerful machines like XOs, annotations will not be encoded as part of the video strema; they will instead be transmitted seperately from the video file, much like external subtitles, in a format using a simple coordinate system (time, x, y, color) and would be overlayed on top of the video via following decoding.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24983</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24983"/>
		<updated>2009-04-03T09:24:05Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used. As XOs do not apparently have enough cpu power to encode Theora video live at acceptable resolution and framerates, older, less cpu-intensive codecs, such as MPEG-1, MJPEG, or H.261 may be used as video codecs instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24930</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24930"/>
		<updated>2009-04-02T22:39:11Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project (unfortunately currently proprietary) focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24929</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24929"/>
		<updated>2009-04-02T22:37:58Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Undo revision 24927 by Gkovacs (Talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24927</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24927"/>
		<updated>2009-04-02T22:37:26Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24926</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24926"/>
		<updated>2009-04-02T22:36:25Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24925</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24925"/>
		<updated>2009-04-02T22:35:29Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Audio and Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For the project, Webcams and X11 desktop output would be supported as video sources, and the microphone for would be an audio source. These will of course not be hard-coded into the application, but will be represented as generic &amp;quot;media source&amp;quot; plugins. For example, since this architecture could have the potential to replace the standard projector-based lecture presentation mechanism, perhaps other media formats, namely PDF lecture slides, might be supported as a future enhancement (beyond the scope of this GSoC) as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The GStreamer libraries will be used for communicating with the Icecast server and uploading multimedia. Ogg will probably be used as the container, Theora will be used as the video codec, and Vorbis will be used as the audio codec, since this is a relatively well-supported combination (supported for in-browser playback on upcoming browsers) and poses no licensing issues, though thanks to the flexibility of GStreamer any other supported codecs and container could alternatively be used.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to the start of the coding period&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Review the GStreamer and Sugar APIs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write a GStreamer-based webcam video capture backend and X11 desktop video capture backends.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the microphone audio capture backend, and the Icecast server uploading code.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Write the server-side authentication code and security mechanisms.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Milestone 1 Reached&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This week is set aside for finishing up work from weeks 1-3 if needed, soliciting and addressing any feedback regarding the backend, documenting the backend code on the wiki, and performing testing and bug-fixing of the backend with a rudimentary, very simple client-side frontend.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Create the client-side frontend, as described in &amp;quot;Interface&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 6&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish work on the client-side frontend, and integrate options to broadcast multimedia into the Neighborhood view.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Week 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Finish any work on the client-side frontend that has yet to be finished, perform a second cycle of feedback gathering, and testing, then write client-side documentation on the wiki.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
In addition, I have also worked with video APIs (primarily FFmpeg&#039;s libavcodec/libavformat, and OpenCV, though I have used GStreamer on another project) as part of my current undergaduate research project focused on emotion recognition based on facial and speech features, so I am familiar with how to perform real-time video and audio capture and addressing the usual issues that show up in terms of laggy capture performance or locking threads; in this case this should be even simpler as no data processing must be done.&lt;br /&gt;
&lt;br /&gt;
Regarding development pace, I will have no other commitments this summer so I will be able to spend my full time on development.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24923</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24923"/>
		<updated>2009-04-02T21:54:49Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rationale&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, the client will automatically send a request, authentication and identification details, to the classroom&#039;s Icecast server (which does not necessarily have to be a dedicated server; the software could, for example, be running on the teacher&#039;s laptop). Once confirmed, the stream is then uploaded and streamed to the local Icecast server via GStreamer, creating a unique URL for the stream. When the user invites others, or perhaps the entire class, to view the stream, then it would send the URL of the stream to the target user, and the peer&#039;s identification details. This would be done through the central server to increase security by making spoofing more difficult.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Webcam&lt;br /&gt;
X11 desktop output&lt;br /&gt;
Icecast will be used for streaming video sources to the laptop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Potential Enhancements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These enhancements are probably beyond the scope of a single GSoC project. However, since this architecture has the potential to replace the standard projector-based lecture presentation mechanism, perhaps other, non-video formats, namely PDF lecture slides, might be supported as a future enhancement as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Week 1:&lt;br /&gt;
Week 2:&lt;br /&gt;
Week 3:&lt;br /&gt;
Week 4:&lt;br /&gt;
Week 5:&lt;br /&gt;
Week 6:&lt;br /&gt;
Week 7:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24921</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24921"/>
		<updated>2009-04-02T21:48:55Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
Rationale: This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Architecture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This will utilize an architecture involving multiple peers and a single local Icecast server, all communicating over the local wireless network/mesh. When a user intends to broadcast a new video, . The Icecast server can optionally also record &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accepting New Streams&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source (though this GSoC project does not aim to address online sources, since most in-class activity originates locally anyhow). It is also crucial to make the display of new streams from teachers or peers as easy as possible. Thus, an identification scheme (PGP keys? OpenID?) should be available to uniquely identify users on the network and their role as either peers or teachers. For notification, there can either be a background service which will monitor the port designated for announcing new streams and display a notification, or this monitoring functionality could be built into the activity itself, though this would require that students have the activity open when the stream broadcast is announced.&lt;br /&gt;
&lt;br /&gt;
For locally-originating sources (within a classroom), a confirmation dialog will display the name of the broadcaster, and if confirmed, will launch the multimedia broadcasting/receiving activity if it has not already been launched, and will display the stream. For higher-priority sources, such as teachers in that particular classroom, the stream could be launched without confirmation to ensure that students do not accidentally miss the confirmation notice.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since students may be interested in viewing multiple streams at once (for example, one stream showing the overall demonstration of the experiment and one showing a magnified view of a particular bacteria culture), then the interface should be able to automatically resize and tile individual streams to display them all at once while best utilizing screen space.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Sources&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Webcam&lt;br /&gt;
X11 desktop output&lt;br /&gt;
Icecast will be used for streaming video sources to the laptop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Video Interaction&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video broadcasting-side, for highlighting important information. There might also be a &amp;quot;pointer&amp;quot; for pointing out comments on the receiver&#039;s side, though this would probably cause more trouble and distraction in the classroom rather than promote useful feedback to the presenter, thus this probably won&#039;t be implemented.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Potential Enhancements&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These enhancements are probably beyond the scope of a single GSoC project. However, since this architecture has the potential to replace the standard projector-based lecture presentation mechanism, perhaps other, non-video formats, namely PDF lecture slides, might be supported as a future enhancement as well.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Programming Languages and Libraries&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Week 1:&lt;br /&gt;
Week 2:&lt;br /&gt;
Week 3:&lt;br /&gt;
Week 4:&lt;br /&gt;
Week 5:&lt;br /&gt;
Week 6:&lt;br /&gt;
Week 7:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24901</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24901"/>
		<updated>2009-04-02T18:03:39Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rationale: This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
Security Architecture&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source. &lt;br /&gt;
&lt;br /&gt;
Video Sources&lt;br /&gt;
&lt;br /&gt;
Webcam&lt;br /&gt;
X11 desktop output&lt;br /&gt;
Icecast will be used for streaming video sources to the laptop.&lt;br /&gt;
&lt;br /&gt;
Video Interaction&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video, for highlighting important information&lt;br /&gt;
&lt;br /&gt;
Potential Enhancements&lt;br /&gt;
&lt;br /&gt;
These enhancements are probably beyond the scope of a single GSoC project. However, since this architecture has the potential to replace the standard projector-based lecture presentation mechanism, perhaps other, non-video formats, namely PDF lecture slides, might be supported as a future enhancement as well.&lt;br /&gt;
&lt;br /&gt;
Programming Languages: Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Week 1:&lt;br /&gt;
Week 2:&lt;br /&gt;
Week 3:&lt;br /&gt;
Week 4:&lt;br /&gt;
Week 5:&lt;br /&gt;
Week 6:&lt;br /&gt;
Week 7:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I created a prototype application in Qt for an unrelated project with a feature that performs video broadcasting over Icecast to local devices (albeit via gstreamer-tools, in a more crude manner than I aim to do so) a few months ago, which can be found at http://launchpad.net/tde&lt;br /&gt;
&lt;br /&gt;
In that project, the focus was on interaction of mobile Internet Tablet devices with other household electronics, such as TVs and the like, as well as the exploration of a time-centric desktop computing paradigm. However, the icecast-based broadcasting architecture there is similar (albeit far more primitive, lacking security features, and restricted to only local devices as targets) to what I aim to implement here. Having learned more about the constraints and architecture of mass-video broadcasting over Icecast, I believe I now have the necessary knowledge to deliver a production-ready implementation of the described multimedia-broadcasting activity.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Local-multimedia-chat&amp;diff=24899</id>
		<title>Local-multimedia-chat</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Local-multimedia-chat&amp;diff=24899"/>
		<updated>2009-04-02T17:52:37Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Local-multimedia-chat moved to Multimedia-broadcasting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Multimedia-broadcasting]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24898</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24898"/>
		<updated>2009-04-02T17:52:37Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Local-multimedia-chat moved to Multimedia-broadcasting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rationale: This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
Security Architecture&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source. &lt;br /&gt;
&lt;br /&gt;
Video Sources&lt;br /&gt;
&lt;br /&gt;
Webcam&lt;br /&gt;
X11 desktop output&lt;br /&gt;
Icecast will be used for streaming video sources to the laptop.&lt;br /&gt;
&lt;br /&gt;
Video Interaction&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video, for highlighting important information&lt;br /&gt;
&lt;br /&gt;
Potential Enhancements&lt;br /&gt;
&lt;br /&gt;
These enhancements are probably beyond the scope of a single GSoC project. However, since this architecture has the potential to replace the standard projector-based lecture presentation mechanism, perhaps other, non-video formats, namely PDF lecture slides, might be supported as a future enhancement as well.&lt;br /&gt;
&lt;br /&gt;
Programming Languages: Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Week 1:&lt;br /&gt;
Week 2:&lt;br /&gt;
Week 3:&lt;br /&gt;
Week 4:&lt;br /&gt;
Week 5:&lt;br /&gt;
Week 6:&lt;br /&gt;
Week 7:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24897</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24897"/>
		<updated>2009-04-02T17:52:04Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: changing description to focus more on broadcasting aspect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: This project aims to create an Activity to allow users to easily broadcast and stream audio and video from their webcam and microphone or their computer&#039;s display output to a classroom&#039;s central server, and share the live feed with their peers. This will be integrated into the Neighborhood View (as a &amp;quot;broadcast audio and video to&amp;quot; option or similar) to allow for most seamless sharing of broadcasts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rationale: This project does not aim to recreate Skype or similar central-server small-scale conferencing software. This project&#039;s local-peer-discovery and mass-broadcasting architecture would be of use in a classroom setting for the following reasons:&lt;br /&gt;
&lt;br /&gt;
As we have seen in classroom settings such as MIT&#039;s TEAL project (for teaching introductory Physics), in the context of displaying live information from a  to a large group of students for an experiment, lecture, or the like, a video feed must be established and broadcast, ideally via several video displays. In TEAL, many projectors placed throughout the classroom are used for this purpose; however for an elementary school this would be prohibitively expensive. Assuming said elementary school is running a pilot program of Sugar-equipped laptops, they can instead have each student&#039;s laptop &amp;quot;listen&amp;quot; to incoming audio and video broadcasts, and display it when received. This also has the advantage of &lt;br /&gt;
&lt;br /&gt;
Security Architecture&lt;br /&gt;
&lt;br /&gt;
There is an obvious security risk of unsolicited streams appearing on students&#039; laptops, especially if the broadcasting occurs from an online source. &lt;br /&gt;
&lt;br /&gt;
Video Sources&lt;br /&gt;
&lt;br /&gt;
Webcam&lt;br /&gt;
X11 desktop output&lt;br /&gt;
Icecast will be used for streaming video sources to the laptop.&lt;br /&gt;
&lt;br /&gt;
Video Interaction&lt;br /&gt;
&lt;br /&gt;
There should be some equivalent of a &amp;quot;pointer&amp;quot; on the video, for highlighting important information&lt;br /&gt;
&lt;br /&gt;
Potential Enhancements&lt;br /&gt;
&lt;br /&gt;
These enhancements are probably beyond the scope of a single GSoC project. However, since this architecture has the potential to replace the standard projector-based lecture presentation mechanism, perhaps other, non-video formats, namely PDF lecture slides, might be supported as a future enhancement as well.&lt;br /&gt;
&lt;br /&gt;
Programming Languages: Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Week 1:&lt;br /&gt;
Week 2:&lt;br /&gt;
Week 3:&lt;br /&gt;
Week 4:&lt;br /&gt;
Week 5:&lt;br /&gt;
Week 6:&lt;br /&gt;
Week 7:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24828</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24828"/>
		<updated>2009-04-02T06:19:04Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;What is the name of your project?&lt;br /&gt;
&lt;br /&gt;
A: A Framework for multimedia-rich conferencing with autodiscovered peers on the local network&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q: &#039;&#039;&#039;Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: This project has two components:&lt;br /&gt;
&lt;br /&gt;
1. Develop an audio and video conferencing layer that can be integrated into applications such as sugar-chat-activity, and integrate such functionality into sugar-chat-activity. The layer would initially support the audio and video extensions to Jabber (Jingle), as well as the audio-video chat protocol utilized for local autodiscovered chatting. This would include, for example, widgets for video and audio chat, and the associated underlying backend code. This would be developed on top of Telepathy and Farsight2&#039;s libraries.&lt;br /&gt;
&lt;br /&gt;
Rationale: &lt;br /&gt;
&lt;br /&gt;
2. Develop a user-friendly means to autodiscover and perform multimedia chat with nearby peers, without requiring the usage of a central server. This would be part of the Neighborhoood View.&lt;br /&gt;
&lt;br /&gt;
Rationale: &lt;br /&gt;
&lt;br /&gt;
Programming Languages: Since sugar-chat-activity uses Python, I will likely be using it for this project as well. The Telepathy and Farsight2 libraries will be used for implementing the multimedia chat feature.&lt;br /&gt;
&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24827</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24827"/>
		<updated>2009-04-02T05:49:44Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: add to applications category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q.1: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.2: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.3: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.4: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.5: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.6: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.7: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
[[Category:2009 GSoC applications]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24826</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24826"/>
		<updated>2009-04-02T05:42:18Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q.1: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.2: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.3: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.4: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.5: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.6: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.7: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) are Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:2009 GSoC applications]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24825</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24825"/>
		<updated>2009-04-02T05:41:35Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
Q.1: &#039;&#039;&#039;What is your name?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: Geza Kovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.2: &#039;&#039;&#039;What is your email address?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs -at- mit -dot- edu&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.3: &#039;&#039;&#039;What is your Sugar Labs wiki username?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.4: &#039;&#039;&#039;What is your IRC nickname?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: gkovacs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.5: &#039;&#039;&#039;What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: English&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.6: &#039;&#039;&#039;Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: USA, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Q.7: &#039;&#039;&#039;Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A: My two most successful open-source projects to date (with over 2 million downloads apiece) were Wubi and UNetbootin, both of which I launched during my high school years. I have also worked on some other minor projects for which I have open-sourced code, most of which can be found around my launchpad page if they are of particular interest; however the major projects I am currently working on as part of undergraduate research (mostly related to audio and video analysis in the context of emotion recognition based on facial and speech features) are unfortunately currently proprietary (but we expect to open-source it in May).&lt;br /&gt;
&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives.&lt;br /&gt;
&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:2009 GSoC applications]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24823</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24823"/>
		<updated>2009-04-02T05:26:41Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: Local-multimedia-chat moved to Summer of Code/2009/Local-multimedia-chat: moving to summer of code 2009 subdir&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
# What is your name?&lt;br /&gt;
Geza Kovacs&lt;br /&gt;
# What is your email address?&lt;br /&gt;
gkovacs -at- mit -dot- edu&lt;br /&gt;
# What is your Sugar Labs wiki username?&lt;br /&gt;
gkovacs&lt;br /&gt;
# What is your IRC nickname?&lt;br /&gt;
gkovacs&lt;br /&gt;
# What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&lt;br /&gt;
English&lt;br /&gt;
# Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&lt;br /&gt;
US, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
# Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:2009 GSoC applications]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24822</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24822"/>
		<updated>2009-04-02T05:23:06Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: personal information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
# What is your name?&lt;br /&gt;
Geza Kovacs&lt;br /&gt;
# What is your email address?&lt;br /&gt;
gkovacs -at- mit -dot- edu&lt;br /&gt;
# What is your Sugar Labs wiki username?&lt;br /&gt;
gkovacs&lt;br /&gt;
# What is your IRC nickname?&lt;br /&gt;
gkovacs&lt;br /&gt;
# What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&lt;br /&gt;
English&lt;br /&gt;
# Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&lt;br /&gt;
US, either Pacific or Eastern time zones. I tend to work anytime between 8AM to midnight.&lt;br /&gt;
# Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&lt;br /&gt;
http://wubi-installer.org/ Designed, initially led development of, and created the prototypes and early versions of the Windows-based Ubuntu Installer, now part of Ubuntu 8.04, which allows Windows users to safely install Ubuntu Linux without repartitioning their hard drives&lt;br /&gt;
http://unetbootin.sourceforge.net/ Creator, Lead Developer, and Maintainer of UNetbootin, a cross-platform utility to perform network installations or create bootable USB flash drives for a wide variety of Linux distributions.&lt;br /&gt;
Further details about of my FOSS development activities (code repository, bug reports, specs) can be found on http://launchpad.net/~gezakovacs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:2009 GSoC applications]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24820</id>
		<title>Summer of Code/2009/Multimedia-broadcasting</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Summer_of_Code/2009/Multimedia-broadcasting&amp;diff=24820"/>
		<updated>2009-04-02T05:08:00Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: copied out application template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please apply also in [http://socghop.appspot.com melange, google&#039;s web app]; if you do not apply there &#039;&#039;&#039;before&#039;&#039;&#039; April 3, we will not be able to accept your application.&lt;br /&gt;
&lt;br /&gt;
Please keep an eye on your talk page (the &amp;quot;discussion&amp;quot; link above). If you hit &amp;quot;watch&amp;quot; above, you can set up your &amp;quot;prefs&amp;quot; to email you the first time it changes since you last saw it.&lt;br /&gt;
&lt;br /&gt;
{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
====About you====&lt;br /&gt;
&lt;br /&gt;
# What is your name?&lt;br /&gt;
# What is your email address?&lt;br /&gt;
# What is your Sugar Labs wiki username?&lt;br /&gt;
# What is your IRC nickname?&lt;br /&gt;
# What is your primary language? (We have mentors who speak multiple languages and can match you with one of them if you&#039;d prefer.)&lt;br /&gt;
# Where are you located, and what hours do you tend to work? (We also try to match mentors by general time zone if possible.)&lt;br /&gt;
# Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?&lt;br /&gt;
&lt;br /&gt;
====About your project====&lt;br /&gt;
&lt;br /&gt;
# What is the name of your project?&lt;br /&gt;
# Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?&lt;br /&gt;
# What is the timeline for development of your project? The Summer of Code work period is 7 weeks long, May 23 - August 10; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it&#039;s good to have a plan at the beginning so you have an idea of where you&#039;re headed.) Note that you should probably plan to have something &amp;quot;working and 90% done&amp;quot; by the midterm evaluation (July 6-13); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.&lt;br /&gt;
# Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.&lt;br /&gt;
&lt;br /&gt;
====You and the community====&lt;br /&gt;
&lt;br /&gt;
# If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.&lt;br /&gt;
# Sugar Labs will be working to set up a small (5-30 unit) Sugar pilot near each student project that is accepted to GSoC so that you can immediately see how your work affects children in a deployment. We will make arrangements to either supply or find all the equipment needed. Do you have any ideas on where you would like your deployment to be, who you would like to be involved, and how we can help you and the community in your area begin it?&lt;br /&gt;
# What will you do if you get stuck on your project and your mentor isn&#039;t around?&lt;br /&gt;
# How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project? &lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
[[Image:New-developer-challenge.png|thumb|right|An example of the kind of screenshot of your first modification to your development environment which you should include in your application. Note that the drop-down menu text has Mel&#039;s email address in place of the word &amp;quot;Restart&amp;quot; - your screenshot should contain your email instead.]]&lt;br /&gt;
# We want to make sure that you can set up a [[DevelopmentTeam#Development_systems|development environment]] before the summer starts. Please send us a link to a screenshot of your Sugar development environment with the following modification: when you hover over the XO-person icon in the middle of Home view, the drop-down text should have your email in place of &amp;quot;Restart.&amp;quot; See the image on the right for an example. It&#039;s normal to need assistance with this, so please visit our IRC channel, #sugar on irc.freenode.net, and ask for help.&lt;br /&gt;
# What is your t-shirt size? (Yes, we know Google asks for this already; humor us.)&lt;br /&gt;
# Describe a great learning experience you had as a child.&lt;br /&gt;
# Is there anything else we should have asked you or anything else that we should know that might make us like you or your project more?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Delete this paragraph and the following one when preparing your application. --&amp;gt;Note: you will post this application on the wiki in the category [[:Category:2009 GSoC applications]]. We encourage you to browse this category and comment on the talk page of other applications. Also, others&#039; comments and your responses on the talk page of your own application are viewed favorably, and, while we don&#039;t like repetitive spam, we welcome honest questions and discussion of your project idea on the mailing list(s) (primarily [http://lists.sugarlabs.org/listinfo/sugar-devel sugar-devel] for technical issues and [http://lists.sugarlabs.org/listinfo/iaep It&#039;s An Education Project] for educational issues) and/or [[IRC]].&lt;br /&gt;
&lt;br /&gt;
The NeL project has some good general recommendations for [http://dev.ryzom.com/projects/nel/wiki/GSoC2009WritingProposals writing proposals]. We endorse them all; although Sugar is (regrettably) not test driven development (yet - your project could change that!), we encourage GSoC code to include tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;[[Category:2009 GSoC applications]]&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick_Ubuntu&amp;diff=18593</id>
		<title>Sugar on a Stick Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick_Ubuntu&amp;diff=18593"/>
		<updated>2009-02-06T02:46:31Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: aesthetic fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Note: this procedure works for these circumstances&#039;&#039; Taken from http://dev.laptop.org/~probono/sbuntu/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* Ubuntu 8.10 Intrepid Ibex&#039;&#039;&lt;br /&gt;
&#039;&#039;* Built November 29, 2008&#039;&#039;&lt;br /&gt;
&#039;&#039;* Browse activity works&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= How to make a Ubuntu 8.10 Sugar Live USB system =&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso] and burn it&lt;br /&gt;
# Create a Live USB system using the built-in Live USB installer (In Ubuntu 8.10 and later: System --&amp;gt; Administration --&amp;gt; Create a USB startup disk). If you choose &amp;quot;Stored in reserved extra space&amp;quot;, do &#039;&#039;&#039;NOT&#039;&#039;&#039; use up the entire available space, but leave at least 100 MB so that we can add sugar in the next step.&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
= How to make a Ubuntu 8.10 Sugar Live USB system from Windows =&lt;br /&gt;
&lt;br /&gt;
(Note that these instructions can be used to make a Fedora-based Sugar Live USB, or can be run from Linux as well)&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso]&lt;br /&gt;
# Download [http://unetbootin.sourceforge.net/ UNetbootin] [http://unetbootin.sourceforge.net/unetbootin-windows-latest.exe for Windows] (or [http://unetbootin.sourceforge.net/unetbootin-linux-latest Linux]) and run the application&lt;br /&gt;
# Supply the Ubuntu 8.10 desktop ISO file in the &amp;quot;Diskimage&amp;quot; option, select your target USB drive, and press &amp;quot;OK&amp;quot; to make an Ubuntu Live USB&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
==Done==&lt;br /&gt;
&lt;br /&gt;
The file sugar.squashfs is kept separate from the Ubuntu system itself, which stays unmodified. This way, sugar can easily be updated without having to download the entire Ubuntu system. Just replace sugar.squashfs with the updated version.&lt;br /&gt;
&lt;br /&gt;
The instructions below are only interesting if you want to make your own sugar.squashfs instead of the one provided for download here.&lt;br /&gt;
How to make your own sugar.squashfs&lt;br /&gt;
&lt;br /&gt;
First, create a stock Ubuntu 8.10 live USB system as described above and boot from it. Next, we need to fix a bug the initrd so that /cow is shown when we use the &amp;quot;show-cow&amp;quot; boot option by executing [http://launchpadlibrarian.net/18966594/apply-casper-patch.sh this] script. Now, we add &amp;quot;show-cow&amp;quot; to the boot arguments in syslinux.conf. Then, boot the system using the fix initrd, and do the following in the running system:&lt;br /&gt;
&lt;br /&gt;
 sudo su&lt;br /&gt;
 echo &amp;quot;deb http://archive.ubuntu.com/ubuntu intrepid universe&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 echo &amp;quot;deb http://ppa.launchpad.net/sugarteam/ubuntu intrepid main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get --force-yes -y  install sugar-* squashfs-tools&lt;br /&gt;
&lt;br /&gt;
* Then do&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; exclude &amp;lt;&amp;lt;\EOF&lt;br /&gt;
 etc&lt;br /&gt;
 casper&lt;br /&gt;
 cdrom&lt;br /&gt;
 cow&lt;br /&gt;
 home&lt;br /&gt;
 media&lt;br /&gt;
 rofs&lt;br /&gt;
 tmp&lt;br /&gt;
 var/cache&lt;br /&gt;
 var/log&lt;br /&gt;
 var/run&lt;br /&gt;
 var/tmp&lt;br /&gt;
 var/lock&lt;br /&gt;
 var/mail&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
* It is important to exclude etc because otherwise permissions are mixed up&lt;br /&gt;
&lt;br /&gt;
 mount /cdrom -o remount,rw&lt;br /&gt;
&lt;br /&gt;
 time mksquashfs /cow/ /cdrom/casper/sugar.squashfs -ef exclude&lt;br /&gt;
&lt;br /&gt;
*If you want the system to boot straight into Sugar (instead of Gnome) during boot, do:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p add/etc/skel/&lt;br /&gt;
 cat &amp;gt; add/etc/skel/.dmrc &amp;lt;&amp;lt;\EOF&lt;br /&gt;
 [Desktop]&lt;br /&gt;
 Session=sugar&lt;br /&gt;
 EOF&lt;br /&gt;
 mksquashfs add/ /cdrom/casper/sugar.squashfs&lt;br /&gt;
&lt;br /&gt;
==Acknowledgments==&lt;br /&gt;
&lt;br /&gt;
* OLPC Foundation&lt;br /&gt;
* Sugar Labs&lt;br /&gt;
* Debian Edu Developers and Debian OLPC&lt;br /&gt;
* Ubuntu sugarteam&lt;br /&gt;
&lt;br /&gt;
===Author===&lt;br /&gt;
Simon Peter http://wiki.laptop.org/go/User:probono&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick_Ubuntu&amp;diff=18592</id>
		<title>Sugar on a Stick Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick_Ubuntu&amp;diff=18592"/>
		<updated>2009-02-06T02:44:07Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: instructions for Windows and non-Ubuntu distributions using UNetbootin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;Note: this procedure works for these circumstances&#039;&#039; Taken from http://dev.laptop.org/~probono/sbuntu/&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;* Ubuntu 8.10 Intrepid Ibex&#039;&#039;&lt;br /&gt;
&#039;&#039;* Built November 29, 2008&#039;&#039;&lt;br /&gt;
&#039;&#039;* Browse activity works&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= How to make a Ubuntu 8.10 Sugar Live USB system =&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso] and burn it&lt;br /&gt;
# Create a Live USB system using the built-in Live USB installer (In Ubuntu 8.10 and later: System --&amp;gt; Administration --&amp;gt; Create a USB startup disk). If you choose &amp;quot;Stored in reserved extra space&amp;quot;, do &#039;&#039;&#039;NOT&#039;&#039;&#039; use up the entire available space, but leave at least 100 MB so that we can add sugar in the next step.&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
= How to make a Ubuntu 8.10 Sugar Live USB system from Windows or on a non-Ubuntu Distribution =&lt;br /&gt;
&lt;br /&gt;
(Note that these instructions work on Fedora as well)&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso]&lt;br /&gt;
# Download [http://unetbootin.sourceforge.net/ UNetbootin] [http://unetbootin.sourceforge.net/unetbootin-windows-latest.exe for Windows] (or [http://unetbootin.sourceforge.net/unetbootin-linux-latest Linux]) and run the application&lt;br /&gt;
# Supply the Ubuntu 8.10 desktop ISO file in the &amp;quot;Diskimage&amp;quot; option, select your target USB drive, and press &amp;quot;OK&amp;quot; to make an Ubuntu Live USB&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
==Done==&lt;br /&gt;
&lt;br /&gt;
The file sugar.squashfs is kept separate from the Ubuntu system itself, which stays unmodified. This way, sugar can easily be updated without having to download the entire Ubuntu system. Just replace sugar.squashfs with the updated version.&lt;br /&gt;
&lt;br /&gt;
The instructions below are only interesting if you want to make your own sugar.squashfs instead of the one provided for download here.&lt;br /&gt;
How to make your own sugar.squashfs&lt;br /&gt;
&lt;br /&gt;
First, create a stock Ubuntu 8.10 live USB system as described above and boot from it. Next, we need to fix a bug the initrd so that /cow is shown when we use the &amp;quot;show-cow&amp;quot; boot option by executing [http://launchpadlibrarian.net/18966594/apply-casper-patch.sh this] script. Now, we add &amp;quot;show-cow&amp;quot; to the boot arguments in syslinux.conf. Then, boot the system using the fix initrd, and do the following in the running system:&lt;br /&gt;
&lt;br /&gt;
 sudo su&lt;br /&gt;
 echo &amp;quot;deb http://archive.ubuntu.com/ubuntu intrepid universe&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 echo &amp;quot;deb http://ppa.launchpad.net/sugarteam/ubuntu intrepid main&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
 apt-get update&lt;br /&gt;
 apt-get --force-yes -y  install sugar-* squashfs-tools&lt;br /&gt;
&lt;br /&gt;
* Then do&lt;br /&gt;
&lt;br /&gt;
 cat &amp;gt; exclude &amp;lt;&amp;lt;\EOF&lt;br /&gt;
 etc&lt;br /&gt;
 casper&lt;br /&gt;
 cdrom&lt;br /&gt;
 cow&lt;br /&gt;
 home&lt;br /&gt;
 media&lt;br /&gt;
 rofs&lt;br /&gt;
 tmp&lt;br /&gt;
 var/cache&lt;br /&gt;
 var/log&lt;br /&gt;
 var/run&lt;br /&gt;
 var/tmp&lt;br /&gt;
 var/lock&lt;br /&gt;
 var/mail&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
* It is important to exclude etc because otherwise permissions are mixed up&lt;br /&gt;
&lt;br /&gt;
 mount /cdrom -o remount,rw&lt;br /&gt;
&lt;br /&gt;
 time mksquashfs /cow/ /cdrom/casper/sugar.squashfs -ef exclude&lt;br /&gt;
&lt;br /&gt;
*If you want the system to boot straight into Sugar (instead of Gnome) during boot, do:&lt;br /&gt;
&lt;br /&gt;
 mkdir -p add/etc/skel/&lt;br /&gt;
 cat &amp;gt; add/etc/skel/.dmrc &amp;lt;&amp;lt;\EOF&lt;br /&gt;
 [Desktop]&lt;br /&gt;
 Session=sugar&lt;br /&gt;
 EOF&lt;br /&gt;
 mksquashfs add/ /cdrom/casper/sugar.squashfs&lt;br /&gt;
&lt;br /&gt;
==Acknowledgments==&lt;br /&gt;
&lt;br /&gt;
* OLPC Foundation&lt;br /&gt;
* Sugar Labs&lt;br /&gt;
* Debian Edu Developers and Debian OLPC&lt;br /&gt;
* Ubuntu sugarteam&lt;br /&gt;
&lt;br /&gt;
===Author===&lt;br /&gt;
Simon Peter http://wiki.laptop.org/go/User:probono&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick&amp;diff=18591</id>
		<title>Sugar on a Stick</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick&amp;diff=18591"/>
		<updated>2009-02-06T02:40:13Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: fixed slight typo on UNetbootin instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About Sugar on a Stick (SoaS) ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Soas.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
The goal of the Sugar on a Stick project is to give children access to *their* Sugar on any computer in their environment with just a USB key.&lt;br /&gt;
&lt;br /&gt;
We are still in preAlpha on this project. It is not ready to use with children yet.&lt;br /&gt;
&lt;br /&gt;
===Creating a USB Stick===&lt;br /&gt;
&lt;br /&gt;
The basics of creating a Live, bootable USB are you download a &#039;.iso&#039; image.  Then you use a USB creator program to copy it to a USB, create a space for users to store files on the USB (if required) and set it to be bootable.&lt;br /&gt;
&lt;br /&gt;
In practice this means the first thing you need is a Live USB creator.&lt;br /&gt;
&lt;br /&gt;
We are working with live USBs based on both Fedora and Ubuntu (these are different distributions of Linux), you can try either or both.&lt;br /&gt;
&lt;br /&gt;
If you are helping us with testing, please be sure to use one of the Sugar .iso&#039;s from this page. Please keep notes on which you got and when. Please report bugs to dev.sugarlabs.org and finally, please join the Moodle Class where we are coordinating testing. http://schools.sugarlabs.org/course/view.php?id=17&lt;br /&gt;
&lt;br /&gt;
This is still in testing, its not ready for production use yet.&lt;br /&gt;
&lt;br /&gt;
====Fedora based Sugar on a Stick from Windows====&lt;br /&gt;
&lt;br /&gt;
To create a Fedora based Sugar from a Windows machine:  https://fedorahosted.org/liveusb-creator/&lt;br /&gt;
&lt;br /&gt;
Download that file to a windows machine and install it. (I couldn&#039;t get it to run in wine... --[[User:Walter|Walter]] 17:40, 3 December 2008 (UTC))&lt;br /&gt;
&lt;br /&gt;
Next download current version of Sugar that we are testing for Sugar on a Stick: &lt;br /&gt;
&lt;br /&gt;
 http://download.sugarlabs.org/soas/snapshots/1/Soas-200902022242.iso&lt;br /&gt;
&lt;br /&gt;
#Plug in a 1GB or larger USB stick into your computer.&lt;br /&gt;
#Open &amp;quot;liveusb-creator.exe&amp;quot;&lt;br /&gt;
#Use &amp;quot;Browse&amp;quot; to select the iso file that you just downloaded.&lt;br /&gt;
#Set the Target Device to your USB device&lt;br /&gt;
#Move the slider to set some persistent storage (hint, set it high then it will tell you how much space there is and you can adjust it to the right point)&lt;br /&gt;
#Click &amp;quot;Create Live USB&amp;quot;. It will take a few minutes.&lt;br /&gt;
&lt;br /&gt;
How much persistent memory you set will depend on the size of the .iso and the size of your USB but make sure you have some so people can save files.&lt;br /&gt;
&lt;br /&gt;
=====Problem=====&lt;br /&gt;
I tried to do this and was able to create the files on the stick, but when I try to book on a Toshiba Tecra M4&lt;br /&gt;
(which can boot from USB sticks) I get&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SYSLINUX 3.72 2008-0925-25 EBIOS Copyright (C) 1994-2008 H. Peter Unvin&lt;br /&gt;
Could not find kernel image: linux&lt;br /&gt;
boot:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ubuntu based Sugar on a Stick====&lt;br /&gt;
&lt;br /&gt;
* Detailed instructions are here: http://dev.laptop.org/~probono/sbuntu/ and in [[Sugar on a Stick Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
====Ubuntu based Sugar on a Stick from Windows====&lt;br /&gt;
&lt;br /&gt;
(Note that these instructions work on Fedora as well, and also can be run from any Linux distribution or Windows)&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso]&lt;br /&gt;
# Download [http://unetbootin.sourceforge.net/ UNetbootin] [http://unetbootin.sourceforge.net/unetbootin-windows-latest.exe for Windows] (or [http://unetbootin.sourceforge.net/unetbootin-linux-latest Linux]) and run the application&lt;br /&gt;
# Supply the Ubuntu 8.10 desktop ISO file in the &amp;quot;Diskimage&amp;quot; option, select your target USB drive, and press &amp;quot;OK&amp;quot; to make an Ubuntu Live USB&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
===Using Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
The trick is to set the BIOS to boot from USB.  Unfortunately this is slightly different on each computer.  Try Google on BIOS your computer model and explore the setup screen for your system.&lt;br /&gt;
&lt;br /&gt;
If you have trouble try creating a &amp;quot;Boot Helper&amp;quot; CD using the .iso below.  This will start the boot from the CD then read files from the USB.&lt;br /&gt;
&lt;br /&gt;
 http://www.sugarlabs.org/~marco/boot.iso&lt;br /&gt;
&lt;br /&gt;
You can also use the &#039;PLoP Boot Manager&#039; to create a boot floppy for machines without the ability to boot from CD or USB, see http://syslinux.zytor.com/wiki/index.php/No_native_BIOS_support&lt;br /&gt;
&lt;br /&gt;
===VirtualBox and Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
At our pilot school for Sugar on a Stick the teachers has MacBooks. Our plan is to have teachers run Sugar in emulation mode on their personal Macbooks, while the students use the USB to access a variety of computers. &lt;br /&gt;
&lt;br /&gt;
Instructions for using a preconfigured VirtualBox disk image with Sugar on a Stick [[Sugar on a Stick VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
===Cloning Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
The vision is that an adult will be able to create a Sugar on a Stick, add activities, set the language and the collaboration service and then &amp;quot;clone&amp;quot; the stick to create Sugar on a Stick for all the students in a class or a school.&lt;br /&gt;
&lt;br /&gt;
[[Specs for Cloning Sugar on a Stick]]&lt;br /&gt;
&lt;br /&gt;
===Join the development effort===&lt;br /&gt;
&lt;br /&gt;
We are coordinating work on this project on Sugar Labs Moodle system. Please create an account and join the Sugar on a Stick Class. http://schools.sugarlabs.org/course/view.php?id=17&lt;br /&gt;
&lt;br /&gt;
====Report Sugar on a Stick Bugs====&lt;br /&gt;
&lt;br /&gt;
Use the Sugar Trac system at http://dev.sugarlabs.org to report bugs.  Use the &amp;quot;SoaS&amp;quot; component.&lt;br /&gt;
&lt;br /&gt;
===Project Goals===&lt;br /&gt;
&lt;br /&gt;
* Sugar on a Stick as 1 to 1 computing in an elementary school&lt;br /&gt;
* Sugar on a Stick to empower middle and high school students to help test [[Sugar as Service Learning]]&lt;br /&gt;
* Sugar on a Stick for conferences to let people try Sugar and collaborate with other conference participants&lt;br /&gt;
&lt;br /&gt;
===Sugar on a Stick ToDo List===&lt;br /&gt;
&lt;br /&gt;
  * Create an Easy Emulation for Boston School teachers macbooks - http://dev.sugarlabs.org/ticket/114&lt;br /&gt;
  * Create a boot helper CD that lets Macs boot from the stick&lt;br /&gt;
  * Install the latest version of Sugar on a Stick, pick an activity and test it&lt;br /&gt;
  * Create a system for tracking activity testing&lt;br /&gt;
  * Solicit USB stick donations from companies&lt;br /&gt;
  * Create a design for a CD sticker to put on boot helper CDs&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
*[[DeploymentTeam/School_Key]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
	<entry>
		<id>https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick&amp;diff=18590</id>
		<title>Sugar on a Stick</title>
		<link rel="alternate" type="text/html" href="https://wiki.sugarlabs.org/index.php?title=Sugar_on_a_Stick&amp;diff=18590"/>
		<updated>2009-02-06T02:38:49Z</updated>

		<summary type="html">&lt;p&gt;Gkovacs: added instructions for creating Live USB from Windows using UNetbootin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==About Sugar on a Stick (SoaS) ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Soas.jpg|thumb]]&lt;br /&gt;
&lt;br /&gt;
The goal of the Sugar on a Stick project is to give children access to *their* Sugar on any computer in their environment with just a USB key.&lt;br /&gt;
&lt;br /&gt;
We are still in preAlpha on this project. It is not ready to use with children yet.&lt;br /&gt;
&lt;br /&gt;
===Creating a USB Stick===&lt;br /&gt;
&lt;br /&gt;
The basics of creating a Live, bootable USB are you download a &#039;.iso&#039; image.  Then you use a USB creator program to copy it to a USB, create a space for users to store files on the USB (if required) and set it to be bootable.&lt;br /&gt;
&lt;br /&gt;
In practice this means the first thing you need is a Live USB creator.&lt;br /&gt;
&lt;br /&gt;
We are working with live USBs based on both Fedora and Ubuntu (these are different distributions of Linux), you can try either or both.&lt;br /&gt;
&lt;br /&gt;
If you are helping us with testing, please be sure to use one of the Sugar .iso&#039;s from this page. Please keep notes on which you got and when. Please report bugs to dev.sugarlabs.org and finally, please join the Moodle Class where we are coordinating testing. http://schools.sugarlabs.org/course/view.php?id=17&lt;br /&gt;
&lt;br /&gt;
This is still in testing, its not ready for production use yet.&lt;br /&gt;
&lt;br /&gt;
====Fedora based Sugar on a Stick from Windows====&lt;br /&gt;
&lt;br /&gt;
To create a Fedora based Sugar from a Windows machine:  https://fedorahosted.org/liveusb-creator/&lt;br /&gt;
&lt;br /&gt;
Download that file to a windows machine and install it. (I couldn&#039;t get it to run in wine... --[[User:Walter|Walter]] 17:40, 3 December 2008 (UTC))&lt;br /&gt;
&lt;br /&gt;
Next download current version of Sugar that we are testing for Sugar on a Stick: &lt;br /&gt;
&lt;br /&gt;
 http://download.sugarlabs.org/soas/snapshots/1/Soas-200902022242.iso&lt;br /&gt;
&lt;br /&gt;
#Plug in a 1GB or larger USB stick into your computer.&lt;br /&gt;
#Open &amp;quot;liveusb-creator.exe&amp;quot;&lt;br /&gt;
#Use &amp;quot;Browse&amp;quot; to select the iso file that you just downloaded.&lt;br /&gt;
#Set the Target Device to your USB device&lt;br /&gt;
#Move the slider to set some persistent storage (hint, set it high then it will tell you how much space there is and you can adjust it to the right point)&lt;br /&gt;
#Click &amp;quot;Create Live USB&amp;quot;. It will take a few minutes.&lt;br /&gt;
&lt;br /&gt;
How much persistent memory you set will depend on the size of the .iso and the size of your USB but make sure you have some so people can save files.&lt;br /&gt;
&lt;br /&gt;
=====Problem=====&lt;br /&gt;
I tried to do this and was able to create the files on the stick, but when I try to book on a Toshiba Tecra M4&lt;br /&gt;
(which can boot from USB sticks) I get&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SYSLINUX 3.72 2008-0925-25 EBIOS Copyright (C) 1994-2008 H. Peter Unvin&lt;br /&gt;
Could not find kernel image: linux&lt;br /&gt;
boot:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ubuntu based Sugar on a Stick====&lt;br /&gt;
&lt;br /&gt;
* Detailed instructions are here: http://dev.laptop.org/~probono/sbuntu/ and in [[Sugar on a Stick Ubuntu]]&lt;br /&gt;
&lt;br /&gt;
====Ubuntu based Sugar on a Stick from Windows====&lt;br /&gt;
&lt;br /&gt;
(Note that these instructions work on Fedora as well, and also can be run from any Linux distribution or Windows)&lt;br /&gt;
&lt;br /&gt;
# Download the stock [http://releases.ubuntu.com/intrepid/ubuntu-8.10-desktop-i386.iso ubuntu-8.10-desktop-i386.iso]&lt;br /&gt;
# Download [http://unetbootin.sourceforge.net/unetbootin-windows-latest.exe UNetbootin for Windows] (or [http://unetbootin.sourceforge.net/unetbootin-linux-latest] Linux) and run the application&lt;br /&gt;
# Supply the Ubuntu 8.10 desktop ISO file in the &amp;quot;Diskimage&amp;quot; option, select your target USB drive, and press &amp;quot;OK&amp;quot; to make an Ubuntu Live USB&lt;br /&gt;
# Add the file [http://dev.laptop.org/~probono/sbuntu/sugar.squashfs sugar.squashfs] to the directory casper/ on the USB stick&lt;br /&gt;
&lt;br /&gt;
===Using Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
The trick is to set the BIOS to boot from USB.  Unfortunately this is slightly different on each computer.  Try Google on BIOS your computer model and explore the setup screen for your system.&lt;br /&gt;
&lt;br /&gt;
If you have trouble try creating a &amp;quot;Boot Helper&amp;quot; CD using the .iso below.  This will start the boot from the CD then read files from the USB.&lt;br /&gt;
&lt;br /&gt;
 http://www.sugarlabs.org/~marco/boot.iso&lt;br /&gt;
&lt;br /&gt;
You can also use the &#039;PLoP Boot Manager&#039; to create a boot floppy for machines without the ability to boot from CD or USB, see http://syslinux.zytor.com/wiki/index.php/No_native_BIOS_support&lt;br /&gt;
&lt;br /&gt;
===VirtualBox and Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
At our pilot school for Sugar on a Stick the teachers has MacBooks. Our plan is to have teachers run Sugar in emulation mode on their personal Macbooks, while the students use the USB to access a variety of computers. &lt;br /&gt;
&lt;br /&gt;
Instructions for using a preconfigured VirtualBox disk image with Sugar on a Stick [[Sugar on a Stick VirtualBox]]&lt;br /&gt;
&lt;br /&gt;
===Cloning Sugar on a Stick===&lt;br /&gt;
&lt;br /&gt;
The vision is that an adult will be able to create a Sugar on a Stick, add activities, set the language and the collaboration service and then &amp;quot;clone&amp;quot; the stick to create Sugar on a Stick for all the students in a class or a school.&lt;br /&gt;
&lt;br /&gt;
[[Specs for Cloning Sugar on a Stick]]&lt;br /&gt;
&lt;br /&gt;
===Join the development effort===&lt;br /&gt;
&lt;br /&gt;
We are coordinating work on this project on Sugar Labs Moodle system. Please create an account and join the Sugar on a Stick Class. http://schools.sugarlabs.org/course/view.php?id=17&lt;br /&gt;
&lt;br /&gt;
====Report Sugar on a Stick Bugs====&lt;br /&gt;
&lt;br /&gt;
Use the Sugar Trac system at http://dev.sugarlabs.org to report bugs.  Use the &amp;quot;SoaS&amp;quot; component.&lt;br /&gt;
&lt;br /&gt;
===Project Goals===&lt;br /&gt;
&lt;br /&gt;
* Sugar on a Stick as 1 to 1 computing in an elementary school&lt;br /&gt;
* Sugar on a Stick to empower middle and high school students to help test [[Sugar as Service Learning]]&lt;br /&gt;
* Sugar on a Stick for conferences to let people try Sugar and collaborate with other conference participants&lt;br /&gt;
&lt;br /&gt;
===Sugar on a Stick ToDo List===&lt;br /&gt;
&lt;br /&gt;
  * Create an Easy Emulation for Boston School teachers macbooks - http://dev.sugarlabs.org/ticket/114&lt;br /&gt;
  * Create a boot helper CD that lets Macs boot from the stick&lt;br /&gt;
  * Install the latest version of Sugar on a Stick, pick an activity and test it&lt;br /&gt;
  * Create a system for tracking activity testing&lt;br /&gt;
  * Solicit USB stick donations from companies&lt;br /&gt;
  * Create a design for a CD sticker to put on boot helper CDs&lt;br /&gt;
&lt;br /&gt;
=== See Also ===&lt;br /&gt;
*[[DeploymentTeam/School_Key]]&lt;/div&gt;</summary>
		<author><name>Gkovacs</name></author>
	</entry>
</feed>