Wednesday, May 07, 2008

Flash on the Brain

I hate it when that happens. A shiny object flies by and I can't sleep until I catch it. So I was up until 3 a.m. last night trying to figure out what Adobe Air/Flex/Flash/ActionScript was all about. It's actually pretty interesting stuff technically. But as a number of people commented when I brought it up a couple of days ago, you do get the sense of vendor lock in, at least for now. But the specs are all open now, so open source implementations of this stuff at least have a fighting chance.

So why do I care about Flash (other than my insatiable need to learn as much as I can about the software industry)? Well, it fits in with my interest in mobile devices, especially those based on embedded Linux. As these devices get more powerful and have bigger screens, the line between laptop and mobile device is going to blur. And I think the expectations of users on the UI for these devices is going to grow as well. Everyone oos and ahs over the iPhone UI. It's setting the bar.

But looking at a traditional embedded Linux box with a UI, does it make sense to run X Windows on it? X is horrible and antiquated. And it's very hard to build flashy (sorry about the pun) UIs with it. It certainly wasn't intended for resource constrained devices. Mind you the old X Terminals were pretty much embedded devices, but then where are they now...

So what are the alternatives? DirectFB looks very promising and is growing in popularity in the embedded world. It gives you an nice API over the graphics hardware and input devices that let you build your UI as low level as you need. But it does require you to build a UI from scratch.

So this is the architecture that piqued my interest: Adobe AIR (which include Flash and the WebKit browser) running on DirectFB. Which then opens up other interesting architectures. Like mobile devices turning into web appliances that let you work connected or disconnected (is there a Flash office suite app?). And with Flash's animation, video, and audio capabilities, you could build a pretty lively UI. And, from what I hear, there are a lot of graphic artists who have learned Flash who could give us a hand.

Now, I have no links to Adobe and this only crossed my mind as they "opened" up the technology with the Open Screen project. But if this move helps them build momentum in the mobile space, it opens up a lot of opportunities for mobile software developers, and graphic artists for that matter...

2 comments:

  1. I'm doing embeddded development and we have had much the same discussions. We actually threw X out and built a new graphics stack from the ground up (to be able to make use of our hardware as much as possible).

    In retrospective I'm not entirely convinced that throwing out X was such a good choice, it actually has some aspects that makes it quite a good candidate for embedded devices, for instance being designed to use very low bandwidth between server and clients (a legacy from the network environment it was born in).

    The one thing that is difficult to do that X does very nicely is to provide a good environment for multiple applications. So if you are just planning to run one big super application on your device then you might certainly be better off without it, otherwise I would suggest sticking with it.

    While a stock X server certainly might be a bit of a bloat it's actually possible to get a kdrive version of around 1MB which isn't that bad really.

    For performance, you can implement RENDER, DAMAGE and EXA extensions, or if you have hardware OpenGL capabilities you can of course use that and you'll never have a graphics performance problem again (ouch, that will come back and bite me).

    Open Screen seems promising, Flash was always to expensive to license for us, but they have said that they will address that, so maybe, maybe.

    ReplyDelete
  2. Great point ea. The multi-app thing is very difficult to do on your own. My guess is that with the size of the screens on mobile devices this won't be an issue. But it could.

    I envision the Flash thing being a server anyway, just the way it is built. And given it's event driven nature there are probably ways to implement multi-app. But someone would have to implement a framework for that, and hopefully that happens in the open too.

    ReplyDelete