Community:SummerOfCode11

From MozillaWiki
Jump to: navigation, search

Looking for this year's Summer of Code information? Step right this way.

This page lists all the Google Summer of Code 2011 projects with confirmed mentors, and which have been approved by the SoC administrator. New suggestions can be made on the Brainstorming page.

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 .

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.

Application Advice

Questions of any sort? Send mail to Gerv and/or chofmann. 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.

Mozilla Platform

Title Details - with links as appropriate Reporter Mentor(s) Comments
Improve Cairo performance to match Skia There are a number of areas where the performance of the Skia 2D graphics library is better than that of Cairo, which Mozilla uses. Find them, and improve Cairo to match or exceed Skia's performance. Language: C. jrmuizel jrmuizel
Improve border corner rendering Our rendering of CSS border corners is very sloppy, particularly when the corner is rounded or when two styles intersect. You could code dotted and dashed rounded corners and/or improve their interaction with other styles, or work on making other joins prettier. Language: C++. fantasai fantasai
Create a JPEG XR decoding library The JPEG XR compression standard gives us better compression than JPEG and other useful features like HDR and alpha channels. The library should be as similar to libjpeg as possible. It would be a "from scratch", freely licensed version and will need a student that is very comfortable with image compression and as has ideally written decompressors from scratch before. Language: C. jrmuizel jrmuizel
Implement HTML Speech proposal The HTML Speech incubator group will have a proposal for integrating speech recognition and text-to-speech functionality to web pages. Google has proposed already one API, but it is expected that the proposal from the group won't look exactly like that. For implementation Rainbow might be useful. Language: C++. smaug smaug davidb: Hey Olli, regarding tts, have you seen Google's experimental impl?

No, I hadn't seen that, but there is more reasonable proposal

SVG/MathML clipboard features

Goal: implement clipboard features for SVG images and MathML formulas.

Currently, Mozilla lacks support for copying text in SVG images. This feature is implemented for MathML but it would be more useful to preserve the whole mathematical structure when copying a formula. The MathML3 recommendation contains a new clipboard specification that should help to implement interoperable features.

As possible extensions to this work, one can implement copying SVG images or the related feature of pasting SVG/MathML in the Mozilla editor. Another related lacking feature is text search in SVG.

Frédéric Wang

Frédéric Wang


Improving MathML Font Support

Our MathML support uses exclusively the STIX fonts to stretch mathematical symbols. The purpose of this project is to prepare support for various other unicode fonts such that Asana Math, Cambria Math or Neo Euler.

The first step is to move nsMathMLChar from using nsIRenderingContext to gfxFontGroup. After that, the key feature to implement will be an interface to read OpenType MATH table.

Frédéric Wang

Frédéric Wang


Firefox

Title Details - with links as appropriate Reporter Mentor(s) Comments
Unified Communications add-on Develop the base for an add-on that creates a unified messaging UI inside browser tabs, following the RMD concept. This should work with feed display and twitter integration in the beginning, but be extensible to be able to support other communications later. Languages: Javascript, XUL, perhaps C++. KaiRo KaiRo Not sure if this belongs in Firefox but there's no add-ons category.

SeaMonkey

Title Details - with links as appropriate Reporter Mentor(s) Comments
Messenger Bookmarks SM Mailnews provides access not only to mail, but also to NNTP news and even to RSS feeds, and maybe others in future as well. It would be quite useful to be able to bookmark specific news items for later use, e.g. specific postings of a discussion, etc.

This should include full usual bookmark handling for those URLs, including sidebar support.

Relevant bugs:
Bug 14988 - Allow bookmarking of e-mail/Usenet messages
Bug 77186 - allow drag and drop bookmarking of mail / news messages
Bug 77195 - support news, imap, mailbox message urls from the browser
Bug 178003 - Restore access to Sidebar from Mail/News, Compose and Addressbook

Karsten "Mnyromyr" Düsterloh Karsten "Mnyromyr" Düsterloh
OpenSearch results in Sidebar When we implemented OpenSearch, we lost the result listing in the sidebar. But OpenSearch responses can be RSS/Atom and we should use this to bring back short results to the sidebar.

This feature is likely to need Core/Toolkit fixes.

Related:
OpenSearch spec

Karsten "Mnyromyr" Düsterloh

Calendar

Title Details - with links as appropriate Reporter Mentor(s) Comments
Full Offline Support The Mozilla Calendar Project supports experimental offline support but only for reading your events while offline. While this is great if you want to look at your calendar while away from the internet, it still hinders productivity. One of the top 5 most wanted bugs in the Calendar product is adding support for also changing events when offline and writing them back to the calendar server when network connectivity returns.

A student fixing this bug will have to develop a performant synchronization mechanism that is capable of applying changes done offline to remote calendars when going back online. This needs to be implemented general enough to work with our existing calendar providers and with extensibility in mind.

There are at least two categories of calendar servers here, those allowing to upload single events (i.e CalDAV) and those requiring to upload the full calendar (i.e webdav/ics). This needs to be kept in mind when going back online, since it may be needed to first download the full calendar before applying the changes.

When calendar items are written back to the server, conflicts might occur. The student is responsible for providing the user with understandable UI to resolve those conflicts. The dialog should be more detailed than the current CalDAV dialog that just allows discarding changes or overwriting the server item. The dialog should provide good balance between making it easy for beginner users to understand and allowing power users to find out details about the conflict.

Technologies the Student should have experience in include database design, (preferably experience with sqlite), advanced javascript, basic understanding of XPCOM and either experience with XUL or HTML. Knowledge of the Mozilla Platform is not a must, but makes it easier to get started with coding.

