AIR and Flash Player coming for Android and Mobile Devices

If you’ve been a member of the Adobe/Macromedia community you’ve heard a lot about Flash on mobile devices over the years. After seeing what’s coming, I think this is what you’ve been waiting for. We talked a bit about Flash Player 10.1 for mobile devices at MAX, and having played with a working version on the Nexus One, I think it’s going to be great for people that want to consume bits of Flash content here and there, especially games and video. But what we haven’t talked much about is AIR for mobile devices.

Cross-device Applications

AIR has been a big success on the desktop partly because being able to create an application with native hooks and having it run cross-platform is a big benefit to developers and to end-users who jump around different operating systems. But the mobile landscape is an even bigger minefield. Apple’s phone gets all of the attention, but you’ve got Android out there, RIM’s BlackBerry, Palm Pre, Windows 7, and others. If you come up with a great idea for an application, you have to write it for all of those platforms. Or watch as someone takes your idea and copies it on one of those platforms after you invest all of your time building it for a single platform. AIR for mobile is going to let you use the language and the tools you know to create applications across all of those mobile devices much more easily. We’re starting with AIR mobile for Android and BlackBerry and Kevin Hoyt has a demo video up that shows it in action on the Motorola Droid. And with AIR for mobile you’ll get access to multi-touch, accelerometer, GPS, creating your own gestures, screen orientation, and other device-specific APIs.

Introducing the Mobile RIA

One of the things that’s going to become very important for developers is creating content specifically for the small screen. Tools like Flash CS5 are going to make it very easy to reuse assets and workflow to create both applications and in-browser mobile Flash content. With AIR for mobile you can take the same application and run it on Android, compile it as an application for the iPhone, or deploy it on Mac, Windows, and Linux on the desktop. Depending on the device, you may want to make some small modifications, but you’ll be able to reuse your assets and a bulk of the code to quickly create cross-platform mobile applications with AIR mobile.

Because of the screen size and the very different specifications of each device, it’s going to be critical to customize content as much for a single device as possible and make sure you’re following best practices. There is a good article on creating mobile RIAs over on the Developer Center and Thibault Imbert has put together a great beta paper on optimizing mobile content for mobile devices.

Flash Platform Tools and Workflow

There is always a lot of talk about the future of Flash and which devices it’s on. But the ecosystem of Flash has gone way beyond an animation engine that’s limited to the web browser. No matter what you’re doing, the tools and workflow of the Flash Platform are going to give you the ability to deploy the most creative applications across the most used devices. Some of those applications will be mobile RIAs in the browser and some will be AIR mobile applications that take advantage of native APIs across mobile operating systems. For developers it really is one web, any device, and any kind of application. So get ready to go nuts and show every other developer how mobile applications are supposed to look.

In-Game Payments with Flash and Social Gold

Gaming is obviously a huge part of the Flash marketplace and luckily this year we as a company have started to acknowledge that and hopefully address developer needs. Part of that was the Flash CS5 support for creating iPhone applications. Another is the “Shibuya” try/buy service that we have, which allows developers to much more easily monetize their AIR applications (and thus AIR-based Flash games). But the coolest thing is seeing the ecosystem grow up around this. A great example is Social Gold.

Social Gold takes the monetization of Flash content to the next level by allowing users to make in-game purchases. They’ve got an API that lets you do everything from micropayments to recurring subscriptions. They’ve got a good demo of the workflow on their site. They handle all of the credit card processing so it’s relatively straightforward to include the Flash code in your application and start accepting payments. The revenue split is about 90-10, which seems very fair.

All of the samples are for games, but there’s nothing to prevent this from going in any other type of Flash application, so it’s a very interesting way to monetize Flash content in the browser or on the desktop with AIR. One of the main issues is security. Because SWF files can be decompiled, there’s the potential for problems if you try to embed secret keys inside of your Flash application. This can lead to a spoofing attack where a malicious SWF file gets your information and authenticates against Social Gold’s system. Social Gold attempts to solve this by keeping the keys on the server only and just passing session variables back and forth. I’m not a security guy, so I won’t comment on the implementation, but it seems like a reasonable approach considering the security constraints of Flash.

We saw with the iPhone how important it is for developers to monetize content and so it’s great to see more opportunities to do that come to the Flash Platform. I think 2010 is going to be a big year for small Flash shops or individual developers who want the freedom of making a living on the Platform.

Introducing “Contextual Applications”

We did a soft launch with some information of a concept that Adrian Ludwig and some of the other brain-trust folks at Adobe came up with recently called Contextual Applications. I have absolutely fallen in love with this term (and I had nothing to do with thinking of it). In a lot of ways I think this is RIA 2.0. One of the problems with RIA was that it had a grossly vague definition. It was kind of a Frankenstein combination of a desktop-like user experience, better design, real-time communication, rich media, and Web 2.0 ideals. In the end, RIA encompassed almost everything; Ajax, Flash, Silverlight, Adobe AIR, WPF, etc. That’s not a bad thing but it became hard to distinguish the value of RIAs because everyone could claim they were doing “RIA stuff”. The important thing is that we made a lot of progress with RIA and changed how people thought about software development.

Defining Contextual Applications

Contextual applications are a lot more concrete and have a better value proposition for both end-user and developer. It isn’t defined by a particular technology but instead a particular type of experience. So what is it? The idea is fairly simple. You’ve got a core set of data and a core experience that you have to deliver. But in today’s web there are multiple “touch points” out there. What about mobile? The desktop? A browser experience? A widget? An experience specific for social networking? Maybe a television? Users expect to have their content everywhere, on demand, regardless of how they’re connecting to it. The user experience and design challenge is creating a unified brand and experience that leverages the same content and is tailored to the specific technology limitations of a particular “touch point”. Solving that challenge will give you a contextual application. An application that moves with the user across a number of screens/devices while maintaining content and a user experience that is consistent but unique to each device.

Finetune: The Ultimate Contextual Application

The Contextual applications site has a number of examples but my favorite is definitely Finetune. They are a great example of one of the earliest contextual applications. They started out with a web-based application. Then, with the benefits of the desktop they created an AIR application that had native windows and used the file-system capabilities of AIR to tie into the iTunes library and pull artists that were interesting to the user; using the technological features of the underlying touch point to customize the experience. Then they were interested in deploying a version on the Wii so they created a Wii-specific browser application that ran on Flash Player in the Wii and maintained the Finetune branding. Then of course mobile was a big demand. So they built two mobile applications; a Flash Lite app that reused a lot of code and still maintained the Finetune experience but customized for the small screen. They also built an iPhone app with touch support that captured the experience of the iPhone while maintaining that core Finetune interface.

To me, the Flash Platform stands alone at being able to let developers and designers easily deploy contextual applications. With so many different operating systems and screens supported, it becomes easy to reuse the tools and workflows to create applications that are tailored for those screens while maintaining a sense of continuity. And think about the server infrastructure. Are you using FMS to stream Flash Video content? That content will be supported everywhere the Flash Player is so you can quickly jump between screens and be sure that your base content, the most important thing, is completely intact. It lets you design around your content and maintain that emotional branded connection with your users.

Ultimately it is about productivity. The number of touch points is only increasing and to be able to deploy on as many of them as possible you need to be able to reuse code, design assets, and workflows as quickly as possible. The Flash Platform gives you the broadest reach with a large community of designers and developers who are skilled with the tools. Ultimately that means you’ll be able to create contextual applications quickly and reach your users wherever they are. That’s why I’m so excited about this concept: ultimately it gives the user more control.

The Full Flash Platform Services Story

platform_servicesToday we announced the release of the distribution side of Flash Platform Services. Most of the action is on Techmeme but I liked the ReadWriteWeb post, the TechCrunch post, and the VentureBeat post specifically. Distribution Services is the one that’s new and the goal is to let you track your application across a number of different screens while also simplifying the distribution mechanism. There are also hooks that will let you easily bring in advertising so that you can both track and monetize your content. The first thing people will think of is widgets, and that makes sense because a lot of the “sharing” aspect, which we’re partnering with Gigya for, will remind people of the widgets they’re able to place on Facebook, MySpace, blogs, and other places. But as Serge’s MAX Widget shows, these can be more complicated applications as well. So while widgets may be the first thought, any one of these three threads–sharing, tracking, and advertising–can be brought into an application of any size. So regardless of what kind of application you’re building, these services should be helpful.

