Web applications should work for everyone and everywhere
Many people own older computers, have slow connections, or struggle with physical disabilities that prevent them from accessing today’s newer sites and apps. How do you strike a balance in your design to include everyone?
As web developers, we are responsible for shaping the experiences of users’ online lives. By making ethical, user-centered choices, we create a better Web for everyone. The Ethical Web Development series aims to take a look at the ethical issues of web development.
With this in mind, I’ve attempted to divide the ethical issues of web development into four core principles.
- Web applications should work for everyone.
- Web applications should work everywhere.
- Web applications should respect a user’s privacy and security.
- Web developers should be considerate of their peers.
The first three are all about making ethical decisions for the users of our sites and applications. When we build web applications, we are making decisions for others, often unknowingly to those users.
The fourth principle concerns how we interact with others in our industry. Though the media often presents the image of a lone hacker toiling away in a dim and dusty basement, the work we do is quite social and relies on a vast web of connected dependencies on the work of others.
What Are Ethics?
If we’re going to discuss the ethics of web development, we first need to establish a common understanding of how we apply the term ethics. The study of ethics falls into four categories:
- Meta-ethics
- An attempt to understand the underlying questions of ethics and morality
- Descriptive ethics
- The study and research of people’s beliefs
- Normative ethics
- The study of ethical action and creation of standards of right and wrong
- Applied ethics
- The analysis of ethical issues, such as business ethics, environmental ethics, and social morality
For our purposes, we will do our best to determine a normative set of ethical standards as applied to web development, and then take an applied approach.
Within normative ethical theory, there is the idea of consequentialism, which argues that the ethical value of an action is based on the result of the action. In short, the consequences of doing something become the standard of right or wrong. One form of consequentialism, utilitarianism, states that an action is right if it leads to the most happiness, or well-being, for the greatest number of people. This utilitarian approach is the framework I’ve chosen to use as we explore the ethics of web development.
Whew! We fell down a deep dark hole of philosophical terminology, but I think it all boils down to this:
Make choices that have the most positive effect for the largest number of people.
Professional Ethics
Many professions have a standard expectation of behavior. These may be legally mandated or a social norm, but often take the form of a code of ethics that details conventions, standards, and expectations of those who practice the profession. The idea of a professional code of ethics can be traced back to the Hippocratic Oath, an oath taken by medical professionals that was written during the fifth century BC (see Figure 1-1. Today, medical schools continue to administer the Hippocratic or a similar professional oath.
In the book Thinking Like an Engineer, Michael Davis says a code of conduct for professionals:
prescribes how professionals are to pursue their common ideal so that each may do the best she can at a minimal cost to herself and those she cares about… The code is to protect each professional from certain pressures (for example, the pressure to cut corners to save money) by making it reasonably likely (and more likely then otherwise) that most other members of the profession will not take advantage of her good conduct. A code is a solution to a coordination problem.
My hope is that this report will help inspire a code of ethics for web developers, guiding our work in a way that is professional and inclusive.
The approaches I’ve laid out are merely my take on how web development can provide the greatest happiness for the greatest number of people. These approaches are likely to evolve as technology changes and may be unique for many development situations. I invite you to read my practical application of these ideas and hope that you apply them in some fashion to your own work.
This series is a work in progress, and I invite you to contribute. To learn more, visit the Ethical Web Development website.
Intended Audience
This title, and others in the Ethical Web Development series, is intended for web developers and web development team decision makers who are interested in exploring the ethical boundaries of web development. I assume a basic understanding of fundamental web development topics such as HTML, JavaScript, and HTTP. Despite this assumption, I’ve done my best to describe these topics in a way that is approachable and understandable.
Introduction
In 1998, Tim Berners-Lee, the creator of the Web, published “”The World Wide Web: A Very Short Personal History”. In this brief essay, he states:
The dream behind the Web is of a common information space in which we communicate by sharing information. Its universality is essential: the fact that a hypertext link can point to anything, be it personal, local or global, be it draft or highly polished.
To Berners-Lee, the universality of the Web is exactly what allowed it to grow from a single server at his desk to a global communication network with over three billion users worldwide.1 While built upon the technologies established in those early days, today’s Web has grown beyond the concept of hyperlinked documents. Today, we build rich graphical interfaces that encompass anything from a text document to a real-time video application, while also providing the primary means for personal interaction, information, and fundamental social services for many users.
With the rise of information and immersive applications on the Web, we have created a global network that society relies upon. Pausing to think about this, it is a beautiful thing and, true to Berners-Lee’s vision, there remains little barrier to entry to publishing a site or application. However, as web developers, it is a professional and social responsibility to ensure that our sites and applications work for as many people as possible.
I have often been tempted to regard browser or device testing casually in favor of using the latest and greatest tools and browser features. Learning to use these new tools is one of the things that make web development so enjoyable, but we must temper this desire with the ability to build sites that work for as many users as possible. We should avoid shutting out users or denying them our services due to technical constraints. When we do this, we are taking an elite position, potentially shutting out the poor, disabled, and elderly. Imagine a storefront that didn’t allow customers to enter if their shoes and clothes were too old. As a society we would find that offensive, and the shopkeeper would likely be publicly disgraced on the evening news. However, we often put banners on our site that say, “This site only supports X browser or newer,” when a visitor accesses it with an older browser. Or worse, the site will silently fail, akin to the shopkeeper completely ignoring a customer.
It Just Works
My wife and I began dating in 2003, and within a year or so I became her family’s default “computer expert.” In 2005, I helped my father-in-law, Marty, pick out a new computer for himself. To him, this was akin to an appliance purchase and we picked out a sturdy desktop computer, which has been in continuous use since then. We’ve made some upgrades to the RAM and I’ve done my best to point him to using an evergreen browser that automatically updates, but those no longer update on his aged XP system. When I asked him why he doesn’t upgrade, he just shrugs and says “it still works.” For him, the existence of the web browser is enough. He assumes that by typing in a URL, that the browser and machine connecting shouldn’t make a difference.
When my grandfather passed away, my grandmother, Kathy, wanted to learn to use a computer and connect to the Web. Her primary device is an inexpensive and outdated Android tablet that connects to the Web through a wireless connection from the rural area where she lives. She uses it to check Facebook, read the news, read books, and play solitaire.
As developers, we want to assume that people like Marty and Kathy are edge cases. Looking at the top browsers currently in use, when grouped together, device-specific browsers, outdated “evergreen” browser versions, and uncommon open source browsers occupy the second largest percentage of market share (see Figure 1-1).2 Though each of these browsers and versions may only show up in our analytics as a fraction of a percent, when grouped together they become a powerful representation of the market.
Though the users of these browsers may not be the target demographic for our applications and services, by not accommodating for them we are denying them the opportunity to participate.
A Responsibility
As web developers, we are gatekeepers to the vast troves of information and interaction across the Web. With this comes a responsibility to ensure that the Web is an open and inclusive space for all. The following chapters attempt to lay a groundwork for inclusive web development through:
- Progressive enhancement
- By building progressively we can ensure that all users have access to a base experience, regardless of technology or network conditions.
- Accessibility
- By building accessible user interfaces, we ensure that everyone has equal access to our applications regardless of disability or age.
- Inclusive forms
- Forms allow users to interact directly with the Web, making it a two way form of communication. By creating web forms that are inclusive and usable, we demonstrate our dedication to inclusion.
1Number of Internet Users (2016) – Internet Live Stats, http://www.internetlivestats.com/internet-users/.
2The site StatCounter provides these metrics on its website. I’ve made the full list available as a CSV at https://gist.github.com/ascott1/1f9b8fdc7529e4dd7823.