Please note:The SCons wiki is now restored from the attack in March 2013. All old passwords have been invalidated. Please reset your password if you have an account. If you note missing pages, please report them to Also, new account creation is currently disabled due to an ongoing spam flood (2013/08/27).

Ideas for Google Summer of Code 2006


SCons is a truly unique tool, used by many free software projects and by lots of companies. As such, it is important to give students the opportunity to learn its internal architecture and to let them interact with developers to improve it.

Learning Opportunities for Students

Here is a short list of what students can learn by working on SCons:

Ideas for Google Summer of Code 2006

The following is a list ideas for Google's Summer of Code 2006:

Better Build Performance

Like other build tools, SCons creates a directed acyclic graph (DAG) identifying the dependencies. Unlike other build tools, Scon's DAG can be modified based upon decisions made by other nodes. Moreover, SCons can drive multiple worker processes for building. As a result, the algorithm (and the corresponding code) for evaluating the DAG is complex and difficult to understand; it is best described as a hybrid topological sort with warts. And it can perform very poorly; there are cases where the dispatcher is compute-bound and yet workers are starved.

The intent of this project is to evaluate algorithms to see if any will perform better. The deliverable will be a testbed for running algorithms that will report on their performance. It is expected that at least three algorithms will be implemented for testing: the current algorithm, a new algorithm based upon a dynamic topological sort, and an algorithm using a Linda tuplespace.

A secondary focus of this task is to implement a way of efficiently saving and restoring DAGs. We will want to be able to capture DAGs after they have been created by a normal SCons run, then evaluate them in the testbed. This will give us access to many DAGs for testing, so a scheme that minimizes saved size is preferred (although not at the cost of performance).

If a better algorithm is identified and there is time left on the project, the algorithm will be transcribed for incorporation into SCons itself.

The partial list of tasks (the student should suggest a full set):

[parallel programming, threading in Python, complexity analysis, performance analysis, data visualization]

Mentor: GregNoel

Adding Autotools Features

This scheme for adding Autotools functionality to SCons is just the thinnest of outlines, but it shows the pieces that will be needed. It represents many man-months of labor, but the intent is that this outline is the skeleton where individual organs can be attached.

To be an organ donor, your project proposal will need a lot more detail than in the outline. Here's a partial list of what a proposal should contain:

Mentor: GregNoel

Add Support for Running Unit Tests from SCons

Timing and Visualization Infrastructure

Logging Framework

Provide release and packaging functionality

SummerOfCodeIdeas (last edited 2013-08-27 13:10:48 by GaryOberbrunner)