63
CS3: 9
6. Lessons Learnt
HTML5 is a rapidly evolving set of standards. This project has sought to push the boundaries of
those standards, for example, the original Maavis project embedded Skype video-calling
features, something that cannot be done using pure HTML5. Fortunately the need for video
conference features is not critical to the success of the early phases of the project and work by
Google and Mozilla on the WebRTC standard looks like it will address this. However, it would
have been a good idea to spend additional time understanding where these limitations lie, so
that they could be planned for and circumvented in a controlled manner during development.
It is possible to bypass such limitations by using another standard, W3C Widgets, which allows
additional features to be specified as required or optional for operation. At first this may seem
like a good solution, however, this re-introduces the problem of a client needing installation
expertise because each non-standard feature will require configuration. Therefore this approach
limits the environment in which these widgets can be used. The HTML5 version of Maavis will
continue to operate using only the widgets that are fully supported by the platform. Therefore
one needs to be careful during the design of widgets to minimise the use of additional features
wherever possible.
Many of these difficulties could have been avoided by seeking to implement on a single platform
with the stated goal of supporting all of the standards in use. This is an important lesson we
learned in the original “browser wars”. That is, by designing for the platform that most closely
tracks the standards we care about, we are reducing the demands on our immediate
development effort whilst ensuring that we maximise the chances of our code being usable in
future versions of competing browsers.
In this prototype, events handled on the buttons in one widget directly manipulate the DOM in
others. This is fine in a prototype, but real widgets will not be able to do this due to potentially
different origins. In addition, this tightly coupled design is not flexible, and some form of API or
message exchange will be required in the final widgets. This could be done client-side, and
most usefully would require new standards. There is some early development in this area, in
particular that of looking at WebActions and WebIntents, which allow handlers to be registered
to be invoked on specific user actions. Alternatively, interactions could be managed via a
server-based service that widgets share. For example, Wookie provides a number of useful
services such as OpenSocial and Wave. For HTML Maavis work on this will go hand in hand
with the selection of a suitable widget decomposition to produce a suitably course-grained
structure with widgets that are useful in their own right, but which can interact with others.
Access of local files (file://) in the browser rather than via a Web server (http://) can lead to
issues due to differing behaviour. File access was initially used to ease development (i.e., no
need to upload files to a server). File access also allows stand-alone operation without Internet
access, something required in several scenarios of Maavis. In this case, we encountered a bug
in Mozilla Firefox, the browser being used for development. The specific bug
63
has now been
fixed. A simple solution in cases like this is to use a local Web server like XAMPP
64
, both during
development and deployment with only local access. Another problem we found is case-
sensitivity of elements on differing file systems. Access using XAMPP or file:// on Windows
ignores the case of folders and files, whereas access through an Apache Web server running
on a Linux server does not. Therefore we found when files are accessed on a Web server, they
may not be found due to case mismatch.
7. Conclusions
It is clear that HTML5 has reached a state of maturity that provides an environment where much
of the Maavis key functionality can be implemented as an HTML app. Further, the growing
availability of standards-conformant browsers on many platforms means the HTML5 Maavis can
be deployed on many devices, and so provides flexibility and reach to more users.
The closeness of XUL to HTML meant that much of existing functionality was reproducible in
HTML, at least in theory. Exceptions have already been noted. While HTML running in the
63
Bugzilla@Mozilla
–
Bug 507361 - localStorage doesn't work in file:/// documents
https://bugzilla.mozilla.org/show_bug.cgi?id=507361
64
XAMPP, http://sourceforge.net/projects/xampp/