May 2012 Archives

It's Been 12 Years

| 8 Comments

Today is my 12 year anniversary as a full-time Mozillian. I started contributing about a year and a half before that, but it wasn't until May 29th, 2000 that Mozilla became my full-time, paying work. The announcement went out two days later.

When I joined Mozilla, as a member of staff@mozilla.org, I was going to continue my efforts around mobilizing our army of Mozilla testers. Very soon after I got started full-time, Brendan Eich drafted me into the newly created project management team, drivers@mozilla.org and I spent the bulk of the next two years helping to define and ship Mozilla 1.0. From there it was on to Firefox project management, community marketing, tech evangelism, some work around anti-trust in the EU, developer communications, various other things that needed doing, and most recently Firefox product management.

Mozilla is my dream job. Thank you to Mitchell Baker for bringing me on way back when and thank you to everyone else at Mozilla that's made this such a great ride.

I've read a number of people trying to argue that tablets are not the same as PCs and that Microsoft gets to change the rules and drop their public commitments to developers (and governments) on tablets because they're a totally different category. Well, let's take a look at what Microsoft has to say about that:

Imagine a tablet. Light and thin. Amazing battery life. Gorgeous screen. You can lounge on the couch enjoying a beautiful, fluid experience, doing the things you love to do on a tablet: playing games, socializing, browsing the web, reading, touching up photos, watching TV. You are just immersed in your experience, doing the things you love to do. You hand it to your daughter and she knows exactly how to use it.

But then, if you want to have a bit more control and efficiency, you can set this same tablet in a stand and attach a keyboard, or just flip a keyboard around, and suddenly you have a complete Windows desktop experience, with full Microsoft Office, multiple monitors, peripherals, and a mouse.

Or, imagine a featherweight laptop with a beautiful large screen and a great keyboard. But in addition to doing everything you use your laptop for today, you can also use your favorite new apps built for today's tablets.

Windows 8 imagines the convergence of two kinds of devices: a laptop and a tablet. Instead of carrying around three devices (a phone, a tablet, and a laptop) you carry around just a phone and a Windows PC. A PC that is the best tablet or laptop you have ever used, but with the capabilities of the familiar Windows desktop if you need it. You may choose to carry a tablet, or you may choose a laptop/convertible, but you do not need to carry around both along with your phone. You never think about a choice, or fret over your choice of what to carry. Things just work without compromise.


It's kind of difficult to argue that tablets are something distinct from laptops (and the waning desktop) to defend Microsoft's anti competition behaviors around Windows on ARM tablets (and soon ARM convertibles and straight up laptops) when even Microsoft is telling you that they're the same thing.

Windows 8 Metro is a beautiful computing environment. Unfortunately, it's very limited when it comes to certain kinds of raw power that we're all used from the last couple of decades of Windows operating systems. Metro and the WinRT APIs that power it are great for games and simple apps, and they provide developers with the tools to make those apps stunningly beautiful, but they lack the kind of power needed to drive sophisticated programs like Web browsers and office productivity applications.

Now, we know that Microsoft is shipping a powerful browser on Metro. Metro would be dead in the water without a really capable Microsoft browser. So how does Internet Explorer 10 provide a beautiful and powerful experience in the Metro environment? It's easy. IE 10 cheats.

As you can see from the diagram here, Internet Explorer 10 on Metro has special access to some very powerful APIs from over in Win32 land. Those APIs allow for IE to have modern capabilities like a Just In Time compiler (JIT). JITs make JavaScript really fast and without them, modern Web sites like Facebook, Twitter, and Gmail would be painfully slow for users, *unusably* slow.

So, IE 10 on Metro gets its good looks from the WinRT APIs but it gets critical pieces of its power from the Win32 APIs. That seems kind of smart, right? Cheating works in this case, doesn't it? So what's the problem there?

There's no problem for Windows 8 on Intel chips, where Microsoft lets other browsers do the same thing IE is doing. The problem is with Windows for ARM processors. Browsers on Windows for ARM chips do not get to do what IE is doing. Microsoft is giving its own Internet Explorer special privileges that no other Metro app, including other Metro browsers, are allowed.

If we built Firefox for Windows ARM Metro, we would not have access to those powerful Win32 APIs and so we would be at an extreme disadvantage when compared to IE 10 for Metro. We could build a beautiful Firefox that looked really nice on Metro, but Firefox would be so crippled in terms of power and speed that it's probably not worth it to even bother. No sane user would want to surf today's web and use today's modern websites with that kind of crippled browser.