Note this project can prove to be very ambitious due to the amount of conceptual work and research needed. A small amount of code is already attached to bug 380060, but it should be evaluated if this solution is the best w.r.t our existing architecture and the performance requirements in a synchronization scenario.

Philipp Philipp Kewisch (mozilla@kewis.ch, Fallen on moznet / #calendar)

Instantbird

Title Details - with links as appropriate Reporter Mentor(s) Comments
JavaScript Implementation of IM protocols Goal: Implement new protocols in JavaScript, or create more stable implementations of existing ones.

Instantbird 0.3 will support protocol plugins implemented in JavaScript in addition to the C libpurple plugins used before. The student will either add support for new protocols in Instantbird (if so, explain why this protocol matters) or reimplement in JavaScript protocols that are currently poorly supported by libpurple (if so, explain what will be better supported in the new implementation, or why the current implementation is broken). All new protocol plugins will go through a strict code review to ensure high code quality. The student working on new protocols should take every opportunity to improve the code and APIs shared by all JS protocol plugins.

Florian Quèze Florian Quèze or Patrick Cloke IRC and Twitter protocols have been (or are in the process of) being implemented and should not be considered.
Account import wizard Goal: Ease the pain of switching to Instantbird

Lots of users don't try a new IM client only because they don't want to spend time reconfiguring all their IM accounts. Being able to import accounts from other clients installed on the system would help Instantbird adoption. The student should focus on the dominant IM clients (Windows Live Messenger, AIM, ...) and on the other multi network IM clients (Digsby, Pidgin, Trillian, Miranda, ...). The student will need to study the way other IM clients store their profile data (reverse engineering may be required), think of an architecture to share as much code as possible between the various import modules, and implement import modules for some clients

Florian Quèze Florian Quèze
Indexed Logs Goal: Create an easily search-able and sync-able storage for IM logs.

A student working on this project will implement a new log storage back-end in Instantbird using SQLite. The format should allow efficient search (reuse code from Gloda in Thunderbird) and prevent dataloss. The student will also have to think about the user interface of the log viewer. Things to keep in mind when working on this project: it should be easy to import logs from other IM applications into this system; it should be easy to export logs; it should be easy to store logs on a remote server.

Florian Quèze Florian Quèze
Voice and Video Goal: Support voice and video communication.

This project intends to explore the possibilities for Voice and Video communication using the Mozilla platform. The student will need to experiment both with usage of the microphone and webcam and with codecs available in the system on the three supported OSes. Compatible implementations of the various IM protocols that support these features is out of the scope of this project, but the student will at least need to prove that s/he has seriously investigated using the various open source projects that have started some work on this. A (mostly) working proof of concept is expected. UI mockups for what a well-thought user interface for voice and video could be would be appreciated.

Florian Quèze Florian Quèze

NSS (Network Security Services library)

Title Details - with links as appropriate Reporter Mentor(s) Comments
OCSP improvements Implement server-side OCSP stapling. (A patch for client-side OCSP stapling already exists.) Implement client-side disk caching of OCSP responses. Language: C. Wan-Teh Chang Wan-Teh Chang You must be an experienced C programmer and can work full time on the project.
New crypto algorithms for NSS Add DSA with key sizes > 1024 bits (bug 475578); modes of operation for AES: GCM (bug 373108), CTR (bug 373106), CFB (bug 358219); and TLS 1.2 PRF to the NSS softoken. Language: C. Wan-Teh Chang Wan-Teh Chang You must be an experienced C programmer and can work full time on the project.

Rhino (JavaScript engine in Java)

Title Details - with links as appropriate Reporter Mentor(s) Comments
Explore and implement JDK7 InvokeDynamic JDK7 (currently in beta and due for general release this summer) contains new features for dynamically typed languages on top of the Java VM. One significant feature brought by JSR 292 features is the new invokedynamic bytecode instruction and supporting libraries, which has the potential to make Rhino bytecode both simpler and faster. The goal of this project would be to make Rhino generate bytecode that uses JSR 292 InvokeDynamic and compare its performance characteristics with the current code. There is an initial implementation by Oracle's John Rose which can serve as a starting point. Language: Java. Hannes Wallnoefer Hannes Wallnoefer
Implement ECMAScript 5 strict mode Rhino has pretty solid ECMAScript 5 support, with strict mode being the major exception. Implementation involves adding detection of the strict mode directive to the parser and then adding checks for the various strict mode rules. Some of the restraints are already detected by Rhino which should make it easy to get started. Language: Java. Hannes Wallnoefer Hannes Wallnoefer

Firefox Support (Sumo)

Title Details - with links as appropriate Reporter Mentor(s) Comments
A real MediaWiki parser for Python There are no MediaWiki parsers for Python with extensible syntax or multiple output formats. We've felt this pain in SUMO, which uses MW syntax in its knowledge base, resulting in hacks upon hacks to support features like platform-sensitive content, inclusions, and templates. We propose to implement a new MW parser that generates proper parse trees, allows for pluggable syntax, and does not drive callers out of their minds. Language: Python. ErikRose ErikRose

Developer Tools

Title Details - with links as appropriate Reporter Mentor(s) Comments
Tilt - WebGL web page structure visualization A WebGL-based 3D visualization of a Webpage. The developer will create a WebGL representation of a web-page that allows a user to rotate the page through axes to see the nesting of DOM nodes within the document. Floats and absolute positioned elements will be visible above and below the page based on their z-index. Tilt will be used as an additional visualization tool as part of a next-generation web page inspector. Languages: Javascript, WebGL. Rob Campbell Rob Campbell Candidate must be proficient in JavaScript, DOM programming and have a good grasp of 3D graphics preferably some WebGL or OpenGL experience.