No matter what kind of developer you are I encourage you to read Peter Bright’s post about .NET. It’s a fascinating look at the history of Windows development and how it’s progressed (or regressed) over the past few years when compared to OS X. I’ve never done desktop development – I was always a web developer – so I can’t speak to the particular pain points or moving between operating systems. But I think this article is especially important for budding AIR developers who are helping cross the chasm of desktop development and web development.
I’ve always been a web developer in a lot of ways because it was easier. The browser handled all of the complicated work for me so I could write some UI code, some server side code, and then pretty easily make stuff appear on the screen. As I got into Flash and Flex more and more I was able to upscale the experience, make my little web applications look and feel more like native desktop applications, and all the while have the Flash Player worry about the hard parts of sophisticated development. Now with Adobe AIR I’m building desktop applications under that same idea. Maybe I’m lazy, maybe it’s bad that I don’t understand the fundamentals of desktop development, but the ease of web development combined with a better delivery mechanism has exploded and that’s where all the creativity and fun is. More people can be web developers and everyone is benefiting. So when I read articles like this about the frustrations of desktop development I wonder about what AIR holds for these people.
There are definitely things that AIR doesn’t do. It’s meant to be RIAs on the desktop and not a full replacement for native desktop applications. But it packs a bunch of functionality into APIs that will resonate with web developers. They make sense. We were able to start from scratch and AIR hides all of the complicated and possibly outdated API work that you’d have to do on any operating system. And the same code works on Mac, Windows, and Linux so you’re not locked into one operating system.
But one part of the article actually makes me worry about AIR, and it’s something I’ve been thinking about for a while. If we’ve got cross-platform AIR applications running on the desktop, what happens to the native look and feel that is very beneficial from a user interface standpoint? I don’t have a good answer. But Peter tears into the problem and makes some great points. Is Windows fragmented enough from a UI standpoint that we encourage AIR developers to try and follow the Apple UI guidelines where possible? Do we create our own set of UI guidelines (possibly using the Flex Interface Guidelines) that take into account the subtleties of web technologies on the desktop? Do we let developers use whatever UI guidelines fit their technology (Ajax/Flash) and get out of the way?
I don’t think the last one is the answer but I do think that as AIR becomes more widely adopted we need to encourage people to be good UI citizens. After reading Peter’s article I’m glad I never had to do desktop development. I like everything about web development and that’s one reason why I like AIR so much. But I realize there are pitfalls abound when combining the web and the desktop. I think it’s going to make for a lot of interesting philosophical conversations across a lot of different groups and that’s a good thing.
Update: Ethan picked up on this as well. Hopefully he’ll post more of his thoughtsTweet