Microsoft can solve this problem for Windows on ARM the exact same way they solved it for Windows on Intel. They can give third party browsers the same access they give Internet Explorer. This access is described by Microsoft in the whitepaper "Developing a Metro style enabled Desktop Browser" and it should apply to all of Windows regardless of the processor that Windows is running on. Not doing so ensures there will be no serious browser choice and competition for lots of Windows users and that's inconsistent with Microsoft's public commitments and legal responsibilities.

This week's Windows Weekly broadcast spends about 20 minutes (from 2:00 to just past 20:00) on the topic of Microsoft banning competing browsers from Windows on ARM.

Paul and Mary Joe do a really good job of explaining things. The one thing I'd like to highlight, and Paul touches on this, is that were talking about more than just IE on the classic desktop on Windows on ARM. We're also talking about being disadvantaged in the Metro environment. That's actually the larger of the two issues.

Internet Explorer is basically one browser with two front ends. The back-end is basically the same in classic and Metro and it has access to special Windows APIs that no other app on Metro has access to. That means that this is not just a problem of other browsers being excluded from the classic desktop on Windows on ARM, but other browsers are also at an extreme disadvantage on Metro compared to IE.

IE on Metro has access to the full win32 API, unlike any other Metro style app -- including third party browsers. Without that access, it's simply impossible for other browsers to compete with IE on Metro. No other browser would be able to have a modern JavaScript engine -- Microsoft's JavaScript engine would be 10-30 times faster than any other browser's because IE has privileges on Metro that let it mark memory as executable (something you need for a JIT to make JS fast). No other browser would be able to compete with IE in terms of stability and security because IE has access to APIs for creating extra processes and brokering between those processes so it can sandbox tabs and plug-ins and generally build a more secure product. No other browser on Metro would have access to those APIs.

So, when Paul and Mary Jo talk about how Microsoft could make things right with third parties by just not having classic desktop IE on Windows on ARM, yes, that would be a small step, but it's not the classic desktop environment we actually want. No one wants to spend time in that environment on a Windows on ARM machine. What we want, and what IE has, is access to the classic win32 APIs that power the classic desktop while in Metro mode.

On x86, we had the same exact problem. Firefox on Metro did not have access to the same APIs as IE on Metro. Microsoft solved the problem by creating a new category of Windows 8 program called Metro style enabled desktop browsers. But what Microsoft was really doing there was saying "Your Metro browser can use your classic browser's back-end, which has access to the full win32 API" which is precisely what IE was doing.

Microsoft should provide the same exception on Windows on ARM and allow browsers on Metro to access the full win32 API just like IE does.

update check out that awesome 2004 Firefox 1.0 New York Times poster behind Paul :-)

This Has Worked Well

| 5 Comments

"The U.S. antitrust ruling requires that Microsoft disclose all of the interfaces internal to Windows called by 'middleware' within the operating system, such as the browser, the media player, and so forth. In this way, competitors in these categories will know that they can plug into Windows to get the services in the same way that these built-in Windows features do. This has worked well, and Microsoft will continue to disclose these interfaces even after the U.S. antitrust ruling expires."

Let's start with these.

  1. Open Protocols. Microsoft commits that all the protocols in [Windows] that are used by any other Microsoft product will be made openly available to the developer community in a non-discriminatory fashion. These Open Protocols may include protocols that implement industry standards.

  2. Open APIs. Microsoft commits that all the APIs in [Windows] that are used by any other Microsoft product will be made openly available to the developer community in a non-discriminatory fashion. These Open APIs may include APIs that implement industry standards.

  3. Open Access. Microsoft will publish its documentation for these Open Protocols and Open APIs on its website so that all developers will have the benefit of this technical information in a manner that takes advantage of the nature of open discussion on the web. Microsoft will not require developers to obtain a license, or to pay a royalty or other fee, to have access to all this information....

via Microsoft Interoperability Principles

This is the single best article I've read all week on the topic. If you read this a couple of times, you will walk away with a better understanding of this issue than pretty much everyone you know, including many of the people writing about it.

Third Party Browsers Blocked on Windows 8 for ARM? by Kshitij Sobti

This is another really good article that helps to explain some of the "What about Apple? Aren't they doing the same thing?" questions I've been hearing.

Mozilla on new browser brouhaha: Microsoft, Apple different cases by Gregg Keizer

Software Development

| 6 Comments
Senate Judiciary Committee staffers plan to take a look at allegations that Microsoft has made it difficult for competing Web browsers to run on a certain version of Windows, an aide to Antitrust subcommittee Chairman Herb Kohl (D-Wis.) told The Hill Thursday.

That's an interesting development.

The New Bing is Nice

