I Hate That We’ve Gone Native

I love the web. I love web development, I love web applications, and most importantly I loved where we were going with web applications. I was obviously a huge proponent of rich Internet applications and capturing a better user experience inside of the browser. Combine a great user experience with all of the good things about running in the browser (deployment, ubiquity, cross-platform, free publishing) and I thought that was a winning combination.

Then the App Store came along. Now everything is about standalone mobile applications. It feels like the web has taken a backseat as developers plunge head first into building native applications and users download them in droves. What bugs me the most is that I’m the same way. Most of the applications I use on my phone have perfectly good browser equivalents but I use the native app.

Dancing With Wolves

So what the hell happened? I think it comes down to two things. One, the app store provided a much better economic model for developers. One problem with the web was the downward pressure it put on the economics of content. Actual dollars were replaced with eyeballs and people started giving away the content and making money on advertising. (Think about how this affects Google, the ultimate web company; With revenue driven by advertising, they get a cut. With revenue driven by the App Store, Apple gets a cut.) With the App Store, developers can go back to charging directly for stuff they create instead of giving it away. It’s also insanely easy. They don’t have to worry about taking a credit card, setting up payments, or anything else that developers don’t want to worry about. They just have to build software, set a price, and the checks come in. That’s incredibly compelling. Especially if you’re doing development in your free time as a hobby. Now you can easily get paid for it without having to do any of the business tasks that might bog you down if you tried to do it on your own. That frictionless entry has changed the game for a lot of developers and created a huge supply of native mobile applications.

But that doesn’t explain the consumer demand for applications. I think that lies in user experience of applications. Prior to the explosion in mobile apps, we were getting close to a native-like user experience with RIAs in the browser. The components were better, the user interactions like drag-and-drop were appearing, and we were tackling problems like offline access directly in the HTML5 spec. Even the browsers were one-upping each other to be faster so we could get closer to native performance. The gap between a desktop experience and an in-browser experience was closing quickly.

Then quality mobile devices came along and changed everything. Instead of a mouse pointer we were dealing with fingers. Instead of worrying about offline access we had a ton of new functions on the phone including built-in GPS, accelerometer, camera, and a compass. The fastest and best (and in some cases only) way to take advantage of these new features was with native applications. Furthermore, the web experience was very much stuck in the old “pointer” mode. Mobile Safari on the iPhone made HUGE improvements to the mobile browsing experience, but nearly all of the websites were built for big screens and mouse pointers. Using the mobile browser on the iPhone (or any smartphone) is a lot of zooming and dragging. Even worse, some of the things we worked so hard on when it came to RIAs, like drag-and-drop, didn’t work the same way (or at all) and became more of an annoyance than a great feature.

So almost overnight all of the user interface paradigms the web had moved towards were rendered useless for this generation of mobile browsers. There were some initial attempts at fixing the issue, the best example is iUI by Joe Hewitt, but most people moved towards native apps. With better access to all of the new features, who could blame them?

The Light at the End of the Tunnel

So what does this mean for Flash developers? To be honest, I’ve been a little nervous. There is a huge drive to get Flash on mobile devices when the world seems to be crazy about apps. If you want to build apps with Flash, you can do so with AIR for Android (and eventually other platforms). But I don’t want apps. I want the web. Up to now, a lot of the interest/debate has focused on consuming basic content in Flash. People want Flash on their devices so they can watch video and play games. But we were making huge progress on in-browser RIAs with Flash. I want that momentum back in mobile form.

But what if we can revolutionize the in-browser mobile application experience the way Flash helped revolutionize RIAs on the PC? There is already an undercurrent of anti-native sentiment in the development community. Take a look at Sencha Touch, which is a fantastic looking mobile application framework designed specifically for i-devices and the mobile browser. And their first marketing campaign is even better, declaring the “end of native” at WWDC.

That’s exactly what the Flash community should be striving for. What’s so great about native? The performance? The user interface? Those are both things we can overcome with better technology and better design. Is it that it’s so easy to make money? Then the web is ripe for a better business model. The biggie is feature access. But here’s where Flash has always led the pack. We’ve had camera/microphone access forever and have always led the way in expanding the functionality the browser could take care of. If we can follow that trajectory on mobile then Flash developers are in a great position to make mobile browser apps a reality.

