Wednesday, October 21, 2009

Autonomous Browsing

Firefox, Greasemonkey, and Autonomy

by David F. Bello

Autonomy, as a value of which designers must be sensitive, is set in opposition to usability and security. The latter is threatened by the user, who with greater autonomy within a system, would be afforded opportunities to undermine the system and access private data. If the user may, because of excess autonomy, gain access to private data, then privacy, one of the most important and already-considered values of technology, would also be threatened by a lack of security, thereby losing trust of the system's user base and complicating the notion of informed consent (Friedman, Kahn, and Borning 5), if the given technology previously held high confidence for their own secure processes.

The implication that autonomy threatens usability, however, is a more complicated problem. If the user is afforded "too much" control over their system, not only are security, privacy, and trust elements at risk, but also the user will be faced with far too many options and required decision-making steps in the way of completing any task. "Most users of a word processor have little interest, say, in controlling how the editor executes a search-and-replace operation or embeds formatting commands" (Friedman and Kahn 1254). The second example given here, that of a user's concern with methods of formatting in text documents, reflects the move away from word-processing complex software (such as LaTeX, which requires the use of heavy mark-up in order to perform visual operations on text data) toward more simple, "user-friendly" options such as Microsoft Word, which can apply mark-up using a strictly GUI-based approach for the end-user. This trend toward more abstract software programs is fairly common. The common user would prefer to use currently traditional operating systems, like Windows and OSX, rather than something like GNU/Linux, which requires the user to take more control over software processes. Simplicity, then, becomes a factor of usability; where the tasks being completed on a machine are intended to be done with as small a learning curve as possible. However, users are sacrificing autonomy at the same time.

This writing examines how the balance of autonomy and usability plays out in the use of the Firefox extension, Greasemonkey. How is the Firefox user granted additional autonomy by the use of the Greasemonkey extension? In what ways does the design of Greasemonkey allow for user autonomy at the level of code, while effectively allowing for the non-programming user to possess similar autonomy?


"Autonomy is centrally concerned with self-determination - making one's own decisions, even if those decisions are sometimes wrong" (Friedman and Nissenbaum 467)

At the time of writing, the Firefox homepage reflects an emphasis on user autonomy: "There are literally thousands of totally free ways to customize your Firefox to fit exactly what you like to do online" ("Firefox Browser..."). The browser is open-source, meaning that users are provided source-code to analyze and modify within the Mozilla development community. However, this raises the question of how many users actually have the technical ability to modify code to fit their specific needs? It is safe to assume that most users of the browser do not make use of the Firefox source in order to take advantage of the autonomy that they are provided. One does, however, have the potential for autonomy, which is as much as may be reasonably asked from Mozilla at this point. Users are often willing to forego the education of an entire system which would provide them with autonomy at the level of any other user/programmer/developer/etc. in exchange for ease of use that comes with not necessarily needing to possess that information.

This is where Greasemonkey comes in. Those who install the extension are not immediately provided with capabilities to alter the functionality of the browser, but are, in effect, capable of doing so at this point. Greasemonkey works by providing a framework for users to "install" scripts, which act as a sort of filter between the user and the aesthetic and function of websites which they are designed to manipulate. This is best illustrated with an example:

The first image is of a plain Gmail inbox. The second is what Gmail looks like with Josef Richter's Helvetimail user script applied. The script is based on a popular series of user scripts that redesigns Google web applications to incorporate a minimalist aesthetic and the font, Helvetica. What occurs is that the browser applies the code, in this case a script written by Josef Richter, to the browser function of opening the webpage. Within the script, there is a call to this particular domain, so that the script is not applied to every single page opened in Firefox, and the code within the script contains specific instructions for the web browser to apply when opening the page. In this case, all that is modified are the aesthetics of the page. Functionality to the original Gmail Inbox page is identical in the application of this script.

This is not always the case for user scripts in Greasemonkey. Skipscreen, now a full-on extension, but based on user-scripting and able to be implemented in Greasemonkey, skips the imposed wait-times on hosting sites which require the user to input a captcha and retains the download link until a set number of seconds have passed. With Skipscreen, the linnk is automatically generated, providing instant access to the requested download. Pirates of Amazon, which now is considered a new media art project about censorship and economics, added links to filesharing sites directly onto the pages of for specific items. For example, if one were to have this script installed and visit the purchasing page for the latest Kanye West CD, a link would also appear to a torrent site offering an illegal download of that same audio. The project encountered legal difficulties and removed the script from their webpages, Amazon made changes to their code so that older versions of the script would not work, and the developers claimed that the project was merely meant to provoke thought and discussion on issues of piracy and filesharing.


Friedman and Nissenbaum outline five aspects of software agents which can either promote or undermine autonomy for the user:

  • Agent Capability

  • Agent Complexity

  • Knowledge About the Agent

  • Misrepresentation of the Agent

  • Agent Fluidity

  • (Friedman and Nissenbaum 467)

What follows is an examination of each in the context of the Greasemonkey Firefox extension:

Agent Capability - "User autonomy can be undermined when there are states the user desires to reach but no path exists through the use of the software agent to reach those states" (Friedman and Nissenbaum 467).

