Today I had the pleasure of attending a Readify Dev Day. This is a day exclusively dedicated to technical discussion of upcoming technologies in the Microsoft world and today's topic was on Windows 8, the Metro UI and Visual Studio 11 (not 2011, just '11'). Mahesh Kirshnan was the principal consultant from Readify who was presenting and was quite knowledgeable about the topic. He spoke to us about some fundamental changes coming our way, both from a technological perspective and a design perspective, and delved into some of the advantages (as well as disadvantages, and there are a few!) of these changes.
Shiny New Kid(s) On The Block
Windows 8 and Visual Studio 11 were only introduced to the world recently (as a developer preview) and everyone was quite shocked at the whole 'Tile' experience in Windows 8. Gone are the days of the traditional Start Bar/Menu, replaced by a 'Start Screen'. This screen contains all the relevant Tiles (and these are Live tiles too, as in they can query and display data) that you use in your OS. The 'Start Bar' is completely gone, with all Metro UI components and applications now forced to render in a full screen mode. There is (thankfully!) a 'classic mode', where you DO get a traditional Start Menu but Microsoft is really trying to push the whole Metro experience quite hard. A bit too hard in my opinion. Case in point; the next Express version of Visual Studio (this is used for hobbyists and students, as well people who quite simply cant afford the very expensive MSDN licenses) will only allow you to build Metro applications. To me, this is a bit of a kick in the groin to future developers who are trying to break into our field that work in a corporate/enterprise environment. I believe applications being currently built with Visual Studio Express tend to be small business applications and you are potentially cutting out a major (what I think is major, correct me if im wrong) possible source of future revenue with people that decide they do want to fork out the dosh for the MSDN subscriptions when they realise they need access to more powerful features. If you limit someone to a particular type of application template, (especially as to me, Metro seems quite specialized for certain situations), you stop people from seeing what your product could be, and more importantly what it could do for them.
The New King
One thing that was drilled into us from the very start, is that 'Touch is king' ('Touch is first class' were the exact words Mahesh used). Everything about this OS is designed for touch, so much so that the traditional mouse becomes awkward and clunky, with some navigational features essential to the best Windows 8 experience not even mimicked via the mouse (like the swipe left, swipe right used to switch between applications). This is a fundamental shift in how we, as developers, design and code applications. Less focus is on input as such (from a traditional sense of keyboard & mouse combination), and more on how the application can connect to the world around it and prepopulate these things for you. Input is still there definitely, but Metro apps arent really suited to requirements with alot of input. Another example of this change is just how deeply the Metro applications (through the newly designed Windows RunTime) can communicate with your machine, and more importantly how developers can leverage a great deal of functionality within the machine itself, and with a few short gestures capture information such as current location (using GPS), printer information, the list goes on.
In terms of bringing our applications up to the current framework, Microsoft is recommending we upgrade from 3.5 -> 4.0. Applications going from 4.0 -> 4.5 will 'just work' (direct quote :S ), so the older 3.5 apps (I laugh at this when Im still supporting .Net 1.1 applications!) will need to be converted to 4.0 first. Not sure about the logistics behind this, but something worth looking into at a future time. We do have a 3.5 app we support, but right now there is no compelling reason to upgrade. What I thought was the best piece of news around this by far, was opening up older solutions in VS 11. No longer will it tamper with our solution files!!! We finally can open older applications inside VS211 without fear of breaking our applications. Im not sure how far this backward compatibility goes back, so it will be interesting to see what happens once VS11 matures (keep in mind VS11 is still just a dev preview).
Thankfully Microsoft hasnt completely ignored the legacy applications and frameworks Im sure a good chuck of us support, both right now and no doubt in the distant future! In fact, you could say theyve really gone out of their way to keep our older technologies and skills relevant. Metro applications are designed using XAML, so our WPF and Silverlight skills are somewhat (note that 'somewhat' ) transferrable. Its not quite a copy & paste scenario but its good enough that the transition pains wont be too horrible. Microsoft is reporting a 35% speed increase in ASP.NET applications from a cold start. Im kind of excited about this, as one of my major bugbears with ASP.NET is the fact that the first time an app is used for the day (depending on how you configure IIS of course), it takes what feels like a lifetime to start up. It would be nice if a cold start was the same as a warm start, but i know im dreaming ;)
Thats all for now. I will be doing a post on the weekend, more specifically around VS11 and the paradigm shifts (oh yes. paradigm shifts people!) that are involved with developing Metro applications, and some of the long overdue features being included in the next version of everyones favourite IDE :D