There’s a lot of work going on at the moment around how to ensure building your development environment for a any given project can be made reliable and reproducible. Much of the emphasis has been around using tools like Vagrant or Docker etc. in order to create a virtual machine/container that your dependencies get installed into. In fact at Talis we use a Puppetised Vagrant setup to ensure our local development environments mirror our live environments as closely as possible.
I was interested to read about GNU Guix which is a slightly different solution to the same problem; which comes with its own set of challenges, it’s essentially a package manager that creates a shell running your dependencies
I’d be interested to hear how others are solving this problem?