Releasing Your Code as Open-Source: What Do You Change?

I've heard it a dozen times: "We're going to release this app as open source, as soon as we clean it up." It's always made me wonder what, exactly, needs to be cleaned up, and what it looked like beforehand. The implication is that the "Before" picture is something of a mess.

Some part of that "cleaning up" surely has little to do with code, and more to do with getting the company lawyer's permission to release the software (i.e. checking licenses, and the other things that reasonable companies do to protect themselves).

More often, I suspect, there's a real difference between the code you develop in-house or for your own purposes, and the code that others will see. In other words: you sure don't want to do anything bone-headed in public. So you tighten the code a little better, you're sure to verify that the documentation is accurate, and, in all likelihood, the code you release as open source is tested far more thoroughly than is the private or proprietary software.

But that's just my guess, although it's a guess based on conversations with people who have spent long years as consultants (that is, getting paid to look at lots of code inside a lot of companies) and who have also been involved in open-source communities. In one of those developer's words, "Open source code really is better quality, just because everyone knows it's going to be looked at."

OSCON 2009
However, I'm not sure if that's true for everyone, and in particular if it's true for you. Some people work the same way no matter who they think is watching. A woodworker friend of mine, who builds hammered dulcimers for a living, admitted that her sanding and finish-work inside the dulcimer (which no one will ever see, unless someone has to rebuild a broken instrument) is just as detailed and, well, finished, as she does for the outside. Debbie explained that someone else might look inside the musical instrument one day, and she doesn't want to be ashamed. That's just the way she is—and I've known developers with the same attention to detail. (Which is a good thing, in our business, since so many "throw away" applications end up as production software, usually to our great surprise.)

So I'm curious: When you're going to release software as open source, do you treat it differently? In what way?