Potential Projects
Working Draft. Please do not pick from this list until completed.
Contents
- 1 Introduction
- 2 Projects
- 2.1 Sample Project
- 2.2 Mozilla Source and Symbol Server
- 2.3 Port canvas3d to non-Windows platforms
- 2.4 Add OpenID support to Bugzilla
- 2.5 Full-Text History Search extension
- 2.6 Mozilla Tree Visualization
- 2.7 Mozilla Data Visualization Back-ends
- 2.8 Plugin-watcher
- 2.9 Improve Mozilla Application and Platform Documentation
- 2.10 Localize Mozilla
- 2.11 Testing of Canadian Banking and Financial Sites in Mozilla
- 2.12 My Favicons extension
- 2.13 Tbeachball - Quantifying Mozilla's Responsiveness
- 2.14 Mozilla Developer Virtual Appliance
- 2.15 Add support for more compilers to distcc
- 2.16 Port distcc to MSYS
- 2.17 Add Multi-File transfer to distcc
- 2.18 Add password managers for various platforms
- 2.19 Convert password storage to a SQLite database
- 2.20 Support for OpenID
- 2.21 Refactor master password out of NSS
- 2.22 Add Offline Support to an open source web app
- 2.23 Thunderbird SMTP Auto-Sensing
- 2.24 Firefox Session Saver Extension
- 2.25 Thunderbird Picture Preview
- 2.26 Cross-Platform Mozilla Build Farm
- 2.27 Bugzilla component-watching
- 2.28 Automated Testing
- 2.29 Litmus Extension
- 2.30 "Avoid loading the same page twice" Extension
- 2.31 Tinderbox front page improvements
- 2.32 Buildbot and EC2
- 2.33 Firebug "linting" for portability problems
- 2.34 Add-on update helper tools for developers
- 2.35 Make FUEL work with Firefox 2
- 2.36 Benchmark SVG
- 2.37 XULRunner Application Packaging
- 2.38 Expose DBUS to XPCOM
- 2.39 Embeddable HTTP Engine
- 2.40 Desktop Social Networking Integration
Introduction
This is a list of potential projects that need people. If you'd like to work on one of these, move the chosen project to the Project List and create a page for your work based on the Sample Project template.
Projects
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.
Mozilla Source and Symbol Server
Create a source code server to work with Mozilla's current symbol server. This will allow users to do full debugs of nightly release builds with access to remote symbols and full source code.
Port canvas3d to non-Windows platforms
The canvas3d extension is a binary C++ component that adds a 3D OpenGL drawing context to the HTML canvas element. Currently canvas3d works only on Windows. Port the code to Linux and/or Mac OS X. Porting involves implementing a pbuffer class for each new platform. Some familiarity with OpenGL, or a willingness to learn it, is required.
Resources: Cathy, Vlad.
Add OpenID support to Bugzilla
Many open source projects rely on bugzilla for bug tracking, and open source developers use different instances, forcing them to have multiple logins. Complete OpenID support in bugzilla.
References: see bug 294608
Full-Text History Search extension
Firefox3 probably won't ship with support for full-text history search, even though url-bar autocomplete (with urls/titles) is a really great feature/idea. Write an extension in order to add this feature.
References: http://skrul.com/blog/projects/xpclucene/
Mozilla Tree Visualization
Use the canvas element in order to create a generic front-end for data visualization of the Mozilla source. Many types of information about the Mozilla project can be keyed to the source tree. For example, file change-rates, code-coverage, bug activity per module, checkins per module, etc. The visualization will be a heatmap, showing certain types of activity in the tree. Doing this visualizaiton using canvas3d would allow for a third axis, and changes over time to be shown.
Mozilla Data Visualization Back-ends
Create a data-source for the Mozilla Tree Visualization project. This means data mining cvs.mozilla.org, bugzilla.mozilla.org, bonsai.mozilla.org and preparing the data for use in a heatmap visualization.
Plugin-watcher
Firefox sometimes gets a bad reputation for crashing or locking up when a plugin such as Adobe Flash or Windows Media Player causes the problem. Add code to Firefox (or write an extension) so that when a plugin misbehaves, a dialog is presented informing the user so that they can take corrective action (disabling the plugin) or filing a bug with the right party (this warning could be similar to the warning that appears when a JS script in a web page hogs too much CPU time. As a minimum it should identify that a plugin is to blame; better would be to inform the user of the plugin's name; best would be to provide an option to temporarily disable the plugin).
Improve Mozilla Application and Platform Documentation
Not enough is understood about the various communities and companies who develop with Mozilla, as opposed to those who work on the Mozilla code itself. A proper survey needs to be conducted in order to find out which APIs are being used and how, what is hard, what could be improved, etc. The Mozilla Platform Application Developers is interested in changing this. Their goal is to work with the Mozilla development community to survey, understand, and document the current state of the art. In this project you will work with the mozpad community to connect with projects/companies in orbit around Mozilla and do interviews with their developers. You will then document this information.
- References: http://www.mozpad.org/doku.php?id=actionitem:documentation_proposal
- See also: http://starkravingfinkle.org/blog/2007/06/xulrunner-wishlist/ and http://www.songbirdnest.com/node/1826
- Contacts: plasticmillion
Localize Mozilla
Join a localization team (see http://developer.mozilla.org/en/docs/Localization) and help localize Mozilla into a language other than English, for example, Chinese.
Testing of Canadian Banking and Financial Sites in Mozilla
This project will focus on improving the user experience at banking and other financial sites for Canadian Mozilla users. This includes determining which sites are relevant, insuring proper behavior for Firefox 3 on these sites, etc.
References: http://quality.mozilla.org/node/293
My Favicons extension
Write an extension to allow the user to pick his/her own favicons for sites, based on a URL regexp. The image should get stored as part of the user’s profile, so that it doesn’t have to live in the same place on the user’s disk. Ideally, it should also be possible to export the regexp -> icon mapping as a regexp -> data URI mapping that can be imported into another profile.
References: http://blog.vlad1.com/archives/2007/08/10/151/
Tbeachball - Quantifying Mozilla's Responsiveness
This project will add instrumentation to Mozilla in order to determine how much time is spent away from the main event loop, and therefore from the user's mouse/keyboard input. When the user does something, how long does it take for Mozilla to act on that stimulus? One thing that sometimes interferes with interface responsiveness is spending too long away from the main event loop, perhaps in layout or some other intensive computation. This leads to new events from the user, such as mouse clicks or keypresses, not being noticed and acted upon. This could also be expanded in order to include the triggering of log points and specific dialog openings, etc. with a view to understanding what the long-running events actually are.
References: http://shaver.off.net/diary/2007/08/25/tbeachball/ and http://shaver.off.net/misc/latency-tracing-patch.txt
Mozilla Developer Virtual Appliance
Create a Linux-based virtual machine with all the necessary build, development, and testing tools necessary for working on Mozilla. This virtual appliance would be targeted at developers not familiar with the Mozilla toolchain and wanted to get started.
Add support for more compilers to distcc
An earlier project added multi-compiler support to distcc, and then MSVC support. The framework is now in place to support even more compilers. Add support for another compiler, perhaps Java, C#, or something else.
Necessary Skills: C, Python, Makefile
Port distcc to MSYS
The recent work to add MSVC support to distcc works using the cygwin build environment. However, since this project was completed, Mozilla has switched to MSYS (see the [http://developer.mozilla.org/en/docs/Windows_Build_Prerequisites Mozilla Win32 build docs). Port distcc so that it works with the new MSYS environment.
References: Cesar and Tom
Add Multi-File transfer to distcc
The recent work to add MSVC support to distcc only allows for a single file to be sent back from build slaves. This means that extra debugging info (e.g., .pdb files) cannot be sent with binaries. Modify distcc so that it can support debug Mozilla builds.
References: Cesar and Tom
Add password managers for various platforms
Previous work was done on adding OS X Keychain integration to Firefox. This work was focused on tightly binding C++ and Mac API calls. Since then more work has been done to modularize the password manager in Firefox. Various platform "keychains" need to be integrated with the new system. See bugs 309807, 106400, and 371000. See also this e-mail message.
Convert password storage to a SQLite database
Currently, Firefox stores logins in a text file in the user's profile (signons2.txt). The format is simple, but inflexible. Storage of other browser data, such as cookies and form history, has steadily been moving towards using SQLite-backed databases so moving password storage to the same kind of storage would be good. Some work was started in bug 288040.
Support for OpenID
OpenID is an open, decentralized, free framework for user-centric digital identity. It's built on existing web technologies so that it can work without special support in the browser. However, tighter browser integration could allow for increased security and easier management. See bug 356853. Needs definition as to exactly what should be done and how. Could be initially implemented as an extension.
Refactor master password out of NSS
Users can enable a "master password" in their browser, which securely encrypts all their stored passwords. The current implementation can be awkward to use and has some limitations, see bug 322617. Fixing this would involve having password manager being more involved with the cryptography operations -- deriving a key from a passphrase with PKCS#5, and using NSS and PKCS#11 to encrypt/decrypt entries.
Add Offline Support to an open source web app
Firefox 3 will support offline abilities, such that web developers can write their apps so they work even when no network is present. Good headway has been made already porting Zimbra. Pick another web app and add offline support, for example: Moodle.
Thunderbird SMTP Auto-Sensing
Modify Thunderbird so that it uses the correct SMTP server for your current network and IP. In other words, if you are at home, use your home ISP's SMTP, but if you use a school wireless network, switch to the school's SMTP. These various SMTP configurations should be manually controlled by the user, that is, you don't have to try and figure out which SMTP to use. Rather, it should be configurable in an options dialog.
Firefox Session Saver Extension
Write a simple (i.e., nothing more than a simple "save session") extension to leverage the existing Session Store API in order to allow the user to save his/her currently open tabs and restore them. This is similar to what Firefox does when it unexpectedly crashes and gives the user the option to restore a previous session. NOTE: there are extensions that do this already, but many of them are more feature rich than need be. See also this blog post.
Thunderbird Picture Preview
Write an extension for Thunderbird that allows the user to start a slideshow preview of all images in the current message. The feature would work like this: when a mail arrives with pictures attached, a button or some other UI is added to the message that allows the slideshow to begin. When clicked, the images are shown one after the other, properly scaled to fit in the window. Consider using Canvas to do the custom graphics, and take a look at this existing Thunderbird extension for ideas.
Cross-Platform Mozilla Build Farm
Using the accumulated knowledge of the buildbot and distcc projects, and using the physical resources of Hera, create a cross-platform distributed build system suitable for testing patches to Mozilla.
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
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. See also http://labs.mozilla.com/2007/09/coscripter/
Litmus Extension
We wanted to have an extension that would be able to serve users testcases to try and allow them to submit results to http://litmus.mozilla.org. We could expand the feature set of the extension to do a lot of other cool things with Bugzilla and Website Reporter integration. So we need some ideas there. If you're interested, you could consult the work of David Hamp-Gonsalves, who created the Buggy Bar 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.
Related tech and skills: XUL, JavaScript
Tinderbox front page improvements
Tinderbox is a web app showing the results of multiple machines building Firefox, running unit tests on it, and running performance tests on it, all on three different platforms (Windows, Linux, Mac). The display is very crowded right now, and can be difficult to read. In addition, some of the interesting information (changes in performance, for example) are hard to notice. The tinderbox server software recently was updated to include JSON output, which means that webpages can now easily access the data to build their own displays. Using this data, create a new display for the Tinderbox data that helps developers monitor the status of the builds and performance data.
- Tinderbox JSON data
- An example page using the data
- Another example page using the data. (Requires a recent Firefox 3 build)
Buildbot and EC2
The BuildBot is software for automatically building and testing other software. EC2 is Amazon's "Elastic Compute Cloud", a service that lets you run Virtual Machines on Amazon's computing grid using a web API. It would be awesome if BuildBot had an EC2 module, and could spawn Virtual Machines on-demand to perform tasks. Conveniently, BuildBot is written in Python, and there's a Python library for interfacing with EC2.
References: Amazon EC2 Basics For Python Programmers
Firebug "linting" for portability problems
Lots of web developers use Firebug and Firefox for building their applications, but we want those apps to work well in other browsers as well. If Firebug knew about JS or CSS patterns that could cause problems in other browsers, it would make it much easier to have those applications work in all browsers.
Add-on update helper tools for developers
As Firefox 3 gets ramped up, there are nearly 3000 add-ons that need to get updated to some degree. Write tools (web or XULRunner) to look in add-ons and find things that developers will need to update. You'll want to work with the Mozilla documentation and evangelism teams to figure out what you're looking for and what to recommend to users.
Make FUEL work with Firefox 2
Mozilla's FUEL (Firefox User Extension Library) is a JavaScript Library designed to help developers build extensions using terminology and interfaces that are more familiar to them. Currently it works with Firefox 3, but it would be helpful to have it work with Firefox 2 as well. Work toward having the existing FUEL Tests pass for Firefox 2.
Benchmark SVG
Benchmark SVG performance and look for areas of the code that could be optimized.
Resources: #mozpad
XULRunner Application Packaging
Help to develop an automated packaging system for XULRunner applications.
Resources: plasticmillion, mfinkle, #mozpad
Expose DBUS to XPCOM
The desktop bus (DBUS) is used to communicate between desktop components on a Linux (or Unix) system. If this was exposed to XPCOM objects for bidirectional communication then tighter integration between the desktop and the browser could be achieved. There has been some previous work in this area. Resources: RH online desktop team.
Embeddable HTTP Engine
Create an HTTP facility (transport, not rendering) for desktop apps that shares cache and cookies with the browser -- basically export the firefox http engine. A dbus-exported proof-of-concept exists which which shows some basic structure. A better solution would support more http features, avoid the dbus daemon for large files, and use Firefox instead of libcurl. One challenge is making this work when Firefox is not running. Resources: RH online desktop team.
Desktop Social Networking Integration
Alter The Coop experimental extension so it uses generic API instead of Facebook specifically; put the generic API in the "desktop data engine" also used by BigBoard (and hopefully other desktop apps in the future). Resources: RH online desktop team.