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 DisqusSubscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Support Our Work
Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.
News
-
Juno Tab 3 Launches with Ubuntu 24.04
Anyone looking for a full-blown Linux tablet need look no further. Juno has released the Tab 3.
-
New KDE Slimbook Plasma Available for Preorder
Powered by an AMD Ryzen CPU, the latest KDE Slimbook laptop is powerful enough for local AI tasks.
-
Rhino Linux Announces Latest "Quick Update"
If you prefer your Linux distribution to be of the rolling type, Rhino Linux delivers a beautiful and reliable experience.
-
Plasma Desktop Will Soon Ask for Donations
The next iteration of Plasma has reached the soft feature freeze for the 6.2 version and includes a feature that could be divisive.
-
Linux Market Share Hits New High
For the first time, the Linux market share has reached a new high for desktops, and the trend looks like it will continue.
-
LibreOffice 24.8 Delivers New Features
LibreOffice is often considered the de facto standard office suite for the Linux operating system.
-
Deepin 23 Offers Wayland Support and New AI Tool
Deepin has been considered one of the most beautiful desktop operating systems for a long time and the arrival of version 23 has bolstered that reputation.
-
CachyOS Adds Support for System76's COSMIC Desktop
The August 2024 release of CachyOS includes support for the COSMIC desktop as well as some important bits for video.
-
Linux Foundation Adopts OMI to Foster Ethical LLMs
The Open Model Initiative hopes to create community LLMs that rival proprietary models but avoid restrictive licensing that limits usage.
-
Ubuntu 24.10 to Include the Latest Linux Kernel
Ubuntu users have grown accustomed to their favorite distribution shipping with a kernel that's not quite as up-to-date as other distros but that changes with 24.10.