And that’s what I’m excited about. Screw native. I’m a web developer.

Flash Builder 4 and Flex 4 Released

It feels like a long road, but today we’re releasing the final versions of Flash Builder 4 and the Flex 4 SDK. If you were one of the attendees at Flash Camp Boston, you got the final versions on the DVD (but we had to call it a release candidate) so there’s no need to update. For the rest of you, make sure to grab the latest and greatest right now. If you’ve installed previous betas/prerelease versions, you will need to uninstall those before you install the new versions.

I’ve been a Flex developer for a long time, since version 1.5, and I genuinely think this is the most significant release in the history of Flex. We made some huge architectural changes in this version of the SDK. The new skinning model, which separates the logic of a component from the look and feel, is going to let you create some very complex and unique user interfaces. An improved states model along with a much more efficient transitions/effects engine mean that it will be easier to create multi-screen applications with meaningful rich transitions. And arguably the most important thing we did was optimize. The compiler is much faster, which means you’ll be spending less time compiling and more time building.

But the biggest thing about this release in my mind is Flash Builder. This tool has come such a long way and Flash Builder 4 is a home run. The added productivity enhancements like ASDoc support and event handler generation make it so much nicer to program. Throw in things like better refactoring and built-in unit testing and you’ve got a very powerful IDE on your hands. I’ve been using it for a while now, but when I step back and look at it, I’m very happy with what the team accomplished. Hopefully you also enjoy the new network monitor and the DCD features, which make it easy to connect to data and start building RIAs. And with the new leadership in place, the future of Flash Builder is only going to get better.

I’ve got a bunch of articles up on the Developer Center for using Flash Builder 4 with PHP. If you’re a PHP developer interested in testing the new features, these should get you pointed in the right direction. We’ve also got recordings up of all the talks at Flash Camp Boston, which cover a variety of Flex 4 and Flash Builder 4 features as well as some thoughts straight from developers who are going to be using Flex 4 and Flash Builder 4.

Congrats to the teams who made this happen. I hope you all enjoy the hard work that went into the release.

Gartner RIA MarketScope: A Rising Tide Lifts All Boats

Boats ImageThere’s always a lot of back and forth between the Flash crowd and the Silverlight crowd. And that’s fine; everyone needs an enemy and competition ends up driving everyone to have better features, better performance, and a better platform. But one of the things I’ve always thought was that Microsoft’s entry into the RIA space would end up being good for everyone. Microsoft has a lot of developers but there are also a lot of developers who don’t like and won’t use a Microsoft solution. Those people also need RIAs.

According to the Gartner MarketScope on RIAs it looks like Microsoft jumping into RIAs pushed adoption across the board in 2009. I don’t have the full report yet but here’s the quote from the blog post that stood out:

Now that Microsoft has validated “heavy RIA” in the eyes of many enterprises, interest in RIA technologies is increasing across the board. Frequent Gartner inquiries indicate that clients pit Ajax vs. Flash vs. Silverlight against each other in evaluations for new RIA projects. What does this mean for JavaFX and other technologies? Tough to say for sure, but my bet is that the “heavy RIA” arena comes down to a battle between Adobe and Microsoft, and that there is enough room in the market for both to be successful.

This isn’t supposed to be a happy-feelgood post. I want Adobe and our community to kick ass and continue to be the leaders in the RIA space. But I’m glad Microsoft is raising awareness; it helps when we can talk about why our platform is better for RIAs and not go back to what RIAs are :) .

I’m stoked about 2010. Especially if it’s a battle between Ajax, Flash, and Silverlight. We’re starting to get a big lead in mobile, AIR continues to do well as a desktop RIA solution, and we’re starting to monetize our own RIAs with services like Acrobat.com. There’s been a slight trend towards “native”, which is being led by the iPhone, but don’t discount the persistent desire to create rich, desktop-like experiences with all of the flexibility and scope of the web. The web is still going to win and RIAs will be a big part of that.

Photo by Flickr user jal33

