Platform/Teams

From MozillaWiki
Jump to: navigation, search

Accessibility

At Mozilla our accessibility engineers solve some of the most complex and interesting technical problems on the web -- whether it is designing a mobile accessibility solution for Firefox on Android, or perhaps modifying a Levenshtein distance algorithm to compute text change events asyncronously. They have the enviable opportunity to work not only on our accessibility engine, but poke around in different parts and layers of the browser on all platforms including Linux, Windows, OSX, Android, and whatever is coming next. They do this because the web is for everyone, and that idea is central to the Mozilla mission.

Audio/Video

Our Audio/Video team is primarily responsible for the HTML5 <audio> and <video> elements and all the infrastructure they require --- codec development and integration, playback engine, audio processing, synchronization, subtitles, etc. Supporting high-quality playback across a broad range of devices is hard! We're also involved in promoting the use of non-patent-encumbered codecs. We're branching out into other kinds of real-time media processing such as APIs for applying effects to real-time media streams. We're also moving into two-way real-time communication (WebRTC).

This work needs a very broad range of skills, from API design down to very low-level performance tuning, but signal processing and real-time development expertise is especially useful here.

B2G

DOM

The DOM team works on the DOM implementation in Mozilla and on lots and lots of surrounding code. This includes the DOM tree implementation itself, DOM event dispatching and handling code, the scriptability layer (DOM bindings), JavaScript security wrappers, document navigation, and much more. The main responsibilities of the group is implementing already standardized DOM APIs, driving standardization across the browser space, ensuring that the current implementation performs well and interacts well with surrounding code, and general maintenance of the current code.

A good understanding of how web pages and web applications use browsers is a good skill to have in this group, and prior experience with standardizing APIs across browsers is a plus too. Most of the code we write is in C++ so strong skills there is a plus as well. Low level system programming is also welcome here as we do find ourselves working on a broad spectrum of problems, all the way from cross language dispatch routines that are written in assembly to writing tests in HTML and JavaScript.

One of the larger tasks that the DOM team did recently (jointly with some JavaScript developers) was our work on JavaScript Compartments.

WebAPI

The WebAPI team focuses on finding what's missing from the web today and designs ways to expose the missing features to web pages and applications. The primary goal for the team is to eliminate the gap between what's currently doable in native applications on existing operating systems (Windows, OSX, Android, etc) and the web. This means everything from exposing device specific functionality in a web friendly way to innovating on what developer features are critical for moving the web to the next level again and again. This team does a lot of API design, collaboration with other interested parties, and a lot of prototyping of new APIs and functionality.

If you're a bold forward thinker with lots of experience in API design, web design, and prototyping, this is the team for you! Excellent communication skills are a strong plus here.

More details about the WebAPI effort

Graphics

Mozilla's graphics team comprises tenacious developers who regularly delve into a problem at multiple levels of abstraction. We produce the parts of Gecko that draw content on screen; our code draws 2D content both in software and hardware, and we're also responsible for image decoding. Our focus is writing fast, lightweight and maintainable code to make Firefox great for users.

We're looking for C++ developers who can also look at a disassembly and reason about its performance. The right person will be unafraid to fix bugs in other libraries, and won't rest until she's found a problem's true root cause. Most of all, we're looking for people to help us find ways to make web browsers fast using GPUs.

Javascript

The JavaScript team works on SpiderMonkey, Mozilla's JavaScript engine. The big things we do are to make JavaScript go faster and add new JavaScript language features to the engine. For performance, we work on creating and optimizing JavaScript JIT compilers, improving garbage collection subsystems, and profiling and optimizing or redesigning other bits of the engine. Language feature work is mostly driven by the evolving ECMAScript standard. That work involves fully understanding the specification of the new language feature and figuring out how to implement it in the engine.

Special skills (other than the common Platform stuff) that are helpful for JS candidates include: performance measurement and analysis; x86/x86-64/ARM assembly, understanding microarchitectural performance, and using low-level performance tools; compiler theory and practice; reading language specifications; understanding language semantics.

Layout

The layout team is responsible for implementing CSS layout and rendering. We're constantly adding new features for Web developers, improving our standards compliance, and contributing to the development of new standards. We're also working on improving performance and making Web content more beautiful.

An understanding of how Web developers use (and abuse) CSS is helpful for this team.

Mobile

The Mobile team is a set of fearless generalists that work across the Mozilla platform. Our goal is to make an awesome browser for mobile devices. Much of our focus is to ensure that the Mozilla platform runs fast and correctly on Android.

We are looking for developers that are proficient in JavaScript, Java, and C++. The the right person would be flexible and able to fix a user facing feature today, then digging into a compiler issue the next day.

We want you if you are team player, have strong coding skills, don't give up, and want to make the a great browser for mobile.

Some cool profiling work we are doing for mobile:

http://mozakai.blogspot.com/2011/02/high-level-fennec-profiling.html http://mozakai.blogspot.com/2010/09/visualizing-ipc-messages-in-fennec.html http://mozakai.blogspot.com/2011/03/massdiff-diff-for-massif-snapshots.html

Some cool device API work we did for mobile:

http://dougt.org/wordpress/2011/03/device-api-permission-management/ http://dougt.org/wordpress/2010/10/desktop-notifications-in-fennec/ http://dougt.org/wordpress/2009/08/orientation/

Network

This team is responsible for networking protocols (e.g. HTTP, FTP, SPDY), network security (e.g. SSL/TLS, certs), and network caches (disk and memory). We're always looking to improve performance, security, and reliability. Particular challenges include mobile environments and new and evolving threats to security.

Performance

Performance team works on assorted performance issues in Mozilla. We are looking for people with background in driver writing, compiler hacking, performance profiling, large-scale performance-oriented refactoring.