When I do my ESR-the-famous-geek road show, I get two kinds of questions: the public ones from my auduence, and the private ones from people who buttonhole me afterwards because they politely don’t want to burden the audience with their particular concerns. Of these, the single most common one is probably “How do I attract developers to my project?”
Last Wednesday I was giving a talk at University of Pennsylvania, which I do once in most years because it’s near me and one of the professors there, Dr. David Matuszek, is an old friend who likes to have me in once a year as a treat for his students.
One of his colleagues approached me with the familiar question. There isn’t a good general answer to this one, because how you attract developers depends in subtle and complicated ways on which developers you actually want. But this particular pitch interested me because it could be part of a significant change in the open-source tools infrastructure that I see coming down the pike.
The Free Software Foundation’s Gnu Compiler Collection, and the toolkit around it (ld, gdb, etc.) pioneered open-source compiler technology and has served our community well for a quarter century. But it isn’t news to anyone that the GCC codebase has been getting old, tired, and sclerotic. The efforts required to fit new compiler technology onto an old framework have required increasingly heroic effort for diminishing returns. FSF policy decisions aimed at hindering reuse of its code by exclusively proprietary add-ons haven’t helped matters.
There’s been an upsurge of interest in alternatives to GCC as a workhorse compiler. An increasing amount of that interest has been focused on LLVM, and while the LLVM folks won’t talk about wanting to knock GCC off its perch, they are looking ever more like a competitive threat.
Now comes Softbound, an LLVM add-on that aims to produce “hardened” binaries that are rendered immune to buffer overflows by a compile-time transformation of generated LLVM code. This could have very large implications for the quality and security of C code,
and it’s a capability GCC cannot offer.
The project lead, Dr. Milo Martin, tells me he has a proof-of-concept that is not ready for production use. He needs developers to move it from lab demo to production tool. He’d prefer to do the whole thing in open source, but is considering any path to getting it done, including booting up a company around a proprietary version.
He’s even proposed a clever tactic that is sure to be controversial: use the new compiler to create “value-added” binaries by compiling open-source programs to create “hardened” versions that protect against buffer overflow attacks. The compiler would remain closed source and the company would charge for the copyrighted binaries. I told Dr. Martin that I think this end-run of the GPL might actually work legally and technically, but that there’d be an open-source community mob with pitchforks and peasants at his castle door if he tried it.
So, here’s my attempt at heading off any such dire confrontation. If you’re interested in compiler technology, formal methods, or security, please look at Softbound and consider joining up to help so the technology won’t wither on the vine or have to be taken proprietary.
That is all.
UPDATE: Oops: I’ll investigate GCC’s capabilities for bounds-checking.