Software is increasingly a medium for artists. That to me raises really deep questions about platforms, and whether you’ll have freedom with the platforms you use. A gig’s a gig, and there’s nothing wrong with using these tools to accomplish jobs. But on the other hand, for the same practical (not even philosophical) reasons, the ability to modify the platform when you push past its capabilities is essential.

The ability to take your creations and run them on a variety of mobile devices – and how much freedom you have with the tools on which they’re built — is a key issue in 2009, as mobile platforms coalesce.

As I see people making amazing artwork with code, and then we have this question of which of our semi-disposable devices will actually be able to run stuff, I think this is as much an artistic question as a technological question. So it’s worth evaluating how three big players are doing at the moment. And this isn’t just to advocate open source for the sake of it: a big question is whether you’ll be able to write code and get it on mobile screens around the world.

Adobe’s Progress: Patchy, But Productive

Adobe has grabbed some headlines – and some skepticism – over their Open Screen Project. As Google did early on with Android, there’s a bounty for developers ($10 million). But it’s the “open” bit that has had some folks scratching their heads. After all, Adobe is one of the world’s biggest vendors of proprietary, boxed software. That’s not a criticism, necessarily, but it may make you wonder what these “open screens” are about.

Via the FAQ, here’s the answer – and a decent overview of where Adobe is so far:

  • Published, unrestricted SWF file format – no SWF license required (that has indeed enabled some open-source SWF/Flash tools)
  • Royalty-free Flash Player and Adobe AIR in the next release
  • Published device porting layer APIs
  • Open-sourcing Flex framework, the Flash Ajax Video Component, BlazeDS, and XMP
  • The ActionScript Virtual Machine for Mozilla Tamarin project, and contributions to Tamarin performance
  • ISO standardization of PDF
  • Card-carrying membership in the Linux Foundation, the Eclipse Foundation, and the SQLite Consortium – which makes good business sense, by the way, since Adobe benefits from those projects

That’s a pretty admirable record. The only problem – and it’s a big one — you don’t see Flash Player and AIR. They may be license-free, but they’re simply not open-source. It’s these players that really make the experience of playing content work. So Adobe means only that they want to open components of this, and make their proprietary players work better on mobile devices. That’s a worthy goal, but it means you’re fundamentally constrained in terms of what Flash and AIR can do.

So, in other words, Adobe actually turns out to be surprisingly open, but the screens themselves? Not so much.

Silverlight: Free Fail

Then again, this does compare very favorably to Microsoft Silverlight. Fewer portions of Silverlight are open in any sense – the Dynamic Language Runtime is, under a license Microsoft made up, as is the XAML format on which Silverlight creations are based. But that doesn’t include any of the meat of what Silverlight is, and it’s a far cry from Adobe’s entirely open specs and Flex framework. Microsoft is working with Novell on an open-source implementation for Mono — good for Linux and Mono developers, but because it is providing access only to a limited group of people, doesn’t really count as open. And Silverlight’s mobile strategy is murky (Windows Mobile, Symbian for now).

The closed nature of Silverlight means it’s not getting adapted as quickly or effectively on different platforms and OSes. In other words, people may just not use it. That’d be no great loss, except that a lot of what’s going into Silverlight is actually very good. And it’s not unfair to expect more of Microsoft. Part of the success of Windows comes from the fact that its APIs are so exhaustively documented. And the fact that the company has made small steps into the open source world demonstrates that at least some of the people who work at this gigantic company do get it. I just get the sense that the old business model dies hard. It’s their loss, given that they do stand to make more money if Silverlight is more popular, via support and tooling.

JavaFX: Getting More Open

The good news is, both Microsoft and Adobe are responding to a competitive marketplace by opening things up, because it makes business sense. The bad news is, Microsoft isn’t doing it very well, and while Adobe is performing reasonably well, the crown jewels are still proprietary.

And that brings us to JavaFX. Sun earns real points here for being way ahead of Adobe and Microsoft on both compatibility and open licensing.

Compatibility: While Adobe pursues a patchwork approach to getting Flash running on different platforms, the just-released JavaFX Mobile runs just about everywhere. Any Java ME device works. Just about any mobile OS should work in theory – Google’s Android, for one, was shown last year.

