Let’s preface by correcting a couple tweets from yesterday.
- First, the next version of C# will be C# 5.0, not C# 4.5 as I heard earlier. The next version of the framework will be .NET 4.5. However, you should expect the language versions to be whole numbers.
- Second, I was misleading on the pattern based comment on C# async. The await keyword is pattern based. As long as the object being awaited has the right methods to represent a future, it can be awaited. However, async methods must return either void, or Task<T>. This is different than the current CTP version, but the official release will enforce this.
Anyone that still feels managed code, C# and VB.NET are no longer first class citizens in Windows 8 must watch Anders’ talk about the future directions of C# and VB.NET.
The first part of the talk was discussing the async programming metaphor for Windows 8, and how the managed languages support those concepts.
One goal of the Windows 8 runtime and the Windows 8 libraries is to avoid the infamous spinning toilet bowls in your UI. Any operation that could reasonably expect to take more than 200 ms should be an asynchronous operation. The new WinRT APIs take that into account. Roughly 10% to 15% of the WinRT APIs are async methods. That makes it very important to support async programming in the languages. Otherwise, your app would block the UI thread unnecessarily and your UI would frost over.
Most of my audience has seen the async features before, so I won’t dwell on the features of async. Let’s just focus on how these upcoming async features interact with the WinRT libraries. The move to WinRT shows the benefits of the pattern based await specification. The WinRT methods support the awaitable pattern, even though they don’t return Task<T>. You can await them directly.
One other important point Anders went over in some detail: async methods do not necessarily mean creating more threads. However, work delegated to a background thread can be asynchronous. Network APIs and File APIs are async, but do not create new threads. They will use IO Completion ports, or other noification means.
I can’t do Anders’ demo justice in a blog post. Even if you’ve seen earlier Roslyn demos Anders’ has done, watch this. I’m amazed at how far along the Roslyn team is. I think Anders is thrilled as well. He was clearly very happy to announce that the team is releasing a CTP for the Roslyn compiler in roughly a month. It will install on top of Visual Studio 2010.
As for the features, I’m really amazed to see the refactoring work in the C# immediate window. That must have been quite a bit of work. The compiler has also seen significant progress, if the team is far enough to release a CTP.
There are some very strong recommendations and guidelines regarding a well-behaved Metro application. They cover areas like suspending your app when necessary, use of the screen real estate, tiles and other notifications. As I build some samples, I’ll cover those in more detail. There are a few key messages I got on Metro applications:
Overall, I like the Metro experience, and the programming model. I do have quite a bit to learn before I feel like I can give guidance on creating those applications yet.
Steven Sinofsky discusses the changing world of computing. Form factors and user interaction models change how programs should work. I’m gad that’s at the core of Windows 8 design. In addition, Mobility now means devices that you use while carrying, not just devices you carry and then use. They have clearly been spending a lot of time determining what’s important to users now.
“Touch first, but still comfortable with a mouse and keyboard” is a great way to describe this important design considerations. Historically, Windows had always been Mouse + Keyboard, and maybe touch. That message changes the design goals, and should provide better end user experience.
That customized password design is great for new form factors. Good idea. It’s also going to be a great way to provide security.
The start page is a great idea, However, I’m concerned that what they’ve done is optimize for a very cluttered start screen. My opinion is that a better UX would be to optimize for a smaller number of tiles, and encourage users to have fewer tiles.
The IE demo shows some of the system level features to leverage for applications: the semantic clipboard sharing, the smart sharing. and the system-wide spell checking.
The best design change for Windows 8 is that the focus is on the application, not on the system (or the system chrome). That really catches the changing face of computing. The second big change is that the system should be an ecosystem (web) of apps connected to each other, and the cloud.
And on to Building applications. The big picture seems to say this to me:
There are open questions:
The tools are moving forward in quite a few ways. VS11 will have support for the HTML/JS development. Expression Blend gains support for laying out HTML layout by introspection on the DOM.
Great discussion of the different hardware that Windows 8 runs on. The key take away for the non-hardware nerd: The OS is optimized for the hardware its running on. It will expose everything in place.
And of course, every Build attendee gets the developer preview tablet.
Sinofsky shows great demos of setup/refresh/and other system tools. Once again, some really good design into making this a professional system that is somewhat accessible to the average use.
Next, he’s showing a lot of the multi-monitor support and power user synchronization. There’s a lot for serious power users and developers. Also, luckily, it doesn’t surface unless you want it.
Windows live synchronization. The big picture here is that it really does show the “Three screens and a cloud” message at its fruition.
There’s a lot of questions. I am hoping to get some information on these areas over the rest of the week:
For more of my immediate thoughts, check out my twitter stream from today.
Overall, I’m very impressed. Windows 8 clearly is an ambitious redesign of the Windows system. It’s as big a change as the change from Windows 3.1 to Windows 95. It clearly reflects a lot of thought on how people do use computers today, and how they want to use computers.
All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.