SEE ALSO Hawking Toolbar main site:
The Hawking Toolbar for
Firefox
The Hawking Toolbar
“My
body may be stuck in this wheelchair, but with the Internet my mind can
go to the ends of the universe.”
-
Stephen Hawking,
University
of Cambridge Physicist, 1/6/97
The COMP 190 Experience:
I
hope others reading these pages will be inspired at least to consider
taking this amazing class. I came in through the back door,
in the sense my interest has been in collaborative technologies, but I
hoped I could at least dedicate one small part of my university career
to doing something for someone else.
This course gave us more than just a deeper understanding of users with
disabilities: every class was a revelation in how different people
experience the world on a mainly sensory level which in turn affects
their point of view in surprising and fascinating ways. I
hoped to give something back with the project, but in fact the
knowledge that something I worked on could have a real, positive affect
on others' lives fueled me, and I got as much out of the project as I
put in.
What's more, I found that accessibility collaboration is
(unfortunately) a largely untouched area of research, one I hope to
pursue in graduate school. It seems obvious that many
disabled individuals are unnecessarily isolated due to the barriers we
erect for those not working the same way average users do. It
seems equally obvious that computers can make those barriers moot, and
this project is a beginning: first, helping to open the world to
disable users, as Hawking says above, and second, to bring the world to
users with disabilities on a basis of equality.
On a technical level, I learned more about JavaScript than I'd
ever cared to. It was humbling to realize I was wrong to
assume it is only a toy language; in fact, it has surprising power.
Although it has it's limitations, and a frustrating number of
gotchas (it's not Java!), it also has a great regular expression engine
(essentially copying Perl's), and a great security model; more
importantly, it's the only thing that works cross-browser,
cross-platform, and with it's security model it facilitates plug-ins
that can reasonably be trusted. If not for that, it would be
much harder to convince users I don't know to use this product.
I also learned about Mozilla's XUL (XML User Interface
Language), an interesting approach to making GUI design simple ... yes,
simple. I've done quite a bit of programming in Swing, and
like almost anybody who has done so, I try hard to avoid doing more.
XUL takes care of the awkward listener/event
interface that makes so much Swing programming turn into unmaintainable
spaghetti-code. XUL makes it easy, makes it fast, makes it
pretty powerful -- and it works.
The other great challenge has been working with the DOM (Document
Object Model). The basic problems:
- HTML
grammar is ambiguous
- the
DOM is not entirely standard across all platforms
- the
logical structure of the DOM tree does not necessarily represent the
physical structure
Since
the goal is to make the physical appearance manageable for switch users
with a programmatic approach, these represent significant problems that
have not really been solved by anyone. I
continue to work on a solution -- the basic heuristic is outlined in a
paper I wrote for an ACM conference -- it is currently under review, so
I cannot post the paper here at this time.
The
main accomplishments were, in hindsight, merely based on learning about
the DOM, JavaScript, and XUL. I've never been deeply
interested in web programming, so I even had to learn a lot about HTML
and CSS. Documentation on these things is surprising poor and
inexact, even when voluminous. Most JavaScript documentation
is written for webmasters, not toolbar writers. If it hadn't
been for Gary's son's toolbar tutorial, this project would not have
gotten far. Because of this, simple things like learning how
to highlight images, simulate mouseovers and mouseouts, and learning
JavaScripts bizarre threading model took a great deal of time to
understand. Actual coding took a long time, mostly because
documentation is so vague that many different attempts were made.
In hindsight, it's not difficult stuff. If you're
interested in writing a toolbar, read my code.
SEE TOP OF PAGE FOR LINK TO MAIN SITE
Overview:
The
Hawking Toolbar is
a
plug-in for the Firefox
web
browser that frees individuals with severely limited motor abilities to
explore the internet, without limits.
Unlike expensive commercial products, it is free and
customizable.
Published under the open-source GPL license, it can be enhanced or
customized by anyone
with the appropriate technical skills. By using a Firefox
plug-in
we can deliver a
robust
product:
- extensibility:
it can be enhanced
or customized
by others
- non-obsolescence:
this standard Firefox plug-in will work with any new version of
Firefox. The user is not dependent upon developers to upgrade
the
plug-in for each new web technology or new version of the browser
- standard
view: the user
sees the same web page as others. This plug-in enhances a
popular
browser instead of requiring a specialized one!
For
too many
centuries, people with physical disabilities have been treated as
inferior by society. Considering that one of the greatest
geniuses of our time, physicist Stephen Hawking, lives with a
debilitating form of Lou Gehrig's disease and yet continues to live a
rich life and makes giant contributions to our understanding of the
universe, it is obvious that this unfair treatment hurts all of
us. Technology makes it possible for Mr. Hawking to
communicate
his ideas to us; he shows us that there is no definite correlation
between physical ability and the greatness of the human
spirit.
This toolbar is a small tribute to him and all individuals who face the
biggest challenge of all: our own prejudices.
The
challenge:
Most of us take for granted
the ability to navigate the web using
a
mouse and keyboard. But, like many physically disabled
individuals, Stephen Hawking's physical motion is limited to
controlling
a simple switch with his hand. Others may
be more limited, such
as
only
being able to raise
or
lower an eyebrow; however,
this motion can be read and converted into an electronic signal to
communicate choice. The
challenge is to free all these users by letting them choose efficiently
from among possibly hundreds of links on a web site.
The solution:
By using the Hawking Toolbar,
the standard Firefox browser
automatically cycles through the links of a web page, highlighting each
link for a short period. The user selects a link by
signalling to
the browser (with their standard switch) when the desired link is
highlighted. The plug-in also provides buttons that are
cycled
through: Back, Home, Favorites, and Options. Whether a user
can
control two switches or only one, the general solution is the same, but
the use of two switches allows enhanced control and efficiency.
When the page is complex or has many links, the page may be broken into
sections (typically the visible page will be divided into quadrants or
widget/ frame areas). The browser will then cycle through
these
regions, highlighting each before scrolling down to the next part of
the page. If the user selects a region then it is explored
more
fully by cycling through its component links or widgets. This
option of region-scanning is a user-selectable choice.
Each user may customize the appearance and behavior of the link scanner
to provide sufficient visual (and possibly audio) clues, and to provide
the reaction time appropriate for each user to select a link, according
to their specific needs. For more info, see the screenshots.
Implementation:
Mozilla
.xpi extension file, using Mozilla's XUL for user interface. CSS
to define buttons/
widgets, possibly
XBL to describe
bindings via
CSS/DOM, and JavaScript to control behavior and to interact with
DOM. Big thanks to Jonah Bishop and his Firefox toolbar tutorial.
Availability:
The
Hawking Toolbar
was released in Spring 2005 under the GPL free and open-source licence.
The toolbar is available for download from Professor Gary Bishop's
Enabling Technologies page at UNC.
A current and/or experimental version is also available at the
project website
Author:
Brett
Clippingdale,
Computer Science student at the University of
North Carolina at Chapel Hill.
Project Advisor:
Gary
Bishop, UNC
Professor of Comp Sci, Accessibily Guru, Original Thinker
(TM)
and All-Around Nice Guy.
Email contact info:
brett (at) unc-dot-edu OR
brett (at) clippingdale-dot-com
gb (at) cs-dot-unc-dot-edu
Inspiration:
Stephen Hawking
(of course!), Physicist and Lucasian professor of Mathematics,
University of Cambridge
Links:
Firefox
XUL
XUL
Planet
XUL
Tutorial
The
Joy
of XUL
XUL
Toolbar Tutorial
XBL