Show me the money
One thing this allows you to do is easily monetize your content. The money side of this is that advertisers or developers can buy installs and pay a fee (starting at one dollar) per successful installs. You can also target this a bit, so if you want to make sure a high number of people are embedding your widget, you can promote it via the network and you’ll be charged a fee anytime someone embeds or installs your content. On the profit side, you can also offer to host advertisements via our network. We’ll give you a specific CPM (cost per thousand impressions), we estimate around $5, and pay that out to you.

Mobile
These services also work with mobile devices. This is one of the slickest features I’ve seen demoed because when a user wants to install a shareable mobile application, they’ll get an SMS with a link to the application. When they click it, our distribution service detects which device they’re on and will push out the correct version of the application. Currently we support Symbian S60 phones, Windows Mobile, and the iPhone. That doesn’t mean you can use Flash on the iPhone, but you can create an iPhone version that can be pushed out with our distribution network.

The Rest of the Services Story
There are three parts to the Flash Platform Services initiative; Distribution, Collaboration, and Social. Distribution is what we announced today, Social will make it easy to integrate social networks like Facebook and MySpace, and Collaboration has been in beta for a while, you know it as Flash Collaboration Service. All of these will have a pay-per-use model and will provide added functionality or easy integration for developers. The Flash Platform is the most cutting edge technology on the web. The full range of things it lets developers and designers do just doesn’t exist on any other platform. As a result, we’re able to do some very interesting things when it comes to collaboration, tracking, distribution, or integration. The goal of these services is to make it much easier for any Flash Platform developer to accomplish those things. Lowering the barrier to entry for things that make Flash so powerful is going to be beneficial for a lot of developers.

Reasons to Go on RIAdventure


Ryan takes Doug McCune down at Sumo

This has been an interesting year for the Adobe developer community. We’ve seen public betas of the next generation of Flash Builder, Flash Catalyst, and watched the birth of a large open source project at Adobe in the form of the Flex SDK. We’ve also seen the beginning of developer services like Adobe Flash Collaboration Service and a public beta of ColdFusion that includes lots of Flex/AIR integration goodness, and we heard a lot of talk about mobile devices and Flash. And that’s one of the reasons I’m so excited about RIAdventure. Getting a bunch of smart, passionate, RIA minds in the room is a great way to set the stage for next year.

One of the things that’s nice about RIAdventure is that it comes after MAX so we’ll not only have a whole bunch of new stuff to talk about, but we’ll also be able to reflect on the entire year while discussing what’s coming up in the future.

My primary complaint of the Flash/Flex community is that there isn’t enough higher level thinking. With two powerhouses like Microsoft and Adobe in the space and a number of smaller, more nimble, and passionate startups, there’s a lot of different ideas about what RIAs are or should be. Throw in the open web initiatives with HTML5, and CSS3 and it really hasn’t been a better time to be building applications on the web. What does that mean for the Adobe developer community? What do you like about what we’re doing, what do you hate about it? The focus this year has been on mobile devices, and that’s extremely important. But it also means that the next phase of what I’ll call “core innovation” is coming up. What does ActionScript 4 look like? What direction do our tools move in? How should we evolve the Flex Framework? These are both geeky, nitty gritty questions as well as larger philosophical questions.

To me, there is no better group than the one we have and no better place to disconnect and think about larger issues concerning Flash Platform developers. We’re not going to have all of the answers, but I think RIAdventure is going to be an ideal venue in which to make your voice heard, hear what others want to see, and make your own opinions known. Oh, and have a crap-ton of fun while you’re at it.

Flash Player 10 Penetration at 86.7%

flash_platform_blog

In case you missed it, the brand new Flash Platform Blog announced some new penetration numbers for Flash Player 10.

For our inaugural Flash Platform blog posting I want to begin with some important news. The Flash Player penetration statistics have just recently been updated and Flash Player 10 is now installed on 86.7% of Internet-connected desktop computers in mature markets, which is the fastest the Web has ever adopted new innovation.

It’s great to see the adoption speed and know that so many people can take advantage of Flash Player 10′s features. For those who want other datapoints you can see that MochiAds Zeitgeist is showing a similar percentage and RIAStats has penetration trending upwards but lagging about 10% behind our (and MochiAds’) studies.

