Adobe: Same code on five screens
androidcentral.com
androidcentral.com
A neat tech demo, but in reality hardly anything developed in this manner is going to be able to compete with anything native on the platform, and the resulting time saved will be revenue wasted.
But because it's using flash...
I find this attitude kind of sad, this guy is demonstrating something that is the holy grail of cross platform development.
When I bought my HTC Sense based phone, Flash was forced on me. I'd be generous to say I can play half the flash based videos I meet on the web. When I do manage to play something my phone heats up to a few degrees cooler than the sun and my battery drains at a rate of knots.
My desktop is a 64-bit, quad-core monster running Linux. Can I play full screen Flash videos? No. Throw a HD video at mplayer and it's runs as smoothly as silk and creates hardly a bump on my processor graph.
Holy grail of cross platform development? You must be kidding.
I also can't play blue ray rips on my phone. Does that mean video isn't cross platform?
Thank you for exactly demonstrating my point above.
I really don't understand why everytime somebody brings up flash the response is "well video in flash sucks!"
So what?
Asking why people always bring up Flash video in these debates is like a robber asking why the breaking and entering has to be mentioned in his court case.
I think my counter question is then "doesn't perform compared to what?"
Compared to a natively compiled piece of software written in C or ASM? Yeah, it doesn't perform well at all.
Compared to Java? I'd say modern Java runtimes are faster in general.
Compared to Javascript? I'd like to see some benchmarks with modern runtimes like v8, but I'd wager that Flash (Actionscript) performs better.
Here's a rather old comparison benchmark. http://oddhammer.com/actionscriptperformance/set4/
According to this, ActionScript 3 and Flash Player 9 were approaching Java Applet speed in many of the tests.
Here's a newer one http://jacksondunstan.com/articles/232
In this test, Safari, FF 3.5.2 and AS3 all have about the same runtime. Every other browser tested run 2-9x slower.
And another followup http://jacksondunstan.com/articles/534 The results are about the same.
Here's a very recent one (March 2010) with similar results. http://www.themaninblue.com/writing/perspective/2010/03/22/
Flash performs about as well as the very best Javascript implementations out there, and far far better than most implementations of Javascript that live in the browsers that are actually being used in the world.
I understand your point, Adobe has provided some rather abysmal ports of Flash to platforms other than Windows. But on the platforms it has been ported to (no matter how flawed) it runs about as well as the best available implementation of Javascript on that platform.
As for video, Adobe, for some reason isn't offloading video decoding to your GPU. That could be problem of your platform, or a problem of Adobe. But just the same Javascript isn't rendering the video on your Linux box when you watch a video...you certainly wouldn't want that. Talk about bad performance!
But we aren't talking about video when we talk about HTML5 and Flash. Video is a separate and distinct problem. Flash didn't even support video until quite late in it's life cycle, it's an "oh yeah let's toss this in too" feature. We're talking about making interactive applications in those respective environments. And we're talking about those applications being cross platforms, running on multiple systems, on multiple platforms, in multiple form factors.
And for that, right now flash is the better platform, it performs about as well in raw computation as the very best Javascript engines, has a better development environment, is currently more cross platform than a similarly complex Javascript HTML 5 app, and is generally a more mature technology.
I can't even get a complex HTML 5 app to run the same on 3 different browsers on the same machine! Imagine targeting every major browser that run under Windows, OSX, Linux, iPhones, the iPad and Android devices with HTML5 technologies! It's simply not there yet.
Remember though what happened when Apple told developers that they could only use web app for the iPhone? There was an uproar because developers---good developers at least---want to be able to make use of all the features that make a platform unique.
That's why we live Cocoa + HTML5, or Android SDK + HTML5, etc... If you want a common cross platform target use HTML5, if you want to make an app that feels like a good citizen on the platform and makes use of the latest innovations in said platform, you use the native SDK.
It's all about the right tool for the right job.
And Flash is inefficient, controlled by one company while at the same time not being a good native framework. Basically you got the worst of native SDK and the worst of HTML5 and put them together... and you expect people to be impressed by that???
I think you mean, "HTML is open and will be a standard." For now it's not much of a standard, is poorly implemented on the target platforms, and most certainly does not behave exactly the same across platforms.
The entire point is that it's not the holy grail of cross platform development because in a real world application you would never be able to truly build-once and and deploy everywhere. Hell, if you've ever tried to deploy a Flash app across Windows/OS X/Linux you'll come across slight differences between those platforms (Windows is generally the best supported/least buggy, with OS X and Linux being second and third class citizens, respectively.)
I would rather have seen a demo where they took the same application logic (which admittedly for Reversi is very limited), and hooked it up to different versions of the user interface, demonstrating how much code you could reuse in a cross-platform manner while presenting native interfaces designed for each type of device.
Adobe could have tried to pull a more subtle way than: "Welcome to lazy town!". So much for all those thinking the UI is important, and that maintaining the look-and-feel of the OS should be very important. :(
I find Adobe's strategy a bit naive (or more accurately only looking at the short-term). If you become the paladin of the lazy developers, you will get plenty of money at first, but you'll get plenty of bad reputation, and that can be really hard to get rid off (just as Microsoft).
I don't think maintaining the look-and-feel of the OS is very important. In fact I would go so far as to say that attempting to shoe horn novel interface requirements into local OS look-and-feel requirements is a detriment to interfaces.
A bad interface is a bad interface no matter what. Same goes for a good interface.
But I think that if you look around at most of the most successful pieces of software across all platforms (by pure volume), very few of them look anything like the prevailing look-and-feel guidelines for their host platform -- I'm talking about Office, Photoshop, Firefox, Chrome, iTunes, GarageBand, iLife...
iWork at least looks like a piece of software that conforms to the look-and-feel rules.
But then we get something like Aperture 3 which could be something running on just about any platform.
Most of the top iPhone apps could be running on anything with a big touch screen (and some of them are almost pixel identical across platforms): Pandora, Remote, Yelp, New York Times, Jott, Netflix, Shazam, etc.
People care about app consistency across platforms not local consistency with the OS.
Web apps blow the idea of local OS consistency out of the water. I won't even list million user web apps because we all know what those look like, and they pretty much look the same no matter the platform. Sites that try to "look like" some OS, end up looking rather silly to be perfectly honest.
No, maintaining the look-and-feel of the OS is not anywhere near the top of pretty much anybody's priority list these days.
But imagine a user that faces an interface that looks familiar but it's all different. Maybe the most external button in the title bar expand it. Or something that looks like a button has to be double clicked instead of clicked once. The point of having a consistent UI for the whole OS is that the user doesn't need to relearn a new interface for each product.
That said there are cases where the current UI is not good enough, maybe because the developer has a new, never done before idea. Then it's ok. Apple does it, for example, as do other mac developers.
The other exception is when it's a very specialised piece of software that is not for the masses but for a very specialised niche. I consider CAD applications, Photoshop and Aperture are like that. It's not _as_ useful to use the same look because they are software that has to be learnt anyway.
However... Firefox and Chrome do try as hard as possible to conform to the UI interface so I don't follow your examples there. And iTunes is loath by everyone as a awful piece of UI, so I wouldn't use it as an example either.
Similarly many people (at least on the Mac) hate the completely alien look Photoshop has, or Office. Microsoft did put a lot of effort with OS X to follow OS X conventions, and despite Photoshop not being a mass market product, Adobe has preferred to have a uniform cross-platform interface, and there's a lot of complaints for that.
So yes, if you have a novel interface requirement then you are more than welcome to break the OS standards. But otherwise if there's no need (from a user perspective) I don't think it's a good idea.
I actually agree with this whole heartedly. I think we're on the same wavelength here. Just like all good literature violates supposed rules of good form for the language.
But I think that following OS conventions is the wrong set of rules to learn and target. There are already good interface guidelines. It just so happens that some OSs (OSX) do a particularly good job at following those guidelines.
It reminds me of this http://catb.org/esr/writings/cups-horror.html
The meta-problem here is that the configuration wizard does all the approved rituals (GUI with standardized clicky buttons, help popping up in a browser, etc. etc.) but doesn't have the central attribute these are supposed to achieve: discoverability. That is, the quality that every point in the interface has prompts and actions attached to it from which you can learn what to do next. Does your project have this quality?
A good interface can look like anything so long as it follows good GUI conventions. And fortunately most OSs follow pretty good GUI conventions so targeting the conventions of that platform are in a way following good GUI conventions transitively. I just wouldn't limit myself as to say that the measure of important should be following OS conventions when it should really be following interface conventions. The CUPS story I linked to brings that problem directly to the forefront. They're already doing the appropriate interface rituals with respect to their OS. The problem is that they are not doing the appropriate rituals with respect to good interface design.
(I also agree that some tools, like Photoshop, have absymal user interfaces. But I think it's because they don't follow good interface conventions in general, not because it doesn't look like an OSX app or a Windows app http://mrgan.tumblr.com/post/235455865/the-many-sliders-of-p...).
1) In the real world, you're essentially never going to have a desktop app with the same artwork/assets as a mobile app. You're going to have a high res version for the desktop (designed with mouse and keyboard controls in mind) and a lower res version for mobile (designed with touch screen controls in mind).
2) Reversi is an incredibly oversimplified example.
Still, a neat tech demo.
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV...
Larger touchscreen friendly buttons, smaller fonts, more tabular displays of data, etc.
Near the end of the video he says "There's no other technology available that lets you do this.". I'm not sure how accurate that is. I see no reason why this game couldn't have been made in html/javascript to run on all of those platforms from one codebase.
Could you do it with Mono too?
edit: s/interfaces/operating systems. I don't know why I said the former...
Update: its already done (works for me on Chrome, ipad and iphone at least). http://davidbau.com/reversi/
This is why you fail.