<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vilsonvieira</id>
	<title>MozillaWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mozilla.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vilsonvieira"/>
	<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/Special:Contributions/Vilsonvieira"/>
	<updated>2026-04-15T03:34:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057018</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057018"/>
		<updated>2015-02-19T15:46:46Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Change the noflo-ui details a little bit more.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI]&lt;br /&gt;
| Implement an UI widget on noflo-ui. It could be a timeline (see [https://github.com/noflo/noflo-ui/issues/151 this issue]), plugins for IIP editing or packet display for particular data types. Considering the timeline widget, an initial prototype could be a component library (see [https://github.com/noflo/noflo-tween/blob/master/components/Timeline.coffee noflo-tween]). Proposals should include sketches and an implemented prototype (pull requested to noflo-ui).&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057014</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057014"/>
		<updated>2015-02-19T15:44:16Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Typo fix.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI]&lt;br /&gt;
| Implement a UI widget on noflo-ui. It could be a timeline (see [https://github.com/noflo/noflo-ui/issues/151 this issue]) or plugins for IIP editing, packet display for particular data types. Considering the timeline widget, an initial prototype could be a component library (see [https://github.com/noflo/noflo-tween/blob/master/components/Timeline.coffee noflo-tween]). Proposals should include sketches and an implemented prototype. Pull requests to noflo-ui are a plus.&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057012</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057012"/>
		<updated>2015-02-19T15:43:19Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Small fix on noflo-ui idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI]&lt;br /&gt;
| Implement a UI widget on noflo-ui. It could be a timeline (see [https://github.com/noflo/noflo-ui/issues/151 this issue]) or plugins for IIP editing, packet display for particular data types. Considering the timeline widget, an initial prototype could be a component library (see [https://github.com/noflo/noflo-tween/blob/master/components/Timeline.coffee noflo-tween]). Proposals should include sketches and an implemented prototype. Pull request to noflo-ui are a plus.&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057011</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057011"/>
		<updated>2015-02-19T15:42:27Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Add more details on noflo-ui idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI]&lt;br /&gt;
| Implement a NoFlo UI widget on noflo-ui. It could be a timeline (see [https://github.com/noflo/noflo-ui/issues/151 this issue]) or plugins for IIP editing, packet display for particular data types. Considering the timeline widget, an initial prototype could be a component library (see [https://github.com/noflo/noflo-tween/blob/master/components/Timeline.coffee noflo-tween]). Proposals should include sketches and an implemented prototype. Pull request to noflo-ui are a plus.&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057010</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057010"/>
		<updated>2015-02-19T15:40:52Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Add more details on noflo-ui idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] https://github.com/noflo/noflo-ui/issues/151&lt;br /&gt;
| Implement a NoFlo UI widget on noflo-ui. It could be a timeline (see [https://github.com/noflo/noflo-ui/issues/151 this issue]) or plugins for IIP editing, packet display for particular data types. Considering the timeline widget, an initial prototype could be a component library (see [https://github.com/noflo/noflo-tween/blob/master/components/Timeline.coffee noflo-tween]). Proposals should include sketches and an implemented prototype. Pull request to noflo-ui are a plus.&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057009</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057009"/>
		<updated>2015-02-19T15:26:34Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Add link for microflo.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] something&lt;br /&gt;
| Something TBD related to flow-based programming w/ browser-based IDE&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers ([https://github.com/jonnor/microflo microflo]), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057008</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057008"/>
		<updated>2015-02-19T15:25:20Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Fix links on openart again.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] something&lt;br /&gt;
| Something TBD related to flow-based programming w/ browser-based IDE&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers (microflo), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers (microflo), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057007</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057007"/>
		<updated>2015-02-19T15:23:14Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Better details.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] something&lt;br /&gt;
| Something TBD related to flow-based programming w/ browser-based IDE&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[http://noflojs.org NoFlo]] is a JS dataflow implementation and has runtimes for browser, image processing ([[https://github.com/jonnor/imgflo imgflo]]), microcontrollers (microflo), SuperCollider (sndflo) and other targets. [[https://app.flowhub.io Flowhub]] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters using [https://app.flowhub.io Flowhub] (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) and components libraries like [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas], then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers (microflo), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057005</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057005"/>
		<updated>2015-02-19T15:21:51Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Fix links on openart.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] something&lt;br /&gt;
| Something TBD related to flow-based programming w/ browser-based IDE&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[http://noflojs.org NoFlo]] is a JS dataflow implementation and has runtimes for browser, image processing ([[https://github.com/jonnor/imgflo imgflo]]), microcontrollers (microflo), SuperCollider (sndflo) and other targets. [[https://app.flowhub.io Flowhub]] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [http://noflojs.org NoFlo]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters (use [https://www.filterforge.com/ Filter Forge]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) using [https://app.flowhub.io Flowhub] and the [http://github.com/noflo/noflo-image noflo-image] and [http://github.com/noflo/noflo-canvas noflo-canvas] components libs, then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [http://noflojs.org NoFlo] is a JS dataflow implementation and has runtimes for browser, image processing ([https://github.com/jonnor/imgflo imgflo]), microcontrollers (microflo), SuperCollider ([https://github.com/jonnor/sndflo sndflo]) and other targets. [https://app.flowhub.io Flowhub] is the browser-based IDE for the creation of NoFlo graphs. [http://gegl.org GEGL] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057004</id>
		<title>Community:SummerOfCode15:Brainstorming</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Community:SummerOfCode15:Brainstorming&amp;diff=1057004"/>
		<updated>2015-02-19T15:19:30Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Add noflo image filters idea.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mozilla community members - submit proposals here for 2015 Google Summer of Code projects with Mozilla. (If this page looks empty, it&#039;s because accepted ideas have already been transferred to the [[Community:SummerOfCode15|official list]].) &#039;&#039;&#039;The&#039;&#039;&#039; absolute last &#039;&#039;&#039;deadline for submitting ideas&#039;&#039;&#039; in time to help us get accepted by Google &#039;&#039;&#039;is February 20th&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Are you a students looking to apply to SoC with Mozilla?&amp;lt;/b&amp;gt; Your first stop should be the [[Community:SummerOfCode15|official list of ideas]]. This page is full of weird and whacky ideas, some of which are still on here for a reason - it could be that they are not properly defined, the wrong size, or don&#039;t have a mentor. That makes them less likely to get accepted. You &amp;lt;i&amp;gt;can&amp;lt;/i&amp;gt;, of course, also submit your own ideas - you don&#039;t have to put an idea on this page and get it &#039;made official&#039; in order to send in a proposal for it.&lt;br /&gt;
&lt;br /&gt;
==How To Write A Good Project Proposal==&lt;br /&gt;
&lt;br /&gt;
Before adding an proposal to this list, please consider the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Be specific&#039;&#039;&#039;. It&#039;s hard to understand the impact of, or the size of, vague proposals.&lt;br /&gt;
* &#039;&#039;&#039;Consider size&#039;&#039;&#039;. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.&lt;br /&gt;
* &#039;&#039;&#039;Do your research&#039;&#039;&#039;. Support the idea with well-researched links.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t morph other people&#039;s ideas&#039;&#039;&#039;. If you have a related idea, place it next to the existing one, or add a comment. &lt;br /&gt;
* &#039;&#039;&#039;Insert only your own name into the Mentor column&#039;&#039;&#039;, and then only if you are willing to take on the responsibility. If you think the SoC admins won&#039;t know who you are, leave contact details.&lt;br /&gt;
* &#039;&#039;&#039;Check back regularly&#039;&#039;&#039;. The administrators may have questions about your idea that you will need to answer.&lt;br /&gt;
* &#039;&#039;&#039;Know when to give up&#039;&#039;&#039;. If you&#039;ve added the same idea for the last three years and it hasn&#039;t made it to the official page, perhaps you can predict what will happen this time.&lt;br /&gt;
&lt;br /&gt;
==Suggestion List==&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCode|Here are the ideas lists from previous years]].&lt;br /&gt;
&lt;br /&gt;
Proposals can be in almost any part of the Mozilla project - don&#039;t be fooled by the &amp;quot;Code&amp;quot; in &amp;quot;Summer of Code&amp;quot;. If there is no category below for your part of Mozilla, add one!&lt;br /&gt;
&lt;br /&gt;
== Mozilla Platform (Gecko) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details&lt;br /&gt;
! Skills Needed&lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Firefox Performance Dashboard&lt;br /&gt;
| This project would implement the dashboard described in [https://bugzilla.mozilla.org/show_bug.cgi?id=1132498 bug 1132498]. Collecting the memory and CPU usage of addons and webpages and displaying it in a fashion that shows bad actors would be valuable for power users.&lt;br /&gt;
| HTML, CSS, JavaScript&lt;br /&gt;
| [https://mozillians.org/en-US/u/jdm/ jdm]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox for Android ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox OS / Boot2Gecko ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Thunderbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| Performance testing&lt;br /&gt;
| Add and deploy a performance testsuite for Thunderbird to catch regressions in areas such as startup, message search, folder display, message display, etc.&lt;br /&gt;
| JavaScript, Python, preferably some performance analysis experience&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Needs a mentor -- florian&lt;br /&gt;
|-&lt;br /&gt;
| Secure email UI&lt;br /&gt;
| Develop good interfaces for key management and illustrating the security levels of messages succinctly, preferably applicable to both S/MIME and OpenPGP.&lt;br /&gt;
| Strong UX experience; JS, XUL or HTML; crypto background advantageous&lt;br /&gt;
| jcranmer&lt;br /&gt;
| ?&lt;br /&gt;
| Summer of Code is about coding, not about UX work; asking students to do UX work often leads to disappointing results -- florian. This may be too large a task; narrowing focus could be useful.&lt;br /&gt;
|-&lt;br /&gt;
| Alternate protocol for mailnews folders&lt;br /&gt;
| Thunderbird has long-term plans to implement a variety of mail and mail-like protocols to be managed as mailnews folders. An existing addon (SkinkGlue) exists to provide the glue for this. Implement one other protocol, which might be Twitter, Fastmail&#039;s JMAP, or Calendar events &amp;amp; tasks&lt;br /&gt;
| Javascript&lt;br /&gt;
| rkent&lt;br /&gt;
| rkent and, depending on protocol, a chat guy (clokep?), brong from Fastmail, or Fallen&lt;br /&gt;
| I doubt having 2 twitter implementations in Thunderbird is a valuable investment of time. JMAP seems the most promising protocol idea here; do we know if brong is on board to (co-)mentor this? Even though the code would be primarily written in JS, I suspect having some C++ skills to be able to understand some of mailnews&#039; internals would be very helpful.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Instantbird ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Calendar ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title&lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== SeaMonkey ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==NSS (Network Security Services)==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Bugzilla ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Firefox Support (SUMO) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== QA ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Automation &amp;amp; Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Developer Network ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla IT and Infrastructure ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sync / Services ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Add-on SDK ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Foundation ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== OpenArt ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/noflo/noflo-ui NoFlo-UI] something&lt;br /&gt;
| Something TBD related to flow-based programming w/ browser-based IDE&lt;br /&gt;
| javascript, coffeescript, ux &lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[User:Forresto|Forresto]]&lt;br /&gt;
| [[http://noflojs.org NoFlo]] is a JS dataflow implementation and has runtimes for browser, image processing ([[https://github.com/jonnor/imgflo imgflo]]), microcontrollers (microflo), SuperCollider (sndflo) and other targets. [[https://app.flowhub.io Flowhub]] is the browser-based IDE for the creation of NoFlo graphs.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/tweenjs/tween.js Tween.JS]&lt;br /&gt;
| Port Tween.js to ES6 and make it a modern citizen of the JS world&lt;br /&gt;
| javascript, web animations, graphics &lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Tween.JS is a small engine for declaring and running interpolations between values. It&#039;s used in interactive experiences, games and all sorts of projects.&lt;br /&gt;
|-&lt;br /&gt;
| [https://github.com/sole/Animated_GIF Animated_GIF] &lt;br /&gt;
| Refactor and build a version 2, splitting the library into independent reusable modules. Also work on compatibility with Firefox OS.&lt;br /&gt;
| javascript, web animations, graphics, web workers, pixel handling, canvas&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| [[User:Sole|Sole]]&lt;br /&gt;
| Animated_GIF is a library for generating Animated GIFs on the browser. It&#039;s used in demo apps in mozilla, some properties at webmaker, the wildly successful chat at meatspac.es and who knows where else.&lt;br /&gt;
|-&lt;br /&gt;
| Create image filters using [[http://noflojs.org NoFlo]]&lt;br /&gt;
| It&#039;s possible to start prototyping image filters (use [[https://www.filterforge.com/ Filter Forge]]&#039;s filters as inspiration and our porting of [https://github.com/jonnor/imgflo/wiki/Recreating-Instagram-filters some Instagram filters]) using [[https://app.flowhub.io Flowhub]] and the [[http://github.com/noflo/noflo-image noflo-image]] and [[http://github.com/noflo/noflo-canvas noflo-canvas]] components libs, then port the filters to imgflo. Another option is to create filters directly on imgflo using GEGL. Proposals should include a running NoFlo graph for a non-trivial image filter, together with sketches and original/processed images. Imgflo+GEGL filters are preferred. Pull requests to noflo-image and imgflo are a plus.&lt;br /&gt;
| javascript, coffeescript, noflo, cpp, computer vision basics&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[User:Vilsonvieira|Vilson Vieira]]&lt;br /&gt;
| [[http://noflojs.org NoFlo]] is a JS dataflow implementation and has runtimes for browser, image processing ([[https://github.com/jonnor/imgflo imgflo]]), microcontrollers (microflo), SuperCollider (sndflo) and other targets. [[https://app.flowhub.io Flowhub]] is the browser-based IDE for the creation of NoFlo graphs. [[http://gegl.org GEGL]] is a graph-based image processing framework used by imgflo (it&#039;s also possible to use noflo-canvas instead of GEGL, but GEGL is preferred due to performance reasons).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Release Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Emscripten ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rust ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Servo ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Engineering ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Localization ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Build system ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Security Assurance ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mozilla Science Lab ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;standard-table&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse: collapse&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Title &lt;br /&gt;
! Details &lt;br /&gt;
! Skills Needed &lt;br /&gt;
! Reporter &lt;br /&gt;
! Mentor(s) &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Outcomes&amp;diff=492026</id>
		<title>SummerOfCode/2012/Outcomes</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Outcomes&amp;diff=492026"/>
		<updated>2012-12-04T20:40:24Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Just a small correction for a link.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  &amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;ta1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c1&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Student&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c2&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Task Proposal&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c2&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Outcome&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c2&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Code Status&#039;&#039;&#039;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro2&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Sergio Charpinel, Jr.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Get ISPDB into Production.&#039;&#039;&#039; The ISPDB is a&lt;br /&gt;
        service to provide domain-specific email account setup information&lt;br /&gt;
        for email clients. The task is to finish and deploy it.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Much of what was specced was accomplished. Work remaining:&lt;br /&gt;
        localization, internationalization and UI improvements.&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Half finished. ISPDB is not yet in production. [https://github.com/mozilla/ispdb Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Gautam Akiwate&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;L10n Tool for Standardization of Terms.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;Design and implementation of a tool,&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;based on Transvision, to provide a terminology&lt;br /&gt;
        translation table of standard terms,&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;plus a&lt;br /&gt;
        tool to use it to help with translation of new strings and find&lt;br /&gt;
        problems with&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;existing&lt;br /&gt;
        translations.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The &#039;Moses&#039; machine translation tool was used, and the product was&lt;br /&gt;
        implemented for 4 languages. The translations obtained from the tool&lt;br /&gt;
        were sometimes better than the original translations. However,&lt;br /&gt;
        languages in which there is not a lot of existing data do not yet&lt;br /&gt;
        work well.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Prototype implemented. There is a plan to introduce it into the&lt;br /&gt;
        Mozilla translation process. [http://aktiwate.com/l10n-tool/ Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro4&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Vikash Agrawal&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;HTML5 and CSS3 Examples on MDN.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;Add examples to MDN for these two&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;technologies, to improve our offering.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Examples were written.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Due, to a platform change at MDN, the examples were not put online&lt;br /&gt;
        immediately. The plan is to do that in January. [https://github.com/ivikash/Examples-for-the-web/ Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro5&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Kailas Ravsaheb Patil&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;User-Specified Content Security Policy.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;Create a tool for Firefox users to specify&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;CSP policies for websites they visit. This helps in&lt;br /&gt;
        CSP policy development, and&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;gives options to&lt;br /&gt;
        security-sensitive users.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;A &amp;quot;userCSP&amp;quot; addon was developed that hooks into Firefox&#039;s CSP&lt;br /&gt;
        implementation to allow a user to specify a policy for a web page,&lt;br /&gt;
        and can also calculate policies on the fly for sites visited.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The add-on is up on AMO and has been preliminarily reviewed by the&lt;br /&gt;
        AMO reviewers. [https://addons.mozilla.org/en-US/firefox/addon/newusercspdesign/ Addon], [https://github.com/patilkr/userCSP Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Will Nayes&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Instantbird: Account Import Wizard.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;Enhance Instantbird to import&amp;lt;/span&amp;gt; user account&lt;br /&gt;
        information and settings and logs from the following instant&lt;br /&gt;
        messaging clients: AIM, Windows Live Messenger, Google Talk, mIRC,&lt;br /&gt;
        Pidgin, XChat, and Colloquy.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;A series of importer modules were created to perform the task of&lt;br /&gt;
        importing data from each of the supported client programs. User&lt;br /&gt;
        account importation for all clients, and log importing for Pidgin,&lt;br /&gt;
        mIRC, and XChat, was finished by the end of the summer.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The code is in the process of being reviewed before landing. [https://hg.instantbird.org/users/wnayes/ Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Atul Jangra&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce4 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Improve Gmail Interoperability.&amp;lt;/b&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;The task is to&lt;br /&gt;
        make Thunderbird work better&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;with&lt;br /&gt;
        Gmail.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Code was written of sufficiently quality to integrate directly&lt;br /&gt;
        into Thunderbird.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Shipped in Thunderbird 17. Code is in comm-central.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Robert Koch&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;WebSocket Testing Tool.&#039;&#039;&#039; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;E&amp;lt;/span&amp;gt;xtend a security scanner for web applications, the OWASP&lt;br /&gt;
        Zed Attack Proxy (ZAP) to support WebSockets, such that you&#039;re able&lt;br /&gt;
        to view and modify traffic. WebSockets are an upcoming standard&lt;br /&gt;
        enabling real-time communication on the Internet.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;In the upcoming version of ZAP, WebSocket channels are recognized&lt;br /&gt;
        and displayed in the GUI. You can see all messages sent back &amp;amp;amp;&lt;br /&gt;
        forth, set breakpoints to intercept specific messages and modify&lt;br /&gt;
        them, and you can install a filter and replace payloads according to&lt;br /&gt;
        some regular expression.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Will ship with ZAP version 2, &amp;quot;sometime before&lt;br /&gt;
        the end of 2012&amp;quot;. [http://code.google.com/p/zaproxy/ Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Girish Sharma&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Graphical Timeline of Events.&#039;&#039;&#039; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;Write a&amp;lt;/span&amp;gt; scalable developer tool that will allow&lt;br /&gt;
        developers to visually see, inspect and connect various kind of&lt;br /&gt;
        events going on in the browser, be it Network Events, DOM Events,&lt;br /&gt;
        Memory Events or Console Events. Add Remote Debugging support so that&lt;br /&gt;
        any remote browser, be it mobile or desktop could be inspected.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Support for network events, memory events and DOM events was&lt;br /&gt;
        completed.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Code is complete, currently as an add-on, and it is hoped to&lt;br /&gt;
        integrate it into Firefox by default. [https://addons.mozilla.org/en-US/firefox/addon/graphical-timeline/ Addon], [https://github.com/scrapmac/Graphical-Timeline-of-Events Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Han Lin&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Thunderbird: &#039;No Reply&#039; Reminder.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;I&amp;lt;/span&amp;gt;ntegrate a reply manager into Thunderbird&lt;br /&gt;
        that monitors the reply status of marked emails. Functions include&lt;br /&gt;
        marking an outgoing email as &amp;quot;expecting replies&amp;quot;, monitoring who has&lt;br /&gt;
        replied and who has not, and giving timely feedback of reply&lt;br /&gt;
        status.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;All the functions required have been implemented. However the user&lt;br /&gt;
        interface is not satisfactory yet and is still under review.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The back-end code is complete but the UI is still being&lt;br /&gt;
        refined. [https://github.com/DIdiHL/comm-central/tree/reply-manager Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Jiten Thakkar&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Networking Dashboard.&#039;&#039;&#039; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;Create a dashboard to show&amp;lt;/span&amp;gt; internal statistical data from&lt;br /&gt;
        Firefox&#039;s networking stack and also perform some diagnostic tests&lt;br /&gt;
        (like pinging a server or doing an SSL handshake). Create an&lt;br /&gt;
        interface to supply the data, and an addon to display it.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The interface was created and also an add-on which shows the&lt;br /&gt;
        statistical data in tabular form. The diagnostic part was not&lt;br /&gt;
        completed because the implementation of other functionality took a&lt;br /&gt;
        lot more time then anticipated. &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The patch is up for review. Other people have been working on it&lt;br /&gt;
        too; the code has been modified a lot since the end of GSoC.&lt;br /&gt;
        [http://netij.blogspot.sg/2012/08/networking-dashboard-v01.html Screenshots],&lt;br /&gt;
        [https://bitbucket.org/Jiten/mozilla-central Code],&lt;br /&gt;
        [https://github.com/jiten-thakkar/Networking-Dashboard Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Xingxing Pan&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Port SuperTux to the Web.&#039;&#039;&#039; Emscripten is a&lt;br /&gt;
        new C/C++-to-Javascript compiler, which aims to port native desktop&lt;br /&gt;
        applications, for example games, into the web. The task is to port&lt;br /&gt;
        Supertux, a SuperMario-like game, to the web using Emscripten.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Supertux is ported to web, and can run in Firefox 16. Some work&lt;br /&gt;
        remains to be done, for example the level editor is not ported&lt;br /&gt;
        yet.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The game is included as an example on the main page of&lt;br /&gt;
        Emscripten. [https://github.com/forandom/WebSupertux Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro7&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Vilson Vieira da Silva Junior&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Meemoo Improvements.&#039;&#039;&#039; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;The&lt;br /&gt;
        task is to&amp;lt;/span&amp;gt; improve the hackable web apps framework: Meemoo.&lt;br /&gt;
        One aim was to create a way to easily build new Meemoo modules using&lt;br /&gt;
        a live code and collaborative editor.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The live code editor was created, as well as other improvements&lt;br /&gt;
        inside Meemoo like new modules for drawing, generating 3D shapes,&lt;br /&gt;
        hacking with threejs, transmitting data between two or more Meemoo&lt;br /&gt;
        users using Meteor, and initial modules for audio synthesis using the&lt;br /&gt;
        Web Audio API and Audio Data API.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The first version of the editor is finished. It is online at&lt;br /&gt;
        [http://li7e.org/ http://li7e.org]. The other modules&lt;br /&gt;
        with examples of their use are listed in the [http://meemoo.org/hack-our-apps/ Meemoo Gallery]. [https://wiki.mozilla.org/SummerOfCode/2012/Meemoo#Summary_of_contributions Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Jeremy Banks&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Slide Drive Improvements.&#039;&#039;&#039; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;The task is&amp;lt;/span&amp;gt; to prototype a pure browser-based slideshow&lt;br /&gt;
        package that would let people mix graphics and text the way they do&lt;br /&gt;
        in desktop slideshow tools, and integrate with HTML5 media APIs to do&lt;br /&gt;
        narration.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Enough was built to show that the idea is a good one, but the&lt;br /&gt;
        infrastructure needed isn&#039;t there yet. In particular, SVG&lt;br /&gt;
        isn&#039;t nearly as robust, or as well integrated into modern browsers,&lt;br /&gt;
        as was hoped.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;The prototype is up on GitHub. [https://github.com/jeremybanks/slide-drive Code].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro6&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Nguyen Ngoc Trung&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Thunderbird: App Tabs.&amp;lt;/b&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;The task is to implement&lt;br /&gt;
        support for App Tabs in&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;Thunderbird.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Several work-in-progress patches were posted.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;There are patches on the bug but no work has been done for several&lt;br /&gt;
        months. [https://bugzilla.mozilla.org/show_bug.cgi?id=761727 Bug].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro8&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Marco Castelluccio&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce3 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&#039;&#039;&#039;Native Webapps Support on Linux.&#039;&#039;&#039;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;The Native Webapps feature in Firefox&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;permits a webapp to be installed in the OS and&lt;br /&gt;
        launched as a separate process in a&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;standalone window and environment. Currently this support exists&lt;br /&gt;
        for Windows&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;and OSX, and the goal of this&lt;br /&gt;
        project is to bring the same support for Linux&amp;lt;/span&amp;gt; &amp;lt;span class=&lt;br /&gt;
        &amp;quot;T2&amp;quot;&amp;gt;desktop, specifically for Gnome.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Much work was done on our native webapps support, although the&lt;br /&gt;
        newness of that code meant that much of the time was spent fixing&lt;br /&gt;
        cross-platform problems.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Native web apps are now supported on Linux, although native web&lt;br /&gt;
        apps on desktop in general are now on the back burner for a&lt;br /&gt;
        while. Code is in mozilla-central.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;tr class=&amp;quot;ro4&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Matthew Ramir&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce1 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;OpenBadges Back End Improvements.&amp;lt;/b&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;The task turned&lt;br /&gt;
        out to be to add&amp;lt;/span&amp;gt; &amp;lt;span class=&amp;quot;T2&amp;quot;&amp;gt;accessibility features to&lt;br /&gt;
        the OpenBadges website.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Parts of the openbadges.org website were made accessible.&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;td class=&amp;quot;ce2 c2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Fixes are in the current openbadges.org.codebase. [https://github.com/crasx/openbadges.org Code], [https://github.com/mozilla/openbadges project codebase].&amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462436</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462436"/>
		<updated>2012-08-20T17:54:13Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Summary of contributions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to work more inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the [https://etherpad.mozilla.org/Aug07 WebMakers call] and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed me about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we can use OSC inside Meemoo by running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor (after some fixes in the CodeMirror integration with ShareJS) it is online at http://li7e.org. I sent the [https://github.com/josephg/ShareJS/pull/119 fix] to ShareJS too. The source of &amp;quot;LI7E&amp;quot; (&amp;quot;LIVE&amp;quot; with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on LI7E and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork if you desire: http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to [https://etherpad.mozilla.org/Aug14 WebMakers call today] and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos I created/pushed.&lt;br /&gt;
&lt;br /&gt;
UPDATE: I made better meemoo-intro modules, worked on edge&#039;s events for (dis)connection (this is useful for Seriously nodes and audio nodes because we need to connect and disconnect them in their own &#039;DSP&#039; graphs) and implemented detach mode on iframe node boxes. Taking notes about contributions I did this summer (winter ;-)). Talking with my mentor about the next steps. Meemoo hacking must continue! ;-)&lt;br /&gt;
&lt;br /&gt;
== Summary of contributions ==&lt;br /&gt;
&lt;br /&gt;
Listing here almost all the contributions I did this summer. Repositories touched:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/iframework Meemoo iframework]&lt;br /&gt;
** Meemoo main repos (gh-pages officially online at http://meemoo.org/iframework). Created initial MIDI support, detach mode on nodes, started audio native nodes based on Web Audio API, events history for undo actions and so on.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/li7e LI7E]&lt;br /&gt;
** Collaborative module creator. Main goal of the original proposal. An editor based on ShareJS and CodeMirror to create new iframe modules and use inside Meemoo. Online at http://li7e.org. Meemoo apps using [http://li7e.org/paperjs/edit modules created] in LI7E are available [http://meemoo.org/iframework/#gist/3345317 here] and [http://meemoo.org/iframework/#gist/3345422 here]&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/ShareJS ShareJS]&lt;br /&gt;
** LI7E uses this JS lib to state sharing and [http://en.wikipedia.org/wiki/Operational_transformation OT]. Sent a patch to integration of CodeMirror with ShareJS.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo.github.com meemoo.github.com]&lt;br /&gt;
** Created an apps gallery. Online at http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-intro meemoo-intro]&lt;br /&gt;
** An interactive guide to Meemoo (as an app). Now it is the default app on http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-modules meemoo-modules]&lt;br /&gt;
** A fork of Forrest&#039;s one. I did some modules (and, audio-oscillator, audio-output, lived, console, evaluator, if-bang, sliders)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-tunnel meemoo-tunnel]&lt;br /&gt;
** A [http://meteor.com Meteor] app to share state between concurrent iframeworks. A demo [http://meemoo.org/iframework/#gist/3209721 here] (tip: open two or more apps and change color sliders).&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-webbeeper meemoo-webbeeper]&lt;br /&gt;
** Created a module for [http://g200kg.com/ g200kg&#039;s] webbeeper synth (with MIDI like message support)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-webmodular meemoo-webmodular]&lt;br /&gt;
** Created a module for [http://g200kg.com/ g200kg&#039;s] webmodular synth (with MIDI like message support). A demo [http://meemoo.org/iframework/#gist/3208230 here] (tip: press play!).&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-liveeditor meemoo-liveeditor]&lt;br /&gt;
** I started LI7E as an Meteor app, but I changed my plans to use ShareJS along the way (and now, after I knew Moz TowTruck, maybe I&#039;ll change for Etherpad Lite in a near future). However, it is an interesting example on how to code a distributed app using Meteor.&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-supershape.js meemoo-supershape.js]&lt;br /&gt;
** Created a module for Supershape.js. That crazy shapes you saw on this [http://meemoo.org/iframework/#gist/3345422 demo].&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/meemoo-harmony meemoo-harmony]&lt;br /&gt;
** A module for mr.doob&#039;s harmony, a drawing tool. A demo [http://meemoo.org/iframework/#gist/2959806 here] and a more crazy one [http://meemoo.org/iframework/#gist/3338251 here] ;-)&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/automata/friendlycode friendlycode] and [https://github.com/automata/webpagemaker webpagemaker]&lt;br /&gt;
** Moz Friendlycode and webpagemaker were fundamental for LI7E. I&#039;m in touch with Atul Varma (@toolness) and I hope to continue collaborating with him.&lt;br /&gt;
&lt;br /&gt;
I wrote a [https://etherpad.mozilla.org/meemoo2012 daily] and weekly report (this wiki page) as part of documentation and created other demo apps. Those apps were posted on our [http://facebook.com/meemooapp Meemoo FB page]. There are some [https://github.com/meemoo/iframework/issues issues] and [https://github.com/meemoo/iframework/wiki wiki pages] on github of iframework and [https://github.com/automata/li7e/issues?state=open LI7E] as well.&lt;br /&gt;
&lt;br /&gt;
The end of GSoC is not the end of my participation on this projects. I&#039;m going to collaborate in Meemoo dev (together with Forrest) and looking forward to help Thimble (together with @toolness) and continue the dev on LI7E and other Meemoo modules as well. &lt;br /&gt;
&lt;br /&gt;
Let&#039;s keep hacking!&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462303</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462303"/>
		<updated>2012-08-20T14:02:09Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* More information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to work more inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the [https://etherpad.mozilla.org/Aug07 WebMakers call] and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed me about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we can use OSC inside Meemoo by running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor (after some fixes in the CodeMirror integration with ShareJS) it is online at http://li7e.org. I sent the [https://github.com/josephg/ShareJS/pull/119 fix] to ShareJS too. The source of &amp;quot;LI7E&amp;quot; (&amp;quot;LIVE&amp;quot; with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on LI7E and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork if you desire: http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to [https://etherpad.mozilla.org/Aug14 WebMakers call today] and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos I created/pushed.&lt;br /&gt;
&lt;br /&gt;
UPDATE: I made better meemoo-intro modules, worked on edge&#039;s events for (dis)connection (this is useful for Seriously nodes and audio nodes because we need to connect and disconnect them in their own &#039;DSP&#039; graphs) and implemented detach mode on iframe node boxes. Taking notes about contributions I did this summer (winter ;-)). Talking with my mentor about the next steps. Meemoo hacking must continue! ;-)&lt;br /&gt;
&lt;br /&gt;
== Summary of contributions ==&lt;br /&gt;
&lt;br /&gt;
Trying to list here all the contributions I did this summer. &lt;br /&gt;
&lt;br /&gt;
Repositories touched:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462300</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=462300"/>
		<updated>2012-08-20T13:59:45Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 17: (Aug 14 - Aug 20) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to work more inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the [https://etherpad.mozilla.org/Aug07 WebMakers call] and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed me about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we can use OSC inside Meemoo by running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor (after some fixes in the CodeMirror integration with ShareJS) it is online at http://li7e.org. I sent the [https://github.com/josephg/ShareJS/pull/119 fix] to ShareJS too. The source of &amp;quot;LI7E&amp;quot; (&amp;quot;LIVE&amp;quot; with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on LI7E and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork if you desire: http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to [https://etherpad.mozilla.org/Aug14 WebMakers call today] and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos I created/pushed.&lt;br /&gt;
&lt;br /&gt;
UPDATE: I made better meemoo-intro modules, worked on edge&#039;s events for (dis)connection (this is useful for Seriously nodes and audio nodes because we need to connect and disconnect them in their own &#039;DSP&#039; graphs) and implemented detach mode on iframe node boxes. Taking notes about contributions I did this summer (winter ;-)). Talking with my mentor about the next steps. Meemoo hacking must continue! ;-)&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460860</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460860"/>
		<updated>2012-08-14T17:50:33Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 17: (Aug 14 - Aug 20) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to work more inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the [https://etherpad.mozilla.org/Aug07 WebMakers call] and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed me about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we can use OSC inside Meemoo by running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor (after some fixes in the CodeMirror integration with ShareJS) it is online at http://li7e.org. I sent the [https://github.com/josephg/ShareJS/pull/119 fix] to ShareJS too. The source of &amp;quot;LI7E&amp;quot; (&amp;quot;LIVE&amp;quot; with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on LI7E and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork if you desire: http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to [https://etherpad.mozilla.org/Aug14 WebMakers call today] and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos I created/pushed.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460859</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460859"/>
		<updated>2012-08-14T17:49:23Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 16: (Aug 7 - Aug 13) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to work more inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the [https://etherpad.mozilla.org/Aug07 WebMakers call] and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed me about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we can use OSC inside Meemoo by running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor (after some fixes in the CodeMirror integration with ShareJS) it is online at http://li7e.org. I sent the [https://github.com/josephg/ShareJS/pull/119 fix] to ShareJS too. The source of &amp;quot;LI7E&amp;quot; (&amp;quot;LIVE&amp;quot; with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on LI7E and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork if you desire: http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to WebMakers call today and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos created/pushed.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460851</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460851"/>
		<updated>2012-08-14T17:41:34Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 16: (Aug 7 - Aug 13) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as a &#039;12-weeks project&#039; but as a start to more work inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the WebMakers call and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we use OSC inside Meemoo running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor, after some fixes in the CodeMirror integration with ShareJS, it is online at http://li7e.org. I sent the fix to ShareJS too. The code of &amp;quot;li7e&amp;quot; (liVe with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on li7e and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to WebMakers call today and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos created/pushed.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460850</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460850"/>
		<updated>2012-08-14T17:39:10Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 15: (Jul 31 - Aug 6) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a [https://bugzilla.mozilla.org/show_bug.cgi?id=779297 watching bug] making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as 12-weeks projects but as a start to more work inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the WebMakers call and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we use OSC inside Meemoo running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor, after some fixes in the CodeMirror integration with ShareJS, it is online at http://li7e.org. I sent the fix to ShareJS too. The code of &amp;quot;li7e&amp;quot; (liVe with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on li7e and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to WebMakers call today and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos created/pushed.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460808</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=460808"/>
		<updated>2012-08-14T16:33:58Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 15: (Jul 31 - Aug 6) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that in various tabs and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel. The point is simple but opens lots of possibilities: someone using the meemoo-tunnel can send data for other remote iframeworks using meemoo-tunnel as well. We can create, for example, a 20-channel audio synth (one channel per computer) controlled by all the participants, or a visual projection controlled remotely by someone&#039;s mobile device!&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node using ShareJS instead of Meteor. ShareJS is more interesting for my approach because I only need to share text changes done in a CodeMirror editor. I don&#039;t want the entire application state being shared. Maybe we can go for Etherpad Lite in a near future, but I&#039;m happy with ShareJS for now.&lt;br /&gt;
&lt;br /&gt;
About the audio nodes, we decided to use Web Audio API in Chrome and Audiolet in Firefox. I talked with Robert O&#039;Callahan and he created a {{watching bug|779297}} making possible to follow Moz progress in implementing Web Audio API in Firefox. Hoping to help the media team as much as possible in the following months. Matt Diamond created an [https://github.com/h5bp/lazyweb-requests/issues/82 awesome thread] about a possible standard to interchange Web Audio API based apps. A nice find to us because we are thinking about ways to standardize those apps inside Meemoo and [http://www.g200kg.com MIDI] [http://github.com/automata/meemoo-webmodular support too].&lt;br /&gt;
&lt;br /&gt;
And thanks to the incredible work of Forrest the [https://github.com/meemoo/iframework/tree/master/src/nodes native nodes works]! YEY! I&#039;m studying them and learning a lot!&lt;br /&gt;
&lt;br /&gt;
At the end of week Pomax and Atul (THANKS!) fixed [https://github.com/mozilla/webpagemaker/issues/485 #485] in webpagemaker (Moz Thimble). Now we can use pages created in Thimble inside iframes and then inside Meemoo. I started talking with Atul about the possibility of JS editing inside Thimble.&lt;br /&gt;
&lt;br /&gt;
I also created another module, the [http://github.com/automata/meemoo-intro meemoo-intro]. The app is here: http://meemoo.org/iframework/#gist/3282702 (UPDATE: now Forrest made it the default Meemoo app, yey!). It is an interactive guide to Meemoo newcomers. We have to work a lot on that to explains Meemoo as much as possible. Oh, yes, I used popcorn.js for that, it is awesome!&lt;br /&gt;
&lt;br /&gt;
==== Week 16: (Aug 7 - Aug 13) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  7 - August 13 (1 week): refactoring and fixing the code of&lt;br /&gt;
    iframework, meemoo.js, meemoo-modules and Meemoo modules server,&lt;br /&gt;
    finishing and styling the documentation. Creating example apps using the&lt;br /&gt;
    new modules and commiting the last updates into Meemoo repositories.&lt;br /&gt;
    Final review with my mentor and the  community before the &amp;quot;pencils-down&amp;quot;&lt;br /&gt;
    date.&lt;br /&gt;
&lt;br /&gt;
I have lots of works yet! I&#039;m pushing code reviewing for the next week. I don&#039;t see GSoC as 12-weeks projects but as a start to more work inside Meemoo and Mozilla projects like Thimble/WebMaker. In this way my priorities are in hacking as much as possible the modules I created, the code editor and iframework, and them report my entire progress and do code review in the next week.&lt;br /&gt;
&lt;br /&gt;
I participated in the WebMakers call and Forrest presented the meemoo-intro app! Thanks Fo! http://meemoo.org/iframework/#gist/3282702&lt;br /&gt;
&lt;br /&gt;
This week some guys (@janesconference and @thealphanerd -&amp;gt; he is also a GSoCer! Small world!) mailed about [http://github.com/automata/osc-web osc-web] and we talked about a way to make it a standard and use it inside Meemoo. For now, we use OSC inside Meemoo running a local nodejs server as a &#039;bridge&#039; between OSC and HTTP. Forrest suggested to use a Java applet (like midibridge does) and I&#039;m thinking about that.&lt;br /&gt;
&lt;br /&gt;
About the editor, after some fixes in the CodeMirror integration with ShareJS, it is online at http://li7e.org. I sent the fix to ShareJS too. The code of &amp;quot;li7e&amp;quot; (liVe with a rotated V ;-)) is on http://github.com/automata/li7e. Planning to test some things on li7e and them suggest them to Atul to have that in Thimble!&lt;br /&gt;
&lt;br /&gt;
So, now we can create a new Meemoo module inside our own browsers! The steps are something like:&lt;br /&gt;
* copy some code and paste in the editor: http://li7e.org/paperjs/edit&lt;br /&gt;
* hack the code to include Meemoo and get something to send (or receive)&lt;br /&gt;
* copy the url and paste in the &#039;add module&#039; menu: http://li7e.org/paperjs&lt;br /&gt;
* share your app: http://meemoo.org/iframework/#gist/3345317&lt;br /&gt;
* and fork http://meemoo.org/iframework/#gist/3345422 :-)&lt;br /&gt;
&lt;br /&gt;
I started the audio nodes based in Chris Wilson&#039;s [https://github.com/cwilso/WebAudio/blob/master/js/main.js Web Audio API playground]. Created some simple nodes in my branch &#039;audio&#039;: https://github.com/automata/iframework/blob/audio/src/nodes/audio.js.&lt;br /&gt;
&lt;br /&gt;
Created the apps gallery in meemoo.org:  http://meemoo.org/hack-our-apps/&lt;br /&gt;
&lt;br /&gt;
==== Week 17: (Aug 14 - Aug 20) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    August  14 - August 19 (some days): last days to do minor fixes and&lt;br /&gt;
    stay in contact as much as possible with my mentor to polish the project.&lt;br /&gt;
&lt;br /&gt;
Attended to WebMakers call today and was presented to TowTruck from Moz Labs: http://vimeo.com/36754286. It is awesome! It is so close of the editor (LI7E) we are creating for collaborative coding! I&#039;ll try to talk more with Atul about that.&lt;br /&gt;
&lt;br /&gt;
For this week: Web Audio API native nodes, better meemoo-intro, documentation and code review of all the repos created/pushed.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=459036</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=459036"/>
		<updated>2012-08-08T01:18:14Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 15: (Jul 31 - Aug 6) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that on more than one tab and change the slider! The module: http://meemoo-tunnel.meteor.com and its source: http://github.com/automata/meemoo-tunnel.&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node and trying to help Forrest in native nodes (waiting to get my hands on audio nodes again!). I&#039;ll try to add properly MIDI support too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456200</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456200"/>
		<updated>2012-07-30T21:10:51Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 15: (Jul 31 - Aug 6) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients. A first version is online at http://meemoo.org/iframework/#gist/3209721. Just open that on more than one tab and change the slider! The module: http://tunnel.meteor.com and its source: http://github.com/automata/tunnel.&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node and trying to help Forrest in native nodes (waiting to get my hands on audio nodes again!). I&#039;ll try to add properly MIDI support too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456012</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456012"/>
		<updated>2012-07-30T16:58:55Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 14: (Jul 24 - Jul 30) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
I contacted Carols from Google for support to go to FISL but unfortunately I could not go to Porto Alegre :-(&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients.&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node and trying to help Forrest in native nodes.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456003</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=456003"/>
		<updated>2012-07-30T16:53:28Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
==== Week 12: (Jul 10 - Jul 16) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  9 - July 13 (4 days): submitting the project for mid-term evaluation,&lt;br /&gt;
    talking with my mentor about the current results and discussing what &lt;br /&gt;
    should be changed.&lt;br /&gt;
&lt;br /&gt;
I wrote the mid-term evaluation and passed!&lt;br /&gt;
    &lt;br /&gt;
This week I started getting in trouble with Meteor. URL routing wasn&#039;t implemented yet and I had to do it by hand using Backbone Routing. It is working now.&lt;br /&gt;
&lt;br /&gt;
I deployed the app at http://liveeditor.meteor.com and the source at http://github.com/automata/meemoo-liveeditor&lt;br /&gt;
&lt;br /&gt;
We decided to have two views for each module: &amp;quot;edit&amp;quot; and &amp;quot;module&amp;quot;. User could then change between the two views. I planned to use http://liveeditor.meteor.com/foo/edit and http://liveeditor.meteor.com/foo/module to have both modes for the &amp;quot;foo&amp;quot; module.&lt;br /&gt;
&lt;br /&gt;
I continued working on three fronts: &#039;&#039;the editor&#039;&#039;, &#039;&#039;the audio nodes&#039;&#039; and &#039;&#039;hacking new modules&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
We noticed Ward Cunningham &amp;quot;Federated Wiki&amp;quot; was similar with Meemoo approach but focusing on &amp;quot;distributed wikis&amp;quot; instead of &amp;quot;hackable apps&amp;quot;. Maybe we can work together soon!&lt;br /&gt;
&lt;br /&gt;
==== Week 13: (Jul 17 - Jul 23) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July  14 - July 23 (more than a week): continue creating new modules: an&lt;br /&gt;
    audio  synthesizer (like [3]), a video mixer (inspired by Forrest thesis&lt;br /&gt;
    on Meemoo), a tone matrix clone [4] and a simple din clone [5]&lt;br /&gt;
&lt;br /&gt;
My choice for Meteor was based on the easy to develop a WebSocket based collaborative editor that could update the generated HTML inside a module automatically. Unfortunately Meteor reveals not a good option to &amp;quot;non-standard&amp;quot; Webby things like I&#039;m doing: an Etherpad-like editor. I decided to go with another approach: implementing the whole WebSocket thing by hand. The frontend is almost done, so it is not a big problem but I&#039;ll need to study things like patching and WebSockets.&lt;br /&gt;
&lt;br /&gt;
In the modules front we got in touch with Japanese community of audio synth g200kg. The guys created amazing synths and I created two new modules to have them inside Meemoo:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/automata/meemoo-webmodular&lt;br /&gt;
* http://github.com/automata/meemoo-webbeeper&lt;br /&gt;
&lt;br /&gt;
Demos apps are here:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168087&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3168177&lt;br /&gt;
&lt;br /&gt;
We even have Beethoven&#039;s Moonlight Sonata in Meemoo :-D&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3208230&lt;br /&gt;
&lt;br /&gt;
Both modules communicates using MIDI-like messages. Soon I&#039;ll implement a better MIDI type for Meemoo, respecting the draft spec from Jussi and Chris from W3C Audio WG. For now we are using MIDI messages similar of g200kg&#039;s WebMIDILink: http://www.g200kg.com/en/docs/webmidilink/spec.html.&lt;br /&gt;
&lt;br /&gt;
I was not totally OK with the original proposal. I have to write some other modules but I&#039;m in touch with Forrest to hack priority ones first.&lt;br /&gt;
&lt;br /&gt;
==== Week 14: (Jul 24 - Jul 30) ====&lt;br /&gt;
&lt;br /&gt;
Originally Proposed:&lt;br /&gt;
&lt;br /&gt;
    July  24 - August 6 (two weeks): working on iframework to improve its UX, &lt;br /&gt;
    creating a theme system and zoom/panning functionalities based on ThreeNode.js.&lt;br /&gt;
&lt;br /&gt;
This will have to wait. I passed this week studying Meteor, share.js, Node.js and WebSockets and comparing them. I still tried to implement the editor in Meteor but failed.&lt;br /&gt;
&lt;br /&gt;
==== Week 15: (Jul 31 - Aug 6) ====&lt;br /&gt;
&lt;br /&gt;
Starting a countdown to &#039;&#039;pencils down date&#039;&#039;!&lt;br /&gt;
&lt;br /&gt;
This week we are working on a Meteor module to share state between multiple connected clients.&lt;br /&gt;
&lt;br /&gt;
In the editor front I&#039;m implementing the editor in Node and trying to help Forrest in native nodes.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=447798</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=447798"/>
		<updated>2012-07-05T15:20:04Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 11: (Jul 3 - Jul 9) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
Thinking together with Forrest about ideas for more Mozilla Webmakers projects like https://wiki.mozilla.org/Webmakers/Projects/MeemooClock-DIY&lt;br /&gt;
&lt;br /&gt;
* How to create your own GIF?&lt;br /&gt;
* How to create crazy 3D shapes?&lt;br /&gt;
* How to create your meme and publish on Facebook?&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=447791</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=447791"/>
		<updated>2012-07-05T15:09:00Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Updates from Jun 12 to Jul 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too. UPDATE: the audio nodes is dependant of native nodes and we have lots of work before touching the media nodes&lt;br /&gt;
&lt;br /&gt;
I discussed with Forrest and we are concentrating on native nodes for now. I have started a Meteor app to use as an external live code editor while we don&#039;t have native nodes. I&#039;m testing how to update the whole iframe every time we change the Meteor editor. When we got native nodes, we are planning to use Meteor to make the whole iframework collaborative, but it is not possible now.&lt;br /&gt;
&lt;br /&gt;
    Forrest: I think we should experiment with just modules for now, because I&#039;m &lt;br /&gt;
    guessing it will take a bigger rewrite to make iframework work with it. &lt;br /&gt;
    I like the idea of different apps on different systems feeding &lt;br /&gt;
    images/sounds/data into the same meteor module.&lt;br /&gt;
    &lt;br /&gt;
    Vilson: OK! So a version of the editor in meteor...&lt;br /&gt;
&lt;br /&gt;
Forrest integrated Grunt, so now we can start doing tests and the deploying is much easier. &lt;br /&gt;
&lt;br /&gt;
We also started to think more seriously about an integration with Google Blockly, like a module to do logic operations. I&#039;m planning a Blockly mode for the live code editor to edit JavaScript.&lt;br /&gt;
&lt;br /&gt;
==== Week 9: (Jun 19 - Jun 25) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 19 - June 25 (1 week): creating a Web server based on Django or node.js &lt;br /&gt;
    to store modules created by everyone. Every module is refered by its URL in &lt;br /&gt;
    Meemoo, which makes the server design simple.&lt;br /&gt;
&lt;br /&gt;
Forrest worked on local storage and we are using Gist to store public apps. So, for now we don&#039;t need a server. Maybe this will come with the Meteor &amp;quot;backend&amp;quot;. We had a big push to iframework repos with all those features. Meemoo is rocking! :-D&lt;br /&gt;
&lt;br /&gt;
In this way I got this week to continue the work on the editor and created a module for mr.doob&#039;s Harmony: http://meemoo.org/iframework/#gist/2959806 and we are having fun :-) &lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/So1ik.gif&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-snc7/c9.0.403.403/p403x403/601267_323131427772915_595524936_n.jpg&lt;br /&gt;
http://a4.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.337.337/p403x403/550432_323079607778097_1216176047_n.jpg&lt;br /&gt;
http://a7.sphotos.ak.fbcdn.net/hphotos-ak-ash3/c9.0.403.403/p403x403/552783_323134351105956_963782996_n.jpg&lt;br /&gt;
&lt;br /&gt;
Some ideas for the live editor UI from http://codepen.io:&lt;br /&gt;
&lt;br /&gt;
    Vilson: Lots of good ideas from codepen. I think we can use the live editor &lt;br /&gt;
    for lots of other projects too. Thinking on a editor to use &amp;quot;creative coding&amp;quot; &lt;br /&gt;
    libs like three.js, paper.js or audiolet.&lt;br /&gt;
&lt;br /&gt;
We are using the Facebook page of Meemoo to post some updates, together with Twitter: http://facebook.com/meemooapp&lt;br /&gt;
&lt;br /&gt;
==== Week 10: (Jun 26 - Jul 2) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 26 - July 2 (1 week): beginning creating new modules inside the editor: &lt;br /&gt;
    a processing.js edit-and-run module, an event sequencer and an audio sampler &lt;br /&gt;
   (based on Audiolet&#039;s BufferPlayer, using Mozilla&#039;s Audio Data API).&lt;br /&gt;
&lt;br /&gt;
The whole media nodes, including audio, are dependant of native nodes. So we are delaying this. I&#039;m creating another modules like meemoo-supershape.js as iframe nodes. &lt;br /&gt;
&lt;br /&gt;
Forrest created math evaluation nodes! And now we can have cool animations like these:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3002307&lt;br /&gt;
* http://meemoo.org/iframework/#gist/3018598&lt;br /&gt;
&lt;br /&gt;
And we continue having lots of fun :-D&lt;br /&gt;
&lt;br /&gt;
http://a8.sphotos.ak.fbcdn.net/hphotos-ak-prn1/c0.0.403.403/p403x403/548607_326966247389433_427146130_n.jpg&lt;br /&gt;
http://i.imgur.com/jYDuh.gif &lt;br /&gt;
http://i.imgur.com/B67r2.gif&lt;br /&gt;
http://i.imgur.com/sDIz0.gif&lt;br /&gt;
http://i.imgur.com/TcO6N.png&lt;br /&gt;
http://i.imgur.com/Ch1PD.png&lt;br /&gt;
http://i.imgur.com/JR5Zl.png&lt;br /&gt;
http://i.imgur.com/hWdVl.png&lt;br /&gt;
&lt;br /&gt;
I changed my priorities for:&lt;br /&gt;
&lt;br /&gt;
# live code editor as meteor app&lt;br /&gt;
# native nodes&lt;br /&gt;
# audio nodes using web audio api&lt;br /&gt;
# app view as &amp;quot;show only this node&amp;quot;&lt;br /&gt;
# fullscreen view as &amp;quot;show only this node in fs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Discussed with Forrest about app view and for now we are thinking on a button to hide the whole app but the current module.&lt;br /&gt;
&lt;br /&gt;
Taking some inspiration from https://github.com/sullerandras/collaborative-html-editor-with-meteor to the live code editor refresh iframe thing.&lt;br /&gt;
&lt;br /&gt;
Forrest wrote about his progress on June: http://meemoo.org/blog/2012-06-27-nearing-beta/&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/nLFKo.gif&lt;br /&gt;
http://i.imgur.com/y2GKs.gif&lt;br /&gt;
&lt;br /&gt;
I&#039;ll post mine soon.&lt;br /&gt;
&lt;br /&gt;
==== Week 11: (Jul 3 - Jul 9) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    July 3 - July 9 (1 week): testing to ensure that the editor perfectly works &lt;br /&gt;
    before the mid-term evaluations, asking for feedback from my mentor and the &lt;br /&gt;
    community.&lt;br /&gt;
&lt;br /&gt;
I have the editor almost done! I&#039;ll deploy on meteor.com soon and start testing this weekend!&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440249</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440249"/>
		<updated>2012-06-12T13:57:06Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Before GSoC period */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-)&lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440241</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440241"/>
		<updated>2012-06-12T13:48:28Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* Week 1 (Apr 23 - Apr 30) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to integrate to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-) &lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [http://i.imgur.com/VPy35.png] and [http://i.imgur.com/Dllre.png].&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440239</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440239"/>
		<updated>2012-06-12T13:47:15Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: /* = Week 8: (Jun 12 - Jun 18) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to integrate to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-) &lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [[http://i.imgur.com/VPy35.png]] and [[http://i.imgur.com/Dllre.png]]&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ====&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440237</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440237"/>
		<updated>2012-06-12T13:45:44Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to integrate to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-) &lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: [[http://i.imgur.com/VPy35.png]] and [[http://i.imgur.com/Dllre.png]]&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from audio tags. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from audio and video tags sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ===&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440236</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=440236"/>
		<updated>2012-06-12T13:43:38Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== Weekly Report ==&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012. Here is a resume of those activities week by week.&lt;br /&gt;
&lt;br /&gt;
=== Before GSoC period ===&lt;br /&gt;
&lt;br /&gt;
My first contact with Meemoo was by Alex McLean, who presented Meemoo as an interesting livecoding environment on Web. This was around middle of March and after some days I knew Meemoo was part of Moz GSoC.&lt;br /&gt;
&lt;br /&gt;
At March 29 through April 23 I was in contact with Forrest. First of all I created a hello-world module (now we are calling this external modules by &amp;quot;NodeBox-Iframe&amp;quot;) to understand how modules communicates inside Meemoo. I was surprised how easy was that! This first contact with Meemoo generated this tutorial: https://github.com/meemoo/iframework/wiki/Creating-a-Module.&lt;br /&gt;
&lt;br /&gt;
I was amazed with Meemoo and started to write my proposal to Moz GSoC. I read about Moz focus on &amp;quot;creating webmakers&amp;quot; by Mark Surman, Dave Humphrey and others mozillians, so I wanted to integrate to join the initiative, and Meemoo seems to be an amazing tool around that. In this meantime I studied Backbone.js, window.postMessage and all the Meemoo&#039;s architecture: iframework (the environment) and meemoo.js (the embeddable module lib).&lt;br /&gt;
&lt;br /&gt;
In this period I reported some issues on iframework and created a bunch of simple modules and apps:&lt;br /&gt;
&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248496&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2248582&lt;br /&gt;
* http://meemoo.org/iframework/#gist/2306646&lt;br /&gt;
&lt;br /&gt;
I also fixed an issue around actions history:&lt;br /&gt;
&lt;br /&gt;
* http://github.com/meemoo/iframework/issues/24&lt;br /&gt;
&lt;br /&gt;
And at April 23 I was crossing my fingers :-) &lt;br /&gt;
&lt;br /&gt;
=== Community bonding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 1 (Apr 23 - Apr 30) ====&lt;br /&gt;
&lt;br /&gt;
For this period I originally proposed:&lt;br /&gt;
&lt;br /&gt;
    April 23 - May 21 (4 weeks): discussing with my mentor about the exact features and &lt;br /&gt;
    means of implementation around Meemoo, syncing with my mentor works and doing &lt;br /&gt;
    some prototypes.&lt;br /&gt;
&lt;br /&gt;
I started thinking about the live code editor (how to implement that? as a module? how to evaluate the generated code?) and decided to go with an iframe editor using Ace: http://i.imgur.com/VPy35.png and http://i.imgur.com/Dllre.png&lt;br /&gt;
&lt;br /&gt;
==== Week 2 (May 1 - May 7) ====&lt;br /&gt;
&lt;br /&gt;
I discussed some ideas around the live code editor with Forrest and at the end of week Forrest pointed me to Meteor. I studied Meteor planning to use it to make the live code editor collaborative. And with Forrest we planned to use Meteor as a way to make the whole Meemoo (iframework) collaborative! I created a test app using Meteor and feel surprised. I just didn&#039;t liked all the magic needed to generate DOM, but we can use something in the middle to make the &amp;quot;view source&amp;quot; work.&lt;br /&gt;
&lt;br /&gt;
==== Week 3 (May 8 - May 14) ====&lt;br /&gt;
&lt;br /&gt;
Renato Fabbri invited me to use Meemoo on &amp;quot;Cúpula dos Povos&amp;quot; at &amp;quot;Rio+20&amp;quot; conference, here in Brazil. I planned to create some modules to do photo sequencing and 3D forms synthesis based on parameters extracted from &amp;lt;audio&amp;gt;. I started creating a supershape.js module: http://meemoo.org/iframework/#/gist/2644999&lt;br /&gt;
&lt;br /&gt;
Forrest pointed me to toolness&#039; friendlycode (now the editor behind Moz Thimble) and I got some ideas for the live code editor (mainly the tips thing).&lt;br /&gt;
&lt;br /&gt;
I started to plan how to use the audio APIs (Web Audio, Audio Data, MediaStream) in a compatible manner inside Meemoo. I decided to create a Web Audio API module.&lt;br /&gt;
&lt;br /&gt;
We discovered RecursiveDrawing.com and some ideas exploded :-)&lt;br /&gt;
&lt;br /&gt;
Jussi pointed me to his mike.js (https://github.com/jussi-kalliokoski/mike.js) to get raw data from mic while the W3C Audio spec isn&#039;t defined.&lt;br /&gt;
&lt;br /&gt;
==== Week 4 (May 15 - May 21) ====&lt;br /&gt;
&lt;br /&gt;
We were getting more and more ideas for apps and modules so we decided to store everything here: &lt;br /&gt;
&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Module-ideas&lt;br /&gt;
* https://github.com/meemoo/iframework/wiki/Share-your-apps&lt;br /&gt;
&lt;br /&gt;
Forrest was working at Hackable Clock app to Moz Summer of Code Party meeting (https://etherpad.mozilla.org/May22 ) and I forked the app with some audio thing: http://meemoo.org/iframework/#gist/2765356 ;-)&lt;br /&gt;
&lt;br /&gt;
I also started to study the Web Audio API (https://gist.github.com/2728285)&lt;br /&gt;
&lt;br /&gt;
Forrest started to design the Native Nodes for iframework and it make my ideas to change a bit. I decided to make the live code editor and the audio nodes as native nodes.&lt;br /&gt;
&lt;br /&gt;
=== Coding period ===&lt;br /&gt;
&lt;br /&gt;
==== Week 5 (May 22 - May 28) ====&lt;br /&gt;
&lt;br /&gt;
Talked with Joe, the creator of Audiolet, about Web Audio API integration and he gave me some good ideas. But I still need to understand how to use the native Web Audio nodes instead of JavaScriptAudioNode.&lt;br /&gt;
&lt;br /&gt;
Forrest presented Meemoo as a demo day at his University and meet Sebastian, the creator of an awesome WebPd fork!&lt;br /&gt;
&lt;br /&gt;
For this week I originally proposed for GSoC:&lt;br /&gt;
&lt;br /&gt;
    May 22 - May 28 (1 week): fixing the remaining bugs on iframework and meemoo.js, &lt;br /&gt;
    getting them ready to work on the live code editor.&lt;br /&gt;
&lt;br /&gt;
But Forrest was working on a refactoring, so I delayed the work on iframework and focused on the live code editor and audio nodes. I thought a lot about them and I decided:&lt;br /&gt;
&lt;br /&gt;
* Having the live code editor as a friendlycode fork (livecode branch) and as a native node invoked by &amp;quot;view source&amp;quot; and &amp;quot;create new module&amp;quot; events inside iframework&lt;br /&gt;
* Having the audio nodes using Web Audio API or Audiolet (selected by browser type, for now) and as native nodes. As we got more resolution from W3C Audio spec we can remove the specific code&lt;br /&gt;
&lt;br /&gt;
==== Week 6 (May 29 - Jun 4) ====&lt;br /&gt;
&lt;br /&gt;
For the next two weeks I proposed:&lt;br /&gt;
&lt;br /&gt;
    May 29 - June 11 (2 weeks): extending iframework to create the code editor. &lt;br /&gt;
    I already have a simple editor implemented using Ace [1] and  another using &lt;br /&gt;
    CodeMirror [2]. I will integrate one of those editors inside iframework.&lt;br /&gt;
&lt;br /&gt;
I implemented some changes on live code editor (now a fork of friendlycode, the core of Moz Thimble).&lt;br /&gt;
&lt;br /&gt;
I created some use cases (see http://etherpad.mozilla.org/meemoo2012, beginning of pad) and tested those with Web Audio API and everything worked well but just in a Chrome canary build. We need to have a node inside Audiolet to get raw data from &amp;lt;audio&amp;gt;/&amp;lt;video&amp;gt; sources. I have to discuss more with Joe about that.&lt;br /&gt;
&lt;br /&gt;
Google launched Blockly and I planned to use that inside the live code editor, as an optional &amp;quot;mode&amp;quot; (like Emacs modes).&lt;br /&gt;
&lt;br /&gt;
Forrest created a new branch for native nodes and I fetched. Things started to get a form!&lt;br /&gt;
&lt;br /&gt;
==== Week 7 (Jun 5 - Jun 11) ====&lt;br /&gt;
&lt;br /&gt;
I worked in the audio nodes and the live code editor. They are not native nodes of Meemoo yet, but standalone pages. I&#039;m planning to integrate them with iframework in 2 or 3 days.&lt;br /&gt;
&lt;br /&gt;
==== Week 8: (Jun 12 - Jun 18) ===&lt;br /&gt;
&lt;br /&gt;
Originally proposed:&lt;br /&gt;
&lt;br /&gt;
    June 12 - June 18 (1 week): integrating the editor with share.js or etherpad-lite, &lt;br /&gt;
    to make possible collaborative coding.&lt;br /&gt;
&lt;br /&gt;
I have to discuss with Forrest because we planned to make the whole iframework collaborative. But for now, maybe we could have just the live code editor collaborative, based on Meteor.&lt;br /&gt;
&lt;br /&gt;
I&#039;m planning to have the editor and audio nodes as native nodes this week too.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=425341</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=425341"/>
		<updated>2012-04-28T19:39:36Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
Fork Meemoo! Go http://github.com/meemoo&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The weekly report is being writing at Meemoo&#039;s blog: http://meemoo.org/blog&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details is in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
And the accepted proposal is publicly available at: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/automata/1&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=425340</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=425340"/>
		<updated>2012-04-28T19:35:43Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Meemoo.png|thumb|300px|right|Meemoo is &amp;quot;the Arduino for Web&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The weekly report is being writing at Meemoo&#039;s blog: http://meemoo.org/blog&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=File:Meemoo.png&amp;diff=425339</id>
		<title>File:Meemoo.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=File:Meemoo.png&amp;diff=425339"/>
		<updated>2012-04-28T19:31:11Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424058</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424058"/>
		<updated>2012-04-25T12:21:40Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The weekly report is being writing at Meemoo&#039;s blog: http://meemoo.org/blog&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/aut0mata @aut0mata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424056</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424056"/>
		<updated>2012-04-25T12:15:30Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Meemoo (Hackable Web Apps) ==&lt;br /&gt;
&lt;br /&gt;
[http://meemoo.org Meemoo] is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
Give Meemoo a try! Go http://meemoo.org/iframework&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The weekly report is being writing at Meemoo&#039;s blog: http://meemoo.org/blog&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012&lt;br /&gt;
&lt;br /&gt;
The official Meemoo page is: http://meemoo.org&lt;br /&gt;
&lt;br /&gt;
The official project details in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/automata @automata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424050</id>
		<title>SummerOfCode/2012/Meemoo</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=SummerOfCode/2012/Meemoo&amp;diff=424050"/>
		<updated>2012-04-25T12:09:11Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Created page with &amp;quot;Meemoo is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation ea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Meemoo is a framework for hackable web apps by Forrest Oliphant and an incredible tool for web making. My main goal in the project is to extend Meemoo to make modules creation easier. Based on a collaborative [http://github.com/automata/water live code editor] I want people creating new modules for hackable web apps inside their own browsers, without external tools.&lt;br /&gt;
&lt;br /&gt;
== More information ==&lt;br /&gt;
&lt;br /&gt;
The weekly report is being writting at Meemoo&#039;s blog: http://meemoo.org/blog&lt;br /&gt;
&lt;br /&gt;
A daily log of my activities around Meemoo GSoC 2012 project is at: http://etherpad.mozilla.org/meemoo2012&lt;br /&gt;
&lt;br /&gt;
The oficial project details in: http://www.google-melange.com/gsoc/project/google/gsoc2012/automata/14001&lt;br /&gt;
&lt;br /&gt;
== About the authors ==&lt;br /&gt;
&lt;br /&gt;
Forrest Oliphant (mentor): http://forresto.com ___ [http://twitter.com/forresto @forresto]&lt;br /&gt;
&lt;br /&gt;
Vilson Vieira (student): http://automata.cc ___ [http://twitter.com/automata @automata]&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=User:Vilsonvieira&amp;diff=422000</id>
		<title>User:Vilsonvieira</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=User:Vilsonvieira&amp;diff=422000"/>
		<updated>2012-04-19T15:59:11Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: Created page with &amp;quot;I create algorithms that create.  ~ http://automata.cc&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I create algorithms that create.&lt;br /&gt;
&lt;br /&gt;
~ http://automata.cc&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
	<entry>
		<id>https://wiki.mozilla.org/index.php?title=Audio_Data_API&amp;diff=314758</id>
		<title>Audio Data API</title>
		<link rel="alternate" type="text/html" href="https://wiki.mozilla.org/index.php?title=Audio_Data_API&amp;diff=314758"/>
		<updated>2011-06-01T20:26:20Z</updated>

		<summary type="html">&lt;p&gt;Vilsonvieira: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Defining an Enhanced API for Audio (Draft Recommendation) ==&lt;br /&gt;
&lt;br /&gt;
===== Abstract =====&lt;br /&gt;
&lt;br /&gt;
The HTML5 specification introduces the &amp;amp;lt;audio&amp;amp;gt; and &amp;amp;lt;video&amp;amp;gt; media elements, and with them the opportunity to dramatically change the way we integrate media on the web. The current HTML5 media API provides ways to play and get limited information about audio and video, but gives no way to programatically access or create such media.  We present a new Mozilla extension to this API, which allows web developers to read and write raw audio data.&lt;br /&gt;
&lt;br /&gt;
===== Authors =====&lt;br /&gt;
&lt;br /&gt;
* David Humphrey ([http://twitter.com/humphd @humphd])&lt;br /&gt;
* Corban Brook ([http://twitter.com/corban @corban])&lt;br /&gt;
* Al MacDonald ([http://twitter.com/f1lt3r @F1LT3R])&lt;br /&gt;
* Yury Delendik&lt;br /&gt;
* Ricard Marxer ([http://twitter.com/ricardmp @ricardmp])&lt;br /&gt;
* Charles Cliffe ([http://twitter.com/ccliffe @ccliffe])&lt;br /&gt;
&lt;br /&gt;
===== Other Contributors =====&lt;br /&gt;
&lt;br /&gt;
* Thomas Saunders&lt;br /&gt;
* Ted Mielczarek&lt;br /&gt;
&lt;br /&gt;
== API Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This API extends the HTMLMediaElement and HTMLAudioElement (e.g., affecting &amp;amp;lt;video&amp;amp;gt; and &amp;amp;lt;audio&amp;amp;gt;), and implements the following basic API for reading and writing raw audio data:&lt;br /&gt;
&lt;br /&gt;
===== Reading Audio =====&lt;br /&gt;
&lt;br /&gt;
Audio data is made available via an event-based API.  As the audio is played, and therefore decoded, sample data is passed to content scripts in a framebuffer for processing after becoming available to the audio layer--hence the name, &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039;.  These samples may or may not have been played yet at the time of the event.  The audio samples returned in the event are raw, and have not been adjusted for mute/volume settings on the media element.  Playing, pausing, and seeking the audio also affect the streaming of this raw audio data.&lt;br /&gt;
&lt;br /&gt;
Users of this API can register two callbacks on the &amp;amp;lt;audio&amp;amp;gt; or &amp;amp;lt;video&amp;amp;gt; element in order to consume this data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;audio id=&amp;quot;audio&amp;quot; src=&amp;quot;song.ogg&amp;quot;&amp;amp;gt;&amp;amp;lt;/audio&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
  var audio = document.getElementById(&amp;quot;audio&amp;quot;);&lt;br /&gt;
  audio.addEventListener(&#039;MozAudioAvailable&#039;, audioAvailableFunction, false);&lt;br /&gt;
  audio.addEventListener(&#039;loadedmetadata&#039;, loadedMetadataFunction, false);&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;loadedmetadata&#039;&#039;&#039; event is a standard part of HTML5.  It now indicates that a media element (audio or video) has useful metadata loaded, which can be accessed using three new attributes:&lt;br /&gt;
&lt;br /&gt;
* mozChannels&lt;br /&gt;
* mozSampleRate&lt;br /&gt;
* mozFrameBufferLength&lt;br /&gt;
&lt;br /&gt;
Prior to the &#039;&#039;&#039;loadedmetadata&#039;&#039;&#039; event, accessing these attributes will cause an exception to be thrown, indicating that they are not known, or there is no audio.  These attributes indicate the &#039;&#039;&#039;number of channels&#039;&#039;&#039;, audio &#039;&#039;&#039;sample rate per second&#039;&#039;&#039;, and the &#039;&#039;&#039;default size of the framebuffer&#039;&#039;&#039; that will be used in &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; events.  This event is fired once as the media resource is first loaded, and is useful for interpreting or writing the audio data.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; event provides two pieces of data.  The first is a framebuffer (i.e., an array) containing decoded audio sample data (i.e., floats).  The second is the time for these samples measured from the start in seconds.  Web developers consume this event by registering an event listener in script like so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;audio id=&amp;quot;audio&amp;quot; src=&amp;quot;song.ogg&amp;quot;&amp;amp;gt;&amp;amp;lt;/audio&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
  var audio = document.getElementById(&amp;quot;audio&amp;quot;);&lt;br /&gt;
  audio.addEventListener(&#039;MozAudioAvailable&#039;, someFunction, false);&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An audio or video element can also be created with script outside the DOM:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var audio = new Audio();&lt;br /&gt;
audio.src = &amp;quot;song.ogg&amp;quot;;&lt;br /&gt;
audio.addEventListener(&#039;MozAudioAvailable&#039;, someFunction, false);&lt;br /&gt;
audio.play();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following is an example of how both events might be used:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var channels,&lt;br /&gt;
    rate,&lt;br /&gt;
    frameBufferLength,&lt;br /&gt;
    samples;&lt;br /&gt;
&lt;br /&gt;
function audioInfo() {&lt;br /&gt;
  var audio = document.getElementById(&#039;audio&#039;);&lt;br /&gt;
&lt;br /&gt;
  // After loadedmetadata event, following media element attributes are known:&lt;br /&gt;
  channels          = audio.mozChannels;&lt;br /&gt;
  rate              = audio.mozSampleRate;&lt;br /&gt;
  frameBufferLength = audio.mozFrameBufferLength;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function audioAvailable(event) {&lt;br /&gt;
  var samples = event.frameBuffer;&lt;br /&gt;
  var time    = event.time;&lt;br /&gt;
&lt;br /&gt;
  for (var i = 0; i &amp;lt; frameBufferLength; i++) {&lt;br /&gt;
    // Do something with the audio data as it is played.&lt;br /&gt;
    processSample(samples[i], channels, rate);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Complete Example: Visualizing Audio Spectrum =====&lt;br /&gt;
&lt;br /&gt;
This example calculates and displays FFT spectrum data for the playing audio:&lt;br /&gt;
&lt;br /&gt;
[[File:fft.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;JavaScript Spectrum Example&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;audio id=&amp;quot;audio-element&amp;quot;&lt;br /&gt;
           src=&amp;quot;song.ogg&amp;quot;&lt;br /&gt;
           controls=&amp;quot;true&amp;quot;&lt;br /&gt;
           style=&amp;quot;width: 512px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/audio&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&amp;lt;canvas id=&amp;quot;fft&amp;quot; width=&amp;quot;512&amp;quot; height=&amp;quot;200&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      var canvas = document.getElementById(&#039;fft&#039;),&lt;br /&gt;
          ctx = canvas.getContext(&#039;2d&#039;),&lt;br /&gt;
          channels,&lt;br /&gt;
          rate,&lt;br /&gt;
          frameBufferLength,&lt;br /&gt;
          fft;&lt;br /&gt;
&lt;br /&gt;
      function loadedMetadata() {&lt;br /&gt;
        channels          = audio.mozChannels;&lt;br /&gt;
        rate              = audio.mozSampleRate;&lt;br /&gt;
        frameBufferLength = audio.mozFrameBufferLength;&lt;br /&gt;
         &lt;br /&gt;
        fft = new FFT(frameBufferLength / channels, rate);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      function audioAvailable(event) {&lt;br /&gt;
        var fb = event.frameBuffer,&lt;br /&gt;
            t  = event.time, /* unused, but it&#039;s there */&lt;br /&gt;
            signal = new Float32Array(fb.length / channels),&lt;br /&gt;
            magnitude;&lt;br /&gt;
&lt;br /&gt;
        for (var i = 0, fbl = frameBufferLength / 2; i &amp;lt; fbl; i++ ) {&lt;br /&gt;
          // Assuming interlaced stereo channels,&lt;br /&gt;
          // need to split and merge into a stero-mix mono signal&lt;br /&gt;
          signal[i] = (fb[2*i] + fb[2*i+1]) / 2;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        fft.forward(signal);&lt;br /&gt;
&lt;br /&gt;
        // Clear the canvas before drawing spectrum&lt;br /&gt;
        ctx.clearRect(0,0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
        for (var i = 0; i &amp;lt; fft.spectrum.length; i++ ) {&lt;br /&gt;
          // multiply spectrum by a zoom value&lt;br /&gt;
          magnitude = fft.spectrum[i] * 4000;&lt;br /&gt;
&lt;br /&gt;
          // Draw rectangle bars for each frequency bin&lt;br /&gt;
          ctx.fillRect(i * 4, canvas.height, 3, -magnitude);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      var audio = document.getElementById(&#039;audio-element&#039;);&lt;br /&gt;
      audio.addEventListener(&#039;MozAudioAvailable&#039;, audioAvailable, false);&lt;br /&gt;
      audio.addEventListener(&#039;loadedmetadata&#039;, loadedMetadata, false);&lt;br /&gt;
&lt;br /&gt;
      // FFT from dsp.js, see below&lt;br /&gt;
      var FFT = function(bufferSize, sampleRate) {&lt;br /&gt;
        this.bufferSize   = bufferSize;&lt;br /&gt;
        this.sampleRate   = sampleRate;&lt;br /&gt;
        this.spectrum     = new Float32Array(bufferSize/2);&lt;br /&gt;
        this.real         = new Float32Array(bufferSize);&lt;br /&gt;
        this.imag         = new Float32Array(bufferSize);&lt;br /&gt;
        this.reverseTable = new Uint32Array(bufferSize);&lt;br /&gt;
        this.sinTable     = new Float32Array(bufferSize);&lt;br /&gt;
        this.cosTable     = new Float32Array(bufferSize);&lt;br /&gt;
&lt;br /&gt;
        var limit = 1,&lt;br /&gt;
            bit = bufferSize &amp;gt;&amp;gt; 1;&lt;br /&gt;
&lt;br /&gt;
        while ( limit &amp;lt; bufferSize ) {&lt;br /&gt;
          for ( var i = 0; i &amp;lt; limit; i++ ) {&lt;br /&gt;
            this.reverseTable[i + limit] = this.reverseTable[i] + bit;&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          limit = limit &amp;lt;&amp;lt; 1;&lt;br /&gt;
          bit = bit &amp;gt;&amp;gt; 1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for ( var i = 0; i &amp;lt; bufferSize; i++ ) {&lt;br /&gt;
          this.sinTable[i] = Math.sin(-Math.PI/i);&lt;br /&gt;
          this.cosTable[i] = Math.cos(-Math.PI/i);&lt;br /&gt;
        }&lt;br /&gt;
      };&lt;br /&gt;
&lt;br /&gt;
      FFT.prototype.forward = function(buffer) {&lt;br /&gt;
        var bufferSize   = this.bufferSize,&lt;br /&gt;
            cosTable     = this.cosTable,&lt;br /&gt;
            sinTable     = this.sinTable,&lt;br /&gt;
            reverseTable = this.reverseTable,&lt;br /&gt;
            real         = this.real,&lt;br /&gt;
            imag         = this.imag,&lt;br /&gt;
            spectrum     = this.spectrum;&lt;br /&gt;
&lt;br /&gt;
        if ( bufferSize !== buffer.length ) {&lt;br /&gt;
          throw &amp;quot;Supplied buffer is not the same size as defined FFT. FFT Size: &amp;quot; + bufferSize + &amp;quot; Buffer Size: &amp;quot; + buffer.length;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        for ( var i = 0; i &amp;lt; bufferSize; i++ ) {&lt;br /&gt;
          real[i] = buffer[reverseTable[i]];&lt;br /&gt;
          imag[i] = 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var halfSize = 1,&lt;br /&gt;
            phaseShiftStepReal,	&lt;br /&gt;
            phaseShiftStepImag,&lt;br /&gt;
            currentPhaseShiftReal,&lt;br /&gt;
            currentPhaseShiftImag,&lt;br /&gt;
            off,&lt;br /&gt;
            tr,&lt;br /&gt;
            ti,&lt;br /&gt;
            tmpReal,	&lt;br /&gt;
            i;&lt;br /&gt;
&lt;br /&gt;
        while ( halfSize &amp;lt; bufferSize ) {&lt;br /&gt;
          phaseShiftStepReal = cosTable[halfSize];&lt;br /&gt;
          phaseShiftStepImag = sinTable[halfSize];&lt;br /&gt;
          currentPhaseShiftReal = 1.0;&lt;br /&gt;
          currentPhaseShiftImag = 0.0;&lt;br /&gt;
&lt;br /&gt;
          for ( var fftStep = 0; fftStep &amp;lt; halfSize; fftStep++ ) {&lt;br /&gt;
            i = fftStep;&lt;br /&gt;
&lt;br /&gt;
            while ( i &amp;lt; bufferSize ) {&lt;br /&gt;
              off = i + halfSize;&lt;br /&gt;
              tr = (currentPhaseShiftReal * real[off]) - (currentPhaseShiftImag * imag[off]);&lt;br /&gt;
              ti = (currentPhaseShiftReal * imag[off]) + (currentPhaseShiftImag * real[off]);&lt;br /&gt;
&lt;br /&gt;
              real[off] = real[i] - tr;&lt;br /&gt;
              imag[off] = imag[i] - ti;&lt;br /&gt;
              real[i] += tr;&lt;br /&gt;
              imag[i] += ti;&lt;br /&gt;
&lt;br /&gt;
              i += halfSize &amp;lt;&amp;lt; 1;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            tmpReal = currentPhaseShiftReal;&lt;br /&gt;
            currentPhaseShiftReal = (tmpReal * phaseShiftStepReal) - (currentPhaseShiftImag * phaseShiftStepImag);&lt;br /&gt;
            currentPhaseShiftImag = (tmpReal * phaseShiftStepImag) + (currentPhaseShiftImag * phaseShiftStepReal);&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          halfSize = halfSize &amp;lt;&amp;lt; 1;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
        i = bufferSize/2;&lt;br /&gt;
        while(i--) {&lt;br /&gt;
          spectrum[i] = 2 * Math.sqrt(real[i] * real[i] + imag[i] * imag[i]) / bufferSize;&lt;br /&gt;
	}&lt;br /&gt;
      };&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Writing Audio =====&lt;br /&gt;
&lt;br /&gt;
It is also possible to setup an &amp;amp;lt;audio&amp;amp;gt; element for raw writing from script (i.e., without a &#039;&#039;src&#039;&#039; attribute).  Content scripts can specify the audio stream&#039;s characteristics, then write audio samples using the following methods:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mozSetup(channels, sampleRate)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Create a new audio element&lt;br /&gt;
var audioOutput = new Audio();&lt;br /&gt;
// Set up audio element with 2 channel, 44.1KHz audio stream.&lt;br /&gt;
audioOutput.mozSetup(2, 44100);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mozWriteAudio(buffer)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Write samples using a JS Array&lt;br /&gt;
var samples = [0.242, 0.127, 0.0, -0.058, -0.242, ...];&lt;br /&gt;
var numberSamplesWritten = audioOutput.mozWriteAudio(samples);&lt;br /&gt;
&lt;br /&gt;
// Write samples using a Typed Array&lt;br /&gt;
var samples = new Float32Array([0.242, 0.127, 0.0, -0.058, -0.242, ...]);&lt;br /&gt;
var numberSamplesWritten = audioOutput.mozWriteAudio(samples);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mozCurrentSampleOffset()&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Get current audible position of the underlying audio stream, measured in samples.&lt;br /&gt;
var currentSampleOffset = audioOutput.mozCurrentSampleOffset();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since the &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; event and the &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039; method both use &#039;&#039;&#039;Float32Array&#039;&#039;&#039;, it is possible to take the output of one audio stream and pass it directly (or process first and then pass) to a second:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;audio id=&amp;quot;a1&amp;quot; &lt;br /&gt;
       src=&amp;quot;song.ogg&amp;quot;&lt;br /&gt;
       controls&amp;gt;&lt;br /&gt;
&amp;lt;/audio&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
var a1 = document.getElementById(&#039;a1&#039;),&lt;br /&gt;
    a2 = new Audio(),&lt;br /&gt;
    buffers = [];&lt;br /&gt;
&lt;br /&gt;
function loadedMetadata() {&lt;br /&gt;
  // Mute a1 audio.&lt;br /&gt;
  a1.volume = 0;&lt;br /&gt;
  // Setup a2 to be identical to a1, and play through there.&lt;br /&gt;
  a2.mozSetup(a1.mozChannels, a1.mozSampleRate);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function audioAvailable(event) {&lt;br /&gt;
  // Write the current framebuffer&lt;br /&gt;
  var frameBuffer = event.frameBuffer; // frameBuffer is Float32Array&lt;br /&gt;
  writeAudio(frameBuffer);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
a1.addEventListener(&#039;MozAudioAvailable&#039;, audioAvailable, false);&lt;br /&gt;
a1.addEventListener(&#039;loadedmetadata&#039;, loadedMetadata, false);&lt;br /&gt;
&lt;br /&gt;
function writeAudio(audioBuffer) {&lt;br /&gt;
  // audioBuffer is Float32Array&lt;br /&gt;
  buffers.push({buffer: audioBuffer, position: 0});&lt;br /&gt;
&lt;br /&gt;
  // If there&#039;s buffered data, write that&lt;br /&gt;
  while(buffers.length &amp;gt; 0) {&lt;br /&gt;
    var buffer = buffers[0].buffer;&lt;br /&gt;
    var position = buffers[0].position;&lt;br /&gt;
    var written = a2.mozWriteAudio(buffer.subarray(position));&lt;br /&gt;
    // // If all data wasn&#039;t written, keep it in the buffers:&lt;br /&gt;
    if(position + written &amp;lt; buffer.length) {&lt;br /&gt;
      buffers[0].position = position + written;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    buffers.shift();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Audio data written using the &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039; method needs to be written at a regular interval in equal portions, in order to keep a little ahead of the current sample offset (the sample offset that is currently being played by the hardware can be obtained with &#039;&#039;&#039;mozCurrentSampleOffset()&#039;&#039;&#039;), where a little means something on the order of 500ms of samples.  For example, if working with 2 channels at 44100 samples per second, a writing interval of 100ms, and a pre-buffer equal to 500ms, one would write an array of (2 * 44100 / 10) = 8820 samples, and a total of (currentSampleOffset + 2 * 44100 / 2).&lt;br /&gt;
&lt;br /&gt;
It&#039;s also possible to auto detect the minimal duration of the pre-buffer, such that the sound is played without interruptions, and lag between writing and playback is minimal. To do this start writing the data in small portions and wait for the value returned by &#039;&#039;&#039;mozCurrentSampleOffset()&#039;&#039;&#039; to be more than 0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var prebufferSize = sampleRate * 0.020; // Initial buffer is 20 ms&lt;br /&gt;
var autoLatency = true, started = new Date().valueOf();&lt;br /&gt;
...&lt;br /&gt;
// Auto latency detection&lt;br /&gt;
if (autoLatency) {&lt;br /&gt;
  prebufferSize = Math.floor(sampleRate * (new Date().valueOf() - started) / 1000);&lt;br /&gt;
  if (audio.mozCurrentSampleOffset()) { // Play position moved?&lt;br /&gt;
    autoLatency = false;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Complete Example: Creating a Web Based Tone Generator =====&lt;br /&gt;
&lt;br /&gt;
This example creates a simple tone generator, and plays the resulting tone.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;JavaScript Audio Write Example&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; size=&amp;quot;4&amp;quot; id=&amp;quot;freq&amp;quot; value=&amp;quot;440&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;hz&amp;quot;&amp;gt;Hz&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;button onclick=&amp;quot;start()&amp;quot;&amp;gt;play&amp;lt;/button&amp;gt;&lt;br /&gt;
    &amp;lt;button onclick=&amp;quot;stop()&amp;quot;&amp;gt;stop&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;      &lt;br /&gt;
      function AudioDataDestination(sampleRate, readFn) {&lt;br /&gt;
        // Initialize the audio output.&lt;br /&gt;
        var audio = new Audio();&lt;br /&gt;
        audio.mozSetup(1, sampleRate);&lt;br /&gt;
&lt;br /&gt;
        var currentWritePosition = 0;&lt;br /&gt;
        var prebufferSize = sampleRate / 2; // buffer 500ms&lt;br /&gt;
        var tail = null, tailPosition;&lt;br /&gt;
&lt;br /&gt;
        // The function called with regular interval to populate &lt;br /&gt;
        // the audio output buffer.&lt;br /&gt;
        setInterval(function() {&lt;br /&gt;
          var written;&lt;br /&gt;
          // Check if some data was not written in previous attempts.&lt;br /&gt;
          if(tail) {&lt;br /&gt;
            written = audio.mozWriteAudio(tail.subarray(tailPosition));&lt;br /&gt;
            currentWritePosition += written;&lt;br /&gt;
            tailPosition += written;&lt;br /&gt;
            if(tailPosition &amp;lt; tail.length) {&lt;br /&gt;
              // Not all the data was written, saving the tail...&lt;br /&gt;
              return; // ... and exit the function.&lt;br /&gt;
            }&lt;br /&gt;
            tail = null;&lt;br /&gt;
          }&lt;br /&gt;
&lt;br /&gt;
          // Check if we need add some data to the audio output.&lt;br /&gt;
          var currentPosition = audio.mozCurrentSampleOffset();&lt;br /&gt;
          var available = currentPosition + prebufferSize - currentWritePosition;&lt;br /&gt;
          if(available &amp;gt; 0) {&lt;br /&gt;
            // Request some sound data from the callback function.&lt;br /&gt;
            var soundData = new Float32Array(available);&lt;br /&gt;
            readFn(soundData);&lt;br /&gt;
&lt;br /&gt;
            // Writting the data.&lt;br /&gt;
            written = audio.mozWriteAudio(soundData);&lt;br /&gt;
            if(written &amp;lt; soundData.length) {&lt;br /&gt;
              // Not all the data was written, saving the tail.&lt;br /&gt;
              tail = soundData;&lt;br /&gt;
              tailPosition = written;&lt;br /&gt;
            }&lt;br /&gt;
            currentWritePosition += written;&lt;br /&gt;
          }&lt;br /&gt;
        }, 100);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      // Control and generate the sound.&lt;br /&gt;
&lt;br /&gt;
      var frequency = 0, currentSoundSample;&lt;br /&gt;
      var sampleRate = 44100;&lt;br /&gt;
&lt;br /&gt;
      function requestSoundData(soundData) {&lt;br /&gt;
        if (!frequency) { &lt;br /&gt;
          return; // no sound selected&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        var k = 2* Math.PI * frequency / sampleRate;&lt;br /&gt;
        for (var i=0, size=soundData.length; i&amp;lt;size; i++) {&lt;br /&gt;
          soundData[i] = Math.sin(k * currentSoundSample++);&lt;br /&gt;
        }        &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      var audioDestination = new AudioDataDestination(sampleRate, requestSoundData);&lt;br /&gt;
&lt;br /&gt;
      function start() {&lt;br /&gt;
        currentSoundSample = 0;&lt;br /&gt;
        frequency = parseFloat(document.getElementById(&amp;quot;freq&amp;quot;).value);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      function stop() {&lt;br /&gt;
        frequency = 0;&lt;br /&gt;
      }&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DOM Implementation == &lt;br /&gt;
&lt;br /&gt;
===== nsIDOMNotifyAudioAvailableEvent =====&lt;br /&gt;
&lt;br /&gt;
Audio data is made available via the following event:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Event&#039;&#039;&#039;: AudioAvailableEvent&lt;br /&gt;
* &#039;&#039;&#039;Event handler&#039;&#039;&#039;: onmozaudioavailable&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;AudioAvailableEvent&#039;&#039;&#039; is defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
interface nsIDOMNotifyAudioAvailableEvent : nsIDOMEvent&lt;br /&gt;
{&lt;br /&gt;
  // frameBuffer is really a Float32Array&lt;br /&gt;
  readonly attribute jsval  frameBuffer;&lt;br /&gt;
  readonly attribute float  time;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;frameBuffer&#039;&#039;&#039; attribute contains a typed array (&#039;&#039;&#039;Float32Array&#039;&#039;&#039;) with the raw audio data (32-bit float values) obtained from decoding the audio (e.g., the raw data being sent to the audio hardware vs. encoded audio).  This is of the form &amp;lt;nowiki&amp;gt;[channel1, channel2, ..., channelN, channel1, channel2, ..., channelN, ...]&amp;lt;/nowiki&amp;gt;.  All audio frames are normalized to a length of channels * 1024 by default, but could be any length between 512 and 16384 if the user has set a different length using the &#039;&#039;&#039;mozFrameBufferLength&#039;&#039;&#039; attribute.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;time&#039;&#039;&#039; attribute contains a float representing the time in seconds of the first sample in the &#039;&#039;&#039;frameBuffer&#039;&#039;&#039; array since the start of the audio track.&lt;br /&gt;
&lt;br /&gt;
===== nsIDOMHTMLMediaElement additions =====&lt;br /&gt;
&lt;br /&gt;
Audio metadata is made available via three new attributes on the HTMLMediaElement.  By default these attributes throw if accessed before the &#039;&#039;&#039;loadedmetadata&#039;&#039;&#039; event occurs.  Users who need this info before the audio starts playing should not use &#039;&#039;&#039;autoplay&#039;&#039;&#039;, since the audio might start before a loadmetadata handler has run.&lt;br /&gt;
&lt;br /&gt;
The three new attributes are defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  readonly attribute unsigned long mozChannels;&lt;br /&gt;
  readonly attribute unsigned long mozSampleRate;&lt;br /&gt;
           attribute unsigned long mozFrameBufferLength;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozChannels&#039;&#039;&#039; attribute contains the number of channels in the audio resource (e.g., 2).  The &#039;&#039;&#039;mozSampleRate&#039;&#039;&#039; attribute contains the number of samples per second that will be played, for example 44100.  Both are read-only.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozFrameBufferLength&#039;&#039;&#039; attribute indicates the number of samples that will be returned in the framebuffer of each &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; event.  This number is a total for all channels, and by default is set to be the number of channels * 1024 (e.g., 2 channels * 1024 samples = 2048 total).&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozFrameBufferLength&#039;&#039;&#039; attribute can also be set to a new value, if users want lower latency, or larger amounts of data, etc.  The size given &#039;&#039;&#039;must&#039;&#039;&#039; be a number between 512 and 16384.  Using any other size will result in an exception being thrown.  The best time to set a new length is after the &#039;&#039;&#039;loadedmetadata&#039;&#039;&#039; event fires, when the audio info is known, but before the audio has started or &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; events begun firing.&lt;br /&gt;
&lt;br /&gt;
===== nsIDOMHTMLAudioElement additions =====&lt;br /&gt;
&lt;br /&gt;
The HTMLAudioElement has also been extended to allow write access.  Audio writing is achieved by adding three new methods:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  void mozSetup(in long channels, in long rate);&lt;br /&gt;
  unsigned long mozWriteAudio(array); // array is Array() or Float32Array()&lt;br /&gt;
  unsigned long long mozCurrentSampleOffset();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozSetup()&#039;&#039;&#039; method allows an &amp;amp;lt;audio&amp;amp;gt; element to be setup for writing from script.  This method &#039;&#039;&#039;must&#039;&#039;&#039; be called before &#039;&#039;&#039;mozWriteAudio&#039;&#039;&#039; or &#039;&#039;&#039;mozCurrentSampleOffset&#039;&#039;&#039; can be called, since an audio stream has to be created for the media element.  It takes two arguments:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;channels&#039;&#039;&#039; - the number of audio channels (e.g., 2)&lt;br /&gt;
# &#039;&#039;&#039;rate&#039;&#039;&#039; - the audio&#039;s sample rate (e.g., 44100 samples per second)&lt;br /&gt;
&lt;br /&gt;
The choices made for &#039;&#039;&#039;channel&#039;&#039;&#039; and &#039;&#039;&#039;rate&#039;&#039;&#039; are significant, because they determine the amount of data you must pass to &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039;.  That is, you must pass an array with enough data for each channel specified in &#039;&#039;&#039;mozSetup()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozSetup()&#039;&#039;&#039; method, if called more than once, will recreate a new audio stream (destroying an existing one if present) with each call.  Thus it is safe to call this more than once, but unnecessary. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039; method can be called after &#039;&#039;&#039;mozSetup()&#039;&#039;&#039;.  It allows audio data to be written directly from script.  It takes one argument, &#039;&#039;&#039;array&#039;&#039;&#039;.  This is a JS Array (i.e., new Array()) or a typed float array (i.e., new Float32Array()) containing the audio data (floats) you wish to write.  It must be 0 or N elements in length, where N % channels == 0, otherwise an exception is thrown. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039; method returns the number of samples that were just written, which may or may not be the same as the number in &#039;&#039;&#039;array&#039;&#039;&#039;.  Only the number of samples that can be written without blocking the audio hardware will be written.  It is the responsibility of the caller to deal with any samples that don&#039;t get written in the first pass (e.g., buffer and write in the next call).&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;mozCurrentSampleOffset()&#039;&#039;&#039; method can be called after &#039;&#039;&#039;mozSetup()&#039;&#039;&#039;.  It returns the current position (measured in samples) of the audio stream.  This is useful when determining how much data to write with &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
All of &#039;&#039;&#039;mozWriteAudio()&#039;&#039;&#039;, &#039;&#039;&#039;mozCurrentSampleOffset()&#039;&#039;&#039;, and &#039;&#039;&#039;mozSetup()&#039;&#039;&#039; will throw exceptions if called out of order.  &#039;&#039;&#039;mozSetup()&#039;&#039;&#039; will also throw if a &#039;&#039;src&#039;&#039; attribute has previously been set on the audio element (i.e., you can&#039;t do both at the same time).&lt;br /&gt;
&lt;br /&gt;
===== Security =====&lt;br /&gt;
&lt;br /&gt;
Similar to the &amp;amp;lt;canvas&amp;amp;gt; element and its &#039;&#039;&#039;getImageData&#039;&#039;&#039; method, the &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; event&#039;s &#039;&#039;&#039;frameBuffer&#039;&#039;&#039; attribute protects against information leakage between origins.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;MozAudioAvailable&#039;&#039;&#039; event&#039;s &#039;&#039;&#039;frameBuffer&#039;&#039;&#039; attribute will throw if the origin of audio resource does not match the document&#039;s origin.  NOTE: this will affect users who have the security.fileuri.strict_origin_policy set, and are working locally with file:/// URIs.&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Audio Backends =====&lt;br /&gt;
&lt;br /&gt;
The current MozAudioAvailable implementation integrates with Mozilla&#039;s decoder abstract base classes, and therefore, any audio decoder which uses these base classes automatically dispatches MozAudioAvailable events.  At the time of writing, this includes the Ogg and WebM decoders but &#039;&#039;&#039;not&#039;&#039;&#039; the Wave decoder.&lt;br /&gt;
&lt;br /&gt;
== Additional Resources ==&lt;br /&gt;
&lt;br /&gt;
A series of blog posts document the evolution and implementation of this API: http://vocamus.net/dave/?cat=25.  Another overview by Al MacDonald is available [http://weblog.bocoup.com/web-audio-all-aboard here].&lt;br /&gt;
&lt;br /&gt;
Al has also written 2 very good tutorials and video demos of [http://weblog.bocoup.com/read-html5-audio-data-with-firefox-4 reading] and [http://weblog.bocoup.com/generate-sound-with-javascript-in-firefox-4 writing] audio with the API.&lt;br /&gt;
&lt;br /&gt;
The BBC Research and Development Blog has also done an excellent overview of the API [http://www.bbc.co.uk/blogs/researchanddevelopment/2010/11/mozilla-audio-data-api.shtml here].&lt;br /&gt;
&lt;br /&gt;
=== Bug ===&lt;br /&gt;
&lt;br /&gt;
The work on this API is available in Mozilla [https://bugzilla.mozilla.org/show_bug.cgi?id=490705 bug 490705].&lt;br /&gt;
&lt;br /&gt;
=== Obtaining Builds ===&lt;br /&gt;
&lt;br /&gt;
[http://nightly.mozilla.org/ Firefox trunk nightlies] include the Audio Data API (starting with 2010-08-26 builds).&lt;br /&gt;
&lt;br /&gt;
=== JavaScript Audio Libraries ===&lt;br /&gt;
&lt;br /&gt;
* We have started work on a JavaScript library to make building audio web apps easier.  Details are [[Audio Data API JS Library|here]] and http://github.com/corbanbrook/dsp.js.&lt;br /&gt;
* [http://github.com/corbanbrook/audionode.js audionode.js] acts as a javascript bridge between the Web Audio API and the Audio Data API allowing us to run the examples http://weare.buildingsky.net/processing/audionode.js/examples/index.html.&lt;br /&gt;
* [http://github.com/notmasteryet/audiodata/ Audio Data API Objects] - An high level abstraction (and an usage example) of the Audio Data API.&lt;br /&gt;
* [http://github.com/bfirsh/dynamicaudio.js dynamicaudio.js] - An interface for writing audio with a Flash fall back for older browsers.&lt;br /&gt;
* [https://beatdetektor.svn.sourceforge.net/svnroot/beatdetektor/trunk/core/js/beatdetektor.js Beat Detektor] by Charles Cliffe, uses dsp.js to add beat detection.&lt;br /&gt;
* [https://github.com/jussi-kalliokoski/audiolib.js/ audiolib.js] by Jussi Kalliokoski, a powerful audio tools library for JavaScript, compatible with the Audio Data API and Chrome&#039;s Audio API.&lt;br /&gt;
* [https://github.com/oampo/Audiolet Audiolet] - A JavaScript library for real-time audio synthesis and composition from within the browser&lt;br /&gt;
*[https://github.com/grantgalitz/XAudioJS XAudioJS] - A JavaScript library that provides a raw audio sample writing access to the mozilla audio data and web audio APIs. Provides a basic write and callback system so the developer can be assured to have gapless audio for these two APIs. Also provides a fallback WAV PCM data URI generator that is not guaranteed to be gapless.&lt;br /&gt;
* [http://www.gregjopa.com/2011/05/calculate-note-frequencies-in-javascript-with-music-js/ Music.js, library containing functions and data sets to generate notes, intervals, chords, and scales]&lt;br /&gt;
* [https://github.com/BillyWM/jsmodplayer Javascript .MOD and .XM music player]&lt;br /&gt;
&lt;br /&gt;
=== Working Audio Data Demos ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: we recently took down two servers that were hosting many of these demos.  We are working to find a new home for them.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A number of working demos have been created, including:&lt;br /&gt;
&lt;br /&gt;
* [http://videos.mozilla.org/serv/blizzard/audio-slideshow Overview slideshow demo of various features] ([http://www.youtube.com/watch?v=oJ1UsLoPX3E video here])&lt;br /&gt;
&lt;br /&gt;
* Audio Visualizations&lt;br /&gt;
** http://www.nihilogic.dk/labs/pocket_full_of_html5/ (Demo by Jacob Seidelin)&lt;br /&gt;
** http://weare.buildingsky.net/processing/dsp.js/examples/fft.html&lt;br /&gt;
** http://www.storiesinflight.com/jsfft/visualizer/index.html (Demo by Thomas Sturm)&lt;br /&gt;
&lt;br /&gt;
* Applying Realtime Audio Effects&lt;br /&gt;
** Volume, pitch, etc. UI for audio - https://developer.mozilla.org/en-US/demos/detail/voron (homepage: http://kievII.net)&lt;br /&gt;
** JS IIR Filter http://weare.buildingsky.net/processing/dsp.js/examples/filter.html (video [http://vimeo.com/11335434 here]) &lt;br /&gt;
** Vocodes a formant with a carrier wave http://weare.buildingsky.net/processing/dsp.js/examples/vocoder.html&lt;br /&gt;
** Biquad Filter example http://weare.buildingsky.net/processing/dsp.js/examples/biquad.html&lt;br /&gt;
** Graphic EQ example http://weare.buildingsky.net/processing/dsp.js/examples/grapheq.html&lt;br /&gt;
** Delay effect http://code.almeros.com/code-examples/delay-firefox-audio-api/ (video of older version [http://vimeo.com/11780707 here])&lt;br /&gt;
** Reverb effect http://code.almeros.com/code-examples/reverb-firefox-audio-api/ (video [http://vimeo.com/13386796 here])&lt;br /&gt;
&lt;br /&gt;
* Generating and Playing Audio&lt;br /&gt;
** [http://www.oampo.co.uk/2011/05/technocrat/ Ambient techno machine]&lt;br /&gt;
** [http://www.gregjopa.com/2011/05/calculate-note-frequencies-in-javascript-with-music-js/ Music.js, library containing functions and data sets to generate notes, intervals, chords, and scales]&lt;br /&gt;
** [https://hacks.mozilla.org/2011/01/html5guitar/ HTML5 Guitar Tab Player]&lt;br /&gt;
** [http://automata.cc/src/vivace/experiments/matrix.html Tone matrix using Audiolet.js]&lt;br /&gt;
** [http://www.oampo.co.uk/labs/audiolet-demo/ Generating music in JS via audiolet.js], [http://www.oampo.co.uk/labs/breakbeat/ breakbeat demo]&lt;br /&gt;
** [http://audioscene.org/scene-files/humph/sfxr/ sfxr.js] - sound effect generator/editor for video games.&lt;br /&gt;
** [http://jonbro.tk/blog/2010/09/19/html_5_chip_tracker.html JavaScript Chip Tracker app] (demo by Jonathan Brodsky)&lt;br /&gt;
** JavaScript Audio Sampler http://weare.buildingsky.net/processing/dsp.js/examples/sampler.html&lt;br /&gt;
** SamplePlayer, SampleLoader, Sequencer and Keyboard http://code.almeros.com/code-examples/sampler-firefox-audio-api/ (video [http://vimeo.com/13805893 here])&lt;br /&gt;
** Square Wave Generation http://weare.buildingsky.net/processing/dsp.js/examples/squarewave.html&lt;br /&gt;
** Random Noise Generation http://weare.buildingsky.net/processing/dsp.js/examples/nowave.html&lt;br /&gt;
** JS Multi-Oscillator Synthesizer http://weare.buildingsky.net/processing/dsp.js/examples/synthesizer.html (video [http://vimeo.com/11411533 here])&lt;br /&gt;
** Bloop http://async5.org/audiodata/examples/bloop-ea/bloop-audiodata.html&lt;br /&gt;
** JavaScript Text to Speech engine http://async5.org/audiodata/tts/index.html&lt;br /&gt;
** Toy Piano http://async5.org/audiodata/examples/piano.html (and the sample-based piano http://async5.org/audiodata/examples/piano-s/piano2.html)&lt;br /&gt;
** Csound Shaker Instrument http://async5.org/audiodata/csound/shaker.htm and Bar Instrument http://async5.org/audiodata/csound/bar.htm&lt;br /&gt;
** Canon Theremin Piano http://mtg.upf.edu/static/media/canon-theremin-piano.html (by Zacharias Vamvakousis zackbam@gmail.com).&lt;br /&gt;
** Manipulate music example using mouse and accelerometer http://blog.dt.in.th/stuff/audiodata/ (Thai Pangsakulyanont)&lt;br /&gt;
** Tuning exploration, Wicki keyboard and Karplus-Strong synthesizer http://www.toverlamp.org/static/wickisynth/wickisynth.html (Piers Titus van der Torren)&lt;br /&gt;
** Modular Synthesizer with MIDI, control and audio ports. http://www.niiden.com/jstmodular/ (Jussi Kalliokoski)&lt;br /&gt;
** Dual-axis Theremin controlling pitch and volume with cursor position. http://stu.ie/?p=2599 (Stuart Gilbert)&lt;br /&gt;
** JavaScript &amp;quot;Image to Sound&amp;quot; generator http://zhangjw.bai-hua.org/audio_test6.html (ZhangJW)&lt;br /&gt;
** XAudioJS library test page http://www.grantgalitz.org/sound_test/&lt;br /&gt;
&lt;br /&gt;
* Beat Detection (also showing use of WebGL for 3D visualizations)&lt;br /&gt;
** http://people.mozilla.com/~prouget/demos/boomboom/index.html&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd3/BeatDetektor1HD.html (video [http://vimeo.com/11345262 here])&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd3/BeatDetektor2HD.html (video of older version [http://vimeo.com/11345685 here])&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd3/BeatDetektor3HD.html (video [http://www.youtube.com/watch?v=OxoFcyKYwr0&amp;amp;fmt=22 here])&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd3/BeatDetektor3HDFX.html (same, but with more effects)&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd3/BeatDetektor4HD.html (video [http://www.youtube.com/watch?v=dym4DqpJuDk&amp;amp;fmt=22 here])&lt;br /&gt;
** http://cubicvr.org/CubicVR.js/bd_fluid_sim/BD_GPUFluid.html&lt;br /&gt;
&lt;br /&gt;
* Writing Audio from JavaScript, Digital Signal Processing&lt;br /&gt;
** API Example: [http://audioscene.org/?p=171 Inverted Waveform Cancellation]&lt;br /&gt;
** API Example: [http://audioscene.org/?p=255 Stereo Splitting and Panning]&lt;br /&gt;
** API Example: [http://audioscene.org/?p=267/ Mid-Side Microphone Decoder]&lt;br /&gt;
** API Example: [http://audioscene.org/?p=279 Ambient Extraction Mixer]&lt;br /&gt;
** API Example: [http://audioscene.org/?p=302 Worker Thread Audio Processing]&lt;br /&gt;
&lt;br /&gt;
* Audio Games&lt;br /&gt;
** http://www.oampo.co.uk/labs/fireflies/&lt;br /&gt;
&lt;br /&gt;
=== Demos Needing to be Updated to New API ===&lt;br /&gt;
&lt;br /&gt;
* FFT visualization (calculated with js)&lt;br /&gt;
** Experimental JavaScript port Pure Data http://mccormick.cx/dev/webpd/ with demo http://mccormick.cx/dev/webpd/demos/processingjs-basic-example-with-audio/index.html&lt;br /&gt;
&lt;br /&gt;
** http://ondras.zarovi.cz/demos/audio/&lt;br /&gt;
** http://code.bocoup.com/processing-js/3d-fft/viz.xhtml&lt;br /&gt;
&lt;br /&gt;
* Visualizing sound using the video element&lt;br /&gt;
** http://bocoup.com/core/code/firefox-audio/whale-fft2/whale-fft.html (video [http://vimeo.com/8872808 here])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ** Simple Tone Generator http://mavra.perilith.com/~luser/test3.html&lt;br /&gt;
** Playing Scales http://bocoup.com/core/code/firefox-audio/html-sings/audio-out-music-gen-f1lt3r.html (video [http://www.youtube.com/watch?v=HLkOgy1yO14&amp;amp;feature=player_embedded here])&lt;br /&gt;
** Interactive Audio Application, Bloom http://code.bocoup.com/bloop/color/bloop.html (video [http://vimeo.com/11346141 here] and [http://vimeo.com/11345133 here]) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Third Party Discussions ===&lt;br /&gt;
&lt;br /&gt;
A number of people have written about our work, including:&lt;br /&gt;
&lt;br /&gt;
* http://ajaxian.com/archives/amazing-audio-sampling-in-javascript-with-firefox&lt;br /&gt;
* http://createdigitalmusic.com/2010/05/03/real-sound-synthesis-now-an-open-standard-in-the-browser/&lt;br /&gt;
* http://www.webmonkey.com/2010/05/new-html5-tools-make-your-browser-sing-and-dance/&lt;br /&gt;
* http://www.wired.co.uk/news/archive/2010-05/04/new-html5-tools-give-adobe-flash-the-finger&lt;br /&gt;
* http://hacks.mozilla.org/2010/04/beyond-html5-experiments-with-interactive-audio/&lt;br /&gt;
* http://schepers.cc/?p=212&lt;br /&gt;
* http://createdigitalmusic.com/2010/05/27/browser-madness-3d-music-mountainscapes-web-based-pd-patching/&lt;br /&gt;
* http://news.slashdot.org/story/10/05/26/1936224/Breakthroughs-In-HTML-Audio-Via-Manipulation-With-JavaScript&lt;br /&gt;
* http://ajaxian.com/archives/amazing-audio-api-javascript-demos&lt;br /&gt;
* http://www.webmonkey.com/2010/08/sampleplayer-makes-your-browser-sing-sans-flash/&lt;/div&gt;</summary>
		<author><name>Vilsonvieira</name></author>
	</entry>
</feed>