Beg, Borrow, and Steal: Why Open Source is the only choice
By Brett McLaughlin
You’ve heard the phrase at least a few times in your life, right?
Often it comes in a variety of flavors, often dependent upon the
sender of the message. From Mom it’s usually "[Insert your
first, middle, and last name here, as well as any numerals or suffixes!],
if you don’t clean your room I’m going to make you wish you were
never born." The boss tenderly unloads it as "So if it’s
not done by tomorrow, the project won’t be the only thing not around."
And your spouse usually manages to add a really loving touch: "I
don’t care how far you are in Final Fantasy, you better get the
yard mowed today." In all cases, it could just as easily be
translated into "It doesn’t matter how you do it, just get it done."
But of all the little truisms that surround it, it’s most recognized
simply as "beg, borrow, and steal" as long as it gets finished
on time. Engrave it on your consciousness. Write it in ink on your
hand, and don’t wash. Get your aunt to stitch it on a pillow and
go to sleep staring at the letters every night. Whatever you do,
abide by it: this is the programmer’s credo.
If you're at least marginally honest to yourself, you should be
willing to admit that your best work as a developer is owed at least
in part to someone else's code. If you're like me, and stare at
the pile of computer books above your monitor every few hours, you
can thank David Flanagan, Richard Monson-Haefel, Larry Wall, Jason
Hunter, Robert Sedgewick, and Matt Welsh (among many others) as
the reason you're still churning out solid code (and probably buying
nice cars and homes because you're good at it). So let's be honest
here - you ripped off more code in your lifetime than you could
ever hope to dream up on your own. I'll admit it - many of my most
brilliant moments are shared with hundreds of developers who came
before me - many of which who will never know or receive credit.
Is this fair? Maybe yes, maybe no. But either way, it's reality,
and I, for one, prefer to accept reality, and leverage it - I read
fantasy, I don't live it. So let's just suppose, between you and
me, that you've accepted that you too have begged, borrowed, and
stolen more than a few lines of code and knowledge in your life.
Great. Now that we’re getting to know each other here ;-) let’s
go one step further. Why is there no "code police" going around
trying to put an end to this? Because it’s a good thing that this
is happening! This is the natural selection of code evolution -
"Software Darwinism" is a term I hear going around a lot, and this
is it, in a fashion. I don’t believe I ever came from a monkey,
but I certainly do believe that my code came from many other pieces
of code, mutated not-so-randomly by developer gurus well before
I added my contributions and ideas. The result? Code that works
in a variety of ways. And so I happily spend my thirty bucks on
good computer books at amazon.com (yes, despite Jeff Bezos’ short
bit of lunacy, I still drop my dollars at Amazon, because they are
still the best - let’s just all chant "patent" ;-) and get over
it). Why? Because I know that there is a good chance that I will
borrow (as in notate the original developer in my comments), and
even often steal (as in "someone else’s code? No, it’s all mine")
at times, the author’s code. And I get a warm fuzzy, because I know
that this code I’m using was probably pieced together from lots
of other developers and authors, all starting with some silly "Hello
World" program that a high school student wrote during a boring
history lecture. It works, and we all just accept this facet of
development.
So if you’ve been paying attention, and haven’t fallen asleep on me, you’re ready to admit that we all are creative thieves, in a sense, Because of that, we all write better code, more effective code, more reliable code, and often more ingenious code. Can you imagine if James Gosling had had to figure out how to do an "if" statement, instead of focusing on what it should look like in Java? We’d all be in trouble, or at least writing assembly language on some monochrome mainframe… ugghh. So what does all this have to do with Open Source? That was in the title, right? Well, here it is (listen up): I propose that any piece of software that isn’t at least grounded in open source, if not completely open source, is hypocritical, and contrary to promoting better software development.
Wow! Did you get that? Just to ensure that everyone who flames me from the big players gets it right, let me say it again ;-) : Any piece of software that isn’t at least grounded in open source, if not completely open source, is hypocritical, and contrary to promoting better software development. There it is. I believe this with every bit of my being, so much so that I’ve staked my career and well being by joining a startup company (Lutris Technologies) that completely depends on open source software to survive, and vis-à-vis, to pay me. But where did this volatile statement come from? How did I get from admitting that we all beg, borrow, and steal for advancement to this grandiose conclusion? Well, it’s not such a leap.
We all just admitted (or at least I assume that you did) that we are better for the efforts of others; and not just theoretical, hand waving efforts, but actual code that we looked at, read about in trade journals and books, saw in other open source projects, and actually used in our own programs. We then show off parts of our new programs, which get stolen from as well… and the cycle goes on and on. I have parts of my code in most XML parsers, every Apache web server, and countless other applications, all over the world. I don’t get credit in many of these places, but who cares? It’s the way things work. You don’t see me griping to Tom Thumb when the milk goes bad one day before the little data printed on the cap, do you? So you won’t see me arguing about this - it is just reality again. Let’s accept it and move on, and see how it affects us.
So how is it, that at some point, a company feels that they have the right to take all this code, this masterpiece that has been created by hundreds of people over time, and slap a label on it, and swirl their skirts around it, and claim ownership? Because they pay the guy whose name is on the "author" tag in the Javadoc? Come on! Most people don’t even write Javadoc ;-) But seriously, this is a bit deluded, don’t you think? I certainly don’t think I’m smart enough, or arrogant enough, to say “OK, this is as far as this code can ever go, so since I put the finishing touches on it, and it never needs to change again, it’s mine, and you can’t benefit from it.” But didn’t I already say that code often makes its way into systems that we had no idea it would be useful for? So who am I, or any company, to make an arbitrary decision that some piece of code should have its life “prematurely ended”? I’m certainly not, and you shouldn't be either! However, many, many companies think that they are.
But I actually said “hypocritical,” right? Maybe it makes sense to open up code, but are these companies being hypocritical? Sure they are! Remember how outraged we all were (even the big companies) at Amazon for patenting… well… cookies? It seemed so silly to everyone, even Jeff Bezos when he lies awake at night and is honest to himself ;-) But is it any less silly to suppose that the talent you hire, at some price tag like $100K a year, is really churning out completely original code, that he or she never learned anything from tens and hundreds of other engineers that made $100K a year? You really think you’re not getting a bargain there? So your entire development shop is thriving because someone opened up his or her code, which helped out your senior software engineer. But because you don’t really want to deal with the stress and difficulty of understanding open source, you decide that you don’t want that sort of “sharing” to go on, and next thing you know, that engineer can’t write an e-mail without it being protected by the company’s proprietary interests. It is taking advantage of the system, and giving nothing back. And it’s why, ultimately, you are here, at Enhydra, instead of one of the big boys (you know, all those guys who just need acronyms for names…).
"But wait a second", you're thinking; "This guy is getting
paid by some company, right? How do they make money?" Well,
that's a good question. Lutris Technologies sponsors Enhydra. This
simply means that they pay folks like myself, and a really incredible
engineering team, to work fulltime on Enhydra, and the upcoming
Enhydra Enterprise. Lutris also has a business wing, a marketing
wing, and all the rest. So what is our product? Well, it's Enhydra
- what is called Lutris Enhydra. You can go to www.lutris.com,
as well as your local computer store (soon), and pick up Lutris
Enhydra, which comes in a pretty purple box. What's in that box?
Exactly what's in the CVS tree you can pull from when you finish
reading this article. A CD, plus some hard copy of documentation,
as well as some bundled tools. Does this sound like one of the various
Linux distributions you can buy for around a hundred bucks? It should.
Lutris sells service and support around the Enhydra platform. Professional
services, technical support, extra documentation, partnerships with
companies like Borland to provide JBuilder, and all the rest is
in that box. But the software, the heart of all this, is 100% open
source. And that's the difference. If IBM or BEA or Sun followed
this same model, I'd be the first to step up and congratulate them,
and support their efforts. But they aren't admitting that this software
they sell, this product that you can't even legally de-compile,
let alone look at the source for, was developed by hundreds of individuals
before there was a "dot in dot.com." And in the end, that's
why I'm here at Lutris and Enhydra instead of one of those big companies
- we're the first to admit it's all about community, and that the
community works.
So I hope I’ve been clear here - a commercial product, like Lutris,
that leverages an open source code base and then builds support
and services around it is great! In fact, I think it is the business
model of the. It’s an open-minded, "someone else may make this
thing better than I ever could", mentality. And it’s the right
thing to do - it encourages you to become a better developer, and
me to become a better teacher. Want to understand EJB? Confused
about how load-balancing works? Here it is - we’ll give it to you,
free of charge, with the kimono wide open. Use it as you wish -
just thank us when it’s all over, will you? Can your Microsoft do
that? I seriously doubt it ;-)
So what’s the point here, you ask. I’m not just tilting at windmills
here - you are, ultimately, the consumer. Demand that projects be
open. Spend time with your boss, and explain to him why open source
works - don’t just roll your eyes and call him a "pointy-haired
idiot." Schedule an hour with him (yes, schedule it - that’s why
we all have Palm Pilots, remember?), and walk him through it (but
don’t tell him I called him a hypocrite, OK?). Show them how open
projects improve collaboration, increase productivity, and result
in stability. Explain that he gets (gasp) free workers! Tell him
that Enhydra is based just as much on people’s contributions that
we’ve never met as it is on our in-house engineers (as well as Linux,
Apache, et. al.). And if you can support a project like Enhydra,
do it - push it as an alternative to these big closed-shop guys.
Don’t be afraid to be annoying, as long as you are professional
about it (in other words, phrases like "stick it to [insert big
company name here]" are usually not successful or productive).
I’ve been annoying for five years, and look where it got me (into
a great company, with a great job, all revolving around open source).
And ultimately, always be proud, not ashamed, that you "beg,
borrow, and steal," and demand that others do the same.
Brett McLaughlin is
the author of Java And XML, published by O'Reilly. He currently
specializes in building application infrastructure using Java and
Java-related technologies. He has spent the last several years implementing
these infrastructures at Nextel Communications and Allegiance Telecom,
Inc. Brett is one of the co-founders of the Java Apache project
Turbine, which builds a reusable component architecture for web
application development using Java servlets. He also contributes
to the EJBoss Project, an Open Source EJB application server, and
Cocoon, an Open source XML web-publishing engine. His projects all
focus on XML and the J2EE platform in mission-critical, high-performance
distributed systems. Brett has recently been appointed Enhydra Strategist
at Lutris Technologies.
| |
|