Currently, Cronally does not have a web UI. Instead, we chose to focus on a CLI for a number reasons:
- Quicker development
- More stable MVP
- Easier to use
- Fits into end-user CI/CD model
We considered a few different languages for development, including Python and Ruby, but ultimately chose Go.
Go provides us with some unique features that we really value.
Static binaries
By default, Go creates a static binary. At the expense of larger filesizes, a Go binary can run on virtually any architecture it was compiled for without worrying about a shared library being outdated or a Python module being too old.
Static binaries also eliminate client-side dependencies. No gems to install and you won’t see a single pip install
in our docs.
Cross-compilation
Building architecture-specific versions of a binary simply requires Go to be built with each particular OS/architecture combination that you desire. Afterwards, the native Go toolset will produce a binary based on GOOS
and GOARCH
environment variables you provide.
Building our CLI for OS X looks like this: GOOS=darwin go install [package]
CLI framework
There’s no lack of CLI frameworks for most modern languages, and the same is true for Go. Using https://github.com/codegangsta/cli gives us a simple API for defining commands and options, and it also generates nice help text.
Back-end compatibility
Cronally’s back-end is written entirely in Go, so it was a natural transition to write our CLI in the same language.
Interested in Cronally? Check it out!