Student Application Template

Hello; my name is Robert Grant Harwood, though most systems know me as rharwood.

My primary contact email is rharwood@andrew.cmu.edu, and I can also be reached on IRC (on freenode and foonetic as frozencemetery), or on XMPP as frozencemetery@club.cc.cmu.edu. My website is http://www.club.cc.cmu.edu/~rharwood/ where my gpg and ssh public keys can be found. I am located in Boston, MA (so US Eastern time), though my schedule is flexible for communication purposes. Currently, I am a student at Carnegie Mellon University, so I am in Pittsburgh, PA, during the school year.

I am a third-year candidate for a BS in Computer Science with minor in Discrete Math and Logic. I am willing and eager to do whatever programming is necessary to accomplish this project, though I am more interested in creating a system that can outlast the summer.

Most recently I have been involved in the ATS programming language project ( http://www.ats-lang.org/ ) as an active contributor. However, my security research through Carnegie Mellon's hacking group ( http://www.pwning.net/ ) often places my code to other projects into the realm of bug reporting and patching.

This project has been given the title "clang support for build services" on the wiki.

The goal of this project is to allow support for the clang compiler in place of gcc/g++ in build services. To this end, I suggest a generalized interface for setting a C compiler in the build environment that supports clang, gcc, etc., much like the CC functionality.

In the short term, my suggestion is to extend the clang.debian.net system to include a new column indicating autobuild support for the alternate compiler (i.e., whether it builds with both, where errors occur that don't normally, etc.).

This will most likely require a preprocessor for the package to create a clang-ified version (generalize to any compiler), and then processing of the generated errors. Error processing I beleive to be the simpler of the two parts; determining what can and cannot work for compiler swaps will be much more intricate.

This project intends to support automated building of Debian with clang.

By creating an interface for compilers to move in, we are able to not only allow the advantages of clang in the present (such as additional error checking to gcc), but also plan for future compilers and additionally have the ability to transfer the build system easily from one to another.

Functioning interface to switch between gcc and clang that can be easily added (automated fashion) to a package, as well as integration into the existing Debian build system.

April 6: Submission of this document April 7-20: Mentor review April 24-May 21: Mentor meeting, existing documentation review May 22-May 30: Determining what needs to be modified, charting changes that need to be made May 30-July 26: Interface building July 26-July 29: Defcon 20 July 29-August 13: Integrate the system back into the build system if it has diverged, otherwise work on autmation

Built in to the schedule.

Built in to the schedule.

The short answer is that it's strong, working, and open. Debian is the most secure, stable, and maintainable operating system in my experience, which is why it runs on all of the boxen I maintain. I think that improved error detection will increase both security and overall stability of the system, and that modularity of critical components ensures that Debian will remain wonderful for the future.

I will be applying for other projects since several others are applying for this one.

Thank you for your consideration.

--Robert G. Harwood Student, Carnegie Mellon University, Computer science System administrator, CMU Computer Club email: rharwood@andrew.cmu.edu email: rharwood@club.cc.cmu.edu cell phone available on request