Good Interview with Kevin Lynch on Small Screen Content

Beet.tv has a good interview with Kevin Lynch in which Kevin talks about the shift in how content is created. The gist is that content creators will start creating for the small screen and scaling up from there. I think that plays with how we’ve been talking about contextual applications. The small screen is a very different beast to design for and it forces you to really think about your user interface. You just don’t have the real estate to make mistakes on the small screen. That’s going to be a key discipline and I think we’ll see UIs scale up from those small screens, which will hopefully improve the UI on the larger screens as well.

AIR 2 and Flash Player 10.1 Betas now Available

Tonight we’ve released the AIR 2 and Flash Player 10.1 betas on Adobe Labs (direct download links for Flash Player and AIR). This is the first time we’ve simultaneously released the desktop (AIR) and browser (Flash Player) runtimes for all three platforms (Mac, Windows, Linux) at once, which is a great milestone for the Flash Platform. So what is this release and why should you care? One thing to note is that this is just the desktop runtimes, not any mobile runtimes. Those will be coming later. Luckily a lot of the work we did for mobile in terms of adding new APIs and optimizations are all in these releases so you’ll still get a lot of the benefits.

Flash Player 10.1

Lots of new stuff in Flash Player 10.1 including the multi-touch APIs, the performance gains, and some new networking APIs. The biggest thing (IMHO) with this release is the huge, huge memory improvements. Kevin showed the slide at MAX but it’s worth mentioning again. Without any code changes you’ll see significant improvements in memory with Flash Player 10.1.

flash_player_mem_footprint

AIR 2

air_logo_cloudsThe AIR team has been kicking all kinds of ass and I think AIR 2 is going to be a great release. One of the things we heard over and over again after AIR 1.0 was that people wanted more access to the native APIs of the operating system. AIR 2 brings a lot of that. Now you can open up a file with its default application as well as invoke native commands with the new NativeProcess API. We’ve also added the ability to create a socket server inside an AIR application and monitor changes to mounted drives. Plus a lot more. And you get all of the performance enhancements (and more) from Flash Player 10.1 so it should be a lean, mean AIR experience for end users as well.

Developing with the new Runtimes

(Update Christian has a list of AIR 2 resources that will help.) We won’t have a new Flex SDK for these runtimes yet so it’ll take a tiny bit of manual work to add support for the developer tools and the new runtime. Nick Kwiatkowski has a great screencast up for using the AIR 2 SDK in Flash Builder. It basically involves creating a copy of the Flex 4 SDK and then manually copying over the AIR SDK so it overwrites the AIR 1.5 SDK that ships with Flex 4. On the Flash Player side you’ll have to grab the playerglobal.swc and replace it in your Flex SDK.

I’m pretty excited about this particular set of runtimes. Talking to developers it seems like AIR 2 hits the mark and helps them accomplish more. Seeing the foundation put in on Flash Player 10.1 to create really great mobile experiences is also exciting. As always make sure to provide any feedback or any issues you run into over on the forums.

Are you Bored With Adobe AIR?

Sarah Perez over at ReadWriteWeb has a post up titled Are you Over AIR Applications in which she talks about her change in perspective on the value of AIR and how much benefit desktop applications provide over browser applications. It’s a pretty good post, and one that I hope drives some traffic and conversation, especially as we’re hearing more about things like Chrome, Firefox 3.5, and the Chrome OS.

For much of the past couple of years web applications were trying to mimic basic aspects like functionality and look and feel of desktop applications. That drove the movement towards RIAs and the shift made it painfully obvious that the browser in its current form wasn’t up to snuff. So more and more energy went into improving the browser so that web applications could compete against their entrenched desktop counterparts. We’re finally seeing releases from all that work. Firefox 3.5 looks to incorporate HTML5′s support for offline mode. Chrome was written from scratch because Google felt, basically, that the current browsers weren’t powerful enough to run complex HTML/Javascript based web applications. So what benefits does AIR have in this world? I agree that desktop applications as we know them are falling by the wayside, but AIR still has a few areas I think make it shine.