Greasemonkey extends the available end-states available to the user in Firefox to include those which may be determined by individual user scripts. In this way, Greasemonkey extends user autonomy in Firefox. Autonomy in the use of Greasemonkey can be seen to exist in two separate states of autonomy for two different categories of user. For the user comfortable with script writing, autonomy is relatively unlimited. On the other hand, users who do not know how to write scripts are limited to use those which have already been created and those which are available online. In this way, Greasemonkey's provision of autonomy can be seen as balanced atop the peak of a user's knowledge of coding. Capability of the agent (Greasemonkey), however, is relatively unlimited, as per this particular criteria for measuring autonomy.

Agent Complexity - "A path exists to the state the user desires to reach but negotiating that path is too difficult for the user" (Friedman and Nissenbaum 467).

Again, this element of autonomy is strictly limited by the user's own capability of script-writing. Depending on the individual desires for manipulating the browsing experience, a given state may be out of that user's range. However, it is not unreasonable to assume that if one were to request a given script be written, someone in the Greasemonkey script development community may be willing and capable of providing that script, which negotiates the path for the user, without them having to learn to code themselves.

Knowledge about the Agent - "When the designer of a software agent does not make information [regarding the particular processes taking place in the completion of a task] accessible to the user, then the user's autonomy can be undermined" (Friedman and Nissenbaum 467).

Here, Greasemonkey provides explicit readability of the scripts that it allows to be used within. Understanding of those scripts, however, depends again on the user's knowledge of code. Just as Firefox's source is openly available to the public, any Greasemonkey script can be opened and read in a text reader/editor. Greasemonkey further allows for these to be immediately modified and implemented by the user, as well.

Misrepresentation of the Agent - "Users can also experience a loss of autonomy when provided with false of inaccurate information about the agent" (Friedman and Nissenbaum 467).

While Greasemonkey itself is simply a vessel for user generated scripts, the extension does not pose this risk. However, since scripts are user-generated, there is the risk of deception and inaccuracy when using user scripts. This is something that the analysis of individual scripts must take into account. Greasemonkey allows scripts and scriptwriters great autonomy in modifying the way that users encounter and provide information online. In this way, Greasemonkey can be seen as enabling the autonomy of a script developer to limit the autonomy of users who may enact that script within Greasemonkey. So, while Greasemonkey itself is not (as far as is publicly known) misrepresented, deception may be element of some user generated content for use within the extension.

Agent Fluidity - "Software agents need to take such evolution [of user goals] into account and provide ready mechanisms for users to review and fine-tune their agents as their goals change" (Friedman and Nissenbaum 467).

Greasemonkey actually provides a stable mechanism for making ensuring the continuity of user goals. There is an element which provides notification when scripts are updated, and a small icon in the lower-right corner of the Firefox browser is highlighted when the Greasemonkey extension is enabled. Also, at any point of viewing a web page, users are able to see and modify which scripts are currently operating within the browser's view of that page, and allowed to switch them off one by one, as the circumstance may determine.


The unique aspect of the Greasemonkey developer community is not simply that their code is open-source, but that the scripts created for use with Greasemonkey are made available to users in a central location: At this page, users can search by the site which they decide that they want to modify their viewing of, function and aesthetic, or other tags which show up on the site. So, in addition to being able to write their own code which would define the action of Greasemonkey in altering the viewing of a page, Greasemonkey users are also afforded the opportunity to download scripts written by others. This means that they both possess the potential autonomy to create and modify scripts to fit their own needs and cultural values, but also to take advantage of the application of this autonomy by others. Therefore, autonomy in Firefox is independent of autonomy in Greasemonkey. One does not need to possess the technical prowess needed to modify scripts in order to use them in Firefox. Of course, users are limited by their inability to create their own user scripts.

What Greasemonkey demonstrates is the flexibility of the web browser to determine how web pages are recreated for the end user. While some pages are displayed very differently across the market of Firefox, Opera, Safari, Internet Explorer, etc., there is an even greater opportunity, with Greasemonkey, for the user's autonomy to be increased to the point of creating an entirely unique user experience.


"Firefox Browser | Free ways to customize your Internet." Mozilla. 21 Oct. 2009.

Friedman, Batya and Peter H. Kahn, Jr. "Human Values, Ethics, and Design." The Human-Computer Interaction Handbook: Fundamentals, Evolving Technologies and Emerging Applications, 2nd Edition. Eds. Jacko, Julie and Andrew Sears. Hillsdale: Lawrence Erlbaum Associates, 2007. 1241-1266.

Friedman, Batya and Helen Nissenbaum. "Software Agents and User Autonomy." Proceedings of the First International Conference on Autonomous Agents. New York: Association for Computing Machinery, 1997. 466-469.

Friedman, Batya, Peter H. Kahn, and Alan Borning. "Value Sensitive Design and Information Systems." Human-Computer Interaction and Management Information Systems: Foundations. Eds. Ping Zhang & D. Galletta. New York: M.E. Sharpe, 2006. 348-372.

Richter, Josef. "Helvetimail." 10 Oct. 2009.

No comments: