Blog posts for year 2012 page 2
News and other things I find interesting
Last modified: Thursday, July 19, 2012
It's been a couple months since the last progress update on Firefox for Metro, but things have been progressing at a steady pace.
A new intern working under Frank Yan named Jonathan Wilde started working with us. He's focused on the Metro front-end code, and is really tearing through tasks fast. He's implemented the new URL bar and tab bar as seen here.
Since the last update we've also more or less finished work on the appbar control (the orange bar that appears when doing an edge gesture in Windows 8).
We determined that sharing the same Firefox profile in both Desktop and Metro is out of scope for the initial version, so instead we plan to sync the settings between 2 profiles using Firefox Sync augmented with some key local events to force a sync right away by using Windows Messages, events, and the registry.
We've cleaned up and tweaked a lot of the Windows 8 contracts work. Fixed soft keyboard issues, improved gesture input support, fixed support for invoking external applications, and more.
The graphics code has also been improved by getting rid of the Basic Layers support and moving to LayerManager.
The upgrade from Windows 8 Consumer Preview to Windows 8 Release Preview came with several changes as well that were fixed up.
We removed the XAML interop support because MS decided this was for Metro applications only and not Metro style enabled desktop browsers. To do this we had to change some startup code, gfx code, and re-implement the appbar using XBL/XUL/JS.
Tim Abraldes finished work on combining metrofirefox.exe with firefox.exe, so now there's only one shared exe that dynamically determines which front-end to use. Metro Firefox uses a modified copy of Fennec XUL front-end which is found in browser/metro/.
We also implemented various bugs to support the registration for default browser in Metro. In particular, Windows itself must be responsible for invoking the default browser UI, so we added code to get Windows to prompt for it. The code for detecting which browser is the default has also changed in Windows 8, so that was updated too.
An existing open question was how we would distribute one build that worked both with Windows XP and Windows 8. Microsoft announced that they will be providing support for this, so we won't have to worry too much about it.
Of particular note is Bug 755724 which is to split up platform and app resources so that they can be loaded individually. This is probably the main thing holding us up from landing on mozilla-central. It needs an owner so please reach out to us on #windev if you have time to help out with this task.
A new command line firefox.exe -metrodesktop can be used for viewing the metro front-end in desktop mode. This is useful for things like debugging since Windows kills your process if you have it paused for too long. We're also starting to use this now to get tests running with the Metro front end. There's another bug filed but not completed yet to get tests running actually in Metro mode.
Last modified: Wednesday, July 04, 2012
I put my heart and soul into it, and a couple months later I was offered a full time position. I started working as an employee under Robert Strong as my manager.
I was initially offered a position as a contractor for a 3 month term and no guarantee of anything past that. I was coming from a salaried position with benefits, and since I had twin 2 year old boys, this scared the !#$#!% out of me. I knew the personal growth opportunities at Mozilla exceed those at my current position though, so I decided to take a chance.
I'm happy to say that when looking back, I'm glad I took the risk, and consider it to be one of the best decisions I've ever made. I've had an amazing year.
Mozilla's values and principles are aligned with my own. They allow me to be open about what I work on. Hundreds of millions of people get to see my work, and I feel like I am not constrained in any way.
The people I work with are awesome, each in their own way, and I have an implicit trust in each of their abilities. QA, support, other developers, project managers, product managers... they've all taught me so much over the past year.
What I've completed over the past year:
Over the past year, not including any of the completed Windows 8 Metro work, I've pushed over 215 patches across over 170 resolved/fixed bugs.
I've also filed 200 bugs that need to be, or have been done.
Here's a list of some of the larger things I've completed over the past year:
- A ton of Windows 8 Metro work
- Initial ground work along with Jim Mathies
- Graphics code integration
- Metro file picker
- Metro contracts
- Dozens of other tasks
- Updater work:
- Silent updates - Mozilla Maintenance Service
- Security enhancement to the updater process, with and without the service.
- Startup performance tasks under the Snappy project.
- Dozens of platform integration tasks to better integrate with Windows
- Jump list icons generated from favicons
- ImageLib work:
- BMP encoder
- ICO encoder
- Adding Vista style PNG ICO support.
- Refactoring of ICO decoder to use the BMP decoder inside of it removing the duplicated code.
- Adding hundreds of reftests
- Adding a dozen different telemetry histograms
- Firefox enhancements
- Lots of crash fixes, memory leak fixes, and intermittent failure fixes
- The Mozilla development cheatsheet
- Windows 8 Lightning talk
Where I'd like to go from here:
As part of the coding stewards program, 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.
In my past job I managed a team of developers and I expressed interest in doing this at Mozilla.
Lastly I want to continue doing what I'm already doing, I love making a difference and getting things done.
Last modified: Friday, June 08, 2012
Two weeks ago I wrote this tweet that generated over 1500 link clicks alone, as well as several retweets with different untracked links.
In this blog post I mentioned that actions speak louder than words and asked Microsoft to show us their commitment to open source.
I'm happy to say that today Microsoft announced that they listened to user feedback and will now be offering a Visual Studio Express for Desktop applications.
Not having a Visual Studio Express for Desktop applications would have had a negative impact on open source. Thanks to everyone who retweeted and voted!
Visual Studio 11 Express - No support for building desktop applications nor metro style enabled desktop browsers
Last modified: Sunday, May 27, 2012
Microsoft announced last week that Visual Studio 11 Express will not have support for building Desktop applications, by extension this also means that it will not have support for building metro style enabled desktop browsers.
The workaround is to install Visual Studio 2010 and use the Windows 8 SDK. This isn't a good solution, but it's even worse when you consider metro style enabled desktop browsers. This workaround won't work for metro style enabled desktop browsers that need the Visual Studio 11 compiler. The Windows 8 SDK no longer ships with a compiler of its own.
Firefox can be built with a configuration option to disable the metro bits, so you'll still be able to use Visual Studio 2010 Express to develop on Windows 8, but not if you want to work on Metro related things. In that case, you'll need to use a paid version of Visual Studio 11.
As we've seen with Visual Studio 11 though, who itself can't target Windows XP, this will eventually become a problem as Windows versions increase if no change is made by Microsoft.
I hope that Microsoft will come out with an edition of Visual Studio 11 Express for desktop development, because it hurts open source projects that want to develop for Windows 8 and beyond.
If you also think this will hurt open source development in the long run, you can vote to add support for desktop development back into Visual Studio 2010 Express. Vote it, tweet it, blog it, add comments to it.
Microsoft has previously claimed that it loves open source:
"We love open source," says Jean Paoli of Microsoft in a recent interview with Network World. "We have worked with open source for a long time now."
Actions speak louder than words, please show us.
Last modified: Saturday, May 26, 2012
The Windows 8 Consumer Preview introduced a great new feature called XAML interop for DirectX applications. Since Firefox on Metro is a Direct X application, we took advantage of that feature.
Using XAML interop made the following things easier:
- Platform integration features
- Input related work
- The appbar
- Edge detection
- Other areas where we would use XAML based WinRT APIs
We ran into a bug in Windows where our process would crash on suspend though. This bug was confirmed in Windows 8 and was expected to be fixed for the release preview. Unfortunately since then, it was decided that this functionality would not be supported for metro style enabled desktop browsers.
This doesn't cause us major pain, but does take some extra time. We need to backout the XAML interop support. I'll be working on doing that this weekend, and expect to be finished by Monday.
We are currently using XUL for UI, if we ever did decide to switch to native UI like Android did, then this may be a problem. The appbar support will be reimplemented in XUL.