Community:SummerOfCode13:Brainstorming

Revision as of 00:25, 19 March 2013 by Clokep (talk | contribs) (→‎Instantbird: Add Instantbird ideas from https://etherpad.mozilla.org/ib-gsoc-2013)

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
Web Audio Compatibility project The Web Audio API is landing fully-formed and spec-compliant in Firefox 22, however most of the code in the wild was written when this API landed and have not been updated to the version of the spec that Firefox supports. This project would target any and all open source libraries, games and applications that use Web Audio API and ensure that they work properly with Firefox's implementation. Some expertise in JavaScript, Web Audio, Git/Github, blogging and being polite. Jeff Griffiths Jeff Griffiths / Ehsan Akhgari

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)
Offer profile reset option 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 Firefox or the 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 after a reinstall. Firefox detection can be implemented mostly in JS. Some C++ may be required for startup and detection code. Knowledge of NSIS installers may be useful. jorgev jorgev (or others), MattN
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)
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.

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.

Good JS skills and knowledge/passion for data viz. 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.

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 based on usage 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.

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, MattN

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 ?
Open ended project to solve several critical bugs My idea for this project is that we can have a student solve various bugs that are arising in Thunderbird which are makin users unhappy. For example Bug 516222, Bug 803921, Bug 618553 and many others. We can utilize this to solve such critical bugs. This would be some kind of open ended bug. Main area of concern would be Mailnews core. C/C++ mostly, Js for testing atuljangra ?anyone from Mailnews core? atuljangra- Do we need to prioritise the ideas?
Make OS X users happier Something from Bug 728438 to integrate Thunderbird better into OS X would be good. This includes interesting Bugs like the Quickloock integration Bug 457546, which was already a student project, but needs to be finished, integrated into Thunderbird and some tests. The same is true for Bug 465257 to support multi-touch gestures. It also includes Bugs to improve the addressbook behaviour for OS X users (write support, Bug 391057 and picture support, Bug 496789). You need to know about C++, JS and OS X APIs. ? ?

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
Update Code Review UX on Bugzilla.Mozilla.Org (BMO) The current Splinter integration for code review on BMO can be updated quite a bit. We want to pave the way toward integration with CodeReview.js. Specifically, we want to integrate the Splinter review functionality with the PatchReview perl module and experiment with integrating that with the CodeReview.js tool. JavaScript, CSS, and Perl Web Development Byron Jones (IRC: glob) Byron Jones (IRC: glob)

Firefox Support (SUMO)

Title Details Skills Needed Reporter Mentor(s) Comments

QA

Title Details Skills Needed Reporter Mentor(s) Comments

Automation & Tools

Title Details Skills Needed Reporter Mentor(s) Comments
Expand unit tests for Mozbase components Mozbase is a set of low level python classes that all of Mozilla's automated test harnesses will soon be refactored to use. As we gradually move through this process, we want to ensure that all our modules have explicit unit tests for their targeted use cases. We will work with interested volunteers to define a set of test cases that need to be added, and work with them to add those cases. Python, JavaScript Clint Talbert (IRC: ctalbert) Clint Talbert (IRC: ctalbert)

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
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.

JavaScript, XPCOM, XUL Florian Quèze Florian Quèze The frontend should be flexible enough to be able to handle other file transfer methods when they are implemented, e.g. WebRTC for XMPP or DCC for IRC.
Additional JavaScript protocol plug-ins Goal: Implement new protocol plug-ins in JavaScript, or create more stable implementations of existing ones.

Description: Instantbird supports protocol plugins implemented in JavaScript, in addition to the C libpurple plugins. The student will either add support for new protocols in Instantbird (if so, explain why this protocol matters) or reimplement in JavaScript a protocol that is poorly supported by libpurple (if so, explain what will be better supported in the new implementation, or why the current implementation is not adequate). 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.

JavaScript, XPCOM, maybe js-ctypes Patrick Cloke Florian Quèze for JS-SIP, Patrick Cloke for other protocols IRC, XMPP, Twitter and OSCAR (AIM/ICQ) have been (or are in the process of being) implemented and should not be considered.
Improve JS-XMPP Goal: Ease working with the JavaScript XMPP implementation and implement new features.

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.

JavaScript, maybe XUL, XPCOM Florian Quèze Florian Quèze
Skype protocol plug-in Goal: Support Skype chat features as protocol plug-in.

Description: Microsoft will soon dropping support for MSN/WLM, they suggest that all users migrate to Skype. The student is expected to implement support for Skype chat (private messages and multi-user chats) using the SkypeKit SDK.

This project does not need to support voice/video chat to be considered a success. Access to SkypeKit can be provided to a student participating in this project. This may need to be implemented as an extension.

C++, XPCOM Patrick Cloke Patrick Cloke
"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).

JavaScript, XPCOM, XUL, maybe some protocol interactions? Florian Quèze Florian Quèze, aleth

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] via WebSocket. JavaScript, Node.js, MIDI, OSC, Arduino Forrest Oliphant, in relation to the meemoo.org project.
Media server Design a method to record audio and video locally using WebRTC streaming to a local Node.js server. Saving images could also be a good goal. It should be easy to save media and then bring it back into the Meemoo app. JavaScript, WebRTC, Node.js Forrest Oliphant, in relation to the meemoo.org project.
Hacktivity design "Hacktivity" prototyping and design for ways to bridge the digital/analog high/low tech code/craft divide. http://meemoo.org/hack-our-apps/ JavaScript, craft, activity design, writing "
UX and graphic design General help designing the UX and graphic look of the site and app. UX design, graphic design, prototyping "