Many tools have been developed over the years to automate different aspects of software assembly:
The pace of development has continued increasing, and there are now a bewildering array of choices for process automation tools. Unfortunately, most have missed two key insights:
# Software assembly and system assembly require fundamentally the same processes, just at different scales.
# If you can't reproduce your build process reliably, then you can't maintain it.
We'd like to encourage all developers and system administrators to follow good, reproducible, engineering practices, if for no other reason than that, frankly, we don't like it when your stuff breaks while we're using it. You may have better reasons, though: If you're managing a large-scale IT setup or a software shop with long-term support or regulatory requirements, process failures mean spectacular recovery costs. If your data center caught fire tomorrow, how long would it take you to bring up a new one? If your biggest customer reports a bug in a ten-year-old version of your software, would you even be able to compile it today?
In this talk we'll present the unmet needs we've observed, connect them with experience from non-obvious sources such as functional programming research, and share our proposed solutions.
21st–24th June 2011