Web Technologies
One of the best parts of AIR is that it uses web technologies like HTML/Javascript and Flash. Web developers are a creative and innovative bunch. I’d argue that one of the main reasons Web 2.0 exploded the way it did was because web developers took to their destiny as the drivers of technology. Web development is relatively easy to learn but complex enough to keep the challenges coming. It’s also more productive than traditional languages because it’s both faster and it’s cross-platform. The strength of web development is a strength of AIR. Look at the first wave of a game-changing technology like Twitter. Almost all AIR applications. That’s because web technologies are easy and AIR made it very simple to quickly create a new kind of experience for a new kind of service. Tweetdeck and Twhirl got a first mover advantage and reaped the rewards. The development speed that the web allows for shouldn’t be discounted.

Notifications and Files
I think notifications, or the “toast” windows that you can pop up in AIR are more and more important as the web gets more real time. People want the firehose and they want it as soon as they can get it. Another area that I think AIR hasn’t been used enough for are filetypes. It’s incredibly powerful to be able to not only create items on the file system but to associate those with your applications. So far there hasn’t been need to create things like a .twitter file extension, but the next generation of web services may see big benefits from users being able to create those extensions. And of course with the file system you get some inherent benefits like the ability to tie into Spotlight or other desktop searches.

Ultimately I think both the browser and a more web-centric approach to desktop applications will succeed. The cross platform benefits, the improved developer productivity, and the close integration with web services are going to be instrumental in driving adoption for web applications both inside and outside of the browser. I hope AIR continues to do well and help drive innovation for web applications on the desktop. Seeing technologies like Google Gears and Titanium’s Appcelerator prove to me that the space is still growing and that we’ve got a lot of demand for a blend of web and desktop. And we’ve got a lot of enhancements coming up in the next version of AIR, so we’re not standing still. Stay tuned.

Google’s Chrome OS, Netbooks, and Rich Internet Applications

The big news of the night is that Google is building an operating system (no, not Android) that’s based on Chrome. I’m not entirely sure of all of the details but I think it’s cool at first glance. It sounds like it’s going to be designed initially for netbooks and I like how they describe the OS:

Speed, simplicity and security are the key aspects of Google Chrome OS. We’re designing the OS to be fast and lightweight, to start up and get you onto the web in a few seconds. The user interface is minimal to stay out of your way, and most of the user experience takes place on the web. And as we did for the Google Chrome browser, we are going back to the basics and completely redesigning the underlying security architecture of the OS so that users don’t have to deal with viruses, malware and security updates. It should just work.

I think Google gets it: Netbooks are going to be huge and they’re going to be a place where the web can “beat” the desktop. In a lot of ways they’re the perfect combination for the next generation of the web. The devices are small, portable, probably going to be connected most of the time, and have memory and resource requirements that require an optimized experience. I love Windows 7 and think it’s beautiful, but I do wonder how well it will run on netbooks. Microsoft seems tepid in how much it’s going to support or encourage netbook use.

Netbooks: A Boon for Rich Internet Applications
But people moving to the web-centric netbook experience are going to want a close approximation to the desktop environment. User experience is still going to be important on these small devices. We’ve seen how important a great user experience is (and how much of a selling point it is) with the iPhone. Google is a lot of good things but they aren’t user experience gurus and they don’t get design.

So what fills the gap? If only we had a good, lightweight layer for this new operating system that could play video, support games, enable real time communication, and let developers create beautiful user interfaces that felt like desktop applications with a much smaller footprint. Oh wait, we do, it’s the next generation of rich Internet application technologies like Flash and Silverlight.

Isn’t the netbook: a hybrid mobile and PC device, the perfect fit for RIAs: hybrid web and desktop technologies? You get the audio/video aspect, a framework for building very rich user interfaces, real-time web connectivity, and an existing ecosystem of developers and designers. All in a small package that’s meant to run with less resources than a full operating system requires.

I think netbooks are going to be a big deal for RIA developers. I think it’s a large addressable market and things like Adobe’s work with ARM to optimize Flash for their chipset are going to pay performance dividends in a big way. Throw in the cross-platform aspect and you’ve got the perfect way to build applications for a hybrid web-desktop-mobile device like the netbook.

