04 Jul 2017, 07:26

Problem: I am a human being

Solution: I don’t have one. It’s not a real problem.

Yesterday, I saw someone asserting that open source projects have poor UX, and that this is the result of a toxic culture created by developers who both don’t care about users and are incapable of making good tools. I feel this was a very broad assertion to make. I also feel that making demands upon what people produce for free within a society that makes selling labor for money a prerequisite for survival shows a certain level of entitlement. While I can understand frustration with the lack of polish many open source tools display, attributing this lack of polish to malice shows a distinct lack of empathy for people who are often well aware of the faults of their projects, and struggling to find time and help.

I write open source software. My contributions are to various tools that are relatively obscure unless you have some specialized interests. I’ve contributed to libaries for load testing, distributed computing, and log aggregation. I’ve started two relatively real projects - a Go wrapper for the ZeroMQ distributed messaging library, and a Go syslog message parser. I’m relatively well known in a community or two, and I’ve given a couple of conference talks and spoken at a local meetup or two, but I am not a “name brand” developer.

If I examine why I spend some considerable amount of my time producing software for free within an economic system based on the concept of selling labor for money, I find a multitude of reasons.

One reason is that free software changed my life. I don’t have a college degree - I’m a self taught software developer. I started my post highschool life washing dishes for a living. Finding the book “The Linux Bible” in a book store in the mid 90s changed the course of my life dramatically. It came with a CD with a copy of Yggdrasil Plug and Play Linux, and all the source code. This was when free software outside of very specific circles was still unheard of. If you are a person who has come of age during the time of ubiquitous internet access and github, you cannot know what having access to the source code of an entire operating system meant in the mid 90s. When I saw the impact this access had on my own life in the coming years, I began to view closed source software as unethical. In a society that was increasingly mediated by software, restricting access to learning about software works is in my opinion a means of control and subjugation.

Another reason is that I simply enjoy writing code as means to explore ideas, make things, communicate and share with other people. Creating free software on my own time allows me to work and share outside of the constraints of business value that must be considered when you are trading your expertise for money from a company. It allows space for creating software from a different set of values than those that come with solving problems people are paying you to solve. A far simpler and less wordy explanation is: it’s fun!

A third reason is the people. I’ve made wonderful life long friends working on open source. People who I clicked with instantly, who shared many of my own interests.. people not at all like me, who have challenged my thinking and exposed me to perspectives other than my own. People who have mentored me, and people I have mentored. I have spent most of my life in the same city.. having friends and colleagues all over the world was an unthinkable thought to me in my 20s, and now I’m discussing traveling to Brussels for FOSDEM in January and getting excited about reuniting with my overseas friends.

If I have a point here outside of reminiscing a bit, it’s that the people giving their free time to produce open source software are people, each with their own story. I live in a mid-sized city in the U.S. with my family. As I write this blog post I’m also chatting with my wonderful wife and best friend of 25 years, who is on her laptop researching techniques for working with children with autism. I have a son who is upstairs asleep, and most definitely stayed up too late playing on the computer last night. My daughter (currently in college) is off at the beach with her boyfriend. Our dogs and cats are all scattered around the room napping. Hi! I’m a real person, and not just a robot that produces software for free. Any time I spend on open source is time that I most assuredly could and probably should be spending on something else.

There is no such thing as “open source developers”. There are people, who write open source software, along with all the other things they do. When you are frustrated that some software doesn’t do what you need, or is hard to use, or has confusing or incomplete documentation, please remember this. Instead of inferring that the project maintainers are malicious elitests who don’t care about other people, consider another possibility: that they are generous people giving away their work to benefit others, but that they don’t have unlimited time to spend on it. Consider that people prioritizing other things in their life is ok. Consider that being angry that other people aren’t prioritizing what you want with their own time is perhaps being a bit entitled.

09 Oct 2016, 08:56

Problem: My Friend Pieter is Dead

Solution: Carry his ideas forward.

It was March of 2016 when I got the news from Pieter that his cancer was back, and that it was terminal this time. Shortly after that in April, he wrote “A Protocol for Dying” and announced it to the world. He lived much longer than was first expected, dying on October 4th on “his own terms” once cancer made it impossible for him to live on his own terms. I am left with grief, wonderful memories, and membership in an amazing community of software developers that Pieter built.

I want to write some about the ideals that Pieter held that I also share - most importantly I think, his fierce dedication to taking power away from gatekeepers, and his belief in the power of collective intelligence. Right now, I’m still too sad and tired to muster up the energy required - but I felt the need to write the bookend to my April post.

If you want to know what Pieter stood for, read his books. You can find them for free on the internet, but if you can afford to buy them please do - the money from the sales will help support his three children.

30 Apr 2016, 22:35

Problem: My Friend Pieter is Dying

Solution: There’s no solution.

