Fall 2010 Mozilla Open Source Project List
Contents
- 1 Introduction
- 2 Potential Projects
- 2.1 C3DL Library Core Refactoring
- 2.2 C3DL Build, Package, and Test Automation
- 2.3 CSS Checker JetPack Extension
- 2.4 Popcorn.js Visual Debug Mode
- 2.5 Video Wrapper for Popcorn.js
- 2.6 Create Soda.js: an interface extension to Popcorn.js
- 2.7 Create Candy.js: an effects extension to Popcorn.js
- 2.8 HTML5/Video Comic Book
- 2.9 NFB Open Video Player
- 2.10 Get Microsoft's WiX MSI toolchain working with Mono
- 2.11 Create Music.js: an API for dynamic music generation in JavaScript
Introduction
The open source course is a project based course, which puts students in direct contact with the open source community and real-world open source code. Students are encouraged to jump inot something big and unknown, and to do so with the full support of their colleagues, professor, and the open community.
All projects will be done individually, but with collaboration between students and the open source community. Some of the projects below are complicated enough that they can be broken into parts for multiple people. If more than one person is interested in the same project, speak to your professor to figure out if it can be broken into sub-components.
Potential Projects
C3DL Library Core Refactoring
c3dl is a js library that provides higher level functionality for web developers wishing to develop 3D web applications. Currently the library always includes all features c3dl provides, even though they won't be needed in all cases. This adds download size, code complexity, etc. This project will refactor c3dl so that we have a core component, and then all the features can be added to this core and become unbound.
- Technologies: JavaScript, WebGL, HTML5
- Contacts: Cathy Leung, Andor Salga
- Primary choice: Pete Leaning, Carl Desautels
C3DL Build, Package, and Test Automation
The c3dl library is currently manually packaged and deployed, and does not have a proper automated test suite. This project will create an automated build system that takes care of such tasks as: combining the multiple source files into one, minified file (better for download); port the automated test system from Processing.js to c3dl; and create a way to package various sub-components of c3dl into a single custom version of the library.
- Technologies: JavaScript, light scripting (python, bash), Makefile, canvas and HTML5
- Contacts: Cathy Leung, Andor Salga, Dave Humphrey
- Secondary: Konstantin Novichikhin, Steven Weerdenburg
CSS Checker JetPack Extension
CSS as a standard evolves more slowly than browser vendor implementations, and as such, browser extensions are created. For example: -moz-box-shadow (Mozilla only), -webkit-box-shadow (Chrome/Safari), box-shadow (CSS standard). This extension will allow the user to tell when a a -webkit-* extension is being used for which there is also a -moz-* version. This will help with finding compatibility issues on websites that appear to work in one browser and not another.
- Technologies: JavaScript, JetPack Extension API, CSS
- Contacts: Dave Humphrey
- Primary: Konstantin Novichikhin
Popcorn.js Visual Debug Mode
The Popcorn.js library is a JavaScript library that allows semantic and timeline data to be added to a web video. Currently, it is text-based (xml and json) with no way of visually seeing what is in a Popcorn timeline file. This project will create a 2D canvas based visualization tool, allowing developers to easily turn on debug mode, and have a visual timeline appear at the bottom of the web page, showing various commands and their times. See the recent Github redesign, which added a timeline canvas view for network activity.
- Technologies: JavaScript, Popcorn.js, canvas and HTML5
- Contacts: Scott Downe, Brett Gaylor, Dave Humphrey
Video Wrapper for Popcorn.js
The video element provides basic functionality for playing, pausing, seeking video in a web page, and for doing things like changing the volume. However, it is quite limited, and could be enhanced to support multiple overlapping videos, controlling more than 1 video in a page, fetching and displaying thumbnails, better seeking, buffering, etc. This project will create a new programming interface and API for the video element.
- Technologies: JavaScript, Popcorn.js, video
- Contacts: Anna Sobiepanek, Joel Young
- Primary Choice: Chris DeCairos
Create Soda.js: an interface extension to Popcorn.js
Various projects using video on the web need to create innovative and non-standard user interfaces to control things like visual timelines, play, pause, changing the volume, etc. This project will create a library that provides some commonly needed interfaces, specifically aimed at the Global Lives project
- Technologies: JavaScript, video, canvas, HTML5
- Contacts: Brett Gaylor, Anna Sobiepanek, Joel Young
- Primary Choice: Crystal de Nobrega
Create Candy.js: an effects extension to Popcorn.js
Various projects using video on the web need to create innovative and non-standard effects to transform the video, for example, applying filters, altering the video, using 2D and 3D effects, etc. This project will create a library that provides some commonly needed effects (e.g., colour filters, tilt shifting, etc.). This project will overlap and support the HTML5/Video Comic Book project.
- Technologies: JavaScript, video, canvas, WebGL, HTML5
- Contacts: Brett Gaylor, Scott Downe, Anna Sobiepanek, Dave Humphrey
- Primary Choice: Kevin Lasconia, Kenneth Pangilinan
- Secondary Choice: Crystal de Nobrega
HTML5/Video Comic Book
For the release of Firefox 4, Mozilla is creating a web-based comic book application, which uses video, canvas, and other HTML5 features. This project will help create the back-end JavaScript necessary to make things work with the video and canvas in the page. A professional designer will work on the HTML/CSS with you. This project will overlap and support the Candy.js library project.
- Technologies: JavaScript, video, canvas, HTML5
- Documentation: https://wiki.mozilla.org/Documentary
- Contacts: Brett Gaylor
- Secondary Choice: Kevin Lasconia, Kenneth Pangilinan
- Primary Choice: Brian Law
NFB Open Video Player
The NFB wishes to start experimenting with the possibilities of HTML5 video. They want to implement and deploy an HTML5 video player on NFB.ca that meets the high quality feature set that we have currently in place with our flash video player. In order to demonstrate how this player would extend the ability of the NFB to create dynamic interactions with page content, this project will also produce several "demos" of the possibilities for educational distribution.
NOTE: This project is large enough for a few people to work on it.
- Technologies: JavaScript, video, canvas, HTML5
- Documentation: http://developer.nfb.ca/trac/web/wiki/NFBHTML5videoplayer
- Contacts: Brett Gaylor, Anna Sobiepanek, Dave Humphrey
- Primary: Steven Weerdenburg
Get Microsoft's WiX MSI toolchain working with Mono
Microsoft has an open source tool written in .NET that can create MSI installable packages. Currently this toolchain runs on Windows using the Microsoft .NET Framework. This project will get this tool to run using Mono (the open source, cross platform .NET runtime) and working on Linux.
- Technologies: .NET, Windows, Linux, XML
- Contacts: Mike Hoye
Create Music.js: an API for dynamic music generation in JavaScript
The music.js library is meant to provide a high-level API for music generation, with functions and data sets for things like notes, scales, arpeggios, chords, phrases and rhythms. Music.js will be highly abstracted, but primarily developed to work with dsp.js
- Technologies: JavaScript, Mozilla Audio Data API, dsp.js
- Contacts: Al MacDonald, Corban Brook, David Humphrey
- Resources: https://wiki.mozilla.org/Audio_Data_API