The new Bing is really nice. They caught up with Google on algorithmic search last year, IMO (at least in the US.) This update catches them up in "take direct action" department and pushes well ahead in the social integration area. I think that team really nailed it with social integration. Good for them.

continued from Firefox on Windows on ARM - Microsoft Says No

It's not precisely "running a browser in Classic" that matters for Windows on ARM. It's that running a browser in Classic is the only way that Microsoft has allowed us to get access to the APIs that a browser needs to deliver modern capabilities and performance in Classic AND Metro.

A browser running exclusively in Metro does not have the APIs necessary to compete with IE or any other modern browser.

On x86, Microsoft has given browser vendors the same privileges and APIs that IE uses. They have not done this on ARM.

That's why Windows Classic on ARM matters.

update: I've been asked by a couple of people on Twitter and email to elaborate. Let me give it a try.

On x86 Windows 8 PCs, there are three kinds of software programs.

First, there are Classic programs that are basically the same as they are Windows 7. Because of the rich win32 API available in Classic, these kinds of programs can be really powerful (or not,) but they can only operate in the Classic environment and cannot use any of the cool new features available in Metro and they cannot be run in Metro. In this category you can think of programs like Adobe Photoshop or Microsoft Word.

Second, there are Metro apps that are touch-focused, simpler, but have rich interactions between themselves and Metro and other Metro apps. These apps have access to some cool new Metro features but they live in a Metro sandbox and cannot use any of the more powerful features available from the Classic win32 environment -- APIs necessary for building a modern browser. In this category you can find apps like Angry Birds, Microsoft Stocks, or Hulu.

Third, there are Metro style desktop enabled browsers. These are programs that straddle Classic and Metro. They have access to the underlying win32 API like Classic programs and they also have access to the cool new features of Metro. They can have a classic front end and a Metro front end but under the covers they're calling into both the Classic and Metro APIs. In this category you have Internet Explorer 10, Firefox, and likely other browsers including Chrome and Opera.

Microsoft has made it clear that the third category won't exist on Windows for ARM (unless you're Microsoft) and that neither will the first category (unless you're Microsoft.) That means that IE on ARM has access to win32 APIs -- even when it's running in Metro mode, but no other Metro browser has that same access. Without that access, no other browser has a prayer of being competitive with IE.

Happy to answer any questions in comments.

update 2: I've also been asked why Windows on ARM matters. It's for tablets, after all, and that's just a tiny sliver of the larger PC universe.

That's true today, but it's not going to be true next year and the year after and the year after. ARM will be migrating to laptop PCs and all-in-one PCs very quickly. If you read Microsoft's blog posts about Windows on ARM, you'll see that they expect ARM PCs to cover the whole spectrum. ARM chips are already being used in servers. This is not a tablet-only concern.

Microsoft is trying to lock out competing browsers when it comes to Windows running on ARM chips. IE is allowed there but not Firefox or Chrome or Opera or any other competitive browser. This is bad for the Web.

Here's what's going on. For Windows on X86, Microsoft is giving other browsers basically the same privileges it gives IE. It's not great that you don't get those privileges (certain API access) unless you're the default browser and I think that's deeply unfair (a post for later,) but at least we're able to build a competitive browser and ship it to Windows users on x86 chips.

But on ARM chips, Microsoft gives IE access special APIs absolutely necessary for building a modern browser that it won't give to other browsers so there's no way another browser can possibly compete with IE in terms of features or performance.

This is in direct violation of the promises they made to developers, users, and OEMs about browser choice in documents which mysteriously disappeared from Microsoft's site -- remember this? I sure do.

Here's a PDF of the pages that Microsoft disappeared in the run-up to their anti-choice decisions for the Windows OS running on ARM chips. Windows Principles - Empowering Choice, Opportunity, and Interoperability (PDF)


update: The Wall Street Journal has a blog post up titled Microsoft Accused of Hindering Firefox Browser and Stephen Shankland has posted Microsoft bans Firefox on ARM-based Windows, Mozilla says at CNET. The FT has also just posted Microsoft hit with complaint over Windows 8.

update 2:I've got more to say about this here.

Want to help make the Web a better place? Want to work with me?

I'm looking for a Senior Product Manager to help define the future of web browsing for half a billion Firefox users.

Mozilla pays well. We have great health benefits. And, honestly, how can you not want to work with me ;-)

I was marveling over the boot times I get on this Samsung Series 9 Windows laptop, somewhere between 8 and 10 seconds, when it occurred to me that my Andriod phone, a fairly high-end Samsung Galaxy Nexus, doesn't seem to boot that fast. So, I decided to time it.

