Please see the disclaimer.

Introduction

I am a programmer, and I approach software as such most of the time.

On occasion, however, I approach it like an ordinary user would, and every time I do, I learn something. This is one of those things.

Lesson

One lesson I learned recently is this: ease matters.

This goes for everything.

If it’s too hard to even start, the user gives up.

If it’s too hard to get the software to do what the user wants done, the user gives up.

If it’s too hard to learn how to use the software, the user gives up.

If it’s too hard to learn how to use the software efficiently, the user gives up.

If the software makes the user care about something that the user does not want to care about, the user gives up.

Experience

I learned this lesson trying to get the awesome window manager to work for me. I gave up and switched back to GNOME.

However, because of stupidity from the GNOME board, I got the extra motivation I needed to keep trying, and now, I happily run awesome only.

I also learned this lesson while trying to learn how to replace systemd with s6.

I eventually gave up and just started using OpenRC, Gentoo’s default.

By all accounts, s6 is much better than systemd. However, the creator, skarnet insists that s6 is “mechanism, not policy” and goes out of his way to see that it is just that: mechanism.

But that means that users need to figure out how to get s6 to properly boot a Linux machine on top of making sure all of their daemons work.

I am sure skarnet could easily create a default Linux boot sequence for s6. In fact, he wrote a tool to help users do that.

While that’s great, that turns off a lot of users because often, they only care about process supervision, not machine boot.

In other words, I believe skarnet would do well to give users a default policy.

This does not mean that s6 can’t allow the policy to be changed! It could still be controllable by the user, but it could wait until the user cares about it.

For all of skarnet’s hate of systemd, this is why systemd has won and continues to win: it lets users only care about the things they care about.

Of course, when systemd breaks, that illusion evaporates, but by then, the user is already stuck.

Conclusion

The lesson is simple: make things easy for users.

This can mean many things, but start with making it easy to:

  • Get started.
  • Do basic tasks.
  • Ignore aspects that users may not care about.

I can’t promise people will come running, but I think that those things may stop a lot of them from running away.

So apply this lesson and make your software better.