By using this site, you agree to the Privacy Policy and Terms of Use.
Accept
World of SoftwareWorld of SoftwareWorld of Software
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Search
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
Reading: “It Works on my Machine” Isn’t an Excuse—Test Your README Like a User | HackerNoon
Share
Sign In
Notification Show More
Font ResizerAa
World of SoftwareWorld of Software
Font ResizerAa
  • Software
  • Mobile
  • Computing
  • Gadget
  • Gaming
  • Videos
Search
  • News
  • Software
  • Mobile
  • Computing
  • Gaming
  • Videos
  • More
    • Gadget
    • Web Stories
    • Trending
    • Press Release
Have an existing account? Sign In
Follow US
  • Privacy
  • Terms
  • Advertise
  • Contact
Copyright © All Rights Reserved. World of Software.
World of Software > Computing > “It Works on my Machine” Isn’t an Excuse—Test Your README Like a User | HackerNoon
Computing

“It Works on my Machine” Isn’t an Excuse—Test Your README Like a User | HackerNoon

News Room
Last updated: 2025/11/04 at 12:15 PM
News Room Published 4 November 2025
Share
“It Works on my Machine” Isn’t an Excuse—Test Your README Like a User | HackerNoon
SHARE

If you’ve spent any time using Linux, you’ll be used to installing software like this:

The README says to download from this link. Huh, I’m not sure how to unarchive .tar.xz files – guess I’ll search for that. Right, it says run setup.sh hmm, that doesn’t work. Oh, I need to set the permissions. What was the chmod command again? OK, that’s working. Wait, it needs sudo. Let me run that again. Hang on, am I in the right directory? Here it goes. What, it crapped out. I don’t have some random library – how the hell am I meant to install that? My distro has v21 but this requires <=19. Ah, I also need to upgrade something which isn’t supplied by repo. Nearly there, just need to compile this obscure project from SourceForge which was inexplicably installed on the original dev’s machine and then I’ll be good to go. Nope. Better raise an issue on GitHub. Oh, look, it is tomorrow.

As a developer, you probably don’t want to answer dozens of tickets complaining that users are frustrated with your work. You thought you made the README really clear and – hey! – it works on your machine.

There are various solutions to this problem – developers can release AppImages, or Snaps, or FlatPaks, or Docker or whatever. But that’s a bit of stretch for a solo dev who is slinging out a little tool that they coded in their spare time. And, even those don’t always work as seamlessly as you’d hope.

There’s an easier solution:

  1. Follow the steps in your README
  2. See if they work.
  3. …
  4. That’s it.

OK, that’s a bit reductive! There are a million variables which go into a test – so I’m going to introduce you to a secret zeroth step.

  1. Spin up a fresh Virtual Machine with a recent-ish distro.

If you are a developer, your machine probably has a billion weird configurations and obscure libraries installed on it – things which definitely aren’t on your users’ machines. Having a box-fresh VM means than you are starting with a blank-slate. If, when following your README, you discover that the app doesn’t install because of a missing dependency, you can adjust your README to include apt install whatever.

OK, but how?

Personally, I like Boxes as it gives you a simple choice of VMs – but there are plenty of other Virtual Machine managers out there.

Pick a standard OS that you like. I think the latest Ubuntu Server is pretty lightweight and is a good baseline for what people are likely to have. But feel free to pick something with a GUI or whatever suits your audience.

Once your VM is installed and set up for basic use, take a snapshot.

Pop up showing a snapshot of a virtual machine.

Every time you want to test or re-test a README, revert back to the original state of your box. That way you won’t have odd half-installed packages laying about.

Your next step is to think about how much hand-holding do you want to do?

For example, the default Debian doesn’t ship with git. Does your README need to tell people to sudo apt install git and then walk them through configuring it so that they can git clone your repo?

Possibly! Who is your audience? If you’ve created a tool which is likely to be used by newbies who are just getting started with their first Raspberry Pi then, yeah, you probably will need to include that. Why? Because it will save you from receiving a lot of repeated questions and frustrated emails.

OK, but most developers will have gcc installed, right? Maybe! But it doesn’t do any harm to include it in a long list of apt get … anyway, does it? Similarly, does everyone know how to upgrade to the very latest npm?