First I reset the phone to factory defaults, just in case there was something in there slowing the startup. (Note, I didn't do this to my Windows laptop.) Then I timed three boot ups and averaged them.

The average time to the unlock screen was 26 seconds! That's almost three times as long as it takes to boot Windows 7 on this Series 9 laptop. A top of the line Android phone running the latest stock Google Android OS shouldn't take three times as long as that "pig of an OS" Windows to boot on a medium performance laptop, right?

Now, I don't re-boot my phone or my laptop very often, so it's really the wake from sleep that matters and here the phone beats the laptop with a one second wake compared to a two to three second wake for the laptop. Still, phones need to boot faster :)

Kilimanjaro

If you're following Mozilla development, you've no doubt heard something about "Kilimanjaro". If you already know what that's all about, then this post isn't for you. Enough people have asked me about it, though, I thought it worth a quick blogging.

Kilimanjaro is the coming together of Mozilla's Firefox browser for desktops; a brand new Firefox for Android phones; a preliminary version of the Mozilla mobile operating system, Boot to Gecko; the multi-OS, multi-device Mozilla web application runtime; the Mozilla Apps Marketplace; and Mozilla's user-centric identity system, Persona.

Taken together, these products and services will be something more than the sum of their parts. They will constitute the beginning of a powerful web-wide app ecosystem.

Kilimanjaro is version one dot oh of that ecosystem.


Down With CISPA

| 1 Comment

Here's what the early press reports are saying:

Mozilla is the first major tech company to unreservedly speak out against the Cyber Intelligence Sharing and Protection Act, or CISPA. -c|net
While the Internet has been bristling with anger over the Cyber Intelligence Sharing and Protection Act, the Internet industry has been either silent or quietly supportive of the controversial bill. With one exception. -Forbes
Despite the apprehension felt by many over CISPA, the bill continues to have many high-profile supporters in the tech industry, including the likes of Intel, Oracle, and Microsoft. Mozilla, however, is speaking out... -The Verge

Here's what Mozilla said:

While we wholeheartedly support a more secure Internet, CISPA has a broad and alarming reach that goes far beyond Internet security. The bill infringes on our privacy, includes vague definitions of cybersecurity, and grants immunities to companies and government that are too broad around information misuse. We hope the Senate takes the time to fully and openly consider these issues with stakeholder input before moving forward with this legislation.

It's a shame that more aren't standing up here.

For the last year or so I've been using a nice little screenshot and clipping utility that makes sharing super easy. It's called TinyGrab. Unfortunately, those guys are all clownshoes these days. First I started seeing other peoples' screenshots in my account (and wondered how many of my screenshots were showing up in other accounts.) Last week I had a failed password reset that left my paid account basically dead and I've not been able to get support via email or Twitter. I guess I'm gonna put a block on those credit card charges. Leaving a paying customer stranded for a week is just not acceptable, IMO.

My interim solution -- while I wait on someone to build something better, is to use the Windows Snipping Tool and a public SkyDrive folder. It's stupid slow compared to TinyGrab but at least it works. Here's what I have.

First, I set a keyboard shortcut on the Snipping Tool (from its shortcut properties dialog) so I can bring it up quickly. Next I installed the Microsoft SkyDrive app which adds a SkyDrive folder to Windows Explorer so I have a public location to save the image. Third, I created a "public" folder in SkyDrive and opened that folder as a pinned tab in Firefox. Now, to share I simply (ugh!) hit Ctrl+Shift+3, snip a part of my screen, save to my SkyDrive folder, reload my Firefox SkyDrive tab, open the image in a new tab, copy the URL, paste the URL into a URL shortening service and I'm done.

OK. That sucks. There are a couple of solutions I can imagine. First, Microsoft could add a one-click "Share to SkyDrive" feature to the Windows Snipping Tool that would give the file a unique name and drop it into a specified SkyDrive folder. Next, Microsoft could offer a "copy short URL" to the SkyDrive file context menu or sidebar. Those would make this an almost tolerable solution.

The second, and I think much better solution, would be for some awesome developer out there on the Internets to write a SkyDrive snipping and sharing app for Windows. The SkyDrive API looks pretty complete and I imagine a simple Windows program that captured screen areas wouldn't be too difficult.

A "perfect" tool, IMO, would work like this. I'd hit a keyboard shortcut and I'd get a crosshair icon that lightboxed my selection. Releasing the selection would copy that area, make it into a png, drop the file into a specified SkyDrive folder and copy its URL to my clipboard. Super simple. Super useful.

Any takers? Or suggestions for an existing tool that won't leave me pissed off like TinyGrab?

Monthly Archives