Mozilla community members - submit proposals here for 2013 Google Summer of Code projects with Mozilla. (If this page looks empty, it's because accepted ideas have already been transferred to the official list.) The absolute last deadline for submitting ideas in time to help us get accepted by Google is March 29th.
Are you a students looking to apply to SoC with Mozilla? Your first stop should be the 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't have a mentor. That makes them less likely to get accepted. You can, of course, also submit your own ideas - you don't have to put an idea on this page and get it 'made official' in order to send in a proposal for it.
How To Write A Good Project Proposal
Before adding an proposal to this list, please consider the following:
- Be specific. It's hard to understand the impact of, or the size of, vague proposals.
- Consider size. The student has eight weeks to design, code, test and document the proposal. It needs to fill, but not overfill, that time.
- Do your research. Support the idea with well-researched links.
- Don't morph other people's ideas. If you have a related idea, place it next to the existing one, or add a comment.
- Insert only your own name into the Mentor column, and then only if you are willing to take on the responsibility. If you think the SoC admins won't know who you are, leave contact details.
- Check back regularly. The administrators may have questions about your idea that you will need to answer.
- Know when to give up. If you've added the same idea for the last three years and it hasn't made it to the official page, perhaps you can predict what will happen this time.
Suggestion List
Here are the ideas lists from previous years.
Proposals can be in almost any part of the Mozilla project - don't be fooled by the "Code" in "Summer of Code". If there is no category below for your part of Mozilla, add one!
Mozilla Platform (Gecko)
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Firefox
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Enhanced Customization APIs
|
Firefox stores most of its configuration using the Preferences system, which uses a plain text file in the user's profile folder to keep its name / value pairs. Certain add-ons have traditionally changed settings like the homepage and search engine by editing this file directly or using the preferences service incorrectly, and fail to revert the settings, causing much user annoyance. With the Enhanced Customization APIs project we want to change this, by moving these critical settings to a different system where the only accepted interaction is through an API that knows when to revert these changes. Storage would most likely be sqlite, so that it isn't trivial to edit from external installers.
|
JavaScript and C/C++ required. Some add-on development experience is desirable.
|
jorgev
|
jorgev (or others)
|
Add profile reset option on installer on re-install
|
Firefox has a profile reset feature that is very useful to resolve common user problems. However, it's not easy to find at the moment, and most users try to fix Firefox by reinstalling it. This generally doesn't accomplish anything because all profile data is kept intact on a reinstall. This feature is meant to make the Windows installer detect if the same version of Firefox being installed is currently present in the system, and offer the user the option to do a reset instead of a reinstall. As explained in bug 750979, the installer is currently in transition, so it might need work in 2 code bases.
|
C/C++ required. Knowledge on NSIS installers is desirable.
|
jorgev
|
jorgev (or others)
|
Clearer add-on installation
|
There's a mixed bag of features we want to implement in order to improve add-on installation. The ones we want to include in this proposal are the following: (1) Redesign external install opt-in screen (bug 834385, (2) The opt-in screen needs to support multiple add-on installs, (3) Make it possible to completely remove globally installed add-ons from the Add-ons Manager (disable and hide), (4) Make it possible to request add-on install / uninstall from a separate process. All of these mostly concern add-ons being installed by external installers. We want to improve the opt-in screen that shows up when they are installed that way, and other issues that will make it easier to users to control their experience.
|
JavaScript required. Some C/C++ might be needed as well.
|
jorgev
|
jorgev (or others)
|
Firefox for Android
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Firefox OS / Boot2Gecko
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Calendar
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Thunderbird
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Tests
|
Write tests for Thunderbird features where they are missing. We also have some contributors writing patches that were rejected because the contributor was not up to speed to produce a test for the feature (much harder than just producing the feature/fix). If the student picks up (helps with) these patches/contributors and produces the patches, it would help us.
|
Javascript required. Experience with mozmill or xpcshell test infrastructure an advantage.
|
aceman
|
?mconley?
|
Utilize capability attributes of nsIMsgIncomingServer and nsIMsgFolder
|
Remove hard-coded checks through-out the comm-central codebase where a simple check of the server (nsIMsgIncomingServer) capability can be used.
Example:
- if (server.type == "nntp" || server.type == "rss") { enableSubscribe(); }
Change to:
- if (server.canSubscribe) { enableSubscribe(); }
For this to work, the student has to see if the server types return the proper value for the capability (some may be unimplemented yet) and may have to add some new attributes where needed.
Hard-coded checks are bad because they do not pick up new server types automatically even if they would have the capability. Extension authors have a hard time plugging into these hard-coded spots. Often they have to duplicate the whole function from TB to add their new server type to it.
The same can be done with folders, i.e. nsIMsgFolder.
Starting point: bug 63369.
|
C++, Javascript
|
aceman
|
?jcranmer?, ?rkent?
|
Rewrite our database code to be asynchronous when database if huge.
|
This would help us in improving the start-up time of Thunderbird. Main idea is splitting the database in chunks and then loading it, if the database is quite big. I guess related bug would be: bug 588952.
Difficulty: Medium to hard depending on how far we go.
|
C++ mainly
|
atuljangra
|
?anyone?
|
jcranmer - Mork database async opening needs to be completed, and we would probably also need nsIMsgDBHdr instances to become "dead" (cached copies of the database or newer changes).
|
Implement backend connectors for Ensemble (or DOM Contacts?)
|
Mconley's new address book work should be stable enough by the summer that it is possible to write new connectors. Ideas for implementation here include any system address book on any platform, as well as LDAP support (OpenLDAP via js-ctypes looks to be the best option here).
|
JS, although some C/C++ for native may be necessary
|
jcranmer
|
?mconley?
|
Implement a mailbox-to-maildir converter
|
This is one of the last critical pieces blocking moving away from mbox-style mailboxes.
|
C++ is probably the simpler solution, but OS.File and jsmime make it possible in JS.
|
jcranmer
|
?
|
SeaMonkey
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
NSS (Network Security Services)
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Bugzilla
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Firefox Support (SUMO)
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
QA
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Documentation
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Mozilla IT and Infrastructure
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Persona / BrowserID
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Sync / Services
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Developer Tools
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Add-on SDK
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
NPM support for SDK
|
Add-on SDK has no good story for dependency management it would be great
|
if SDK users could use npm for installing and publishing reusable SDK
|
modules.
|
Javascript, NodeJS
|
gozala
|
gozala
|
Foundation
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Notebook Playback
|
The aim of this project is to add record-and-playback to the IPython Notebook using Popcorn.js (or its successor) so that people can create "screencasts" that are actually first-class content replayed in the browser, rather than videos. Based on discussion with the IPyNB team and Bobby Richter, we believe this can be done as a Javascript plugin to IPyNB v. 0.14 or higher by embedding timing metadata in the notebook's JSON file. The project would require substantial UI design and evaluation as well as Javascript hacking. The result would immediately be used by Software Carpentry and other projects for teaching, sharing code examples, etc.
|
Javascript, UXD
|
gvwilson
|
gvwilson
|
|
Release Engineering
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Instantbird
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Emscripten
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Security Engineering
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
Open(Art)
Title
|
Details
|
Skills Needed
|
Reporter
|
Mentor(s)
|
Comments
|
MIDI, OSC, Arduino communication
|
It would be great to have an easy way to connect creative coding to physical controllers. MakeyMakey is a great example of zero-code zero-install zero-configuration hardware hacking. This comes with the limitation of only sending binary key signals. The system that I'm imagining would be a small, installable web server that translates signals to and from [MIDI, OSC, Arduino] using WebSockets.
|
JavaScript, Node.js, MIDI, OSC, Arduino
|
|
Forrest Oliphant, in relation to the meemoo.org project.
|
|