It’s also a great inaugural post for the Flash Platform blog! The marketing team at Adobe has put a ton of work into this and I’m really happy with the content. I highly suggest you subscribe as this will be the place where you’ll see a lot of breaking news and general Flash Player momentum content. They’ve got a number of different authors so the entire range of the Flash Platform is covered. Plus the feed includes content from many of the evangelists.

HTC Hero is the First Android Phone with Flash Support

htc_hero_flash_platform

The Flash Platform is coming to Android. Today HTC is shipping their Android-based HTC Hero smartphone and it’s the first Android device with Flash on it. There was a lot of news this week about Adobe delivering the full Flash Player 10 experience in the browser and this is an important step towards this. We’ve set up a section on the Adobe Developer center with HTC Hero information and Adrian Ludwig has a good video that shows off what you’ll be able to do with the device there. Adobe’s mobile evangelist Mark Doherty also has a lot more info. One of the cool things for Flash developers is that this is the first device with multi-touch support for Flash content.

I think the main thing this shows is that Adobe is committed to mobile devices and ensuring that every phone, not just smartphones, has some kind of Flash support. Ultimately it’s about bringing the best Flash experience that the phone can handle. Once we get the runtimes out for Flash Player 10 and AIR then we’ll be able to bring a much more full fidelity experience to higher end devices. But we’ll also continue to support the less powerful devices as well with as many features of the Flash Platform as possible.

In addition to the support for the Flash Platform on the Hero, HTC also announced they’re joining the Open Screen Project (OSP). As I’ve been talking to customers about the OSP I’ve discovered a lot of interesting tidbits about the project. One of them is how we’re working with members to port Flash Player to their devices/chipsets/operating systems. In this case, with Android and the HTC Hero, we gave HTC an ActiveX and Linux reference implementation of the Flash plug-in. HTC then used those to implementations to port the Flash Player to the Android web browser on the device. Adobe, HTC, and Android engineers then worked together to optimize it.

That’s happening with a lot of our partners and all of the work we do helps feed into making Flash Player 10 available for more devices. As an example ever since ARM joined the Open Screen Project engineers from both Adobe and ARM have been working together to make optimizations to the Flash Player for ARM chipsets so any netbook, smart phone, or embedded device with an ARM chip will get an optimized Flash Platform experience. I think it’s going to be a good year for Flash Platform developers who want to get into the mobile space.

Flex Builder “Gumbo” is Being Renamed Flash Builder

color_wheelDo you remember the wheel o’ icons that John Nack posted on his blog when the CS3 branding first came out? I wasn’t a big fan when I first saw them but they’ve grown on me a lot since then. But right in the middle were a bunch of grey/black icons and right behind the black Fx that we all know and love was an Fb icon for Flex Builder. For some reason that never got used and to this day I don’t know why. So my first reaction to the changing of the name from Flex Builder to Flash Builder is that it’s about damn time.

I came up as a Flex developer. I’m still a Flex developer. If you’ve ever seen me try and demo Flash CS4 you know how much of a trainwreck I am when I’m outside of my precious eclipse-based IDE. In the early days there was a pretty solid line between people doing Flex and people doing Flash. But as Flex Builder evolved, a lot of people started using it for AS3 only projects. The “traditional Flash developer” would move between Flex Builder and Flash CS4 a bit or had started to use Flex Builder as their primary development environment even if they weren’t using the Flex Framework at all. As the Flash Platform has grown up, the types of people using the tool has increased. And that’s what a good tool should do; it should be basic and powerful enough to meet a variety of needs.

Flash builder Logo

So with the name change, we’re acknowledging that the tools for creating Flash content are independent of frameworks or other parts of the Flash Platform. And I don’t see how that’s a bad thing.

Some of the push-back I’ve seen has been from Flex developers who enjoyed a clean break from the perceived baggage of the Flash brand. For you guys, not much is changing. Knowing the Flex Framework inside and out is still going to be a much-demanded skill. You’ll still be able to call yourself a Flex developer, you can still say you know how to build Flex applications and you can still pitch clients on Flex instead of Flash. No one is going to ask you what tool you’re using. The Flex brand still lives. The bigger concern, and one I think is more valid, is one like Constantiner posted:

Ok. What we have now? We have Flash IDE and Flash Builder IDE (looking forward for questions from customers and colleges about what is difference and why Flash Builder IDE has advanced code editor but can’t compile fla-files and Flash IDE can compile them but useless for serious coding?). And we have Flash Catalyst which can use projects imported from Flash Builder IDE but can’t share the same project and can’t edit fla-files. And have one ugly child aka Flex SDK which is what? How to explain colleges and customers why Flash Builder IDE hasn’t timeline and can’t build flas but can use something which called Flex SDK (why Flex? why Flash?). And in other hand Flex SDK can be used to develop only in Flash Builder IDE and Flash Catalyst but not in Flash IDE. And what about beginners? Why Adobe going to drive them mad?

I can tell you after watching this whole experience that at a big company doing something as simple as a name change takes a LOOOOOONNNG time. Let alone trying to take two mature products like Flex Builder and Flash CS4 and get them to work better together. So Constantin is absolutely right when he says that there are still a lot of things that need to happen. But now that the naming is set we’ll keep working on bringing the tools closer together so that you can interchange between all of them as well as the design tools on the Creative Suite side.

I’m less concerned about people figuring out which tool to use. As I see it, here’s the landscape for Adobe’s Flash Platform tools:

flash_platform_des_dev

The developers to the platform will use Flash Builder, the designers can use Flash Catalyst, and those of you who are creative developer rockstars will continue to use Flash Professional to create some great content.

Hopefully this clarifies the name change a bit. We’re going to be doing a huge user group tour to talk about Flex 4, Flash Builder, Flash Catalyst, and ColdFusion 9 in June, so if you want to find out more, check with your local user group. The long and short of the announcement is that all of your tools and technologies are staying the same, we’re just working on making them play better together.

Merapi on the Tesla – Yeah, that Tesla

This is really cool. Tesla is using Merapi and Adobe AIR for their cool, new user interface. If you check out the TechCrunch article you’ll see the new car comes with a 17 inch touch screen and it has 3G or wireless access. It ties into services like Google Maps and Pandora which means it’s a perfect candidate for AIR since you can get both Flash and HTML.

Merapi is what glues it all together. Using Merapi they were able to expose all of the hardware of the car to the UI layer. Congrats to Adam, Dave, and the rest of the Roundarch team. This is a really cool project and I’m glad Merapi has such a high profile deployment.

Demo of Real Time Facebook Collaboration with the Flash Platform

Today we announced that we’re going to be working with Facebook to help Flash Platform developers continue to create great applications on the world’s best social platform. You can find a lot of good developer information on our new Facebook Developer Center. Since we’re dealing with social content, I figured it would be fun to combine Adobe Flash Collaboration Services and Facebook for a real time social collaboration experiment. Using the excellent getting started tutorial and AFCS, I created a simple app. When you load it, you’re a guest and you can see people using the whiteboard, chatting, and sharing files. If you want to collaborate with everyone else, you need to log into Facebook. The application pulls your name and geographic information from Facebook and lets you publish content. The application is here and you can grab the source files here. You’ll need to make sure pop-ups are enabled to connect to Facebook.

As I said, the application is pretty basic. I’m using default pods from AFCS and the basic Facebook authentication. The only thing remotely unique is that I’m pulling in the user data from Facebook and using the AFCS APIs to change the APIs:

public function onConnect(event:FacebookEvent):void
{
var call:FacebookCall = facebook.post(new GetInfo([facebook.uid],[GetInfoFieldValues.ALL_VALUES]));
call.addEventListener(FacebookEvent.COMPLETE,onComplete);
}
 
public function onComplete(event:FacebookEvent):void
{
fbUser = (event.data as GetInfoData).userCollection.getItemAt(0) as FacebookUser;
cSession.userManager.setUserRole(userId,UserRoles.PUBLISHER);
cSession.userManager.setUserDisplayName(userId,fbUser.first_name + " " + fbUser.last_name + " (" + fbUser.current_location.city + ", " + fbUser.current_location.state + ", " + fbUser.current_location.country + ")");
}

The first function gets called when we connect; we use the new AS3 Facebook library to get information about the user. Then after that is complete, we set the user data to a FacebookUser object and use the AFCS APIs to change the user name and the room “role” so that the user can publish content to the room.

I kind of threw this together at the last minute, so expect bugs. I apologize in advance if (when) you run into them.