Tutorial Requirements

Please note: UKUUG cannot accept responsibility for any damage or loss to delegate equipment during the course of the event.

SCons (Russel Winder)

Abstract: This tutorial is about SCons, a Python-based replacement for Make, and effectively the whole Autotools chain.

Make was a revolution and a revelation when it was created in 1977. However the needs of build have changed since then. In the mainstream C/C++ world Autotools and CMake have grown up as Makefile management systems. In the Java world use of Make has given way to Ant and Maven.

A new revolution is happening and that is the use of dynamic programming languages as the basis for build DSLs (domain specific languages). In the C/C++/Fortran/LaTeX world, SCons based on Python is beginning to be seen as the natural replacement for Make. In the Java world, Gradle based on Groovy is replacing Ant and Maven.

This tutorial focuses on SCons and shows why many large organizations (for example id Games, and Intel) are using it in preference to any other build system.

In the morning we will look at the SCons basics, and possibly quickly review Python for those not as familiar with Python. The focus will be on C and C++ projects, but Flex, Bison, Fortran, Haskell and OCaml may make an appearance. LaTeX certainly will.

The afternoon will be devoted to more advanced aspects focusing mostly on the sorts of techniques and idioms that having a build DSL based on a dynamic programming language bring that are not possible using Make-based systems.

Bio: Russel Winder is a consultant, analyst, and author. He is a founding partner of Concertant LLP, a consultancy partnership focusing on all things parallel, concurrent and multicore. He is a director of It'z Interactive Ltd a company looking at all things dynamic, programming and buildy.

Russel was an academic for many years and during that time wrote text books on C++ programming, Java programming, and Python programming. He left academia for the interesting world of running startups and obtaining venture capitalist funding. For a number of reasons none of the ventures succeeded as had been planned.

Since then Russel has been active in the Groovy development community and wrote the Gant build framework. This gaven rise to the Gradle project, a Groovy replacement for Maven and Ant, which Russel is an active member of. Russel is also an active user of and contributor to SCons. His main use is for working with LaTeX rather than C or C++, but he has the odd programming project that uses SCons as well.

Having spent a lot of time researching parallel programming as an academic in the 1980s and 1990s, the emergence of multicore processors has meant a return to thinking about parallelism for Russel. As well as starting Concertant LLP to provide consultancy and analyst services in and around parallelism and multicore, he has started initiatives in the Groovy (the GPars project) and Python world to allow these languages to be coordination languages for parallel computations. SCons is a mighty good tool for all the build issues, as is Gradle.

Tutorials (last edited 2010-03-16 21:50:00 by 81)