Blog posts for year 2011
News and other things I find interesting
Last modified: Thursday, October 06, 2011
Introducing: The Mozilla Platform Development Cheat Sheet.
Working on Firefox can be daunting when you first start as a developer.
There is an amazing amount of Mozilla specific technology you need to learn; in addition you may not have had the opportunity to work with things like mercurial patch queues (MQ).
On the other hand: There is a massive collection of documentation that you have to keep looking up.
When I started as a platform developer at Mozilla 3 months ago, I started making a cheat sheet of common information I would have to frequently look up. I will continue to update this page as I continue to learn every day at Mozilla.
I highly encourage anyone looking to contribute to an open source project to look into contributing to Mozilla.
Not only will you be helping an open source non-profit organization, but you will also connect with extremely smart peers, have extra resume flair, and learn a ton. The experience of contributing (or working) for Mozilla will forever change you as a developer.
Last modified: Monday, March 26, 2012
Mozilla's rapid release process allows us to deliver features, speed optimizations, memory reductions, and much more... faster. Keeping up to date fast is an essential need for the ever changing web.
There is a new release of Firefox every 6 weeks instead of every year. Even with this shortened release cycle, these releases still include major enhancements. These faster updates are possible because Mozilla is growing significantly, and the community of Mozillians at large is growing month over month.
The rapid release process has some very positive side effects, like delivering new web technologies faster, and attracting world class developers who like to see their code ship fast. But rapid releases also have some negative side effects.
One of the negative side effects is that minor annoyances with software updates suddenly become much more noticeable. Most users don't want to think about software updates nor version numbers and now they are being forced to do so every six weeks.
One such minor annoyance is User Account Control (UAC):
Starting with Windows Vista Microsoft introduced UAC, and with it users across the world see this familiar dialog when doing any operation that requires administrative access:
UAC in particular makes every process run with limited permissions, and if you want to do something like write into
Program Files, then the user has to give permissions to the application to do this.
This makes things like automated software updates hard to do without user interaction. If we don't have access to write into
Program Files to perform an update, then we have to ask for elevated permissions. We ask for elevated permissions today when applying updates.
If a user with administrative access gives permissions to Firefox one time via a UAC prompt, and that user has automatic updates on, then there is no reason we should continue to ask them to elevate the permissions each and every time we want to apply an update. The user has already explicitly given permission to do it.
If this worries you, just remember that you can change your mind at any time by configuring silent updates on the
Options > Advanced > Update tab.
The feature page for this task is located here: Remove requirement for the Windows UAC dialog when applying an update. I am the lead developer on this UAC task and the estimated target is the first quarter of 2012.
What's being done to solve the UAC annoyance:
There are several ways to tackle this issue. For example, some browsers that offer silent software updates will install into the user's application data folder and hence do not have this problem. We could do the same, but we chose not to because it can be an administrative headache for some people who manage updates themselves and have to maintain an installation for every user.
We are currently experimenting with a Windows service approach.
This means that an optional component will be installed that automates the software update process better without giving UAC prompts.
Only one Firefox service:
There are four different Firefox development channels you can use. At any time there is a Firefox Release channel, Beta channel, Aurora channel, and Nightly builds channel. These channels give you access to Firefox releases at different stages of the development cycle.
A user can have multiple installations across channels, but only one Firefox service will exist in Windows Services.
Firefox service as an optional component:
The Firefox service will be an optional component. It doesn't need to be installed, and if it is stopped or disabled, updates will work as they did before in every other recent Firefox release.
A user can also uninstall the Firefox service at any time. Updates will continue to occur using the old method.
Other uses of the Firefox service:
Having a Windows service installed means that we can investigate other integration and maintenance points. The possibilities are very exciting.
The Windows service may be used later on for a wider selection of maintenance related things including faster browser startup via prefetching, but initially will be only for software updates.
High level overview of other new Silent update features
Above I mostly talked about silent updates on Windows, but there are other update issues being addressed in several new features across all platforms. This section was originally written by Robert Strong with help from Chris Lee, and Lawrence Mandel and describes these features.
All of the silent update work can be tracked on the wiki.
Lessen how often the "What’s New" page is shown
Estimated target: fourth quarter of 2011.
Every six weeks Firefox informs you of what is new in the release. The feedback from our users is that the information is not required and is actually an irritant. We are looking at ways of displaying information only when it provides benefit. The ability to control if the "What’s New" page should be displayed after an update was added to Firefox 4. The server side capability should be completed soon.
Lessen how often the update user interface is displayed
Estimated target: first quarter of 2012.
After an update is downloaded in the background Firefox waits 12 hours before notifying the user to restart to apply the update and since this can interrupt tasks the wait time is being increased to 24 hours. More details including how we decided upon 24 hours are available on this feature page and the bugs referenced on that page.
Add-ons Default to Compatible
Estimated target: first quarter of 2012.
By default, Firefox requires consent to update if there are add-ons that are enabled and compatible with the current version of Firefox and are incompatible with the update’s version. With this feature there should be significantly fewer cases where consent is required to update Firefox while keeping your add-ons installed and up-to-date as well.
Apply updates on shutdown
Estimated target: to be determined.
After an update is downloaded users notice that it takes longer to start up Firefox on the next run. This wait time is due to the installation of the software update. To eliminate the wait time on startup to apply an update the majority of an update’s operations will be performed prior to shutdown and the few remaining operations will be performed after Firefox has exited. This applies to all desktop platforms though on Windows the service that will remove the requirement for the Windows UAC dialog will typically apply the update.
Improved process flow for updating when there are incompatible add-ons
Estimated target: to be determined.
If an update is declined when there are incompatible add-ons the time to wait until next notification will be increased. This feature is in the planning stage and the amount of time to wait until the next notification hasn’t been decided as of yet.
Other Mozilla products:
Other Mozilla products may use the service described above. We currently plan to have only one Windows service across all products. All supported architectures are also planned to share the same Windows service.
Platform Integration team:
Mozilla started a new Platform Integration team which focuses on issues which need Operating System specific solutions.
I am a member of this new team led by Robert Strong. Some of the tasks being worked on by this team are described above.
Last modified: Thursday, September 15, 2011
I just wanted to post a quick follow up to my Firefox on Windows 8 post on how Thunderbird works with screenshots.
As with Firefox and other applications, as soon as you install Thunderbird it shows up as a Tile in the metro interface.
Clicking on it exits the tablet metro interface and goes into the old interface and launches Thunderbird.
One important thing is that if you click on a
mailto: link in Internet Explorer it won't launch the default mail client. Instead it prompts with this error:
Windows Internet Explorer
Could not perform this operation because the default mail client is not properly installed.
Here's a screenshot of that error message:
I assume once this registration problem is fixed it'll launch the Desktop mode and then launch the email client. It would be nice to have a metro interface for Thunderbird as well.
Perhaps even a metro style compose email window application only for when a user is browsing in tablet full screen mode and they click to send an email with their default email client.
- Bug 686836 - Launching default email client in Windows 8 results in error
Last modified: Thursday, September 15, 2011
As you probably already know, Windows 8 introduces the new default Tablet interface, and the old normal Desktop interface. It uses the new tablet interface as the startup interface even on Desktops though. For a good rundown on all of the new features, see here.
When you first boot up into Windows 8, it takes you briefly for about 1/2 of a second to the desktop interface and then switches directly to the tablet interface. I had read previously that the desktop/explorer process was only loaded into memory if you clicked it, but it seems to not be the case for this early pre-beta release.
The next thing you notice is that once in the Desktop interface, the start menu button no longer brings up a menu. It brings you back to the tablet interface. Pressing the Start/Windows keyboard button will take you between the 2 interfaces.
Firefox on Windows 8:
The first thing I did was install Firefox.
After installing Firefox, Windows will ask you which web browser you would like to use by default. It shows you a picture of Firefox and IE and lets you pick. Nice interface. It shows you this dialog even before our process starts. If you change focus to another tab or application though, the dialog goes away forever unless you uninstall and reinstall Firefox.
After installing we show automatically into the tablet interface as a new tile.
But when you click on the Firefox icon in the tablet interface, it takes you directly to the old Desktop environment and loads the Firefox process as normal. I think it'll be possible for integration like IE does into the tablet interface direclty. Although the solution may have to be 'creative'.
Full screen mode in Firefox works the same as previous versions currently. If you start in full screen it will switch you first to the Desktop mode, and then launch full screen. Exiting full screen leaves you at the Desktop interface.
Internet Explorer Tablet Mode:
If you start Internet Explorer from the tablet mode you'll see a full screen app with no switch to Desktop. It has a nice interface and allows you to pin any web page to your Tablet interface as a tile.
The problem with this is that even know I set Firefox as my default browser, through the Windows interface, it still launches IE for these shortcut tiles.
Here is a tile created on the far left from a pinned page in IE of the mozilla.org page:
Work to be done for Firefox on Windows 8:
There's probably a ton, but here are a few things that come to mind:
- We need to support the VS2011 developer tools for MozillaBuild
- It would be nice to not need to switch to Desktop to launch the browser.
- Platform integration for apps seems very important. We should be showing up as tiles for web applications that launch Firefox full screen.
- The Firefox tile can be leveraged to have more functionality built into it.
Last modified: Monday, August 08, 2011
★★★★★ (5 stars out of 5)
When I previously thought about CSS I would only think about:
- selectors, or selector hierarchies, and
- properties related to those selectors
Although both are covered in detail in this book, the book really helped me discover things I had no idea I didn't know about CSS. The book does a great job of not explaining fundamentals of CSS and focuses instead on what's new in CSS3.
Media queries in particular was great to know about for making your website capable on mobile devices.
After reading its chapter I immediately implemented media queries on my blog.
I really liked how this book was organized, the first part deals with the CSS3 features that are already implemented in major browsers, followed by the parts which are partially implemented, and finally the things which are not yet implemented or agreed upon and are likely to change.
Every chapter ends with each major browser and the support it has for the features discussed in the chapter.
Other features like opacity, RGBA & HSL & HSLA colors, drop shadows, rounded corners, and much more were great to know about.
Several tips are provided for working with older browsers in a sane manner throughout the book for just about each section.
My only criticism in this book is that it would have been ideal to know not what is expected in IE9 but what is actually in IE9. IE9 was released March 14th,2011 this book was released in April, 2011. I can understand though that this would have delayed the release of the book.