Enterprise Project
About Enhydra Enterprise
Project Mail Lists
Working Groups
FAQs

Software
Downloads
Documentation
CVS Repositories
Roadmap
License

About Enhydra.org
Who We Are
News, Articles & Events
Getting Involved
Contact Us

Community
Demos
Contributions
Resources
Case Studies
On The Edge! -NEW-
Commercial Vendors

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.


News, Articles & Events:

Enhydra.org News Archive - Important events in the Enhydra community.

Making Waves Column - a regular and sometimes controversal editorial (by Brett McLaughlin).

Enhydra Events - Shows and seminars where you will find Enhydra exhibits.

Feature Article:
Zeus, Data Binding, and You
by Brett McLaughlin

Archive:
What I Got for Christmas
by Brett McLaughlin

Jay-too-who-eee?
by Brett McLaughlin

"Open Source Guy" and the Enhydra Community Process
by Brett McLaughlin

Beg, Borrow, and Steal: Why Open Source is the only choice
by Brett McLaughlin