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.