Tool Safety is a zine I wrote in 2017 about what writing Beautiful Soup taught me about software development.
You can also read the individual pages of the zine online:
A mini-zine by Leonard Richardson
In 2004 I started work on Beautiful Soup, a Python library for getting information out of web pages.
Before Beautiful Soup, web browsers could parse bad HTML:
But it was really difficult to do it from within your own computer programs.
Beautiful Soup has been used in thousands of public Python projects.
(And probably at least as many private/individual projects.)
Most of these projects make peoples' lives better in small ways:
Sometimes beautiful Soup is used to do something really important, often as a piece of journalism. (My favorite example.)
But it's also been used as a tool for spamming, doxing, and other things I think are unethical.
And it's often used in ways that make rich people richer. 📈
Maybe not unethical per se, but not the best use of the power we have as computer programmers.
Beautiful Soup is just a tool.
It isn't good or bad on its own.
But I chose to make this tool instead of a different tool.
I choose to work on it now instead of doing other things.
- - -
I can't use "just a tool" as an excuse.
If I'm going to feel pride about the good people do with my software, I have to share some responsibility for the bad.
In college I took an Engineering Ethics course. It focused heavily on mistakes.
This stuff has consequences.
Mistakes can cause a lot of harm.
I wish this course had covered the idea that people might be harmed not because of an implementation mistake, but because an engineer did a good job building the wrong thing.
I used to ask for donations from people who used Beautiful Soup.
But I didn't write Beautiful Soup to make money. I wrote it to make the world a better place.
I wrote it to be a tool for good.
If you've used Beautiful Soup over the past 10+ years and want to say thank you, the best way is to be thoughtful about how you use it.
You have power. Use it to make things better.
When I work on a piece of software I ask myself:
Could this be used to hurt someone?
Is there something better I could do with the same idea?
That's what I mean by being thoughtful.
It's similar to the mindset you need to write secure code.
Help people who want help.
Think through the consequences.
Thanks for reading. I'd like to hear what you build with Beautiful Soup. You can email me at email@example.com.
© 2017 Leonard Richardson, CC-BY-ND