Composing Software Systems

*
Accepted Session
Short Form
Scheduled: Wednesday, June 22, 2011 from 4:45 – 5:30pm in B204

Excerpt

If you can't reproduce your work reliably then you can't maintain it. You may get by for a while with ad-hoc build/release/deployment processes, but sooner or later they'll bite you. We'll present a new practical approach to assembling both software products and installed systems, drawing inspiration from sources including the functional programming community, commercial software projects, large IT deployments, and Linux distributions like Debian.

Slides available at http://apters.com/osbridge2011.pdf

Description

Many tools have been developed over the years to automate different aspects of software assembly:

  • In 1977, Stuart Feldman released `make`, which has had such a long-lasting impact on the software industry that he received the 2003 ACM Software System Award for it.
  • In 1993, Mark Burgess began work on cfengine, one of the first tools for automating the configuration of a large number of computers. (Today, Puppet is better known in that space.)
  • In 1998, Steve Traugott and Joel Huddleston published “Bootstrapping an Infrastructure”, arguing that networks should be treated like ‘one large “virtual machine”, rather than as a collection of individual hosts.’ In support of this view they relied on tools like version control and `make`, familiar to software developers.

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:

  1. Software assembly and system assembly require fundamentally the same processes, just at different scales.
  2. 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.

Slides available at http://apters.com/osbridge2011.pdf

Speaking experience

Speakers

  • Jamey is climbing the halls

    Biography

    Jamey Sharp was placed on Ritalin, briefly, in fifth grade. His interests and activities have been varied ever since. His biggest projects have been the Portland State Aerospace Society, a student rocketry club at Portland State University; XCB, a new low-level binding to the X protocol, in the process of replacing Xlib; and Comic Rocket, because his other projects didn’t leave him enough time to read his favorite webcomics without tool support.

    Jamey’s interests span computer science fields including cryptography, combinatorial search, compilers, and computational complexity; systems-level programming, such as file format and network protocol implementations, Linux kernel development, and boot-loader hacking; computer architecture and its impact on software design; and functional programming, preferably in Haskell.

    Sessions

      • Title: Composing Software Systems
      • Track: Cooking
      • Room: B204
      • Time: 4:455:30pm
      • Excerpt:

        If you can’t reproduce your work reliably then you can’t maintain it. You may get by for a while with ad-hoc build/release/deployment processes, but sooner or later they’ll bite you. We’ll present a new practical approach to assembling both software products and installed systems, drawing inspiration from sources including the functional programming community, commercial software projects, large IT deployments, and Linux distributions like Debian.

        Slides available at http://apters.com/osbridge2011.pdf

      • Speakers: Jamey Sharp, Josh Triplett
  • Face 100x100

    Biography

    Josh Triplett is a PhD student at Portland State University and a Free and Open Source Software hacker. Josh is involved in research on relativistic programming and advanced synchronization techniques for highly parallel systems. Josh builds and launches Linux-powered rockets with the Portland State Aerospace Society, and hacks on numerous other projects . Lately, Josh does a lot of his hacking in Haskell.

    Sessions

      • Title: Composing Software Systems
      • Track: Cooking
      • Room: B204
      • Time: 4:455:30pm
      • Excerpt:

        If you can’t reproduce your work reliably then you can’t maintain it. You may get by for a while with ad-hoc build/release/deployment processes, but sooner or later they’ll bite you. We’ll present a new practical approach to assembling both software products and installed systems, drawing inspiration from sources including the functional programming community, commercial software projects, large IT deployments, and Linux distributions like Debian.

        Slides available at http://apters.com/osbridge2011.pdf

      • Speakers: Jamey Sharp, Josh Triplett