Difference between revisions of "Project List"

From CDOT Wiki
Jump to: navigation, search
(First pass at separating active from potential projects)
(Second pass)
Line 1: Line 1:
 
You can get involved with any of the projects below.  Please see [[Assignment 2]] for details.  To join a project create a page for it, following the example of [[Sample Project]] below.  
 
You can get involved with any of the projects below.  Please see [[Assignment 2]] for details.  To join a project create a page for it, following the example of [[Sample Project]] below.  
  
==[[Generalization of Joga extension]] ==
+
== Active Projects ==
 +
 
 +
===[[Generalization of Joga extension]] ===
  
 
We worked with partners to create an [http://www.joga.com/jogacompanion.aspx extension] for delivering World Cup scoring updates as well as providing country-specific themes.  We'd like someone to take it apart, remove or refactor the [http://www.joga.com/jogacompanion.aspx Joga]-specific pieces so that it can be used for other such data sources (hello, hockey?), and write some basic documentation for how to create your own notification-and-theme extension from the toolkit that results.
 
We worked with partners to create an [http://www.joga.com/jogacompanion.aspx extension] for delivering World Cup scoring updates as well as providing country-specific themes.  We'd like someone to take it apart, remove or refactor the [http://www.joga.com/jogacompanion.aspx Joga]-specific pieces so that it can be used for other such data sources (hello, hockey?), and write some basic documentation for how to create your own notification-and-theme extension from the toolkit that results.
Line 7: Line 9:
 
Related tech and skills: XUL, JavaScript, documentation, web services
 
Related tech and skills: XUL, JavaScript, documentation, web services
  
 
+
=== [[XULRunner Guide]] ===
== [[XULRunner Guide]] ==
 
  
 
The [http://en.wikipedia.org/wiki/XULRunner XULRunner project] provides an "application runner" for building apps -- like Firefox, Thunderbird, and Sunbird -- atop the [http://developer.mozilla.org/en/docs/Toolkit_API Mozilla toolkit] framework.  It needs a guide outlined, high-priority parts written, and examples created to help people get started.
 
The [http://en.wikipedia.org/wiki/XULRunner XULRunner project] provides an "application runner" for building apps -- like Firefox, Thunderbird, and Sunbird -- atop the [http://developer.mozilla.org/en/docs/Toolkit_API Mozilla toolkit] framework.  It needs a guide outlined, high-priority parts written, and examples created to help people get started.
Line 16: Line 17:
 
Reference: http://cs.senecac.on.ca/fsoss/2006/workshop.html#XULRunner
 
Reference: http://cs.senecac.on.ca/fsoss/2006/workshop.html#XULRunner
  
 
+
=== [[Updating JS guide and JS reference]] ===
== [[Updating JS guide and JS reference]] ==
 
  
 
The current [http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide JavaScript guide] and [http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference reference ] are valuable, but in serious need of updating in both structure and content (new language features, more relevant compatibility information, improved examples).
 
The current [http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide JavaScript guide] and [http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference reference ] are valuable, but in serious need of updating in both structure and content (new language features, more relevant compatibility information, improved examples).
Line 23: Line 23:
 
Related tech and skills: documentation, JavaScript
 
Related tech and skills: documentation, JavaScript
  
 
+
=== [[Bugzilla component-watching]] ===
== [[Bugzilla component-watching]] ==
 
  
 
It's common for a developer to want to "watch" all the bugs that are filed in a certain [https://bugzilla.mozilla.org Bugzilla] component.  Mozilla uses a convoluted and painful system of synthetic accounts to simulate this capability, and we'd all really prefer to be able to do it more directly and with less opportunity for error.
 
It's common for a developer to want to "watch" all the bugs that are filed in a certain [https://bugzilla.mozilla.org Bugzilla] component.  Mozilla uses a convoluted and painful system of synthetic accounts to simulate this capability, and we'd all really prefer to be able to do it more directly and with less opportunity for error.
Line 30: Line 29:
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=76794 Bug 76794]
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=76794 Bug 76794]
  
== [http://cs1.senecac.on.ca/wiki/index.php/Applescript_support_for_Firefox Applescript support for Firefox] ==
+
=== [http://cs1.senecac.on.ca/wiki/index.php/Applescript_support_for_Firefox Applescript support for Firefox] ===
  
 
Lots of people would like to script Firefox from [http://en.wikipedia.org/wiki/AppleScript AppleScript] (or, more generally, from the [http://developer.apple.com/documentation/AppleScript/Conceptual/AppleScriptX/Concepts/osa.html OSA]), and extension authors would like to be able to call out to [http://en.wikipedia.org/wiki/AppleScript AppleScript]/[http://developer.apple.com/documentation/AppleScript/Conceptual/AppleScriptX/Concepts/osa.html OSA] from their code as well.
 
Lots of people would like to script Firefox from [http://en.wikipedia.org/wiki/AppleScript AppleScript] (or, more generally, from the [http://developer.apple.com/documentation/AppleScript/Conceptual/AppleScriptX/Concepts/osa.html OSA]), and extension authors would like to be able to call out to [http://en.wikipedia.org/wiki/AppleScript AppleScript]/[http://developer.apple.com/documentation/AppleScript/Conceptual/AppleScriptX/Concepts/osa.html OSA] from their code as well.
Line 36: Line 35:
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=125419 Bug 125419]
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=125419 Bug 125419]
  
== [[Airbag development and server operation]]==
+
=== [[Airbag development and server operation]] ===
  
 
The [http://code.google.com/p/airbag/ Airbag project] is developing an open source crash reporting and analysis system, analogous to [http://en.wikipedia.org/wiki/Crash_reporter#Talkback Talkback].  There's lots of work to do on wiring it into the build system, operating servers for collecting and analyzing data, and extending Firefox's use of it to collect additional helpful information (like installed extensions, memory usage, etc.)  
 
The [http://code.google.com/p/airbag/ Airbag project] is developing an open source crash reporting and analysis system, analogous to [http://en.wikipedia.org/wiki/Crash_reporter#Talkback Talkback].  There's lots of work to do on wiring it into the build system, operating servers for collecting and analyzing data, and extending Firefox's use of it to collect additional helpful information (like installed extensions, memory usage, etc.)  
Line 42: Line 41:
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=216827 Bug 216827],  [http://gemal.dk/blog/2006/09/13/talkback_to_be_replaced_by_airbag/?from=rss-category here], and [http://benjamin.smedbergs.us/blog/2006-09-12/deploying-the-airbag/ here]
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=216827 Bug 216827],  [http://gemal.dk/blog/2006/09/13/talkback_to_be_replaced_by_airbag/?from=rss-category here], and [http://benjamin.smedbergs.us/blog/2006-09-12/deploying-the-airbag/ here]
  
== [[Calendar stuff]] ==
+
=== [[Calendar stuff]] ===
  
 
The [http://www.mozilla.org/projects/calendar/ Calendar project] has lots of stuff for people to do, from [http://www.microsoft.com/exchange/default.mspx Exchange] connectors to off-line caching to bug fixes and minor features galore.  A good place to start is the #calendar IRC channel on moznet.
 
The [http://www.mozilla.org/projects/calendar/ Calendar project] has lots of stuff for people to do, from [http://www.microsoft.com/exchange/default.mspx Exchange] connectors to off-line caching to bug fixes and minor features galore.  A good place to start is the #calendar IRC channel on moznet.
  
== [[OS X Keychain integration]] ==
+
=== [[OS X Keychain integration]] ===
  
 
It would be great to store Firefox's saved passwords in the [http://en.wikipedia.org/wiki/Apple_Keychain OS X keychain], for consistency and ease of use.
 
It would be great to store Firefox's saved passwords in the [http://en.wikipedia.org/wiki/Apple_Keychain OS X keychain], for consistency and ease of use.
Line 52: Line 51:
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=106400 Bug 106400]
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=106400 Bug 106400]
  
== [[CSS guide]] ==
+
=== [[CSS guide]] ===
  
 
The [http://developer.mozilla.org Mozilla Developer Center] would like to add a CSS guide to its set of major documents, covering at least the top 100 CSS properties in use on the web today.  This data can be obtained through tools .  It should include numerous examples, and a fair number of small tutorial/how-to sections for different common tasks or requests from web authors.   
 
The [http://developer.mozilla.org Mozilla Developer Center] would like to add a CSS guide to its set of major documents, covering at least the top 100 CSS properties in use on the web today.  This data can be obtained through tools .  It should include numerous examples, and a fair number of small tutorial/how-to sections for different common tasks or requests from web authors.   
Line 58: Line 57:
 
Reference: [http://developer.mozilla.org/en/docs/CSS_Reference CSS Reference]
 
Reference: [http://developer.mozilla.org/en/docs/CSS_Reference CSS Reference]
  
== [[Delta debugging framework]] ==
+
=== [[Delta debugging framework]] ===
  
 
[http://en.wikipedia.org/wiki/Delta_Debugging Delta debugging] is an automated approach to debugging that isolates failures systematically.  Given a failing test that can be mechanically verified (including a browser crash), [http://en.wikipedia.org/wiki/Delta_Debugging delta debugging] is a way of automatically isolating the change that introduced the failure.  Having a framework in place to pull builds from CVS, bisect by date and change set (using [http://en.wikipedia.org/wiki/Bonsai_CVS_code_management_system bonsai ] data -- remember, CVS doesn't have changesets!), and report results would let computers make developers more productive.
 
[http://en.wikipedia.org/wiki/Delta_Debugging Delta debugging] is an automated approach to debugging that isolates failures systematically.  Given a failing test that can be mechanically verified (including a browser crash), [http://en.wikipedia.org/wiki/Delta_Debugging delta debugging] is a way of automatically isolating the change that introduced the failure.  Having a framework in place to pull builds from CVS, bisect by date and change set (using [http://en.wikipedia.org/wiki/Bonsai_CVS_code_management_system bonsai ] data -- remember, CVS doesn't have changesets!), and report results would let computers make developers more productive.
  
== [[D-Bus and other Linux desktop integration improvements]] ==
+
=== [[D-Bus and other Linux desktop integration improvements]] ===
  
 
Various Linux distributors have patches in their Firefox packages that add bits and pieces of Linux integration, and we'd like to see even more available.  One particular area of interest is controlling the browser via [http://en.wikipedia.org/wiki/D-BUS d-bus], and exposing [http://en.wikipedia.org/wiki/D-BUS dbus] events to the application and extensions.
 
Various Linux distributors have patches in their Firefox packages that add bits and pieces of Linux integration, and we'd like to see even more available.  One particular area of interest is controlling the browser via [http://en.wikipedia.org/wiki/D-BUS d-bus], and exposing [http://en.wikipedia.org/wiki/D-BUS dbus] events to the application and extensions.
  
== [["Avoid loading the same page twice" Extension]] ==
+
=== [["Avoid loading the same page twice" Extension]] ===
  
 
Create an extension to Firefox so that when a bookmark is clicked, and that site is already open in any tab in any window, that tab/window is brought to the front rather than loading the page again.
 
Create an extension to Firefox so that when a bookmark is clicked, and that site is already open in any tab in any window, that tab/window is brought to the front rather than loading the page again.
Line 72: Line 71:
 
Related tech and skills: XUL, JavaScript
 
Related tech and skills: XUL, JavaScript
  
== [[APNG]] ==
+
=== [[APNG]] ===
  
 
[[APNG]] stands for Animated PNG, an extension to the PNG specification to allow for animated PNG images. Similar to how Animated GIF is an extension of GIF. Create such a thing.
 
[[APNG]] stands for Animated PNG, an extension to the PNG specification to allow for animated PNG images. Similar to how Animated GIF is an extension of GIF. Create such a thing.
  
== [[Mozilla@Seneca Wiki Administration]] ==
+
=== [[Mozilla@Seneca Wiki Administration]] ===
 
 
 
This wonderful wiki needs attention too!  Already there are configuration issues that need to get fixed, extensions we could be using, etc.  As we push further with this, we'll come up with more things too.  This work will require knowledge of PHP, server administration, knowledge of [http://www.mediawiki.org/wiki/MediaWiki MediaWiki].
 
This wonderful wiki needs attention too!  Already there are configuration issues that need to get fixed, extensions we could be using, etc.  As we push further with this, we'll come up with more things too.  This work will require knowledge of PHP, server administration, knowledge of [http://www.mediawiki.org/wiki/MediaWiki MediaWiki].
  
== [[Bug Triage Extension]] ==
+
=== [[Bug Triage Extension]] ===
  
 
Mike Beltzner suggested this one after his talk.  The idea is to make it trivial for testers to follow-through a bug's Steps To Reproduce (STR) so as to confirm it.  A tester should be able to use this Extension to ask for a bug (i.e., one would be picked for him/her--no querying) and then a sidebar or similar would appear showing the steps to follow.  Under that would need to be a way (e.g., buttons) to say that the bug is confirmed or not.  Ideally the QA team could prioritize bugs so they appear in this list automatically, making it easier for testers to get the "right" bugs quickly.
 
Mike Beltzner suggested this one after his talk.  The idea is to make it trivial for testers to follow-through a bug's Steps To Reproduce (STR) so as to confirm it.  A tester should be able to use this Extension to ask for a bug (i.e., one would be picked for him/her--no querying) and then a sidebar or similar would appear showing the steps to follow.  Under that would need to be a way (e.g., buttons) to say that the bug is confirmed or not.  Ideally the QA team could prioritize bugs so they appear in this list automatically, making it easier for testers to get the "right" bugs quickly.
Line 86: Line 84:
 
Reference: talk to beltzner.
 
Reference: talk to beltzner.
  
== [[Extending the Buildbot]] ==
+
=== [[Extending the Buildbot]] ===
  
 
This project is a catch-all for Buildbot development done here. The Buildbot is an automated build system written in python. It is used on the Mozilla Seneca Cluster.
 
This project is a catch-all for Buildbot development done here. The Buildbot is an automated build system written in python. It is used on the Mozilla Seneca Cluster.
Line 92: Line 90:
 
Related skills: Python
 
Related skills: Python
  
== [[Distcc With MSVC]] ==
+
=== [[Distcc With MSVC]] ===
  
 
Speed up Mozilla's builds by letting them use MSVC with distcc on Windows.
 
Speed up Mozilla's builds by letting them use MSVC with distcc on Windows.
  
== [[Unit Testing]] ==
+
=== [[Unit Testing]] ===
  
 
Programmatic testing of software. The participant will take a section of code and write unit tests for it, fully testing all aspects of the code. This may require the creation of a unit testing framework and interfacing with other developers who know a particular module or service. The programmer will be adept at finding boundary cases and creating tests that deliberately break the software through code. These may lead to the creation of bugs in [http://bugzilla.mozilla.org bugzilla].
 
Programmatic testing of software. The participant will take a section of code and write unit tests for it, fully testing all aspects of the code. This may require the creation of a unit testing framework and interfacing with other developers who know a particular module or service. The programmer will be adept at finding boundary cases and creating tests that deliberately break the software through code. These may lead to the creation of bugs in [http://bugzilla.mozilla.org bugzilla].
Line 102: Line 100:
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
  
 
+
=== [[OpenGL Backend in Firefox 3]] ===
== [[OpenGL Backend in Firefox 3]] ==
 
  
 
Creating a Wrapper around OpenGL inside the core of Firefox for future developement of Canvas. The programmer of this project will have to work with the existing rendering code and create bindings to OpenGL calls that will be eventually used through Canvas and JavaScript. The completion of this code will eventually make its way into the firefox v3 trunk. (Subject to revision by Dave/Vlad)
 
Creating a Wrapper around OpenGL inside the core of Firefox for future developement of Canvas. The programmer of this project will have to work with the existing rendering code and create bindings to OpenGL calls that will be eventually used through Canvas and JavaScript. The completion of this code will eventually make its way into the firefox v3 trunk. (Subject to revision by Dave/Vlad)
Line 109: Line 106:
 
Reference: Vlad.
 
Reference: Vlad.
  
== [[MDC Infrastructure]] ==
+
=== [[MDC Infrastructure]] ===
  
 
Intergrate new features to MDC, work on existing bugs and fix compatibility issues for the upgrade of Mediawiki to 1.7. (Tentative description)
 
Intergrate new features to MDC, work on existing bugs and fix compatibility issues for the upgrade of Mediawiki to 1.7. (Tentative description)
  
== [[Firefox Performance Testing : A Python framework for Windows]] ==
+
=== [[Firefox Performance Testing : A Python framework for Windows]] ===
  
 
Building new tests, improving on existing ones, strengthening the framework itself and porting it to other OS's
 
Building new tests, improving on existing ones, strengthening the framework itself and porting it to other OS's
Line 123: Line 120:
 
'''Note: Not the typical mundane black box testing'''
 
'''Note: Not the typical mundane black box testing'''
  
== [[Vista Testing]] ==
+
=== [[Vista Testing]] ===
  
 
Testing Firefox on the new Microsoft Vista operating system.
 
Testing Firefox on the new Microsoft Vista operating system.
  
== [[Mozilla@Seneca Cluster Administration]] ==
+
=== [[Mozilla@Seneca Cluster Administration]] ===
  
 
Administration of the Mozilla cluster at Seneca.
 
Administration of the Mozilla cluster at Seneca.
  
 +
== Potential Projects -- You busy? ==
  
== [[Sample Project]] ==
+
=== [[Sample Project]] ===
  
 
This is a sample project stub.  You can use the template for [[Sample Project]] in order to create a project page for one of the stubs below.  This is how you 'sign-up' for a project.
 
This is a sample project stub.  You can use the template for [[Sample Project]] in order to create a project page for one of the stubs below.  This is how you 'sign-up' for a project.
Line 138: Line 136:
 
NOTE: if someone has already created the project page, speak to this person and see if you can join them.  If so, simply add your name to the '''Project Leader(s)''' page.  Otherwise, you can become a contributor later.
 
NOTE: if someone has already created the project page, speak to this person and see if you can join them.  If so, simply add your name to the '''Project Leader(s)''' page.  Otherwise, you can become a contributor later.
  
== SVN access control via LDAP ==
+
=== SVN access control via LDAP ===
  
 
We have a tool called "[https://despot.mozilla.org/ Despot]" which gives us fine-grained control over access to the [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Via_CVS Mozilla CVS repository].  As we start to have development hosted in [http://weblogs.mozillazine.org/preed/2006/08/subversive_subversion_conversi.html Subversion] (SVN), with account information maintained in [http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP], we'd like to have a tool to enforce and manage such controls there as well.
 
We have a tool called "[https://despot.mozilla.org/ Despot]" which gives us fine-grained control over access to the [http://developer.mozilla.org/en/docs/Mozilla_Source_Code_Via_CVS Mozilla CVS repository].  As we start to have development hosted in [http://weblogs.mozillazine.org/preed/2006/08/subversive_subversion_conversi.html Subversion] (SVN), with account information maintained in [http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP], we'd like to have a tool to enforce and manage such controls there as well.
Line 147: Line 145:
  
  
== Updating and migrating of MDC content ==
+
=== Updating and migrating of MDC content ===
  
 
The [http://developer.mozilla.org Mozilla Developer Center] has rights to a bunch of content that's still hosted on various strange corners of http://www.mozilla.org and the old [http://developer.mozilla.org/en/docs/DevEdge DevEdge] archives.  There are some gems in there that need dusting off and updating to reflect the realities of the modern web.
 
The [http://developer.mozilla.org Mozilla Developer Center] has rights to a bunch of content that's still hosted on various strange corners of http://www.mozilla.org and the old [http://developer.mozilla.org/en/docs/DevEdge DevEdge] archives.  There are some gems in there that need dusting off and updating to reflect the realities of the modern web.
Line 154: Line 152:
  
  
== Test framework development ==
+
=== Test framework development ===
  
 
We have a number of promising prototype or proof-of-concept test frameworks for exercising Mozilla code from different directions.  They need varying amounts of work to make them more robust and general, document them, and integrate them into different kinds of automation.
 
We have a number of promising prototype or proof-of-concept test frameworks for exercising Mozilla code from different directions.  They need varying amounts of work to make them more robust and general, document them, and integrate them into different kinds of automation.
Line 160: Line 158:
 
Related tech and skills: Python, Perl, Makefiles, shell scripting, JavaScript
 
Related tech and skills: Python, Perl, Makefiles, shell scripting, JavaScript
  
== OpenDarwin tinderbox image ==
+
=== OpenDarwin tinderbox image ===
  
 
We would love to have a [http://en.wikipedia.org/wiki/Tinderbox_%28software%29 Tinderbox] image (e.g., VM) for testing and building on the Mac, based on the [http://www.opensource.apple.com/darwinsource/ freely-available OS X source].  Also, we'd like to get it wired into [[User:Bhearsum|Ben Hearsum's]] (bhearsum) [http://en.wikipedia.org/wiki/Buildbot buildbot] system.
 
We would love to have a [http://en.wikipedia.org/wiki/Tinderbox_%28software%29 Tinderbox] image (e.g., VM) for testing and building on the Mac, based on the [http://www.opensource.apple.com/darwinsource/ freely-available OS X source].  Also, we'd like to get it wired into [[User:Bhearsum|Ben Hearsum's]] (bhearsum) [http://en.wikipedia.org/wiki/Buildbot buildbot] system.
Line 166: Line 164:
 
Related tech and skills: system configuration, scripting, light C/C++, Makefile
 
Related tech and skills: system configuration, scripting, light C/C++, Makefile
  
== FAQ mining for extension developers ==
+
=== FAQ mining for extension developers ===
  
 
Literally every day, there are informal exchanges on IRC (e.g., #extdev, #developers, #firefox, #seneca, etc.) and newsgroups that are fantastic fodder for small, focused documents.  Collect these exchanges and fleshing them out as recipes for extension authors that include sample code.
 
Literally every day, there are informal exchanges on IRC (e.g., #extdev, #developers, #firefox, #seneca, etc.) and newsgroups that are fantastic fodder for small, focused documents.  Collect these exchanges and fleshing them out as recipes for extension authors that include sample code.
  
  
== Functional Testing ==
+
=== Functional Testing ===
  
 
Testing performed from a user's perspective. Includes the running and writing of test cases in [http://litmus.mozilla.org Litmus], filing and tracking bugs through [bugzilla.mozilla.org bugzilla], stress-testing and exploratory debugging. This project requires a dedication to breaking software in an organized and repeatable fashion. There is no such thing as "the wrong way" to use software and the functional tester is adept at abusing a system in previously-unknown ways.
 
Testing performed from a user's perspective. Includes the running and writing of test cases in [http://litmus.mozilla.org Litmus], filing and tracking bugs through [bugzilla.mozilla.org bugzilla], stress-testing and exploratory debugging. This project requires a dedication to breaking software in an organized and repeatable fashion. There is no such thing as "the wrong way" to use software and the functional tester is adept at abusing a system in previously-unknown ways.
Line 177: Line 175:
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
  
 
+
=== Performance Testing ===
 
 
 
 
== Performance Testing ==
 
  
 
Extending the performance tookit and tinderbox reporting system. The project begins with a framework for testing pageloads and startup times in Win32. The successful completion of this project will see this framework develop into a more robust system complete with processor-timing information and graphing. Memory analysis and samples during runs would also be beneficial. Further success or subprojects could include porting the system Linux and OS X platforms.
 
Extending the performance tookit and tinderbox reporting system. The project begins with a framework for testing pageloads and startup times in Win32. The successful completion of this project will see this framework develop into a more robust system complete with processor-timing information and graphing. Memory analysis and samples during runs would also be beneficial. Further success or subprojects could include porting the system Linux and OS X platforms.
Line 186: Line 181:
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=346785 Bug 346785]. Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
 
Reference: [https://bugzilla.mozilla.org/show_bug.cgi?id=346785 Bug 346785]. Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
  
== Automated Testing ==
+
=== Automated Testing ===
  
 
Programmatically driving the browser to perform human-like tasks repeatedly. The programmer will have to create a framework for driving browser components in JavaScript or other scripting language to repeatedly test various pieces of the application. Ideally, the successful completion of this task will see a test or suite of tests that can be invoked by command line to start the browser, run the test suites and then exit and record the results for display or analysis.
 
Programmatically driving the browser to perform human-like tasks repeatedly. The programmer will have to create a framework for driving browser components in JavaScript or other scripting language to repeatedly test various pieces of the application. Ideally, the successful completion of this task will see a test or suite of tests that can be invoked by command line to start the browser, run the test suites and then exit and record the results for display or analysis.
  
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.
 
Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.

Revision as of 13:12, 25 September 2006

You can get involved with any of the projects below. Please see Assignment 2 for details. To join a project create a page for it, following the example of Sample Project below.

Active Projects

Generalization of Joga extension

We worked with partners to create an extension for delivering World Cup scoring updates as well as providing country-specific themes. We'd like someone to take it apart, remove or refactor the Joga-specific pieces so that it can be used for other such data sources (hello, hockey?), and write some basic documentation for how to create your own notification-and-theme extension from the toolkit that results.

Related tech and skills: XUL, JavaScript, documentation, web services

XULRunner Guide

The XULRunner project provides an "application runner" for building apps -- like Firefox, Thunderbird, and Sunbird -- atop the Mozilla toolkit framework. It needs a guide outlined, high-priority parts written, and examples created to help people get started.

Related tech and skills: XUL, documentation, cross-platform testing

Reference: http://cs.senecac.on.ca/fsoss/2006/workshop.html#XULRunner

Updating JS guide and JS reference

The current JavaScript guide and reference are valuable, but in serious need of updating in both structure and content (new language features, more relevant compatibility information, improved examples).

Related tech and skills: documentation, JavaScript

Bugzilla component-watching

It's common for a developer to want to "watch" all the bugs that are filed in a certain Bugzilla component. Mozilla uses a convoluted and painful system of synthetic accounts to simulate this capability, and we'd all really prefer to be able to do it more directly and with less opportunity for error.

Reference: Bug 76794

Applescript support for Firefox

Lots of people would like to script Firefox from AppleScript (or, more generally, from the OSA), and extension authors would like to be able to call out to AppleScript/OSA from their code as well.

Reference: Bug 125419

Airbag development and server operation

The Airbag project is developing an open source crash reporting and analysis system, analogous to Talkback. There's lots of work to do on wiring it into the build system, operating servers for collecting and analyzing data, and extending Firefox's use of it to collect additional helpful information (like installed extensions, memory usage, etc.)

Reference: Bug 216827, here, and here

Calendar stuff

The Calendar project has lots of stuff for people to do, from Exchange connectors to off-line caching to bug fixes and minor features galore. A good place to start is the #calendar IRC channel on moznet.

OS X Keychain integration

It would be great to store Firefox's saved passwords in the OS X keychain, for consistency and ease of use.

Reference: Bug 106400

CSS guide

The Mozilla Developer Center would like to add a CSS guide to its set of major documents, covering at least the top 100 CSS properties in use on the web today. This data can be obtained through tools . It should include numerous examples, and a fair number of small tutorial/how-to sections for different common tasks or requests from web authors.

Reference: CSS Reference

Delta debugging framework

Delta debugging is an automated approach to debugging that isolates failures systematically. Given a failing test that can be mechanically verified (including a browser crash), delta debugging is a way of automatically isolating the change that introduced the failure. Having a framework in place to pull builds from CVS, bisect by date and change set (using bonsai data -- remember, CVS doesn't have changesets!), and report results would let computers make developers more productive.

D-Bus and other Linux desktop integration improvements

Various Linux distributors have patches in their Firefox packages that add bits and pieces of Linux integration, and we'd like to see even more available. One particular area of interest is controlling the browser via d-bus, and exposing dbus events to the application and extensions.

"Avoid loading the same page twice" Extension

Create an extension to Firefox so that when a bookmark is clicked, and that site is already open in any tab in any window, that tab/window is brought to the front rather than loading the page again.

Related tech and skills: XUL, JavaScript

APNG

APNG stands for Animated PNG, an extension to the PNG specification to allow for animated PNG images. Similar to how Animated GIF is an extension of GIF. Create such a thing.

Mozilla@Seneca Wiki Administration

This wonderful wiki needs attention too! Already there are configuration issues that need to get fixed, extensions we could be using, etc. As we push further with this, we'll come up with more things too. This work will require knowledge of PHP, server administration, knowledge of MediaWiki.

Bug Triage Extension

Mike Beltzner suggested this one after his talk. The idea is to make it trivial for testers to follow-through a bug's Steps To Reproduce (STR) so as to confirm it. A tester should be able to use this Extension to ask for a bug (i.e., one would be picked for him/her--no querying) and then a sidebar or similar would appear showing the steps to follow. Under that would need to be a way (e.g., buttons) to say that the bug is confirmed or not. Ideally the QA team could prioritize bugs so they appear in this list automatically, making it easier for testers to get the "right" bugs quickly.

Reference: talk to beltzner.

Extending the Buildbot

This project is a catch-all for Buildbot development done here. The Buildbot is an automated build system written in python. It is used on the Mozilla Seneca Cluster.

Related skills: Python

Distcc With MSVC

Speed up Mozilla's builds by letting them use MSVC with distcc on Windows.

Unit Testing

Programmatic testing of software. The participant will take a section of code and write unit tests for it, fully testing all aspects of the code. This may require the creation of a unit testing framework and interfacing with other developers who know a particular module or service. The programmer will be adept at finding boundary cases and creating tests that deliberately break the software through code. These may lead to the creation of bugs in bugzilla.

Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.

OpenGL Backend in Firefox 3

Creating a Wrapper around OpenGL inside the core of Firefox for future developement of Canvas. The programmer of this project will have to work with the existing rendering code and create bindings to OpenGL calls that will be eventually used through Canvas and JavaScript. The completion of this code will eventually make its way into the firefox v3 trunk. (Subject to revision by Dave/Vlad)

Reference: Vlad.

MDC Infrastructure

Intergrate new features to MDC, work on existing bugs and fix compatibility issues for the upgrade of Mediawiki to 1.7. (Tentative description)

Firefox Performance Testing : A Python framework for Windows

Building new tests, improving on existing ones, strengthening the framework itself and porting it to other OS's

Related to the Performance Testing Project

Reference: alice

Note: Not the typical mundane black box testing

Vista Testing

Testing Firefox on the new Microsoft Vista operating system.

Mozilla@Seneca Cluster Administration

Administration of the Mozilla cluster at Seneca.

Potential Projects -- You busy?

Sample Project

This is a sample project stub. You can use the template for Sample Project in order to create a project page for one of the stubs below. This is how you 'sign-up' for a project.

NOTE: if someone has already created the project page, speak to this person and see if you can join them. If so, simply add your name to the Project Leader(s) page. Otherwise, you can become a contributor later.

SVN access control via LDAP

We have a tool called "Despot" which gives us fine-grained control over access to the Mozilla CVS repository. As we start to have development hosted in Subversion (SVN), with account information maintained in LDAP, we'd like to have a tool to enforce and manage such controls there as well.

Related tech and skills: server config, LDAP, scripting, web interface/app development

Reference: See https://despot.mozilla.org/help.html and http://lxr.mozilla.org/mozilla/source/webtools/despot/README. Also, please speak with Reed Loden (reed) about this project.


Updating and migrating of MDC content

The Mozilla Developer Center has rights to a bunch of content that's still hosted on various strange corners of http://www.mozilla.org and the old DevEdge archives. There are some gems in there that need dusting off and updating to reflect the realities of the modern web.

Related tech and skills: web authoring, documentation, scripting, technology domains of chosen articles.


Test framework development

We have a number of promising prototype or proof-of-concept test frameworks for exercising Mozilla code from different directions. They need varying amounts of work to make them more robust and general, document them, and integrate them into different kinds of automation.

Related tech and skills: Python, Perl, Makefiles, shell scripting, JavaScript

OpenDarwin tinderbox image

We would love to have a Tinderbox image (e.g., VM) for testing and building on the Mac, based on the freely-available OS X source. Also, we'd like to get it wired into Ben Hearsum's (bhearsum) buildbot system.

Related tech and skills: system configuration, scripting, light C/C++, Makefile

FAQ mining for extension developers

Literally every day, there are informal exchanges on IRC (e.g., #extdev, #developers, #firefox, #seneca, etc.) and newsgroups that are fantastic fodder for small, focused documents. Collect these exchanges and fleshing them out as recipes for extension authors that include sample code.


Functional Testing

Testing performed from a user's perspective. Includes the running and writing of test cases in Litmus, filing and tracking bugs through [bugzilla.mozilla.org bugzilla], stress-testing and exploratory debugging. This project requires a dedication to breaking software in an organized and repeatable fashion. There is no such thing as "the wrong way" to use software and the functional tester is adept at abusing a system in previously-unknown ways.

Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.

Performance Testing

Extending the performance tookit and tinderbox reporting system. The project begins with a framework for testing pageloads and startup times in Win32. The successful completion of this project will see this framework develop into a more robust system complete with processor-timing information and graphing. Memory analysis and samples during runs would also be beneficial. Further success or subprojects could include porting the system Linux and OS X platforms.

Reference: Bug 346785. Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.

Automated Testing

Programmatically driving the browser to perform human-like tasks repeatedly. The programmer will have to create a framework for driving browser components in JavaScript or other scripting language to repeatedly test various pieces of the application. Ideally, the successful completion of this task will see a test or suite of tests that can be invoked by command line to start the browser, run the test suites and then exit and record the results for display or analysis.

Reference: Work with Mozilla's Rob Campbell and Jay Patel from the QA Team.