Linked by Thom Holwerda on Sun 11th Mar 2012 22:21 UTC
Windows And thus, Microsoft bites itself in its behind with Metro. As you all surely know by now, the Metro environment in Windows 8, and its accompanying applications, need to follow a relatively strict set of rules and regulations, much like, say, applications on iOS. For one type of application, Metro has already proven to be too restrictive and limited: web browsers. Microsoft has had to define a separate application class [.docx] - aside from Metro and desktop applications - just to make third party web browsers possible for Windows 8.
Thread beginning with comment 510282
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[4]: I think
by Nelson on Mon 12th Mar 2012 04:34 UTC in reply to "RE[3]: I think"
Nelson
Member since:
2005-11-29


Not being able to have a JIT (it's technically possible, but applications that do it would fail validation) is, by itself, enough to prevent any modern web browser from being a native Metro application.


Then this would have been an acceptable area to push for specific work on. A solution to this has implications beyond a browser, so getting some kind of brokered dynamic code generation API (For example, C# supports compiled Expression Tree's which offer limited dynamic code gen) would be more beneficial in the long run.


That's not even considering everything else. It would require a massive effort to move everything over to WinRT. It wouldn't gain you anything. The new WinRT APIs are still accessible from a hybrid WinRT / Win32 application. The replacement APIs, like networking, don't actually offer any extra features over the existing Win32 APIs.


Being conscious of mobile broadband networks is reason enough to warrant a rewrite. Firefox accommodates different networking subsystems already, and WinRT's async networking API would have been no different.

I think massive is a little overstated, but it'd require *some* effort. That's the entire point of WinRT, to be a clean break. I don't think it's asking for much, considering that the way we interact with these key things has fundamentally changed. The old rules no longer apply. So it's best to be resource conscious.



Besides, the architecture of Windows 8 requires that the Metro web browser be a hybrid application. That's just the way it works. The Metro web browser is determined by whatever the default desktop browser is. That's why, if you install Firefox on Windows 8 and set it as the default browser, the Metro version of IE 10 disappears.


If you were a pure Metro App, it wouldn't much matter which is the default browser because you'd be on the Start Menu regardless.

My point is, there's very little that was in the way of Firefox being a pure Metro Application. The upsides are immense, visibility in the Windows Store could probably go a long way towards Firefox adoption.

Reply Parent Score: 1

RE[5]: I think
by Alfman on Mon 12th Mar 2012 06:14 in reply to "RE[4]: I think"
Alfman Member since:
2011-01-28

Nelson,

Can you point to *specific* code examples so that we might talk meaningful comparisons? I'm not going to believe the new APIs are better just because microsoft claims so; they've gone down this path countless times already. So why exactly are the new incompatible APIs better?

I'm not trying to make an assertion myself, but it seems some of the claims being made here warrant stronger evidence than has been given. Event oriented app models all tend to be reimplementing more of the same ideas, I'm curious to know if there's anything substantially different this time? What's been gained by creating yet another API?

Edited 2012-03-12 06:15 UTC

Reply Parent Score: 6

RE[6]: I think
by moondevil on Mon 12th Mar 2012 08:44 in reply to "RE[5]: I think"
moondevil Member since:
2005-07-08

Nelson,

Can you point to *specific* code examples so that we might talk meaningful comparisons? I'm not going to believe the new APIs are better just because microsoft claims so; they've gone down this path countless times already. So why exactly are the new incompatible APIs better?


Like any other company, even on FLOSS world, the new APIs are always better.

Just look for the sound APIs in Linux or QT APIs in MacOS X, just to cite two examples.

Reply Parent Score: 3

RE[6]: I think
by Nelson on Mon 12th Mar 2012 12:53 in reply to "RE[5]: I think"
Nelson Member since:
2005-11-29


Can you point to *specific* code examples so that we might talk meaningful comparisons? I'm not going to believe the new APIs are better just because microsoft claims so;


No of course not, the consumer preview is like a week old. I don't have two sets of code reimplementing the same functionality to link to you.

However, the facts speak for themselves. It's a fact that the legacy code is not mobile aware, and doesn't give you the breadth of information that the new networking model gives you.

Chief examples, like I stated before, being mobile broadband cost and cap awareness, and detailed information on network status switches. For instance, being able to know when a user switches from a metered 3G/4G connection to an unmetered WiFi connection is invaluable if you're trying to be resource conscious.

Another point, which I've made before, is that you're able to intelligently run these networking requests in the background (Through running as a Lock Screen App or by using Background Transfers.) . This is something that's not possible with vanilla sockets.


they've gone down this path countless times already. So why exactly are the new incompatible APIs better?


By countless you mean how many times exactly? .NET had two paradigms, the second of which mostly carries over into WinRT, except it's made optionally simpler by the async keyword.

As for native constructs like io-cp, these are a level above them, so not really comparable. They're just convenient, and coincidentally, the only way forward for Metro Style applications.

Even then, another advantage is the capability isolation. You get what you ask for. So users immediately know what type of network requests on which protocols the application will ever make.


I'm not trying to make an assertion myself, but it seems some of the claims being made here warrant stronger evidence than has been given.


I'm unsure how any of what I said above is not something immediately obvious. It's a given the old technology doesn't, or most likely can't, implement the new technology features. I then go on to cite said features as reasons for implementing the new technology. It seems pretty cut and dry to me.

Developers make the conscious choice, and I think this frankenstein hack let's Firefox developers have more leg room than I think they should be afforded.


Event oriented app models all tend to be reimplementing more of the same ideas, I'm curious to know if there's anything substantially different this time? What's been gained by creating yet another API?


I'm not sure what you mean by event oriented? Do you mean asynchronous? I have a feeling you're hinting at something here, and I'd be interested in discussing it further.

Reply Parent Score: 2

RE[5]: I think
by dsmogor on Mon 12th Mar 2012 12:50 in reply to "RE[4]: I think"
dsmogor Member since:
2005-09-01

>Then this would have been an acceptable area to push for specific work on. A solution to this has implications beyond a browser, so getting some kind of brokered dynamic code generation API (For example, C# supports compiled Expression Tree's which offer limited dynamic code gen) would be more beneficial in the long run.

This makes you dependent on a specific MS implementation. The quality of dynamic jit engine is a major competitive advantage for particular companies (Moz, Opera, Google, Apple). MS cannot mandate that.

Reply Parent Score: 4

RE[6]: I think
by Nelson on Mon 12th Mar 2012 12:57 in reply to "RE[5]: I think"
Nelson Member since:
2005-11-29

They already are, they use Microsoft's memory mapping APIs for their JITs, so they're tied to Win32.

The difference would be that this would be an runtime verified versions of these APIs, which, given the circumstances is an acceptable cost.

JIT engines have farther reaching implications than JavaScript compilation, for example, many Game Engines JIT compile their scripting languages. So obviously, a more general solution is needed. They can't keep carving out exceptions for apps.

Reply Parent Score: 2