Will Code For Beer

Paw Prints: Writings of the maddog
People ask me why programmers write code and give it away “for free”. There are many reasons, but one I often give is that a programmer might end up at a conference and a grateful user of their code might “buy them a beer, or even a dinner.”
It was February or March of 1995, and the port of Linux to the Alpha processor was well underway. In talking with some of the developers over the Internet, I started to hear rumors that the Alpha port would not have “shared libraries”, but instead would have statically-linked binaries.
For those of you who do not understand the ramifications of statically linked binaries, it means that every program has all of the libraries it needs to run linked as one blob on the disk and even in the main memory of the computer with the rest of the code that the programmer wrote.
In the early days of programming this was not as horrible as it sounds, because few libraries existed that could really be “shared”, but as operating systems became more sophisticated and included math libraries, graphics libraries, security libraries and a variety of other functionality that could be shared between programs, the duplication of this code thousands of times on an individual system by linking it into every program took up huge amounts of disk space and additional memory space that became intolerable.
Additionally without shared libraries every time you issued a patch for the library you had to re-link and redistribute all the applications that used it. Imagine having to re-distribute an entire distribution just because you fixed a bug in a basic library. This would be unheard of today.
Statically linked libraries were so horrible that strange techniques were used to reduce their impact. Several programs were statically linked together to “share” the library code (with different entry points) even if the programs did not share much other functionality.
Statically linked binaries for general purpose systems had become evil.
Ultrix, an operating system created by Digital Equipment Corporation of code originally from BSD 4.1c, never had shared libraries. We had hired a group of fifteen engineers to develop shared libraries for Ultrix, but they kept getting pulled onto other projects, so for about seven years Sun Microsystems would consistently beat us up for the fact that Ultrix did not have shared libraries. It became a chant of their Marketing group, and naturally I was a little sensitive to the issue.
So I was not happy to hear that my little baby, Alpha Linux, would not have shared libraries even though Intel Linux had them. And when I am not happy, I let people know.
One day I was sitting at my desk and I received an email message that said something like this:
“Dear Mr. Hall,
I heard that you are upset that Alpha Linux will not have shared libraries. If you send me some documentation on the Alpha compilers, I will see if I can create shared libraries for you.”
Well, I had never heard of this person, and I doubted that they would be able to do it, but sending documentation to them was easy, as it was all electronic. So I sent it off.
A couple of weeks later I received another email message:
“Dear Mr. Hall,
Shared libraries are coming along nicely, but I would like to talk to someone in your compiler group so I can make sure that the object modules created by the compiler will match up with the object module formats that Digital's compilers use.”
Not willing to believe my eyes, and still questioning if this could be possible, I went to the head of our compiler group at Digital and asked him if he would talk with this voiceless person over email.
A couple of days later the compiler group leader came over to my desk and said:
“Who was that guy? He was one of the most knowledgeable people I ever talked with about compilers!”
I told him that I did not know, he was “someone working on the Alpha Linux project”.
A few days later another email occurred:
“Dear Mr. Hall,
Shared libraries for Alpha Linux are done, and the code is in the pool.”
I could not believe my eyes.....fifteen engineers....seven years, no shared libraries for Ultrix. One guy, five weeks, shared libraries for Alpha Linux....what is wrong with this picture?
Now as I said, there were mitigating circumstances for Ultrix, and I do not “blame” the engineers that were at Digital, but I still was holding my breath until Alpha Linux shipped, in November of 1995.
Later that year, or perhaps early in 1996 I was at a USENIX conference, and of course I was showing off Alpha Linux. Being active in the USENIX organization, and helping to coordinate Digital's Hospitality Suite for that conference, I was running around the hotel trying to get things set for that night.
A young guy (he looked about fifteen years old) with long blond hair and wearing a tie-dye shirt, shorts and sandals waved at me as I ran past. Being a friendly guy, I waved back, but kept on running. Later, as I returned, the same young man (now joined by another college-aged person in white T-shirt, shorts and sandals) waved again, and once again I waved back but kept on moving.
On my third pass the young man stood in front of me and said:
“Mr. Hall, I just wanted to thank you for doing me a favor.”
“What favor was that?”, I asked.
“You sent me some documentation one time.”
“Documentation....” I mused, “I don't remember....OH MY GAWD! YOU ARE MR SHARED LIBRARIES! Do I have news for you! You are NEVER going to pay for any beer or food in my presence EVER AGAIN!”
As it turns out he was over the legal drinking age (he only looked like he was fifteen), and for the rest of the conference every time he tried to pay for drink or food I was there, and I picked up the tab. This was not Digital Equipment Corporation picking up the tab...it was me.
Several times after that I would see him at various Linux events, and every time I saw him trying to buy some drink or food, I would intervene and buy it for him.
Who is this person? His name is Richard Henderson. At that time he was a student at Texas A&M University. Eventually he worked for Cygnus, and now works for Red Hat.
It has been several years since I have seen Richard, but if he were to appear in front of me today, I would still buy him food and drink.
Carpe Diem!
comments powered by DisqusIssue 269/2023
Buy this issue as a PDF
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Find SysAdmin Jobs
News
-
Kubuntu Focus Announces XE Gen 2 Linux Laptop
Another Kubuntu-based laptop has arrived to be your next ultra-portable powerhouse with a Linux heart.
-
MNT Seeks Financial Backing for New Seven-Inch Linux Laptop
MNT Pocket Reform is a tiny laptop that is modular, upgradable, recyclable, reusable, and ships with Debian Linux.
-
Ubuntu Flatpak Remix Adds Flatpak Support Preinstalled
If you're looking for a version of Ubuntu that includes Flatpak support out of the box, there's one clear option.
-
Gnome 44 Release Candidate Now Available
The Gnome 44 release candidate has officially arrived and adds a few changes into the mix.
-
Flathub Vying to Become the Standard Linux App Store
If the Flathub team has any say in the matter, their product will become the default tool for installing Linux apps in 2023.
-
Debian 12 to Ship with KDE Plasma 5.27
The Debian development team has shifted to the latest version of KDE for their testing branch.
-
Planet Computers Launches ARM-based Linux Desktop PCs
The firm that originally released a line of mobile keyboards has taken a different direction and has developed a new line of out-of-the-box mini Linux desktop computers.
-
Ubuntu No Longer Shipping with Flatpak
In a move that probably won’t come as a shock to many, Ubuntu and all of its official spins will no longer ship with Flatpak installed.
-
openSUSE Leap 15.5 Beta Now Available
The final version of the Leap 15 series of openSUSE is available for beta testing and offers only new software versions.
-
Linux Kernel 6.2 Released with New Hardware Support
Find out what's new in the most recent release from Linus Torvalds and the Linux kernel team.