Bob is a build system with Nix as it's package manager to enable hermetic builds.
Designed to reduce the complexity of microservice- and full-stack development it takes care of executing local development environments and allows rebuilding and restarting when necessary. In case of multi-repo setups, bob provides tooling on top of git to manage repository spanning changes all together.
Why another build system?
The complexity of multi-service cloud based applications makes it difficult for developers to build and manipulate them efficently on localhost. Rebuilding takes long and the cognitive overload to know when to build what can be overwhelming.
Until now bazel, pants and nx were the only viable options to use, with the shortcomming of adding another layer of complexity for the build process and a very painful adoption process for existing projects.
Bob takes another approach. By adjusting it's behaviour more like a task runner it's easier to get started while keeping all benefits of cached builds.
Faster builds due to hashed inputs and a cache for outputs.
Rebuild on change to avoid unnecessary rebuilds.
Build Isolation No more "Works on My Machine".
Hermetic Shell allows to define builds with plain sh and enables build isolation together with Nix.
Nix Package Manager support to easily jump between different versions of a programming language.
Development Environment: Run binarys together with compose files and depend on build tasks.
Terminal UI: Control, inspect and restart a development environment from a TUI.
Mono & Multi-Repo support.
Written in Go with performance & usability in mind.