Why doesn’t Adobe’s AIR dev guide mention SQLite?

I’ve been trying out the Adobe AIR (formerly Apollo) SDK.  It’s a confusing business. There are two varieties of AIR apps, Flex, or HTML. The HTML kind is essentially a browser app that runs in WebKit, as wrapped by the AIR runtime, instead of in the browser, while the Flex kind compiles Adobe’s MXML into a Flash SWF which again runs within AIR. The AIR SDK only supports HTML AIR apps, so for the full experience you also need the Flex 3 beta SDK.

But I digress. I have a long-standing interest in SQLite so one of the first things I looked for was how Adobe is using this in AIR. It is there: it’s mentioned in the press release, which emphasizes that AIR has some of that open source fairy dust:

Key elements of Adobe AIR are open source, including the WebKit HTML engine, the ActionScript™ Virtual Machine (Tamarin project) and SQLite local database functionality.

However, you wouldn’t know it from the docs. The word SQLite does not appear in either the Flex or the HTML developer guides. Here’s how it introduces the “local SQL databases” section:

Adobe Integrated Runtime (AIR) includes the capability of creating and working with local SQL databases. The runtime includes a SQL database engine with support for many standard SQL features.

The SQLite library itself appears to be compiled into the main AIR runtime library, Adobe AIR.dll.

Why do I mention this? A few reasons.

First, it stinks. Let me emphasize: Adobe is entirely within its rights in not crediting SQLite in its docs. The main author of SQLite, Dr D Richard Hipp, has disclaimed copyright. So it is not illegal, but it is discourteous. By contrast, here’s how the Google Gears docs introduce the database module:

The Database module provides browser-local relational data storage to your JavaScript web application. Google Gears uses the open source SQLite database system.

Second, it’s unhelpful. As a developer familiar with SQLite, I want to see an explanation of how Adobe’s build of SQLite differs from what I am used to – what is added, what if anything is taken away. I also need to know how easily I can access the same database from both AIR and from another application, using the standard SQLite library.

Third, I’m increasingly sceptical of Adobe’s claim that it is somehow “aligning” its API in AIR with that in Gears. Here’s what Michele Turner, Adobe’s VP of developer relations, told me:

Adobe, Google, Mozilla and others will be working to align the APIs used to access local database storage for offline applications, so this functionality will be consistent for developers both in the browser and via Apollo on the desktop.

Perhaps, but there’s really no sign of this in the current beta. The AIR database API and the Gears API are totally different. The full text search extension which is part of Gears seems to be missing in AIR. Another key difference is that unlike Gears, AIR makes no attempt to isolate databases based on the origin of the application. In AIR, a SQLite database may be anywhere in the file system, and it’s equally available to any AIR application – a big hole in the AIR sandbox.

This is all beta, of course, so it can change. I hope it does. Here’s my wish list:

  • Proper credit for SQLite in the docs.
  • Use the Gears code – full text search could be very useful – and deliver on the promise of aligning the API.
  • Failing that, set out exactly how AIR’s SQLite differs from the standard build.
Technorati tags: , , ,

8 thoughts on “Why doesn’t Adobe’s AIR dev guide mention SQLite?”

  1. John

    No, the official docs you reference are the same ones (more or less) I was looking at.

    The second post you reference is interesting and confirms part of what I’m saying:

    The two implementations weren’t developed together, and at this point (from what I’ve seen) the two APIs are pretty different.

    Tim

  2. Sorry, I hadn’t seen that link in your post, and it does acknowledge SQLite, so I figured you hadn’t seen it.

    For the APIs and Google, I know it was announced earlier this month that the Adobe and Google APIs would converge, but I’d be surprised if that could be completed and documented in time for last week’s massive Flex/Player/AIR launch. (iow, we may not be at the destination yet.)

    I’ll pass this link among my partners, though, and maybe another Adobe staffer has better info than I do at this point.

    jd/adobe

  3. As John has suggested, the reason for leaving the SQLite name out of the documentation, and also (in my opinion) for the lack of parity between the AIR and Google Gears APIs, involves a somewhat fuzzy combination of:
    – development schedules
    – beta documentation deadlines
    – lack of knowledge of some (then NDA) initiatives
    – human limitations =)

    That’s the fuzzy summary version — for the fuzzy long version, see my post Why doesn’t Adobe’s AIR dev guide mention SQLite? A response to Tim Anderson.

    Paul Robertson
    ActionScript Developer/Writer
    Platform Developer Documentation
    Adobe Systems, Inc.

  4. John,

    Sorry, I hadn’t seen that link in your post, and it does acknowledge SQLite, so I figured you hadn’t seen it.

    Can’t see SQLite mentioned, nor can my browser’s page search. It’s “livedocs” though, so it could be changing.

    Tim

  5. Paul,

    for the fuzzy long version, see my post

    Thanks for this, most encouraging.

    Though I think you underestimate the number of existing SQLite developers.

    Tim

  6. I think you underestimate the number of existing SQLite developers.

    That is certainly a real possibility =)

    Admittedly, already since I wrote that post I’ve seen more evidence of AIR developers with prior SQLite experience in other platforms/contexts. Or perhaps (probably) I’m just more aware of it now?

    Paul

Comments are closed.