My friend Pieter Hintjens is dying. I’m going to miss him. It’s a truth in life that sometimes we are presented with problems that cannot be solved. This is one of them. Pieter is now facing the ultimate unsolvable problem - the one that we will all eventually face. I’m facing the problem of navigating a storming sea of thoughts and emotions that I’m experiencing as a person who knows him, and values his presence in my life, and is facing losing that presence. None of these thoughts and emotions really fit into words for me. This is a constant and different problem in my life - words always feel too small to me and stringing them together into sentences is so linear, slow, and inadequate.

Pieter, I’ll always carry you with me. All of the colors and textures of the too few moments we got to spend together. Stumbling drunk through London within hours of conversation and laughter. Discussing ideas for ZeroMQ and thoughts about psycopathy in Brussels. Having the pleasure of introducing you to various friends. Music in the warehouse.

It was good, my friend. Every moment was good. Thank you for the moments shared. All of them are kept, and treasured. Your gestures will carry their momentum beyond you through those who understand what you were trying to say with ZeroMQ, and we’ll keep showing others.

It has been an honor and a rare pleasure.

19 Sep 2015, 19:13

Problem: We (Software Developers) Attack The Work and Energy Of Others

Solution: Be aware of this pattern and don’t participate in it.

There is a destructive pattern that I see often among free software developers. It expresses itself through attacks on the work of others. As far as I can tell, the impedus behind it is a desire to secure status by expressing the idea that the work of others is contemptable. People will enter into this pattern together, reinforcing the idea that they are in the high status group while deriding the efforts of others.

In my own experience observing this pattern, the targets of these attacks are usually people involved with communities around technologies that are relatively welcoming to novices. The fact that these communities have produced impressive feats of software requiring deep expertise and domain knowledge is ignored in favor of belittling technology choices. Often, the flaws of the technology used will be exaggerated, giving the impression that it is “impossible” to create anything of value using it. The attitude projected is usually one of aloof, jaded cynicism. The posture is usually “playing to the crowd”.

Unfortunately, this behavior is especially damaging when aimed at novices, as they may lack the foundation of confidence necessary to keep from internalizing the idea that the knowledge they have aquired so far lacks value. These attacks plant seeds of doubt and undermine the learning process.

Maximizing the set of problems solved by software and finding the most accurate solution for each problem requires diverse participants with differing (and often conflicting) perspectives. Attacks on novices as well as attacks on novel approaches to software development help reinforce monocultures which severely limit the inputs into collaborative processes, which in turn severely limits the potential outputs. This pattern is anti-social, and puts the ego and status of individuals over the goals of collaboration, problem solving, and knowledge creation.

Since human beings engage in patterns of behavior because the behavior is rewarded, the solution to this problem is to create high status organizations with cultures that do not reward these behaviors. As individuals a simple step we can take is to not participate in nor reward others who participate in this behavior, and to point it out for what it is when we see it.

There are too many problems that need to be solved to waste time and energy deliberately doing damage to individuals and communities who are actively engaged in problem solving.

19 Sep 2015, 17:31

Problem: Starting Each Post With 'Problem' May Seem Odd

Solution: Explain why we’re doing this.

One of my favorite free software communities that I participate in is the ZeroMQ project. This is a distributed organization of programmers working on a software ecosystem around ZeroMQ, and using it to solve different problems. We develop software within this organization using a process called the Collective Code Construction Contract. This is a software development process designed with the goal of maximizing the scale of community around a project. If you’re curious as to how well it’s working, I suggest reading “C4.1 - an Exothermic Process” by the ZeroMQ organization’s benevolent dictator, Pieter Hintjens.

One of the core practices we use within this methodology is limiting patches to code to the scope of solving a narrowly defined problem. Solving more than one problem with a patch is cheating. If a patch identifies a problem, solves it, and meets some basic style guidelines, it gets accepted. Additionally, the author of the patch is made a new maintainer within the organization. We do not believe in high barriers to entry to our organization, as it would be counter to the goal of maximizing the scale of the community.

I have found getting into the mindset of identifying individual problems and solving them minimally and accurately to be a wonderful tool for maintaining focus. So, I thought it would be fun to try this technique on my blog as well. If I’m expending the effort to write, there most be a reason I’m doing so. So, even if the problem I’m addressing is “I want to look smart about a subject”, or “my ego likes it when people read things I write”, I’m still going to identify the problem each post is addressing. I think it will be fun.

If you’d like to learn more about the C4 process (it’s actually the C4.1 process now, as we patched it) I highly recommend watching the talk “Building consistently good software with ordinary people”. It’s one of my favorite talks about collaboration.

19 Sep 2015, 11:16

Problem: There Are No Posts

Solution: Write a ‘Hello World’ post.

Greetings, and welcome to the Oldschool System blog. Thank you so much for taking the time to stop by here and read my thoughts. I’m flattered, and will endeavor to write things that are worth your time.

The sorts of things you are most likely to find here are:

  • Information about the free software projects I participate in
  • Examples of how to do things I find fun with programming languages
  • Thoughts on the culture(s) that have formed around software engineering
  • Political musings, mostly around the intersection of my craft and politics

If these are things that might interest you for some reason, check in now and then. If these are things that don’t seem very interesting, no offense taken, and enjoy the rest of your journey.