We want a single platform for web-based applications that can reach all major browsers, iOS, and Android devices. By "web-based," we mean that they are viewable immediately in a browser, without downloading or installing
any additional software.
What are the options?
Flash:
- Is restricted from iOS
- Requires a plugin that many Android devices do not have
HTML5:
- Generally relies on some combination of JavaScript, jQuery, CSS, and the Canvas tag
- Is viewable (to some extent) on all devices with Webkit browsers
- Will (supposedly) replace Flash (and Java, and other browser plugins)
Thus, the rationale for creating HTML5 apps. What are the challenges?
1) There is no complete WYSIWYG solution for developing HTML5 pages with animation. There are:
- Wallaby, a tool for converting Flash to HTML, jQuery, and CSS. HTML elements are visible and editable.
- The timeline seems to be placed into a CSS doucument
- jQuery animations seem to work well on Wallaby-generated HTML elements
- Exports svgs, which Android currently can't see
- Edge, a timeline-based tool for creating output in jQuery, and CSS.
- HTML is dynamically generated by Edge Javascript.
- The "timeline" appears in the Edge Javascript, with "tweens" in a text format
- Exports svgs, which Android currently can't see
- Komodo Edit (and many similar code/output editors)
- Swiffy, a Flash 6 swf to Javascript converter
- The Javascript generated is highly condensed and unreadable - thus un-editable, and not useful if modifications are needed, or communication outside the app is needed
- Very interesting that it generates an entire application with no CSS or multiple HTML elements
2) jQuery and Canvas performance are currently VERY choppy on mobile (on three iOS and Android devices tested). In fact, Flash performance on Android devices seems considerably smoother.
3) There is minimal support for touch and gesture interactions in jQuery, and likely in Javascript as well. This is disappointing, considering the attention and hype Apple in particular has given HTML5 as a Flash replacement. Touch-based drag-and-drop seems particularly challenging. jQuery mobile does include a slider element, which is also very choppy on android.
4) Annoying highlights appear when interactive elements are clicked. This happens on most browsers -- mobile as well. CSS may provide a solution.
5) Video appears to require 3 different encoding formats: mp4 (x264), webm, and ogg/theora PLUS a Flash fallback (mobile like Flowplayer).
- Certain sizes of video appear incompatible with some mobile devices.
- Is a batch multi-encode possible (Firefogg? Handbrake?)
- More on this later
What are the next steps?
1) Create an HTML5- based app that performs across Webkit browsers. Make use of:
- Dynamic text
- Real-time interactions
- Dragging and Dropping
- XML parsing
- Vector-based assets
- Images
- Physics engine (can be crude)
- Sound
2) Answer these questions:
- Is real-time game-like interaction possible on mobile browsers? (See existing HTML5 games as well)
- What are the impediments to performance?
- Is it realistic to pursue a single codebase?
- How can sound be integrated?