Fall 2010 Mozilla Open Source Project List

From CDOT Wiki
Jump to: navigation, search


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: Andrew Condinho
  • Secondary: 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

Initial taks

  • multiple videos playing at once
  • 2 videos playing in sync
  • interface to switch between these videos

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: Kenneth Pangilinan
  • Secondary Choice: Crystal de Nobrega, Kevin Lasconia,

Initial Tasks

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: Kenneth Pangilinan, James Evangelista
  • Primary Choice: Brian Law

Initial Tasks

  • investigate the <track> element to see if it is an interesting way to trigger javascript commands in time
  • have a video move through 3 divs on a page, using timecodes provided by Brett
  • Create a halftone/duotone effect to resemble comic books, include in candy.js

Open Video Player

The BBB wishes to start experimenting with the possibilities of HTML5 video. Seneca will do early experiments and proof concepts while Mozilla is formalizing the partnership. They want to implement and deploy an HTML5 video player on the BBB website 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 BBBto 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.

Initial Tasks

  • 0.1 release should demo the chaptering, bookmarking and playlisting features as described in the "page and player interactions" section of the bbb developer wiki

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

  • Primary: Pete Leaning, James Evangelista

Create a WebGL Performance Test Suite

Compare the speed of Mozilla's WebGL implementation with other implementations, and build an automated test suite to allow Mozilla to track that it's implementation doesn't get slower over time.

  • Technologies: JavaScript, C++, OpenGL, WebGL
  • Contacts: Vlad, #gfx, Cathy Leung
  • Primary: Carl Desautels