Thoughts on Ethical Software
Today I deleted my account on one of the larger social networks. I could in good conscience no longer use their service and the software on which it runs.
This is because recently I have been thinking a lot about ethical software: what it is, what it might look like and why it is important.
Ethical software is software that any good person should aspire to create. It can be a standalone program, a business application, a game, a web service, a website, a mobile app, a utility, a module, a driver … any thing that is written to run on hardware. But how do we know what is “ethical” when it comes to code?
Consider a piece of software or software service has four major stakeholders:
- those who write it
- those who own it
- those who run it
- those who use it
In my opinion, Ethical Software is software that prioritises those who use it over all other stakeholders.
That is not to say that the other stakeholders have no rights or requirements.
Those who wrote it, the programmers and designers, deserve payment, a safe working environment and all the protections that copyright and the legal system can provide.
Those who own it have the right to profit off the software, to sell and buy it.
Those who run the software on hardware they own, perhaps on a server, console, tv, phone or appliance, have the right to run it as they see fit, giving it the resources they want, and to start and stop the software as they see fit.
Those first three stakeholders have important rights but they also have important responsibilities. This is because they are ultimately in total control of the software, how it operates and what it does. They are responsible for how it affects the people that use it.
By contrast, the people who use software have almost no power. A typical user’s sole interaction with a piece of software is usually as an end user. The software itself is a black box with which a typical end user does not and has no way on knowing what is inside. They are constrained by what the software allows them to do.
When it comes to a software product or service, the most vulnerable people in the chain are the end users. In an ideal civilised society, people with power protect and support the people who have no power. In a society based on software, there is no-one more vulnerable and with less power than the end user.
Therefore, it is incumbent on programmers, designers, owners, and hardware builders to apply a duty of care to anyone using their software. The relationship between users and software is an inherently unequal relationship and so people responsible for software must operate at the highest moral level. The easiest way to evaluate if the software we are creating is moral is if the interests and benefits of the user have been prioritised over those of the designers and owners of a piece of software. Anything less is unethical.
So that is why I say that software is only Ethical Software if the people using the software are in genuine control of their interactions with the software.
Of course, end users are not completely absolved of all responsibility for their own actions. As consumers, we must evaluate the software and software services we use and apply the same ethical standards we do in other parts of our lives. Just as people can choose free range eggs over cage eggs, or to ethically invest their money in sustainable businesses over unsustainable businesses, so too can they choose ethical software products and services and withhold their patronage from unethical ones.
Here are some examples of unethical software:
- A computer game with micro-transactions that does not provide a easy way to exit the game. Opportunities to exit the game are only provided “mid level” and exiting the game causes the user to lose progress or achievements. This is unethical behaviour because it is designed to maximise profit for the developer at the health and expense of the user.
- A social network that targets a user after a break up or other vulnerable period with unsolicited messages from third parties. This is unethical behaviour because the user does not expect or understand that the data they have provided is being used in this way. They can not make an informed decision about their use of the software and if they are particularly vulnerable, their ability to make rational decisions may be impaired.
- A piece of business software that does not allow a user to export the data or share it with another service. This is unethical behaviour because it makes the user artificially dependent on the software. They can not make decisions that benefit themselves without a large, artificial cost.
Those are some basic examples of software practices that do not prioritise the safety and well-being of the end user. Software does not magically appear fully formed out of the æther. Behind every unethical design decision is a real person who has failed in their duty of care. It can be unacceptable if we make it so.
Here are some basic guidelines I consider essential for Ethical Software:
- Users can withdraw from using the software at any time and remove their data from the service. Keeping a user’s data after they have withdrawn their permission is unethical.
- Users can easily export their data from the service and transfer their data to other software or services easily. Not providing a method for a user to move to another piece of software or service is unethical.
- The software provides its services to the user in the best time possible. Artificially prolonging engagement with the software is unethical.
- The software puts the safety of the user at the centre of the experience at all times. Causing harm, addiction or entrapment of the user is unethical.
All stakeholders in a piece of software, including the end users, should consider the ethics behind software and whether it puts the needs and safety of the users ahead of other considerations.