If your software is designed for people who are experienced computer touchers, don’t fall into the trap of thinking that they know everything you do. I find it best to assume people are intelligent but not experienced; it doesn’t hurt to give slightly too much detail.

The best way to do this is to record everything you do after logging into the blank VM.

  1. Restore the snapshot.
  2. Log in.
  3. Run all the commands you need to get your software working.
  4. Once done, run history -w history.txt
  • That will print out every command you ran.
  1. Copy that text into your README.

Hey presto! You now have README instructions which have been tested to work. Even on the most bare-bones machine, you can say that your README will allow the user to get started with your software with the minimum amount of head-scratching.

Now, this isn’t foolproof. Maybe the user has an ancient operating system running on obsolete hardware which is constantly bombarded by cosmic rays. But at least this way your issues won’t be clogged up by people saying their install failed because lib-foobar wasn’t available or that ./configure had fatal errors.

A great example is the Opus Codec README. I went into a fresh Ubuntu machine, followed the readme, ran the above history command, and got this:

sudo apt-get install git autoconf automake libtool gcc make
git clone https://gitlab.xiph.org/xiph/opus.git
cd opus
./autogen.sh
./configure
make
sudo make install

Everything worked! There was no missing step or having to dive into another README to figure out how to bind flarg 6.9 with schnorp-unstable.

So that’s my plea to you, dear developer friend. Make sure your README contains both the necessary and sufficient information required to install your software. For your sake, as much as mine!

Wait! You didn’t follow your own advice!

You’re quite right. Feel free to send a pull request to correct this post – as I shall be doing with any unhelpful READMEs I find along the way.

Sign Up For Daily Newsletter

Be keep up! Get the latest breaking news delivered straight to your inbox.
By signing up, you agree to our Terms of Use and acknowledge the data practices in our Privacy Policy. You may unsubscribe at any time.
Share This Article
Facebook Twitter Email Print
Share
What do you think?
Love0
Sad0
Happy0
Sleepy0
Angry0
Dead0
Wink0
Previous Article Top car brand gets go ahead for ‘hands off’ AI motorway driving & it’s NOT Tesla Top car brand gets go ahead for ‘hands off’ AI motorway driving & it’s NOT Tesla
Next Article Google Maps can tell Polestar 4 drivers when to merge lanes Google Maps can tell Polestar 4 drivers when to merge lanes
Leave a comment

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Stay Connected

248.1k Like
69.1k Follow
134k Pin
54.3k Follow

Latest News

Bill Gates defends call for climate debate refocus
Bill Gates defends call for climate debate refocus
News
How I Used ChatGPT to Make ,000 on YouTube
How I Used ChatGPT to Make $15,000 on YouTube
Computing
Every other phone misses what makes iPhone photos feel alive
Every other phone misses what makes iPhone photos feel alive
News
FBI Warns of Criminals Posing as ICE, Urges Agents to ID Themselves
FBI Warns of Criminals Posing as ICE, Urges Agents to ID Themselves
Gadget

You Might also Like

How I Used ChatGPT to Make ,000 on YouTube
Computing

How I Used ChatGPT to Make $15,000 on YouTube

6 Min Read
A Practical Guide to Scaling Real-Time Video Infrastructure | HackerNoon
Computing

A Practical Guide to Scaling Real-Time Video Infrastructure | HackerNoon

15 Min Read
Will AI Influencers and Brand Bot Rule Social Media Marketing in 2026? | HackerNoon
Computing

Will AI Influencers and Brand Bot Rule Social Media Marketing in 2026? | HackerNoon

0 Min Read
A Theoretical and Practical Framework for Differential Machine Learning in Derivative Pricing | HackerNoon
Computing

A Theoretical and Practical Framework for Differential Machine Learning in Derivative Pricing | HackerNoon

9 Min Read
//

World of Software is your one-stop website for the latest tech news and updates, follow us now to get the news that matters to you.

Quick Link

  • Privacy Policy
  • Terms of use
  • Advertise
  • Contact

Topics

  • Computing
  • Software
  • Press Release
  • Trending

Sign Up for Our Newsletter

Subscribe to our newsletter to get our newest articles instantly!

World of SoftwareWorld of Software
Follow US
Copyright © All Rights Reserved. World of Software.
Welcome Back!

Sign in to your account

Lost your password?