This page lists all the Google Summer of Code 2013 projects with confirmed mentors, and which have been approved by the SoC administrator. New suggestions can be made on the Brainstorming page. This page is locked; contact Gerv with edits.
Potential students: you may choose from the list below, but you do not have to. Feel free to submit a proposal for your own idea. However, before you do so, see the guidelines for good ideas. You can also discuss your ideas or application in the #developers channel on IRC: irc://irc.mozilla.org/#developers . Your idea will have a significantly greater chance of being chosen if you can find an existing member of the Mozilla community who is willing to evaluate or mentor it. (You should name that person in your application.)
In addition to the specifically-named projects below, we have also tagged a number of bugs in Bugzilla with the keyword student-project. However, as the idea of a "student project" is wider than just the Summer of Code, students looking through the list will need to decide whether any particular bug listed there is actually the right size and scope for Summer of Code.
You should do the following:
- Talk to the mentor. Contact details are on this page; if all you have is a nickname, get on IRC and try and contact them.
- Read the GSoC Student Guide and follow its advice.
- Read How Not To Apply For Summer Of Code and avoid doing the things listed there.
- Read our examples of good applications: 1, 2, 3.
- Apply on the GSoC site (note that we have an application template).
- It is entirely acceptable to apply for 2 or 3 projects, if more than one catches your eye; if the applications are high quality, that probably improves your chances a little. However, more than 3 seems like spam.
Note that if a project suggests it would be helpful to know XUL (Mozilla's user interface description language), you may be able to get away with learning on the job. Don't be put off from applying if the project otherwise looks right for you.
Questions about individual projects are best addressed to the potential mentor of that project. These should be listed in the table below. If you want to contact a mentor and contact details are not here, ask people in the #developers channel on IRC: irc://irc.mozilla.org/#developers. If you have questions of any other sort, send mail to Gerv and Florian. We will try and respond as soon as possible and get your questions directed to the right person. Please allow at least 48 hours for a reply.
|Silverfox|| Silverfox is the codename of a new feature meant to be an operation mode targeted to beginner users who are being guided on learning how to use the web. In this mode, most settings should be locked down, preventing the user from mistakenly tweaking settings or installing unwanted add-ons. It's not meant to be a
tightly controlled, irreversible-without-password setting, but rather a feature that will make it harder to accidentally break or deteriorate the Firefox experience.
This project will be implemented using the Add-on SDK. More info about this project.
|Good JS skills and ability to work with large codebases. Previous add-on experience is a big plus.||Felipe, Jared||Felipe, Jared (felipe, jaws on IRC)|
|about:memory For Real People|| about:memory has been a very useful tool for us developers to better understand memory consumption in Firefox and help diagnose and fix problems (See the MemShrink project). We would like to make about:memory also useful for web developers and users by providing better data visualization and analysis that will help them understand the footprint of their websites and improve accordingly. You should be able to come up with useful and creative ways to visualize that data and implement those visualization using JS.
We would still keep the original about:memory but relabel it as something like "Stats for nerds". It is important to keep the original/light-weight version since a visual-heavy implementation of about:memory will use non-trivial amounts of memory. More info about this project.
|Good JS skills and knowledge/passion for data vizualization. Past work with data visualization is a big plus.||Felipe, Jared||Felipe, Jared (felipe, jaws on IRC)|
|Fullscreen Mode|| One upcoming Firefox feature is a fullscreen mode that should provide an immersive experience. This mode will provide a streamlined interface as can be seen in this preliminary mockup. Features such as a clock and other OS indicators (new APIs have been implemented for these from the WebAPI project) might also be part of the project.
The implementation of this feature will mostly involve three languages: XUL, CSS and JS. More info about this project.
|Great CSS skills are important, and knowledge of XUL/flexbox is a plus. Good JS skills. Past theme development experience would be great.||Felipe, Jared||Felipe, Jared (felipe, jaws on IRC)|
|Autosuggest Search Engines|| Many websites have search fields that are used many times over, but these websites do not present themselves as search-capable in order to offer itself to be added as a search engine in the browser. Firefox should detect repeated search field usage and offer that as an option to the user. At a minimum, it should be able to detect it and add an entry with "Add [website]" in the searchbar dropdown (similar to how OpenSearch works). After the detection part is working well, a refined UX for the feature can be discussed and prototyped (but that shouldn't be the focus of the project).
The student should be able to propose methods on how the detection algorithm should work and how to make improvements on it over the course of the project. More info about this project.
|Great JS skills and understanding of DOM, HTML form fields, and algorithms (db and data structures that will be used to store and search the input field history to detect patterns of search usage)||Felipe||Felipe (felipe on IRC), MattN|
|Mailbox-to-Maildir Converter||Mailbox and Maildir are two alternative on-disk storage formats for email messages. Thunderbird currently uses Mailbox, but wants to use Maildir. Hence the need for a converter. This is one of the last critical pieces blocking moving away from mbox-style mailboxes. See bug 856087.||C++, although some JS may be necessary||jcranmer||jcranmer|
|Make Lightning Fast|| The Lightning Extension has a few performance problems, especially with lots of calendars. Now that the Gecko Profiler works in Thunderbird Daily, its a great time to harness its power and improve Lightning's performance. A Student working on this project should:
Depending on remaining time and student experience, adding performance tests to Lightning would be a bonus.
Automation & Tools
|MDN CSS Generation Tools||The task is to create 6 visual and interactive tools to be added into the Mozilla Developer Network website that allow people to generate CSS with complex effects in an easy way. Some examples of CSS features which would benefit from such a tool: gradients (linear and radius), border-radius, border-image, color picker, &-code finder, ... Example of such tool (rough): https://developer.mozilla.org/en-US/docs/CSS/Tools/Cubic_Bezier_Generator||You need to know about JS (good), CSS (basic), HTML (basic)||Jean-Yves Perrier||Jean-Yves Perrier (irc: teoli)||In your application, you should list the tools you would create. You should submit 8 tool ideas, and the ones you will actually do will be agreed at the beginning of the project. Success will be measured if 6 of these tools are implemented, reviewed and live in the MDN.|
|Rust Debug Symbol Generation||Rust is a new compiled programming language that Mozilla is working on. At the moment, Rust programs are tricky to debug when they don't work because they lack debugging symbols. This work has been started, but for many core Rust features the current debugging support is little to none. The goal of this project would be to support building the self-hosted (i.e. written in Rust) compiler with full debugging symbols enabled, and fill out the suite of automated gdb tests to ensure that the debugging support does not regress in the future. The project will require making use of LLVM's source-level debugging features and building on the debugging support that already exists in the compiler.||Rust, LLVM experience beneficial||Josh Matthews (jdm)||Josh Matthews (jdm)||Practical experience with Rust is rare. Therefore, any student interested in this project should take some time to become familiar with Rust so that the actual project time is spent on practical work instead of learning the language.|
|FileLinks in Instant Messages|| Goal: File transfers that work reliably for every protocol.
Description: The Thunderbird Filelink feature allows users to upload attachments to an online storage service, replacing the email attachment with a link. This existing code could be used to implement file transfer. While some protocols support file transfer directly, this approach would provide a fallback that should always work. Designing and implementing a good UI frontend would also be required.
Description: Include better syntax for XML handling, implementing handling of MUCs and other features. Feature-parity with libpurple's XMPP support is one of the prerequisites for replacing the libpurple XMPP plug-in that is currently used. One possible improvement would be to support voice and video calls between a JS-XMPP client and a Jingle client using WebRTC.
|Instantbird Awesometab|| Goal: Create a tab that "knows" what conversation you want to open (like the "awesomebar").
Description: The current "Join Chat" dialog is ugly and difficult to use. A user should be able to open a new tab to create a new conversation which will auto-complete fields based on history and server information (e.g. LIST from IRC).
|Security Report|| It can be tricky for a developer to cover all their bases when it comes to security. Moreover, information about the security of a website can be difficult for advanced users to find without searching through multiple data sources in the browser (error console, cookie manager, certificate manager, etc.) This project is to build a Firefox addon that reports all of this data in one place. Developers can then view the report for their websites or pre-production pages and quickly identify their security issues. Advanced users can quickly learn about a website's security before deciding whether or not they want to enter sensitive information on the page.
Here are some examples of what the security report could include: