Every good engineer knows that design precedes re-use. First, you start with a good software design; then, whatever code you are writing has to be as generic as possible so it can be reusable. Engineers often do this by looking at different pieces of code that were written earlier.
Open source is a wonderful way of doing this on a much larger scale. Open source is a huge repository of great generic code, designed for a specific reason.
One of the things I often hear from software engineers active in open source is that, by its nature, open source code is always more attractive and preferable to any and all software developers.
But to the extent this is true, I believe such preference is a product of pragmatism, not principle. People like to talk about open source as a business model, marketing model, sales model, but it’s first and foremost about engineering convenience.
In fact, engineers do often get enthusiastic about this. If they see a nice piece of code written in a nice way, generically, they will use it. Open source does take this to a larger scale: not only can the engineers within the same company use the code, but engineers from a variety of companies can share it.
Say you’re an engineer. You wrote a nice piece of code about search. You put it out there, if your company lets you do so. If you see another piece out there, you can take it and use that, too. And you think, “What a wonderful thing—I don’t have to write this.”
One of the major sources of the appeal of open source is that engineers across many different companies can communicate across a common code base. When there’s a commercial company, you’re free to talk with the engineers at all the other companies involved in the project—with a common denominator. Unlike strictly commercial projects, open source isn’t perceived as being governed by exactly one pointy-headed guy in a suit. That means it’s free to be more pure and pragmatic, more of an extension of what the engineers consider interesting and important.
I think the ultimate open source project is Maven, a repository of millions of lines of code from millions of people that put stuff in there. Like an exchange, you can put some in and take some to use for yourself. Maven is a generic project, not necessarily targeted to a specific market or vertical solution. There are other projects, though, that have a specific use in mind. In the case of a project such as Lucene, the code is very specific for search, so it’s more targeted. But the bottom line is the same: Engineers who like to write code can put code in there and use other pieces of code as needed from there.
So should we call it “a model”, or is it purely a convenience that has taken on a life of its own? I tend to think it’s the latter, but I would love to hear your opinions on the matter.
Eric Gries is CEO of Lucid Imagination, the first commercial entity exclusively dedicated to Apache Lucene/Solr open source technology.
Eric joined Lucid Imagination as the President and CEO, after spending more than 20 years in executive leadership roles, where he built high-growth technology-based businesses. Prior to joining the company, Eric was an Executive-in-Residence at Granite Ventures. Eric has served as CEO, general manager and vice president for companies in application development, systems management, networking, financial services and hardware systems, in both the U.S. and Europe. Prior to joining Granite Ventures, Eric led XACCT, a pioneering network mediation market leader, as its president and CEO. XACCT was acquired by Amdocs in 2004, at which time Eric joined Amdocs' executive team as Senior Vice President. Earlier in his career, Eric served as general manager of Compuware's Network and Systems Management division, and held product management, marketing, sales and engineering positions at companies such as ACI, Cullinet Software and DEC.
As an active participant in the enormous community using Lucene/Solr, Lucid Imagination offers certified distributions of Lucene and Solr, commercial-grade support, training, high-level consulting and value-added software extensions. The company’s web site serves as a portal for the Lucene community, with information and resources to help developers.