I’ve never been a Flex evangelist. I get passionate about AIR, and ActionScript3 – but I tolerate Flex. This is because, despite the evangelist’s view, that Flex is an all-singing, all-dancing, panacea to absolutely everything – I don’t believe that Flex was ever designed to build powerful AIR desktop applications.

I realise that this is a minority view, and likely to alienate me. Most developers love Flex with a religious fervour that’s a little scary.

Over the years, I’ve seen a lot of beautifully crafted applications and games written using Flash. In 2001, I started experimenting with Flash 5 and then Flash MX to build sophisticated applications. I wasn’t the only developer to subvert Flash to this purpose.

Flex doesn’t leverage the tremendous wealth of wonderful applications that have been created using Flash. Hence I think it was a little odd that AIR was paired with Flex, and not Flash, and this resource wasn’t tapped into when AIR was first launched.

When Flex was first released, it wasn’t even appropriate to what developers like myself were doing. It was an expensive server technology, and Flex Builder was Windows PC only – so I didn’t pay much attention.

The first Mac port of Flex Builder was truly awful! (Admittedly, it was a public beta, not proper release). Still, it seemed more apt for PC users. Uninspiring, grey forms to build the kinds of boring things that Microsoft Visual Studio did.

As for scroll-bars, tabs, forms, and interface elements – Flex was too little too late. Developers like myself had already made their own efficient application frameworks and reusable classes – Flex didn’t give us much we didn’t already have.

So while other developers jumped on the Flex bandwagon – and evangelised – I never did.

My biggest problem with Flex evangelism concerns the “Flex+AIR” association. It is assumed that the two are inextricably linked. They’re not. When, AIR first went public and the Flex mob preached that the ONLY way to make AIR applications was to use Flex – THEY WERE LYING!

e2spreadsheet was one of the earliest AIR applications. And it was developed completely without Flex. All my applications avoid being slowed down and bloated by the Flex framework.

Ok, there have been some cool AIR applications developed in Flex. But I think that the developers of these applications are subverting Flex, in the same way that the pioneers subverted Flash, before Flex came along.

Ok, what do I mean by “subversion”?

I mean that neither Flash, nor Flex are really appropriate to what I want to achieve. But the best tool for the job doesn’t exist – so I “subvert” what I have. Flex wasn’t designed specifically to make AIR applications. For a start, Flex just doesn’t include useful libraries we need to build cool desktop applications. Spell-checkers, standard palettes / advanced colour pickers, predefined cool icons, conversions from common desktop file formats…

Not only are Flex and AIR designed for different types of application, the Flex developer mindset is different from the AIR developer mindset. Suppose you need a spell-checker? A Flex guy would say:- “Use an internet service”. An AIR developer would say “What about occasional connectivity?” The Flex developer probably doesn’t even know what this is or why it’s important – this is because the Flex mindset is focussed on the always-connected browser world – not the desktop.

I’m specifically interested in AIR applications as products. Not the service industry of rapidly creating internet/intranet business services. This is another reason why Flex isn’t really appropriate to my world.

Despite the religious devotion amongst its users, Flex was not divinely created. It was made by Macromedia, and it’s EVOLVING! Perhaps Flex 4 or a future version will have evolved to the state that I get as passionate about it as I do other Adobe technologies. But I would rather be discontented than evangelistic. Evangelists preach blind dogma. Whereas discontentment may arise from a vision of what could be.

This is a class that didn’t quite make the cut into something I’m working on – so I’ve put it on my blog. I’m sure someone else will enjoy it. It’s a graphical writing class that utilises the graphics api to draw simple letter shapes like this…

For example, to produce the above result, call it with the following parameters…

As the distinction between AIR applications and conventional desktop applications becomes narrower, so too does the possibility that an unsuspecting RIA developer is going to get sued. The desktop application arena is an already hostile battle-scarred legal quagmire, dominated by the big players who mostly tolerate each other now, but won’t necessarily tolerate any newcomers on their territory.

I’m not so concerned about all-encompassing patents such as Eolas or Balthsar. Broad claims are so easily compromised by prior art. I’m more concerned about very specific ways of doing things in desktop applications.

There have already been a couple of minor Central/AIR copyright incidents.

I remember the first try-buy application for Central was a nifty bitmap icon designer, created by Ted Patrick. It accessed an online library of icons. Allegedly, Macromedia owned the copyright of some of these icons, and this resulted in their removal from the library.

Another example allegedly involved the use of the word “air” in the names/domain-names of online Adobe Air community resources and websites owned by Air enthusiasts. Adobe’s legal team got involved, resulting in names being changed, omitting the reference to “air” – allegedly.

(For those who’ve never watched any satirical BBC TV, throwing the word “allegedly” into your statements may offer some protection against legal repercussions.)

Interesting that both these cases involved well-meaning evangelists, doing something that was arguably beneficial to both parties. Perhaps that’s why these cases were resolved so amicably. (You can be an evangelist – just don’t cross the line). But these are very minor examples. I’m sure it can get much worse. Who will be the first unsuspecting AIR developer to inadvertently trespass a hostile intellectual property minefield? I’m thinking more about patents that cover some aspect of interface design, or application features.

The reason is brought this subject up, is that I’m currently adding some very advanced features to my vector editing application (e2vector), including a History Palette. Then alarm bells started ringing in my head. Did the History Palette once spark a skirmish between Adobe and Macromedia?, in the long-running patent wars before they merged? Perhaps I was mistaken – I did some Google searches and found Adobe’s patent. But no mention of a dispute. “Tabbed Palettes”, on the other hand, were aggressively defended by Adobe.

Actually, tabbed palettes are something I have implemented in the past. Possibly other developers have too. I turned up quite a few patents in my search, for some very common ways in which desktop applications do things. I wonder to what extent my AIR applications have already infringed patents?

My point is this… we’re small-time developers. We don’t have the inclination, money, or resources to do extensive patent searches. We certainly can’t afford to employ legal teams to cover our backs. We don’t have time or resources to waste, getting embroiled in sticky patent issues. Those of us who are are interested in the future potential of AIR – probably haven’t had any return from their investment yet. Some of us aren’t even interested in money, but motivated more by higher ideals and our enthusiasm for the technology. The more we’re focussed on the technical challenges – the less likely we are to think of the possibility of getting sued.

Adobe AIR has opened up some exciting possibilities for the desktop. But it’s a big, bad, litigious world out there. Do we need to be more wary about it?

I’m looking for a new job. I applied to a couple of interesting positions today. I’ve decided that I wish to pursue my career in one of two directions.

University Lecturing. Courses on RIAs, Flex, AIR and other web development technologies. My last contract was a lecturing position teaching Software Engineering with an emphasis on web development. Also C++ and OOP.

or I could return to industry in a technical leadership role which ignites my geeky enthusiasm and makes good use of my talents and creativity. My particular interest is AIR applications.

There is a demand for RIA jobs now. The RIA community have put together some great resources for the job seeker including:-