DEVELOPER: Open Source
Embedding Open SourceBy Rich Schwerin
The Oracle Berkeley DB family of products exemplifies Oracle's open source commitment.
Oracle's role in open source development has been a well-kept secret. It's also the reason for this column: To inform you about Oracle's commitment to open source software—a commitment measured by significant investments in ongoing development and support across a wide variety of initiatives.
"As ever, Oracle is driven by customer demand for choice, flexibility, and a lower cost of computing," says Ken Jacobs, Oracle vice president, product strategy, Server Technologies. "In addition to contributing to many open standards and creating products that implement those standards, Oracle invests significant resources in developing, testing, optimizing, supporting, and contributing to open source technologies such as Linux, PHP, Apache, Eclipse, Oracle Berkeley DB, and InnoDB. Oracle is clearly a leader in embracing open source solutions as a viable choice for development and deployment in the enterprise."
Under the Hood
A prime example of Oracle's true commitment to open source is Oracle Berkeley DB, an embeddable open source database used in applications and devices that demand a fast, scalable, transactional database engine. Running on all major operating systems (Linux, UNIX, Windows, embedded Linux, QNX, VxWorks, and Macintosh OS), Oracle Berkeley DB is available under a dual licensing model that has made it tremendously popular among both open source and commercial customers.
With an estimated 200 million deployments, there's a good chance you use Oracle Berkeley DB every day without realizing it. You'll find Oracle Berkeley DB "under the hood" in everything from Motorola cell phones, Microsoft/Groove's collaboration suite, and Sun's Java Enterprise System to Ericsson routers, EMC storage boxes, every distribution of Linux, a popular Web search engine, and a leading Web retailer. Several major stock exchanges and banks also use Oracle Berkeley DB, and many authentication systems rely on Oracle Berkeley DB to store user, profile, and preference information.
"Where there's a device or application that has a lot of information moving through it, and some of that information needs to be stored reliably in a fast, scalable, transactional embedded database engine, that's most likely where you'll find Oracle Berkeley DB," says Mike Olson, Oracle vice president, Embedded Systems. "When you're sending e-mail, surfing the Web, or using your cell phone, you have no idea that you're hitting a database—it's all happening entirely transparently."
Olson explains that because data management software can be used in anything from small mobile devices to enterprise applications to carrier-grade infrastructure, the average person encounters Oracle Berkeley DB dozens of times each day through various transactions and devices. "There's pretty broad use of Berkeley DB in the Web 2.0 and service-oriented architecture space, so it's difficult to visit a Web site without hitting some Berkeley DB somewhere," explains Olson. "One of the Web's leading retailers uses it as a front-end cache for all of the data it delivers to users, so your personalization information is all cached in Oracle Berkeley DB."
From Berkeley to Sleepycat to Oracle
Oracle Berkeley DB's roots can be traced to its namesake in the early 1990s, when Olson was a student at the University of California at Berkeley. Olson, Margo Seltzer, and Keith Bostic collaborated to develop a new key/value database to replace the Database Manager (Dbm) file-based storage found in UNIX systems. This database evolved to become Berkeley DB version 1.85 and was broadly distributed with the release of 4.4BSD UNIX in 1992. The Berkeley DB code became very popular and was widely adopted, but users wanted commercial support and new features added to the software.
In response to the increasing demand for features and support, Seltzer and Bostic founded Sleepycat Software in 1996. The company released Berkeley DB version 2.0 in 1997, 3.0 in 1999, and 4.0 in 2001, with multiple point releases in between. In 2003, Sleepycat added a second product to its offerings, Berkeley DB XML, and in 2004, the company added Berkeley DB Java Edition. In February 2006, Oracle acquired Sleepycat Software and the Berkeley DB family became the Oracle Berkeley DB family.
"At the time of the acquisition, there was some speculation that Oracle's intentions were less than honorable and that the world's largest enterprise software company was simply buying open source companies to quash them," recalls Olson. "Instead, Oracle continues to make significant investments with several new product releases and global support. Our engineering team has been hard at work, building exactly the road map and products that we had planned to do before—we're just doing it as part of a much larger and more capable organization."
Community pundits agree. "Nearly a year later, we've seen nothing less than good stewardship of Berkeley DB on Oracle's part, and I think most people recognize that," says Stephen O'Grady, principal analyst with RedMonk, a Denver, Colorado-based IT analyst firm. "Beginning with Oracle's long-standing commitment to Linux, there's certainly a measure of goodwill toward Oracle from a developer perspective. And Oracle has done a pretty good job of supporting a variety of open standards that are of interest to the developer community. Sleepycat and Berkeley DB are no exception."
Dual License: Twice as Nice
Oracle Berkeley DB is distributed under a dual license. Customers can select either an open source license that permits internal use and redistribution within open source applications at no charge, or a commercial license that enables the redistribution of Oracle Berkeley DB within proprietary applications.
"The open source license allows you to download the software, to build it into your applications, and to use it at no charge. You can get the software from the Oracle Web site (without registering), build it into your applications, and use it," explains Olson. "The restriction is that if you distribute the application that you build, your application must also be open source. In our thinking, this is really playing fair."
Of course, there are commercial vendors that simply can't do that. "For customers who can't give away their intellectual property, Oracle Berkeley DB is available under a commercial license. If you're distributing a proprietary application that uses Oracle Berkeley DB, then buy the proprietary license to use it and distribute it without giving your source code away," says Olson.
"If you're open source, we're open source, and you can use the software on the same terms you use all the other open source projects you use," says Olson. "On the other hand, if you're a commercial vendor, we'll behave exactly like all your other commercial suppliers. And you get all of the contractual assurances and business guarantees that you would normally expect in a contract of that sort."
Olson is quick to point out that Oracle Berkeley DB's dual license has many benefits for developers, in both the open source and commercial markets. "The license revenue allows us to invest resources to make the product better, not just for the folks who pay commercial license fees but also for the very large open source community that makes use of Oracle Berkeley DB," he says. "Even if you're using the open source version, you get tremendous benefits from Oracle's significant development investments."
The commercial users are better off, too. "Paid licensees of Oracle Berkeley DB benefit from the advantages that a very large open source community confers. Namely, lots of adoption, lots of testing, and lots of eyeballs looking at the code and lots of experts willing to give free technical advice and create complementary code," says Olson. "It's an ideal situation where you've got a huge user community and very high-quality code, but for commercial customers, their source code stays private." (See the "More Eyeballs, Shallow Bugs" sidebar for more information on open source community development.)
The Oracle Berkeley DB product family includes a trio of products: Oracle Berkeley DB, a transactional storage engine for untyped data in basic key/value data structures; Oracle Berkeley DB Java Edition, a pure Java version of Oracle Berkeley DB optimized for the Java environment; and Oracle Berkeley DB XML, a native XML database with XQuery-based access to documents stored in containers and indexed based on their content. The latest releases, Oracle Berkeley DB 4.5 and Oracle Berkeley DB Java Edition 3.1, are a strong testament to Oracle's commitment to open source development, but what's in store for the future?
"At Oracle, unlike Sleepycat, we've got a much broader product line. Just in the embedded space, we've got Oracle Lite, Oracle Berkeley DB, and Oracle TimesTen. And, of course, we've got Oracle Database 10g, which supports huge repositories of information in the data center," explains Olson. "As the only nonrelational product in Oracle's portfolio, Oracle Berkeley DB fills out our product line for the embedded space, addressing a class of use cases that needs high performance, reliability, and scalability but does not need SQL. Since the very first day of Sleepycat, three things matter in every single release: performance, reliability, and scalability, and that is going to continue to be the case."
Rich Schwerin (firstname.lastname@example.org) is a product marketing manager with Oracle Technology Marketing.