News and other things I find interesting
Last modified: Monday, November 18, 2013
I'd like to introduce a new site I'm working on named Code Firefox.
Becoming a Mozilla contributor can be intimidating. There's a lot of information to consume, and that information can be dispersed in a variety of different places. This site aim to outline the process of becoming a Mozilla contributor, from the start, with gentle, short, consumable 2-10 minute videos.
A long time coming
In July 2012 I blogged about my first year at Mozilla, and where I'd like to go in the future.
I'm starting work on a project to bring videos for code contributors. The plan is to have short 5-10 minute videos that each cover a single topic. This would be similar to Khan Academy videos in the 1 video per concept way, but will be more like a tutorial and will be focused on contributing to Mozilla.
It took me a while to actually start on that goal, partly because I kept making excuses for why it wasn't a good time to start yet.
Maybe I was just scared of presenting something in a way that wasn't the best way. But when it comes down to it, I know a lot of people can benefit from the content of the videos I'm creating. And because of that, I'm no longer afraid to be corrected.
A couple month ago, sitting in the airport coming home from the Mozilla 2013 Summit, I registered codefirefox.com. I also created a github project and started coding the site that would be used for those videos.
The future of Code Firefox
Code Firefox aims to focus on Desktop Firefox videos from the ground up. I'd love to also do videos on Firefox for Android, Firefox for Windows 8 style UI, and especially for Firefox OS.
I'd like to eventually get to a place where the videos can be used for onramping new hires, and perhaps also used by some schools as the basis of a class.
Status and focus
Since I began posting videos, I've been posting an average of over 1 video per day, I'm close to 20 videos so far.
These videos are not focused on perfection, partly because I'm far from it, and partly because I have so much content to go out, that there is more of a benefit to do new videos instead of focusing on old ones.
I’m using ScreenFlow on OS X to make the videos in a Windows 8 VMware Fusion VM, and a Blue Yeti microphone.
As each video is posted, I post a message about it on this twitter account.
Last modified: Wednesday, November 06, 2013
Up until recently, Metro Firefox was designed to use a separate profile from desktop Firefox. We had planned to rely on sync to bring the data from the 2 profiles together.
We've had feedback around this, and we've found that a better experience would be obtained by sharing a single profile.
We're in the process of implementing shared profiles.
What is a profile?
A profile in Firefox stores all of your personal settings, including: bookmarks, preferences, extensions, passwords, history, and more.
We'll be sharing profiles from both applications, but there are some exceptions:
- Since addons are not initially supported in Metro Firefox, they won't be used in Metro Firefox even if they exist in the profile.
- To avoid unexpected problems with changed preferences exposed in one environment but not in the other, we're planning to keep most preferences separate.
What are the upsides of having a shared profile?
Sharing a single profile would allow you to instantly retain bookmarks, login status, cookies, and other profile data between environments.
You would never need to wait for some kind of 'sync service' to complete its work to see your data in the other environment.
Another task highly related to sharing a single profile is adding a "Relaunch in Desktop" option from Metro Firefox and a "Relaunch in Metro" option from Desktop Firefox.
Are there any downsides to having a shared profile?
Yes, but we believe them to be corner case issues that the user can work around, see below.
The main disadvantage is that before you could run both Metro and Desktop browsers at the same time. This will change so that you can only run either one or the other at any given time.
Windows 8 is a clash of 2 environments:
- a Desktop environment which is optimized for mouse and keyboard
- an immersive environment which is optimized for touch
If you're using a keyboard and mouse, and since we will be having a shared profile, there is no reason you'd want to use the Metro browser. If you really want to you can, but surely you don't need to use both Desktop and Metro at the same time.
The opposite argument is also true for touch. Most of the time when using touch you'll want to use the Metro browser, but there are special cases where you'll want to switch, like if you need an addon or plugin to take effect.
For users who really want to run both at the same time, they can force the use of a different profile using the -ProfileManager command line argument from Desktop Firefox.
Will having a shared profile change the release date?
Having a shared profile is not expected to change the release of Metro Firefox. A smooth async panning and zooming experience is being worked on before we want to release, and during that time we're implementing shared profiles.
The switch to Desktop / Metro feature may not retain all opened tabs and filled in form status in v1 if time does not permit. We plan to use session restore to do this, but there's some non trivial work to do there.
Where is this work being tracked?
Shared profile work is being tracked in bug 924860.
Other implementation details
- Browser chrome cache (not HTTP content cache) will be stored separately to avoid unexpected startup problems. Both browsers use the same User-Agent.
- We'll be using session restore to accomplish the Metro -> Desktop and Desktop -> Metro switch should time permit.
- If the Metro browser is already open, and you open a link from either Metro or Desktop, it will open in the already opened Metro browser. You have to switch to Desktop from within Metro to move environments.
- The same is true for the Desktop browser when already opened, and opening links from either environment.
- If the browser is not already open, a link click will open a new browser instance in the environment you are currently in.
- After the initial work is done, we'll want to add options to allow users to make their environment choice either i) act like above, or ii) make the mode switch persistent across launches.
Current progress for profile sharing can be seen in Oak builds (Not recommended for general use). These patches will also move to mozilla-central (Nightly builds) after QA'ing is done to ensure there is no harm to the Desktop profile.
The completed list of tasks related to this feature so far include:
- Shared base app name which implies a shared profile
- Relaunch in Desktop feature (From the Metro browser)
- Relaunch in Metro feature (From the Desktop browser)
- Split preference files within the same profile
- Split startup cache files within the same profile
Constructive feedback is appreciated and wanted. Please feel free to leave a comment here or post in the profile sharing tracking bug: Bug 924860.
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.