Blog posts for year 2012
News and other things I find interesting
Last modified: Saturday, October 06, 2012
As per this Future of Firefox announcement, we have a work-in-progress, Metro Firefox preview!
This preview will give you a glimpse of what Firefox on Metro will be like, but it is not meant to be complete. Several incomplete features will exist, which is normal at this point in development.
The preview is meant to be installed on Windows 8 RTM and later. It is built with PGO optimizations turned off, so it will be slightly slower than the default installs. PGO will be turned on at some point in a future update.
The Metro Firefox Preview has nightly updates enabled
The Firefox Metro preview will have updates enabled on its own channel. That means that from here on out, you can keep up to date on what we're up to with the Metro browser by actually trying it.
Desktop Firefox is responsible for applying the updates for both the Desktop and Metro front ends currently. You may encounter an update error where updates will fail to apply if both of your Desktop and Metro browsers are open at the same time. This will be resolved at some point in a future update.
Some features to look for in the Metro Firefox Preview
This preview will also include the following highlights:
- Metro browser registration capable installer
- Zip builds which do registration upon setting default browser from within Firefox
- Updates enabled
- New navigation URL bar inspired by the australis theme
- New tab bar with tab previews (double swipe from the top edge or bottom edge to expose the tab previews)
- Alternate tab bar with always visible tabs
- Auto complete screen with tile suggestions as you type
- New touch optimized start screen with tiles
- Windows 8 App bar with common functionality
- Changes to the default theme to fit into Metro
- Various new touch capabilities
- Various keyboard shortcuts
- On screen keyboard handling
- Gesture support
- In-page text selection
- Crash reporting
- Telemetry support
- Context sensitive default handling, if in Metro stay in Metro for link clicks
- Sync support with browser through remote Firefox sync (Set it up through settings)
- Support for the share data contract to share the current page with another Metro application
- Support for the search contract to search inside Firefox whether or not Firefox is already open
- Support for the settings contract accessible via the settings charm
- Support for snap and filled states, to use Firefox and another Metro application at the same time
- Metro open and save file picker support
- Support for secondary tiles (pinned websites to your start screen)
- View current page on desktop functionality
- Spell checking enabled
- And a lot more
Reminder on defaults handling
Metro browsers can only be used in Windows 8 if the browser is set as your default. So if you want to keep this preview installed and get updates, you'll need to keep it as the default.
To set the default browser, simply open Desktop Firefox options, go to the advanced -> General tab, and click on the "Make Firefox the default browser" button. This will launch Control Panel, you will need to select the browser from the list and set all defaults.
Things not yet implemented or disabled
Although we have plans for Flash support, the preview currently has it disabled. You can add support for windowless plugins by setting plugin.disable to false in about:config.
As previously mentioned, for the Metro environment only, even in the initial release, we will not have add-ons enabled. We will eventually add support for add-ons through the add-on SDK.
Panning and zooming support is currently disabled.
Scrolling with the mouse wheel is broken at the moment as well. Scrolling with the mouse wheel was fixed on the Nightly update the day after the initial preview. You will have to use your keyboard for scrolling, or use touch. Minimum system requirements are the same as Windows 8 except that DirectX 9 is not supported yet.
- Future of Firefox Releases
- Video Sketching Firefox Metro Start Page
- Jonathan Wilde's intern presentation
- Metro Preview tile icon
- Firefox Metro development begins, status update 1
- Firefox Metro development heating up, status update 2
- A working Firefox Windows 8 Metro prototype, status update 3
- The latest on Firefox for Windows 8 Metro, status update 4
- Firefox for Windows 8 Metro, status update 5
- Firefox for Windows 8 Metro - Front end updates, crash reporting, pdfs, and more, status update 6
- Preparing for the Firefox for Windows 8 Metro preview, status update 7
Last modified: Tuesday, September 18, 2012
Front end team
Mark Finkle who is the mobile front end lead has also been joining in and sharing invaluable insight.
Jonathan Wilde has been working on making the Metro UI mockups a reality for the past few months. Jonathan Wilde's internship is complete, but he is still contributing.
Front end progress
Several keyboard shortcuts were added, the new tab page is now the default home page, and a ton of small glitches on the front end are now fixed.
There are 2 modes for tabs in the Metro Firefox front end. You can have tab previews above the URL bar when you swipe down, or you can have classic style tabs that are always showing. The mode-selection persists now when you toggle between the 2 modes.
An actual installer
We updated the Firefox installer to do the necessary metro registration and include all of the new Metro bits.
We also have zip builds which will do the needed Metro registration after you set the default browser from within Firefox preferences.
Default browser handling changes
In Windows 8 RTM, Microsoft protects both the default protocol handler, and the default file type handlers (such as .html) with a cryptographic hash.
The only way for a browser to set itself as default now, is to ask the OS to do it. And the OS asks the user to do it.
For this reason, we're switching the startup check to be a nice Windows 8 fly out which asks you to select your default browser. This fly out only has the ability to set the HTTP defaults though.
The check in preferences is also updated to simply open control panel's
Control Panel\Programs\Default Programs\Set Default Programs.
When you set your defaults in control panel, you can set both HTTP and HTML defaults at the same time. We're opting for not showing the control panel screen for startup checks because the UI is complex. I'm hoping a new UI will be introduced in Windows 9 that will more easily allow the user to set both HTTP and HTML defaults at once without using the Control Panel screen.
We also added code to do the needed Metro registration on Windows 8 after each upgrade. So when we release support on Windows 8, you'll have the needed registration.
Default browser handling and UAC
Due to the way default browser registration works, depending on what your default browser was previously, Firefox would sometimes have to prompt you with a UAC window on Windows 7 and Vista. In Windows 8 Microsoft changed this so that you can do this registration entirely in HKCU.
We updated our code to take advantage of this, so as of Windows 8, you will never see a UAC dialog for default browser handling in Firefox.
Things we disabled
We disabled the code for loading external add-ons since we don't plan to have add-on support for the initial release. We will have add-ons through the add-on SDK after the initial release though.
The Flash support that we currently do have is disabled for the preview as well.
The platform splitting bug that was holding us up from landing on mozilla-central is complete as far as our needs are concerned. It landed on elm which is where we'll do the Metro preview from. There was a lot of fallout from these changes that got fixed up as well.
Various other changes
We synced up the user agent string with the desktop one, did some crash reporting fixes, improved text selection, fixed up things for mouse and touch, fixed the Metro clipboard handling, added support for anonymous opt-in telemetry data reporting, and fixed several other bugs.
We added a save file picker, context menu items for saving images, enabled spell checking, and more.
Landing on mozilla-central
The platform splitting bug is complete enough for our needs but I think there is still a bit of work before it can land on m-c.
We also need to make a decision on if we will wait for Microsoft to add VS2012 Windows XP targeting support. They will be adding it soon, but if we don't hear an exact date we'll be switching out all of our C++/CX code for WRL code.
That switch won't take us too long, I would guess a week of long hours, or slightly more. Dropping C++/CX support would mean we can use VS2010 and the Windows 8 SDK.
Last modified: Wednesday, August 15, 2012
Work on the Metro style enabled desktop browser has progressed steadily and things are looking really good.
We have a Q3 goal of delivering a Metro preview. This preview will include primary browser UI for navigation and tabs, and will be delivered as a combined classic + metro browser. I believe there is a Q4 goal for a beta release as well.
We made significant progress since the last update, but there is still a lot to do.
In particular we got the following working:
- Crash reporting
- pdfjs (Built in PDF viewer without the need for a plugin)
- Windowless Flash, although full screen flash doesn't work yet
- Some accessibility hooks
- Front end event refactoring to be faster and to treat mouse input normally and distinct from touch input
- File pickers updated to be asynchronous on all platforms because it was needed for WinRT
- Front end awesomescreen work was done with results coming up as you type in the urlbar.
- While in metro, we also have the 'view this page on desktop' functionality working
- Various keyboard shortcuts added
- Various other fixes and refactoring
Add-ons will not be part of the initial release, but we will eventually be supporting Add-ons via the Add-on SDK. These initial limitations are only when in the Metro version of the browser on Windows 8.
We'll have some kind of sync functionality to sync data between your Metro interface and your desktop interface. We're hoping for a local, no setup sync functionality, but at worst it will be done through the current sync functionality.
We haven't merged to mozilla-central yet, which is where Nightly builds will show up. This is mainly because we're waiting on bug 755724 to be complete, which is to split platform and app resources up so that they can be loaded individually.
Last modified: Friday, August 03, 2012
Recently a question appeared on Quora:
What is it like to work as an engineer at Mozilla?
I broke down my answer into several sections, I'm probably forgetting to add some sections, but this should give you a good idea.
I can't imagine a company ever being as inclusive with remote employees as Mozilla. If you want to be part of any meeting, simply call in and be part of it.
If you want to chat with someone at any time, you can use video conferencing or IRC.
Every week you have a 1 on 1 meeting time with your manager. At least once a year you will have a performance evaluation discussion with your manager which is designed to help you grow and succeed.
There are team work weeks you get flown in for, and there are plenty of other opportunities to travel as much or as little as you would like for various get-togethers and conferences.
Control of your schedule
Mozilla has employees, contractors, and contributors in pretty much every time zone. It's best to have a mostly consistent schedule so people can find you, but no one will question you on exactly how often you work, or exactly what hours you work.
What you work on
There are quarterly goals, and to meet those quarterly goals you may be part of a project. So naturally you're expected to work on the goals you own, but otherwise you can work on anything you want.
I personally work mostly on bugs that I post. I've never had a bug I posted questioned, nor have I been questioned about what I work on. To work at Mozilla you have to have good judgment about what should be done since you have so much control.
A manager can probably force prioritization on you, but I've never had it happen.
There are no barriers put in place, if you want to do something, just do it. If you see a role that needs to be filled, no one will stop you. If you want to be awesome, no one will stop you or question what you do.
Just about everything is public at Mozilla. Sometimes company operational related information is protected behind a password, but as an employee you will have access to all of this information.
For example, if you want to know how you may get a raise, you can look up this information including data sheets, considerations, processes, and tools.
Sharing what you work on
If you work on something cool, you can not only talk about it, but you're encouraged to talk about it. There are rare cases where you will have to keep quiet, but only if it has security, legal or confidential corporate partnership implications.
There is a large community of Mozillians as well who will be reading what you post. It's also likely that several large news sites will pick up what you write and quote you.
Building a portfolio
Why do developers answer questions on sites like StackOverflow? Other than being a good person and helping the world, these people are building themselves an online portfolio that gives them credibility.
Almost everything you do at Mozilla is open, and therefore you build yourself a portfolio that is at least as valuable as the value you have from your University degree.
Everyone has a manager, and so in an abstract sense there is a hierarchy, but really there is no hierarchy.
Managers don't act like your boss, they act like your partner, counselor, facilitator, and if you need it, mentor.
You gain credibility from the work you do.
You can start to be a peer in certain parts of the code which allows you to review code based only on the contributions you've made to that section of code.
There is little to no distinction between contributors who pop out of nowhere, contractors, and employees. Mozilla is the community.
All decisions are made in terms of what is best for the community and the users.
Decisions are effected by neither market share nor profit. Seriously.
The people are awesome, intelligent, logical and make you proud to be part of the same team. There are plenty of opportunities to be mentored and to mentor others.
Bonus: How to get a job at Mozilla
Anyone can join the community and start helping Mozilla. If you want a job here, you'd be in a better position by simply jumping in and showing your value.
You won't be guaranteed a position, but at a minimum you're increasing your odds significantly, helping a non profit, improving your skills, and building yourself an online portfolio.
Last modified: Friday, July 27, 2012
An overview of the initial work
Creating website shortcuts with favicons was a Platform Integration task that has been pending development for almost a decade. Thanks to a new contributor named Parth Mudgal, they're now live on Nightly builds.
Having had done jump list icons built from favicons, I had a good idea of how to implement the task, but due to other priorities, I knew I wouldn't have time to work on it myself.
I knew this was a bigger than usual task for a new contributor, but I thought I might as well add the mentor=bbondy whiteboard flag. I honestly didn't expect someone to come along to take the bug, but to my surprise a brand new contributor, Parth Mudgal came along 2 months later and emailed me to begin development on the task.
Contrasting larger meaningful tasks to smaller trivial first bugs
Smaller bugs get users more accustomed to the process of contributing to Mozilla. I think in most cases this is the best way to start, but tackling a bigger bug first has more meaning and will make the contributor feel (and rightly so) like they are making an impact at Mozilla.
To help learn about a new contributor that worked on a large task first, I asked Parth for an interview, and he happily accepted.
An interview with the contributor
Why did you decide to contribute to an open source project?
I had multiple reasons:
- Initially, as a refresher
- I wanted to dive into the real world of C++ coding
- I suppose everyone wants to be a part of something big
- And as a bonus, it looks good on my Resume :p
Why did you pick Mozilla to contribute to?
I asked myself what the one open source application that I use most was? Firefox! I have always enjoyed Firefox and the effort by Mozilla to keep it up!
How was the process of contributing to Mozilla?
There are a ton of help documents in the developer section, so I could understand a lot of things easily.
Bugzilla was easy to use and straightforward as well.
Do you have any suggestions that we can use to meet the needs of contributors?
If developers understand the benefits of the contribution, they will contribute more. I got to learn so much and for me it was a sense of achievement when I completed it :D
You worked on a large bug as your first patch, did you like working on it, or if you could have done it over again would you have picked several small bugs instead?
Well, yeah. I had exams in between and other college things; there was a break many times during the course of development. On each break it would take a few days to get back on track. Perhaps some other people wouldn't come back after a break.
Do you have any other feedback you'd like to share?
Better reference information would have been most helpful. How to use a particular function X, so a new developer can refer it initially.
I had a hard time finding out how to do stuff like: How do I convert an object of type X to type Y. I know this will probably be a very big task considering the number of functions. I know we already have DXR and MXR for search, but it was still hard to find things.
Mentored bugs are great, if you haven't done any, then I would highly recommend that you mark bugs you know how to do with the mentor=yourusername whiteboard flag.
I can say for sure that this bug wouldn't be done if it wasn't for Parth coming along and working hard to complete the bug. I'd like to thank him from myself and from Mozilla for his hard work.
Having a meaningful task completed at Mozilla means that this contributor can point future employers to his real world work. Other than the intrinsic value, this is a great bonus for contributors.
When you are mentoring a bug, please always share with the contributor that they are making a difference, and explain to them why they are making a difference, it may not be obvious.