https://github.com/shanahanjrs/dro

The motivation

I wanted to build Dro for a few reasons:

Practice Golang

I wanted to practice Golang. For the past ~15 years I’ve written mostly Python, with some Java and PHP mixed in there.

That’s all great but with Go on the rise and reaching what I would consider a “mature state” as far as languages are concerned I figured it was a good idea to be fluent in a statically typed, compiled language that wasn’t Java.

As I start seeing more and more job listings with Golang listed I figured it was time to dive in.

What to work on

Every programmer knows this feeling; You have the urge to build something, but don’t know what.

I sat on it for a few days until I ran into an issue; I was on one of my servers that I use to host Pathfinder which runs on Debian and tried to do this:

$ pacman -S git

That obviously didn’t work and then the idea for Dro was born.

Where the project is at today

So I decided to start with the package managers I use everyday.

On any given day I use:

  • brew on my laptop
  • dnf on various servers
  • apk inside Alpine containers
  • pacman on my other laptop
  • zypper on my desktop

Once I decided on a list of which package managers I use often, I started mapping similar commands:

dro install == brew install == apk add etc

After some optimizations it compiles down to a 1.5MB binary file which i add to Git so it’s version controlled.

Then I designed a quick and easy way to install it without the use of a package manager (because that would defeat the point).

curl -fsSL "https://raw.githubusercontent.com/shanahanjrs/dro/HEAD/scripts/install.sh" | sh

And I use it almost every day, and now no matter which system I’m on, I just use dro and I know it’s going to work.