Pooneekay Vatsoom Ahdtuih

Flash Builder and Flash Catalyst Betas Now Available

Flash Builder Flash Catalyst LogoWe just dropped the bits for both the Flash Builder beta and the Flash Catalyst beta. These represent a big jump in how people are going to work with the Flex Framework and I’m happy to see the hard work of the teams now available to everyone. So grab the bits and start creating some Flash content. Important: If you installed the MAX public beta, check the bottom of this post for some instructions that will help you through some install problems that may come up.

Keep in mind that we’re still early for both Catalyst and Builder. We won’t have everything we want in Catalyst 1.0 but this beta represents a HUGE step over what some of you saw at MAX last year so we’re making a lot of progress. It’s snappy, it’s tightly integrated with the CS4 tools, and it opens up a whole world of design centric tooling for the Flex Framework. What makes this all possible are the fundamental changes to the Flex SDK for Flex 4. We’ve completely separated the logic from the look of a component which means designers and developers can collaborate without stepping on each others toe’s. We’ve abstracted the layouts so you can dynamically change the layout of components creating some very cool looking components. We’ve integrated Flash Builder with a lot of your favorite backend technologies so it’s easy to consume and generate services to connect to data.

I’ve created a screencast to help people check out the new features. It goes through the workflow of moving from a PSD to Flash Catalyst and on to Flash Builder when you want to bring in real data.

Flash Catalyst Tutorial

There are a lot of resources to make sure you get up to speed quickly using the new tools. Here’s a good list:

If you’re having trouble uninstalling the MAX preview and installing the public beta, give these steps a try:

  • Uninstall Catalyst
  • Download the Mac version of the Repair tool from this page: http://www.adobe.com/support/contact/licensing.html
  • Run the Repair tool with the default options.
  • After the Repair is complete, re-install Catalyst and enter the SN when prompted by the installer.

Flash Player 10 is Here – Something For Everyone

Flash Player 10

It’s a little tough when you live inside the Adobe bubble to step back on release day and talk about all the “new” stuff (and some bug fixes) that you’ve been talking about for months. But Flash Player 10 is a big release, so I’ll do my best. As I’ve said a bunch over the past couple of months, I felt Flash Player 9 was a developer-centric release. We rewrote the virtual machine, introduced ActionScript 3, released Flex 2, and essentially laid the groundwork for rich Internet applications. We created the train tracks for more complex, interesting, and sophisticated applications in the browser. We’ve since extended those train tracks to the desktop with AIR and into the world of real time collaboration/communication with things like BlazeDS and LiveCycle Data Services.

Flash Player 10 on the other hand, is in some ways about getting back to the core of what made Flash great in the first place – really creative people. We’ve got Pixel Bender which companies like Picnik are already using to enhance the graphical capabilities of their photo editor. We’ve got new 3D APIs that will help make it easy for anyone to add a 3D-like effect to their applications. We’ve got new drawing APIs and primitives that enable some very interesting visualizations and will go hand in hand with a lot of open source projects out there that were previously pushing the Flash Player further than most. We’ve also got new low-level text APIs that for the first time make text as rich as other aspects of the Flash player. I was showing off some of those text APIs a couple of weeks ago in Asia and they went over very well. It’s going to help the Flash Player become truly global.

With the importance of video we also added a lot of video enhancements. “Movestar” was our big video release with support for H.264, but in Flash Player 10 we’re enabling dynamic streaming which means your users can get the best possible picture that their bandwidth will support. That means smoother video playback and a better video experience.

So now that Flash Player 10 is out we’re providing the platform on which to build some very cool stuff. A way to blow people away with your creativity and vision. That’s going to be a major theme next year, I think. Adobe is a design company at its core. We make great design tools and we answer to designers. That provides us a big advantage in the increasingly design-heavy world of the web. Creative Suite 4 and Flash Player 10 are a great example of what’s possible. Flex 4 and “Thermo” are going to build on that so that when it all comes together it’s going to be the best platform around for great looking, fast, and cutting-edge applications. And if our penetration story sticks, in 6 months we’ll have upgraded the web again so you can just take it for granted and deploy those apps without a second thought.