Openness: Adobe is “openish,” but JavaFX is getting close to being genuinely open. The compiler is open, though, in fairness, so is the Flex framework. The key is that we’re gradually getting additional libraries and APIs. And since JavaFX runs on Java, the platform itself is open. I’m running JavaFX apps right now on Linux using Java SE. There is no “player” as with Flash, but the bottom line is, with JavaFX you can run your creation on open code; with Flash, you run on proprietary code. And that’s not just a semantic point – here on Linux, there are things that just don’t work or don’t work well because Flash is proprietary. Audio and video work better in Java, particularly on Linux, because people have the freedom to fix stuff. (Out of all the “freedoms,” freedom from borked things to me ranks pretty high.)

So, what do you think, CDMers? Any of these platforms appealing?

I hope to check in with the JavaFX folks next week. For arts use, I’d love to see JavaFX, possibly even a JavaFX-ready rendition of Processing for mobile, and OpenFrameWorks on mobile devices. If you have some questions, I’ll try to get answers.

Background:
Adobe Open Screen Project
OpenLaszlo (open rich clients, but apparently no mobile version yet)
Silverlight @ Wikipedia
JavaFX FAQs
OpenJFX Project

  • http://zehfernando.com Zeh

    I'm a Flash developer, and I'm not from Adobe. But while opening Flash player could make sense in a lot of ways, I have gathered that Adobe's reasons for not doing this are twofold:

    1. The Flash Player uses third-party, proprietary code for a lot of things – specially fast video decoding, and the "new" font rendering (Flash 9+ pseudo-hinting). Opening Flash means these libs would have to be distributed as OS, which would probably mean a complete rewrite of them.

    2. Opening a system like this opens a can of worms as it's possible several alternate players would exist, and not all achieve the same results, making end user experience more miserable. This is sort of true now (there's gnash and swfdec), but they're small and most people don't have any reason to even try them. But what if tomorrow there's Adobe Flash Player and Opera Flash Player and they have their own differences in how some specific feature is implemented, or a different bug among them? And them compete among themselves for what each believe is better? A standardization or "certification"/unit testing process would be needed, much like we have the Acid test today for CSS. Do we really need even more fragmentation in that regard?

    Just something to keep in mind. I have no real stance on this issue, just want to remember OSS is not a magic box that transforms everything into gold.

    Personally I'd love a new truly open format to emerge but that's not gonna happen.

  • http://createdigitalmusic.com Peter Kirn

    @Zeh:
    1 – absolutely — open sourcing the player is hard. It doesn't look like JavaFX will be able to open source its video codec, either. Now, that isn't entirely true that you can't distribute a closed library and keep the rest open — in fact, that's exactly what's happening with JavaFX.

    2 – simply not true. You don't just dump source code and expect magic to happen. But it's possible to have an open code base that contributes to a single project. It works with kernels and whole operating systems, for crying out loud. I think some people see fragmentation in Linux, but that has to do with the nature of Linux, which is to keep everything as a "distribution." It isn't a problem with, say, FreeBSD. In fact, ironically I'd say there's been more fragmentation with Flash being proprietary, because people have tried to construct open alternatives.

    And again, you know, I think Adobe has done a good job in a whole lot of areas with open source. The Flex framework is open, and that hasn't caused fragmentation.

    Oh, by the way, the problem with the video and font things is as much patents as it is things being proprietary. But it isn't always better — GStreamer is dramatically better at video decoding than proprietary libraries like what's in Flash, on just about any OS. And it benefits from being open.

    OSS is not a magic box — but it's Adobe using the word "open" and talking about their contributions to open source. I don't think they're just doing that for political reasons — especially not when their compiler and Flex are both built on open tools.

    There are practical reasons for wanting this, not philosophical ones.

  • http://troy-sobotka.blogspot.com Troy James Sobotka

    Air isn't open so this matter appears to be a rather grasping attempt to jump on the open wagon.

    Free Software is more than being Open, and air doesn't even fall into the Open category.

    "Royalty-free Flash Player and Adobe AIR in the next release" – that's the lowercase free. Completely useless to the masses at large. While this was painfully obvious to some of us, it took the iPhone to put it front and centre to everyone else.

    Remember that Linux is only one small niche in a massive ecosystem. Linux itself runs on a plethora of architectures – x86, ia64, amd64, arm, etc. Couple that with the other breeds of Free systems – NetBSD, OpenBSD, OpenSolaris, FreeBSD, etc. and multiply that by those architectures as well and you can quickly see why it is _fundamentally_ essential that a system be entirely Free and Open.

    There is no way a vendor can deal with that diverse ecosystem – and if history is any indicator – computing systems are becoming _more_ diverse and eclectic – not less.

    It's a no brainer for many of us that already support it. The rest will take some more time and education to finally come around…