Work Starts on Metro Firefox - The Birth of the MetroTop App
Written by Mike James
Monday, 12 March 2012
Until now programmers have been working on two types of app for Windows 8 - Metro/WinRT and Desktop/Win32. Now we have a third type, a cross between the two that can be called MetroTop apps because they mix the two systems.
This new kind of MetroTop app can make use of the Win32 API and the Metro UI as provided by WinRT. It really does sit between the two frameworks. This type of app is needed because it provides the only sensible way to allow a browser to work under WinRT. In other words, Microsoft had to create this hybrid in order for IE10's incarnation as a Metro app to have access to the Win32 API.
Now Mozilla is starting work on building a Metro version of Firefox and they too have to take the MetroTop approach to the problem.
According to Mozilla developer Brian Bondy in a blog entry :
Unlike Metro applications, Metro style enabled desktop browsers have the ability to run outside of the Metro sandbox. Meaning not only can we build a browser, but we can build a powerful browser which gives an experience equal to that of a classic Desktop browser.
Metro style enabled desktop browsers have access to most Win32 API and the entire new WinRT API.
There is an oddity about the MetroTop mode of operations - it seems to be only permitted to browsers and only to the default browser. Presumably this is a security measure to make sure that the number of apps that can occupy this privileged niche is limited to one, or at least one at a time.
The only Microsoft documentation on the matter states:
Metro style enabled desktop browser. A desktop browser that chooses to participate in the new Metro style experience when the user has expressed preference for the browser to do so. Such a browser can provide HTML5 rendering for webpages and service HTTP / HTTPS requests. By definition, such a browser has full access to Win32 APIs for rendering HTML5, including the ability to use multiple background processes, JIT compiling, and other distinctly browser-related functionality (like background downloading of files). Desktop browsers typically run at medium or low integrity level.
The technical details of what Mozilla plans are also interesting:
We will be using the Windows Runtime C++ Template Library (WRL) which is similar to C++ / ATL.
Mozilla also seems to be considering using C++/CX, which is the most direct way to work with WinRT in that it produces native code and is customized with new commands to make this easy. Rather than adopting XAML, the team plans to use the existing XUL code and render it directly to DirectX, although exactly how to do this still seems to be something to discover.
The whole situation seems remarkably confused, given that Windows 8 is supposed to be a consumer preview. From the developer's point of view, Windows 8 looks more like a work in progress than anything approaching a finished product.