GSoC/GCI Archive
Google Summer of Code 2013

Mozilla

Web Page: https://wiki.mozilla.org/Community:SummerOfCode13

Mailing List: https://www.mozilla.org/about/forums/#dev-planning

The mission of the Mozilla Project is to preserve choice and innovation on the Internet. We are the producer and provider of the award-winning Firefox web browser, Firefox OS mobile operating system and Thunderbird email software, and are also expanding into Identity (with Mozilla Persona) and Open Web Apps. We are an advocate for open standards on the Net, and provide tools for developing high quality web content and applications. We also provide software development tools used by hundreds of free software projects worldwide.

The Mozilla Project in GSoC is a container for opportunities to work on Firefox, Thunderbird, Calendar, Bugzilla, web apps, our developer tools, documentation, the new Rust programming language and other areas of the Mozilla project, using a wide variety of technologies and languages. We are also collaborating with the Mozilla-based instant messenger Instantbird, who have some projects on our list you can consider.

This year we have opportunities on our list using C++, Python, JavaScript, XUL, CSS, HTML5, Rust, node.js and more, and students are always welcome to submit their own ideas which align with our mission.

Projects

  • about:memory For Real People about:memory is a great tool for the people developing Firefox in helping them understand the memory consumption details in the browser, but is useless for anybody who is not familiar with the browser's working in detail. This project aims to rectify that by preparing a complementary page which would contain visual representation of the data.
  • Additional JavaScript Protocol Plug-ins (Yahoo!) The goal of this project is to reimplement Yahoo! Messenger support in Instantbird using JavaScript and XPCOM interfaces.
  • Autosuggest Search Engines This project proposal defines an algorithm to infer from the searching habits of an user on a particular website to find whether a search engine exists on that site. It can then suggest the user to add the search engine to the list of search engines by automatically inferring the search forms and queries. It would respect other policies like Private Browsing and Clear Search Data.
  • Backend Connectors for Ensemble I’m applying for the ‘Backend Connectors for Ensemble’ Thunderbird address book extension project for Mozilla. After discussing the task with the project’s mentor, I plan on researching, then implementing possible options to connect the Thunderbird address book extension to external contact storages, specifically LDAP and/or CardDAV. The overall project goal would be to implement both types of connections; although after doing some initial research as well as from gathering the mentor’s opinion, it has been found that a LDAP connection implementation might be a sizeable task in its own right, as its advanced nature alongside the lack of previous LDAP implementations in the JavaScript ecosystem might produce a more difficult task.
  • Clearer Add-on Installation This project aims to implement a mixed bag of features in order to improve the add-on installation / uninstallation process in Firefox.
  • Design Hacktivities I'll be designing "hacktivies" for Meemoo, attempting to highlight the interactive elements of Meemoo, bridging gaps between high/low art, analog/digital, user interface/written code. I'll also be working towards a more cohesive branding of the Meemoo.
  • Dynamically Configurable actions add on A plugin for OWASP Zed Attack Proxy will be developed to let users create and run Mozilla ZEST scripts with an as easy as possible interface.
  • Enhanced Customization APIs Implementation of the Enhanced Customization APIs to protect some important Firefox preferences
  • Firefox OS Sample apps for Firefox Marketplace Developer Hub Other mobile platforms such as iOS and Android have a lot of sample apps to teach developers how to use their APIs. I want to build sample apps teaching how to use the each API from the WebAPIs to be included in the Firefox Marketplace Developer Hub or MDN. These apps would be fully annotated and documented and after studying them developers should have a firm understanding on how to use a given API in the real world.
  • HTTP/2 prototype server implementation The first implementable draft of the upcoming version of the HyperText Transer Protocol (HTTP/2) becomes available by early summer. The proposed project is about implementing an early prototype server for this experimental protocol in JavaScript (node.js) by the end of the summer with emphasis on well documented code and verbose debugging output. Having an early prototype server that is well documented, and logs very verbosely (frame-by-frame if needed) could be useful for developing client software for the HTTP/2 protocol. It could help engineers at Mozilla to prototype HTTP/2 support for Firefox, and could provide feedback for the HTTP working group (e.g. discovering ambiguities in the text, etc.).
  • Implement Branch Prediction in IonMonkey Profile guided branch prediction is a known optimization in compiler. As of today, nobody tried to take advantage of this optimization on JavaScript. The goal of this GSoC project is to analyze the benefit of such approach on JavaScript by implementing one in SpiderMonkey (Firefox's JavaScript Engine). The first step is to instrument the code generated by the baseline compiler to profile branches which are executed. Then use this information to reduce and improve IonMonkey's compilation by filtering out branches which are infrequently used.
  • Implementation of Profile in the Cloud (PiCl) Client for Firefox OS My proposal aims to integrate Firefox OS sync service into the current PiCl implementation. The idea is to extend the PiCl back-end to support Firefox OS and develop a minimal Firefox OS client to demonstrate the actual sync process. Current proposal covers syncing of contacts which can later be extended to settings and related things as well.
  • Improving text selection and rotation in PDF.js PDF.js component has been recently integrated into the Firefox browser. Where earlier rendering a pdf document required a third party software like Adobe Acrobat reader, this component brings a standard platform to parse and render PDF files within the web browser. The current proposal aims to improve the text layer in PDF.js. Some of the functionalities in the text layer is broken such as the improper behaviour of PDF.js during text selection, insertion of an extra ‘newline’ character in between the text when it is copy-pasted from PDF.js, rotation of pdf documents and highlighting of wrong text when searched using ‘find’. The project also involves improving text layer formatting like adding font styles italics, bold, h1 and height/width of the text in the document.
  • Instantbird Awesometab I propose to develop a "smart" user interface, in the form of a user-openable tab, that allows the user to quickly and efficiently open new chats - based on who they chat with most often, and on what accounts they do so. The user should be able to go from actively chatting in one conversation to doing so in a new one, losing no time in finding the contact to start the conversation with, refocusing to the correct UI element, or opening extra windows.
  • Localization Dashboard The purpose of this proposal to increase engagement of localizers for documentation by introducing a better process for localizing documents.
  • Make Firefox Developer Tools compatible to Thunderbird I propose to modify Thunderbird to allow using all current remote features of the Mozilla Developer Tools. This includes the web console, debugger, style editor and network monitor. The key difference between my proposal and the past solutions is that no extra UI is needed within Thunderbird which might end up breaking because Firefox-specific features are being used. Instead, I will ensure the existing components are fully free of Firefox specific code and write the wrapper layer needed to make use of the backend components.
  • MDN CSS Generation Tools Tool ideas, concept, UI, user interaction and implementation.
  • Rust Debug Symbol Generation The compiler for Rust, Mozilla's new programming language, does not yet fully support creating valid debug symbols. *rustc* uses LLVM as code generator and LLVM also supports creating debug symbols, provided that the LLVM IR it uses as input contains correct metadata annotations about variables, functions, types, etc. This metadata is very similar to the DWARF debug symbol format. *rustc* already provides some of this metadata generation in librustc/middle/trans/debuginfo.rs. The goal of this GSoC project is to implement the missing functionality so that in September rustc can be debugged itself using gdb (see *Schedule of Deliverables* for details on what tasks this involves specifically).
  • Security Report The aim of this project is to build a Firefox add-on that provides security related information (such as SSL certificate errors, CSP violation reports, non-secure cookies, etc) of a website to users in a single place. This will help users better discern malicious attempts and allow benign web developers to easily identify security issues in their production pages. The contribution of this project is to enhance security by raising awareness about website security bugs and arming users with specific information about current website security practices.
  • Unit Tests for Mozbase The aim of this project is to write unit-tests for the modules under Mozbase, focusing on coverage rather than completeness.