Attended a bunch of session about WPF and WinRT/Metro. A couple of points:
Windows. The schizophrenic operating system with two start screens is here to stay. They openly admit it, talking about “desktop side” and “metro side” or even “green side” and “blue side” following the [in]famous architecture slide. I don’t mind if several visually similar ecosystems talk to different APIs under the hood, like POSIX and Win32 subsystem in Windows NT. Having several distinct visual managers on top of the same API also makes sense, like Gnome and KDE. But when everything is different, from input methods to security model, it can hardly be called a cohesive product, IMHO.
Big Brother Development Model. You probably heard that Metro apps take the whole screen, that there are no right clicks, etc. This is all true, but there is more. You cannot develop Metro apps on your local machine without obtaining a special (free) developer license from Microsoft, and this license is good for 30 days. It works per user, per machine. After 30 days if you do not renew the license, you won’t be able to run your own Metro applications on your own machine unless you renew the license. Nice, eh? And this is not a theory: one of the presenters had their license expired during lunch and was forced to rush to renew it. If he did not happen to have Internet connection at the moment, he would not be able to run his own demos. This rule applies only to applications that target Metro runtime, “traditional” applications are not affected.
WPF 4.5. No major changes in WPF 4.5. “Everyone is focused on Windows 8, so it’s a polishing release”. No type safe bindings either. Event ASP.NET got them (ItemType
property), but in WPF DataContext
remains untyped.
.NET Framework. async and await keywords are the biggest deal on the block, every single presenter mentioned them. This partially has to do with the fact that Metro/WinRT enforces asynchronous call model for potentially time consuming APIs, such as network or file operations The funny part is, they did not have to add new keywords to Javascript – it already has continuations 🙂
There was a profound lack of consensus between presenter on whether .NET Metro “profile” is a proper subset of “big” .NET with exactly the same binaries, or the compatibility exists purely on the source code level. The truth is probably somewhere in between.
HTML and JavaScript on Metro. There is a big fuzz about ability to write native Metro applications using HTML and JavaScript. This is technically true, but the resulting applications are not regular HTML/JavaScript applications. They heavily use Metro-specific library called WinJS, which will not appear anywhere else except Metro. So, while they are HTML, they are not cross-platform. Visually HTML Metro applications do not differ from C# or C++ Metro applications.
More later