Building Web Apps For Everyone
Building Web Apps For Everyone
Web Apps
for Everyone
Adam D. Scott
Building Web Apps
for Everyone
Adam D. Scott
The OReilly logo is a registered trademark of OReilly Media, Inc. Building Web
Apps for Everyone, the cover image, and related trade dress are trademarks of
OReilly Media, Inc.
While the publisher and the author have used good faith efforts to ensure that the
information and instructions contained in this work are accurate, the publisher and
the author disclaim all responsibility for errors or omissions, including without limi
tation responsibility for damages resulting from the use of or reliance on this work.
Use of the information and instructions contained in this work is at your own risk. If
any code samples or other technology this work contains or describes is subject to
open source licenses or the intellectual property rights of others, it is your responsi
bility to ensure that your use thereof complies with such licenses and/or rights.
978-1-491-95552-9
[LSI]
Table of Contents
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
It Just Works 2
A Responsibility 3
2. Progressive Enhancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Defining Core Functionality 7
Progressive Enhancement Is Still Relevant 8
How Can We Approach Progressive Enhancement Today? 12
In Summary 16
3. Web Accessibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Broadening the Scope of Accessibility 20
Web Content Accessibility Guidelines 21
Using Your Keyboard to Navigate the Web 25
Using a Screen Reader to Navigate the Web 28
Writing Accessible Markup 29
Accessibility Tools 31
Creating an Accessibility Policy 33
In Summary 34
5. Conclusion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
v
Preface
vii
Meta-ethics
An attempt to understand the underlying questions of ethics
and morality
Descriptive ethics
The study and research of peoples 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, environ
mental 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 consequential
ism, 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 consequential
ism, 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 Ive 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 P-1. Today, medical schools continue to administer
the Hippocratic or a similar professional oath.
viii | Preface
Figure P-1. A fragment of the Hippocratic Oath from the third century
(image courtesy of Wikimedia Commons)
Preface | ix
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 coordina
tion 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 inclu
sive.
The approaches Ive laid out are merely my take on how web devel
opment 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, Ive done my best to describe these topics
in a way that is approachable and understandable.
x | Preface
CHAPTER 1
Introduction
1
sional 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 casu
ally in favor of using the latest and greatest tools and browser fea
tures. 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 posi
tion, potentially shutting out the poor, disabled, and elderly. Imagine
a storefront that didnt 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 shop
keeper completely ignoring a customer.
It Just Works
My wife and I began dating in 2003, and within a year or so I
became her familys 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.
Weve made some upgrades to the RAM and Ive 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 doesnt 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
shouldnt 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
2 | Chapter 1: Introduction
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 ana
lytics 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 demo
graphic 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 informa
tion and interaction across the Web. With this comes a responsibil
ity 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:
2 The site StatCounter provides these metrics on its website. Ive made the full list avail
able as a CSV at https://gist.github.com/ascott1/1f9b8fdc7529e4dd7823.
A Responsibility | 3
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.
4 | Chapter 1: Introduction
CHAPTER 2
Progressive Enhancement
5
I prefer Jeremy Keiths view of progressive enhancement as a pro
cess rather than a specific technique or set of technologies. By
Keiths definition, this process looks like:
Id encourage you to take a few minutes and consider what the core
functionality might look like for a few different types of websites
and applications, including the following:
News website
Social network (write text posts and read your newsfeed)
Image sharing website
Web chat application
Video chat application
Identify the primary goal of each type of site and determine the
minimum amount of technology needed to implement it. To take it
a step further, write some markup or pseudocode explaining how
you might implement those baselines and features.
When working on your own applications, try to perform the same
exercise. First, determine the core functionality for your users and
build the application from there. This programmatic approach also
1 In 2010, Yahoo conducted what is considered the definitive study of JavaScript usage,
finding that the percentage of users with JavaScript disabled ranged from 0.26% to
2.06%, depending on the country of origin. Sadly, these statistics are long out of date. In
2013, GOV.UKs GDS team did a similar study and found that 1.1% of its users were
not receiving JavaScript. The German site darwe.de analyzes JavaScript enablement in
real time and shows a much larger percentage of users with JavaScript disabled visiting
its site.
2 Owen Williams, The Unknown Browser with 300 Million Users Thats Breaking Your
Site, TNW, http://thenextweb.com/dd/2015/12/24/the-unknown-browser-with-300-
million-users-thatsbreaking-your-site/.
Isomorphic JavaScript
Though my description may be oversimplified,
isomorphic JavaScript is an exciting approach
for developers and teams who are using server-
side JavaScript. To learn more about isomorphic
JavaScript, I recommend taking a look at the fol
lowing resources:
In Summary
There are a variety of techniques and approaches that allow us to
build progressively enhanced modern websites and applications.
This chapter has outlined a few of these options. By beginning with
the core functionality, we are able to ensure that our application
works for the maximum number of people. This provides us with a
baseline to provide working software for all users in a range of situa
tions.
From an ethical standpoint, progressive enhancement provides sev
eral benefits to our users. By following a progressive enhancement
process, we can be sure that we are building our applications in a
way that allows them to be available for as many users as possible,
regardless of device, connection, or browser.
In Summary | 17
CHAPTER 3
Web Accessibility
19
The Web is an opportunity for unprecedented interaction for
people with disabilities.
The W3C has also called out that the United Nations Convention on
the Rights of Persons with Disabilities expresses that accessibility
across the web has become a human right. Specifically it states:
To enable persons with disabilities to live independently and partic
ipate fully in all aspects of life, States Parties shall take appropriate
measures to ensure to persons with disabilities access, on an equal
basis with others [] to information and communications, includ
ing information and communications technologies and sys
tems[].
States Parties shall take all appropriate measures to ensure that per
sons with disabilities can exercise the right to freedom of expres
sion and opinion, including the freedom to seek, receive and
impart information and ideas on an equal basis with others and
through all forms of communication of their choice[].
When done correctly, an accessible Web not only provides equal
access to services and information, but also empowers those with
disabilities.
Further Reading
W3Cs Social Factors in Developing a Web Accessibility Busi
ness Case for Your Organization
W3Cs Designing for Inclusion
Further Reading
Melody Kramers News for Betty
W3Cs Meeting the Needs of Aging Web Users
The A11Y Projects MYTH: Accessibility Is Blind People
POUR
The guidelines and success criteria of building WCAG 2.0 accessible
web applications are organized around the POUR principle. POUR
stands for Perceivable, Operable, Understandable, and Robust. Fol
lowing these guidelines allows us to build websites and applications
that are usable by all. Lets take a closer look at each of these guide
lines:
Perceivable
Information and user interface components must be presentable
to users in ways they can perceive.
Perceivable means that a user should be provided the opportunity to
perceive the content of our web applications. To do this, we must
ensure that the information being presented is perceptible to their
senses. When we limit content to a single sense, we run the risk of
alienating users.
One common use case of perception is providing written transcripts
of audio material or captioning video material. Perhaps a less obvi
ous example is the style of links across the Web. A link that is only a
different color from the text would be imperceptible to color-blind
Operable
User interface components and navigation must be operable.
When a web application is operable, all users are able to operate and
navigate its interface. Perhaps a simple example of this is providing
users the ability to easily tab through our sites, by navigating
through the page using only the Tab keyboard key. A user who is
unable to operate a mouse or trackpad may navigate sites using only
the keyboard. Ensuring that our sites are keyboard-accessible is one
way to ensure that they are operable by all users.
Understandable
Information and the operation of user interface must be under
standable.
When we build understandable interfaces, we follow common
development patterns of hierarchy and user interaction. When
working with a team, these may often fall in the domain of a
designer, but as developers we make choices about how we develop
these patterns.
One common anti-pattern is using form-label placeholder text in
the place of a form label (see Figure 3-2.
Here is a form element, properly marked up with a label and place
holder text:
<label for="password">Password:</label>
<input type="text" name="password">
1 Color blindess affects a significant portion of the population, specifically those born
male. Roughly 8% of male-born people are said to have some form of color blindness.
For a brief overview, see https://en.wikipedia.org/wiki/Color_blindness#Epidemiology.
WCAG Conformance
WCAG 2.0 is separated into three levels of conformance, based on
success criteria that is defined in the WCAG 2.0 specification:
Level A
Level A provides basic web accessibility support. This meets all
Level A success criteria, or provides an alternate content version
that does.
Further Reading
W3Cs Techniques for WCAG 2.0
W3Cs WCAG 2.0
W3Cs Understanding WCAG 2.0
Further reading
The A11Y Projects Quick Tip: Never Remove CSS Outlines
Further reading
The A11Y Projects Howto: Use Skip Navigation Links
WebAIMs Skip Navigation Links
NCZOnlines Fixing Skip to content Links
JAWS
ZoomText
Window-Eyes
NVDA
Additionally, most operating systems ship with built-in screen
reader support. This can be particularly useful for testing web appli
cations on mobile devices.
ARIA
In addition to writing clear and semantic markup, we can make use
of ARIA to provide additional guideposts to screen reader users.
Accessible Rich Internet Applications (ARIA) is a specification
designed to make modern web application experiences more acces
sible. ARIA provides additional attributes that can be added to our
markup to provide screen reader users with additional information
to describe the role, state, and properties of elements on our page.
Perhaps one of the most immediately useful aspects of ARIA is the
use of ARIA roles. ARIA roles allow us to provide specific informa
tion to screen readers about the context of HTML elements. Doing
this allows screen reader users to quickly navigate to these subsec
tions of our pages. Ive found that watching videos of screen readers
using ARIA roles can be a really helpful exercise in understanding
the usefulness of ARIA.
Further Reading
W3Cs Notes on Using ARIA in HTML
W3Cs WAI-ARIA 1.1 Authoring Practices
Mozilla Developer Networks documentation for ARIA
The A11Y Projects Getting Started with ARIA
The A11Y Projects Quick Tip: Aria Landmark Roles and
HTML5 Implicit Mapping
Accessibility Tools
There are a number of tools that can improve accessibility testing
for developers. These allow us to quickly or automatically spot
accessibility issues on our sites.
tota11y
WAVE Chrome Extension
Chrome Accessibility Developer Tools
aXe
Accessibility Tools | 31
Command-Line Tools
In addition to browser extensions or bookmarklets, we can auto
mate common accessibility checks from the command line. This
allows us, as developers, to integrate accessibility checks into our
workflow. Typically these tools run our sites in a headless browser
one that doesnt have a graphical user interfaceand test for accessi
bility concerns such as color contrast, heading order, link content,
and alt text.
The following are some useful command-line accessibility tools:
pa11y
a11y
node-wcag
In Summary
Accessibility is a core value for ethical web development. By ensur
ing that our applications are accessible, we are providing access to
everyone.
Additional Resources
W3Cs Web Accessibility Initiative
W3Cs Web Accessibility Guidelines
W3Cs Web Accessibility Tutorials
The A11Y Project
WebAIM
Matt Longs Its Tired In Here: Web Accessibility
Forms allow users to interact directly with a site. They are often the
thing that differentiates a website from a web application.
Whats in a Name?
In Dale Carnegies influential 1936 self-help book, How To Win
Friends and Influence People, he states a persons name is, to that
person, the sweetest and most important sound in any language.
Names are a core part of our personal identities. We often identify
with them, turn at the sound of them said across the room, and
intuitively appreciate when a person we have just met remembers
our names.
Unfortunately, as web developers, it is possible to make assumptions
about names that lead to their incorrect handling. When working
with names, we should be prepared for a variety of characters, spac
ing, and unique international formats.
In his article Falsehoods Programmers Believe About Names, Pat
rick McKenzie lists out 40 common misconceptions, including these
assumptions:
35
My system will never have to deal with names from China,
Japan, Korea, Ireland, the United Kingdom, the United States,
Spain, Mexico, Brazil, Peru, Russia, Sweden, Botswana, South
Africa, Trinidad, Haiti, France, or the Klingon Empire, all of
which have weird naming schemes in common use.
The full list is well worth a read, as it succinctly points out many
potential missteps.
In her article "Hello, My Name Is <error>, Aimee Gonzalez-
Cameron shares her story of taking the GRE, an exam administered
for admission to graduate school in the United States. One of the
first instructions in registering for the exam was as follows:
Important: The name you use when you register for a GRE test
must exactly match (excluding accents, apostrophes and spaces) the
name on the identification (ID) documents that you will present on
the day of your GRE test. If it does not, you may be prohibited from
taking the test or your test scores may be canceled after you take
the test. For example, a last name of Fernandez de Crdova would
be entered as FernandezdeCordova.
As she points out, Students shouldnt stress about instructions or
worry that their answers will be thrown out because they cant com
plete the first step correctly. The lack of a technical system that
properly handles a common American surname format is both cul
turally insensitive and requires extra instruction for correct han
dling.
Perhaps relatable from the perspective of many developers is the
case of Christopher Null. Without reading further, you may already
be shaking your head at the heartache that a last name of Null may
cause when dealing with web forms. In his article, "Hello, Im Mr.
Null. My Name Makes Me Invisible to Computers, he details his
experience using the Web with the last name of Null. Because null
is used to represent an empty string in the majority of programming
languages, it is sometimes used to check for blank form fields.
Because of this, many form fields will assume the field is blank,
report an error, or crash, forcing him to use a different last name.
As developers, we can take a more inclusive strategy to working
with names, treating these not as edge cases, but instead by expect
ing a wide variety of potential inputs.
Multiple names
Many names may be longer than the given name, family name for
mat. In many Spanish- and Portuguese-speaking countries, it is
common to compose a name of one or two given names and two or
three family names consisting of the mothers surname followed by
the fathers surname. In some cases, the conjunction de (of ) may
be added between the maternal and paternal surnames, or some
times surnames may reflect geographic origin.
Arabic names are traditionally much longer than given and family
names, often having specific meaning. This description from Wiki
pedia highlights the false assumptions that a non-Arabic speaking
person may make about the traditional Arabic name Abdul Rahman
bin Omar al-Ahmad:
With Abdul: Arabic names may be written Abdul (something),
but Abdul means servant of the and is not, by itself, a name.
Thus for example, to address Abdul Rahman bin Omar al-Ahmad
by his given name, one says Abdul Rahman, not merely Abdul. If
he introduces himself as Abdul Rahman (which means the serv
ant of the Merciful), one does not say Mr. Rahman (as Rahman
is not a family name but part of his (theophoric) personal name);
instead it would be Mr. al-Ahmad, the latter being the family name.
Name order
Names do not always appear in the format of a given name followed
by a family name, meaning that a typical form field of First name
followed by Last name, may not produce the intended results. As
an example, Chinese names place the surname before the personal
name.
Whats in a Name? | 37
Rather than a family surname, Icelandic names follow a patronymic
(and, occasionally, matronymic) naming format. For example, if an
Icelandic man named Birgir has a son named Jn, Jns full name
would be Jn Birgisson (Birgirs son). If Jn then had a daughter
named Sigrn, Sigrn would be named Sigrn Jnsdttir (Jns
daughter). Because of this, a list of Icelandic names would be
expected to be sorted by given name rather than family name.
Characters
Names from many regions may consist of characters outside of the
Latin alphabet. There are those that may not make use of the Latin
alphabet in written form, such as Arabic, Cyrillic, or Japanese
(though many of these languages also have Romanized versions,
such as the Japanese name Yamada Tar ()). There are also
accented characters such as , , and . Names may also contain a
mix of . Names may contain non-letter characters such as apostro
phes (e.g., the Irish name Francis ONeill), which forms may attempt
to strip during validation as unacceptable characters.
Further Reading
These are only a few examples of how names may differ around the
world. Additionally, they assume that a persons name is derived
from a single culture, ignoring the possibility that name attributes
from multiple cultures may be applied to a persons name. W3Cs
Personal Names Around the World dives into greater detail and
links to several additional Wikipedia articles discussing naming for
mats.
Mojibake
Mojibake is a term used to describe the garbled set of characters that
are produced through an improper use of character encoding. Moji
bake is typically caused by text that lacks proper (or any) Unicode
encoding. Users whose names contain special characters may often
see mojibake versions of their name. A quick image search for moji
bake reveals many encoding issues across the Web, though it is likely
that the majority go undocumented or are documented without
knowing the term.
In his talk, "Hello, my name is __________., developer Nova Patch
found several examples of mojibake affecting users of web services.
Whats in a Name? | 39
Nirn Plunkett
Through the research of this book, I discovered that Nirn Plun
kett passed away in July 2015. Nirn was an invaluable part of the
open source community and an advocate for good in the world of
software development. Both the Apache Foundation and Ada Ini
tiative have offered heartfelt tributes to Nirn.
Input format
If possible, create name fields that are a single text input. Allow the
input field to take in long names as well as accepting special charac
ters and spaces. If possible, avoid limiting the length of the field in
your database as well, so that an individuals name is never truncated
when it is returned. See Figure 4-3.
Figure 4-3. If possible, use name fields that are a single text input
If you plan to address the user through the web interface, email, or
other means, it may be worth adding an additional field that asks
What should we call you? (see Figure 4-4). This allows users to
enter the name they most associate themselves with.
Whats in a Name? | 41
Figure 4-4. If you will address the person, add a What should we call
you? field
Character encoding
As weve seen with mojibake, character encoding can present its
own unique set of challenges. To avoid the accidental mangling of
names, we should permit punctuation (such as hyphens and apos
trophes), allow spaces, and avoid changing character encoding for
mats between systems, such as form to database. A complete
discussion of character encoding is beyond the scope of this book,
but as a rule of thumb use UTF-8 encoding both on the front-end
and the database.
In HTML, simply add the character set meta tag specifying UTF-8
to the <head> of the page:
<meta charset="utf-8">
Further Reading
Nova Patchs Hello, my name Is __________.
Patrick McKenzies Falsehoods Programmers Believe About
Names
W3Cs Personal Names Around the World
Aimee Gonzalez-Camerons Hello, My Name Is <error>
Sara Wachter-Boettchers Personal Histories
Joel Spolskys The Absolute Minimum Every Software Devel
oper Absolutely, Positively Must Know About Unicode and
Character Sets (No Excuses!)
Dr. Florian Deienbcks No Such Thing as Plain Text
Pavel Radzivilovsky, Yakov Galka, and Slava Novgorodovs
UTF8 Everywhere
Inclusive Gender
For many, gender is not simply the binary sex of either male or
female as determined at birth. The advocacy group GLAAD defines
transgender as:
An umbrella term (adj.) for people whose gender identity and/or
gender expression differs from the sex they were assigned at birth.
The term may include but is not limited to: transsexuals, cross-
dressers and other gender-variant people.
The most cited study on transgender population numbers in the
United States places the transgender population at 0.3%, or roughly
700,000 adults in the United States. According to Monica Chalabi,
the author of the report and the FiveThirtyEight article Why We
Dont Know the Size of the Transgender Population, these numbers
may be inaccurate, tending toward low, due to the lack of non-
binary gender options on official forms such as the census as well as
a reluctance to provide the information when asked.
To be as inclusive as possible, we can build systems that accept and
respect non-binary gender options. When including gender in a
form, my recommendation is to:
Inclusive Gender | 43
Figure 4-5. Google offers four gender choices in a select menu
Inclusive Gender | 45
Figure 4-7. Facebooks sign-up form presents users with a binary gen
der choice
Further Reading
Claire Gowlers How to Ask About Gender
CUSU LGBT+s Think Outside the Box Recommendations for
Forms
Formulate Information Designs Sex and Gender
In Summary
When we ask users to complete a form with personal information,
we are asking about their personal identity. By considering name
formats, internationalization, and gender we provide online spaces
that are welcoming and inclusive to all.
In Summary | 47
CHAPTER 5
Conclusion
Thank you for taking the time to read Building Web Apps for Every
one. I hope that through reading this report you see value in using
progressive enhancement, considering accessibility, and building
inclusive web forms. These encompass a small portion of the work
we can do as web developers to ensure that the Web is an open and
inclusive space for all users. My hope is that you now feel empow
ered and excited to build applications in this way.
If throughout your reading you have come across things that are
missing or could be improved, I would encourage you to contribute
back to the book. This title is available as open source and contribu
tions can be made by:
49
This is the first in a series of digital reports I am authoring on the
subject of ethical web development. Future titles in the series will
cover building web applications that work everywhere, building web
applications that respect a users privacy and security, and working
with development peers. You can learn more about the series at the
Ethical Web Development website.
50 | Chapter 5: Conclusion
About the Author
Adam D. Scott is a developer and educator based in Connecticut. He
currently works as a Senior Technology Fellow at the Consumer
Financial Protection Bureau, where he focuses on building open
source tools. Additionally, he has worked in education for over a
decade, teaching and writing curriculum on a range of technical
topics. His first book, WordPress for Education, was published in
2012. His video course, Introduction to Modern Front-End Develop
ment, was published by OReilly in 2015.
Technical Reviewer
Chris Contolini is an open source software developer. He is cur
rently a Senior Technology Fellow at the Consumer Financial Pro
tection Bureau, where he focuses on ChatOps and front-end web
development. He lives and works from a 10-foot box truck retrofit
ted with solar panels, running water, and broadband Internet access.
He works mostly from national forests and has been known to fre
quent the Bay Area and Portland, OR.
Other Contributors
The following people have graciously contributed feedback and
improvements:
Meg Foley
Andy Chosak
Shashank Khandelwal
Contributions and suggestions have also been made to the Ethical
Web Development website, as well as the detailed principles
described there. Those contributions are stored at ethicalweb.org/
humans.txt.