Ethically Sourced Software at #EMF2018

Just over a week ago I rolled out the camping gear to join friends & colleagues at a Tech Festival in the gorgeous setting of Eastnor Castle in the UK. This festival is called Electromagnetic Field (EMF) and it runs every two years, much to the delight of many tech communities across the world.

What is EMF?

The most concise way I can describe EMF is a jam packed weekend of everything and anything — robotics, blacksmithing, coding lessons, laser-harp playing — the diversity of things that happen there is incredible. Over the weekend there are workshops, talks, performances, racing and robot battles — as well as many other installations and activities. The number one thing about this festival though, is that it is a completely community-led event. The people attending also act as volunteers, doing everything from bar shifts to sound engineering and each camp (usually made up of a group of friends) put on additional activities for everyone to enjoy.

You can find out more about the festival and all its happenings here.

My EMF experience ⛺️ ✨

This being my first time at the festival I wasn’t quite sure how to prepare — the schedule had so much choice!

Here’s some of what I managed to catch over the weekend:

Lula takes centre stage using the MiMu gloves in her performance to a crowd at EMF

Ethics & The Limitations of Personal Experiences

Over the weekend there were a couple of talks that focused on ethics in software development. It is a topic that is closely linked with accessibility as well as diversity and inclusion; and much like those topics, there needs to be more discussion and active change.

Ethics is concerned with what is good for individuals and society and is also described as moral philosophy. You may be thinking — “why do I need to worry about ethics? isn’t that something my company/manager/client needs to worry about? I’m just writing code/designing/building the thing.”

Well **spoiler alert **— you REALLY do need to consider ethics, especially if you work in the technology industry.

You need to think about the ethical implications of anything you put out into the world that will be used by people. We have a joint responsibility for the way in which our products/code/designs impact the wider community.

However, we cannot rely on our moral compass alone to assist us in these tasks because the personal experiences of an individual have limitations. We travel through life collecting experiences, learning about the world from our parents, teachers and peers, and through this we develop our personal morals. Yet as independent as you may like to think you are, we are still hugely influenced by our upbringing, socio-economic status and cultural norms (this effect is known as cultural-evaluation).

This is why it is important to seek out diversity of thought, where equal opportunity is given to voices from all backgrounds. A practice that is especially important when considering ethics.

Gaining Awareness

Supporting better ecosystems, that feature ethical practices as a foundation, is a job that requires all of us to take part in educating ourselves. Much like championing diversity should not be left to the minority groups, championing ethical practices isn’t something that should be left to any one individual or group of people. It is a collective action and will only have major impact if we support each other in promoting ethical practices.

When I talk about supporting each other in gaining awareness of ethics, there are two very important points I want to highlight:

Sharing NOT shaming

Championing best practices doesn’t mean shaming anyone that isn’t abiding by them. In some cases this has been seen across the industry and can be useful in encouraging better practices, but it shouldn’t be a first resort. If you come across something that is ethically questionable, you can help by highlighting this to the creator/maintainer of the thing and share with them some best practices/guidelines.

Collaboration OVER criticism

Similarly, you can offer to collaborate with others on achieving ethical practices in their projects. This is going a little further than signposting someone to information, but if you have the capacity it can be really helpful to someone who is new to this concept.

Writing Code with Care

How can you start being more ethically aware in your day to day practices?

  • Read the ACM Code of Ethics (or at the very least my TL;DR below)
  • Look over your current work and measure it up against the code
  • Create ethical codes for your work, share with your team and make it a part of your company culture
  • Build ethics checks into your processes, so that whenever you are making tough decisions you have an ethical guide to refer to. Richard Westenra gives examples in his EMF talk such as: Would you be happy for everyone to know the decision you have made? Do you think the consequences are acceptable? Would you recommend the same course of action to others? These are just a few questions that will make you consider the implications of your decisions from a different perspective.
  • Another pro-tip from Richard is meet your users. Sit in on testing sessions, put yourself into a place where you can empathise with your users and understand the way in which they are impacted by your product.
  • Share this blog post with anyone that writes software/builds tech products/designs things that will be used by people.

The ACM Code of Ethics (a TL;DR)

I 100% recommend that you take the time to view this document in full — it is a very comprehensive guide and useful resource. Here is a summary as featured in Catherine’s talk at EMF:

  • Ensure that the public good is the central concern during all professional computing work.
  • Contribute to society and to human well-being, acknowledging that all people are stakeholders in computing.
  • Foster public awareness and understanding of computing, related technologies, and their consequences.
  • Avoid harm (meaning negative consequences).
  • Be honest and trustworthy (be transparent in all you do and provide full disclosures of capabilities, limitations and potential problems).
  • Be fair and don’t discriminate (foster fair participation of all people, including those of underrepresented groups).
  • Design and implement systems that are robustly and usably secure.
  • Respect Privacy (only use personal information for legitimate ends and without violating the rights of individuals and groups).
  • Recognise and take special care of systems that become integrated into the infrastructure of society.
  • Use care when modifying or retiring systems (i.e.changing or discontinuing support for system features on which people still depend).

Resources

I hope this post has made you think a little bit about how you can consider ethics in your work. If you want to chat more about this you can find me on Twitter and Mastodon 💬.

To quote Catherine, I encourage you to “Be the good example” for our future code makers and breakers. ✨