I’ve been annoyed a lot lately about unethical software. I already dipped my toes in the waters of ethics in software when I wrote about software that doesn’t take no for an answer. But maybe I should look at this from another direction. What makes software ethical or unethical? I came up with some rules for ethical software. I think it would be good if software engineers were to swear an oath like lawyers or doctors do. I’ll probably write about that some day. But for now let me state my rules for ethical software in a way that I think such an oath should look like.
My programs do not lie to the user
I once got asked to make the Created On date editable in some listing of items on a website. I said no. We can remove that field, but we do not make it editable. My programs do not lie to the user. It was created when it was created.
My programs do not deceive the user
Every website these days has a cookie banner that deceives the user. When you say you agree, you actually accept *extra* cookies and tracking. When you go to ‘edit your preferences’, they are already ok. At the bottom you have to save your preferences even though you did not change them. If you press Agree here, again they actively enable all tracking. Everything about this screen is made to deceive you that you are just agreeing to what was already there. And they pressure you into making the decision the marketeers want you to make.
My programs do not pressure the user
When your program keeps asking the same question, with only Yes and Maybe Later as answers, your program is pressuring the user. No Pinterest, I don’t want an Account. No YouTube, I don’t want to login, thank you. There is a login button right there in the corner so there is no need to pressure me with a modal dialog that blocks me from using the site until I answer your question. Which leads me to:
My programs speak only when spoken to
It’s a common courtesy really. The user will tell the program when he needs something. He does not need the program to keep asking the user questions. No, random news website, I have no need to subscribe to your notifications. When I do feel that need, I will tell you. So stop asking.
My programs do not threaten the user
This is a special form of pressuring the user by making threats. Antivirus software has a tendency to do this. Along with deceiving the user about the threats that were found. An Antivirus program will remove a bunch of tracking cookies and tell us it has ‘quarantined’ a bunch of ‘threats’. Yeah right. And then there is of course all the threatening around updates and not installing them. Software should inform the user, not threaten him.
My programs are patient with the user
Programs being impatient? Yeah, tons. I’m a slow person. Sorry. So I feel this. My bank website kicks me off after 15 minutes of ‘inactivity’ while I search for some reference number or check some amount. Forums do it. Many sessions are lost. I type slowly ok? Do not throw my post away!
My programs do not harm the user
My programs won’t defraud my user. Won’t steal his credit card info. Won’t make his computer mine for Bitcoins and then send them to me. Won’t log his passwords. Won’t secretly send his address book to some company in china. Won’t say the USB drive has 8GB capacity when it has only 2…
My programs do not scream at the user
Why do programs have to scream error messages at the user? ERROR: File not found!! Oh really? And which file, dummy? How am I supposed to solve the issue with that kind of error message? Leave out the caps and exclamation marks and put in some info please.
My programs do not disobey the user
Yeah, like pressuring a user to upgrade to Windows 10 by giving him a modal dialog that blocks everything until he answers, where you present only Now and Later as options and then when the user presses the close button (which *always* means Cancel), doing the upgrade anyway. Yeah I’m looking at you Microsoft. How many rules did you guys break there?
I don’t think this list is complete. So this is maybe going to be a living post. Please comment. What rules did I miss? Any examples of software breaking these rules? Let me know!