The Hibernate Origin Story (Outsider Edition)
By Charles Miller on 23 October 2026
I've told this story many times over the years, usually with a beer in my hand, but for some reason I've not written it down before now. As a disclaimer, the events I'm about to describe happened twenty-five years ago, and I was a peripheral, if not entirely tangential, participant, so I'm probably going to get a few of them wrong.

Cirrus clouds ©Wikipedia Commons, CC-Attribution-Share-Alike
In the beginning was cirrus.inf
The root Java package for Hibernate 1.0 was cirrus.inf. We’ll get to the inf in a moment, but first let’s start with the cirrus.
Cirrus Technologies was a small IBM Business Partner. I think at its height it was about fifteen people. Four of them were called David, which embarrassingly meant the company had three more Davids than it had women. The company's core business, at least when I was there, was to get bigger companies to buy Websphere, IBM's enterprise Java server platform, then sell them access to developers who know how Websphere worked.
Which is where I came in. These days we'd have been called something exciting like Forward Deployed Engineers, but back then we were just consultants.
In the early 2000s, needing some consultants who lived closer to certain banks (as far as I remember), Cirrus opened a three-person office in Melbourne. Two of those people were Gavin King and Daniel Bradby, both very good programmers, but Gavin had that dangerous combination of being disturbingly intelligent, with absolute conviction of his own opinions, and annoyingly, was often right.
The Scottish Project
Around 2001, us front-loading developers at Cirrus were working doggedly on a project that was rapidly going wrong, and would continue to go wrong until we agreed that even saying its name was bad luck, deploying a Shakespearean euphemism: The Scottish Project.
There were many reasons this project was going off the rails, but the biggest problem was that back in 2001, server-side Java was an absolute pain in the arse to develop. This was the era of Servlets and JSPs. Struts 1.0 and “form beans” were considered state-of-the-art. And beneath them all like an unblinking Elder God slept the most terrifying of them all: Enterprise Java Beans.
If you don't know what EJBs were, count yourself lucky. They were a brutally over-engineered component model for Java designed to sell expensive middleware like Websphere. To get an idea of what it was like, developing an EJB required you to write two different interfaces, and then an implementation that did not implement either interface. And then add a “deployment descriptor” that was, at least for the first few versions of the spec, vendor-specific (and in Websphere's case, could only be generated by IBM's VisualAge for Java IDE). And it got worse from there.
Fun fact, the earliest days of Jira development started off using EJBs. This lasted maybe a few weeks before Mike and Scott realised how much they sucked.
So Gavin, being Gavin, got hacking. Enter cirrus.inf. The inf stood for “infrastructure” and it was his valiant mostly solo attempt to make Enterprise Java suck slightly less. The first entry in the package had nothing to do with databases or persistence, of even EJBS. It was a lightweight replacement for Struts, an attempt to smooth some of the rough edges of web development. I have absolutely no recollection of how it worked, but my vague memory is that it took a bit of effort to get your head around conceptually, but once you had, it did the job.

The Establishment Bar, promotional photograph.
A meeting of minds
With the Scottish Project staring in the face of a major missed deadline, the powers that be decided to fly the Melbourne contingent of the company to Sydney for two days of intense meetings deciding how to get things back on track. Number one issue on the agenda: what do we do about EJBs? On one hand they were slow to develop, painful to test, hard to maintain, a huge source of bugs, and offered very little actual utility to the project. On the other hand, they were the marquee feature and major selling point of the application server we had just sold to this customer, and hoped to sell to many others.
Opinions quickly divided into three camps. Management was conservative, and wanted to stay the course with the technology we had chosen. Most developers wanted to reduce our reliance on EJBs, maybe keeping session beans for transaction management and component discovery, but ditching entity beans (the strain of EJB used for managed object persistence) in favour of hand-written SQL.
The third camp was Gavin and Daniel. Gavin had a really cool idea for a persistence framework for Java, using concepts borrowed from successful Smalltalk frameworks, that could replace both entity beans and hand-written SQL with something demonstrably better.
After a long, long argument, we finally got management to compromise as far as option two, went to The Establishment, and drowned our sorrows. Gavin's persistence framework was a cool idea, it was acknowledged, but maybe not the right idea for this moment.

My desk at Cirrus, circa 2001
Some of the best stories start with a hangover
The next day, with not much to do before getting on a plane back to Melbourne, Gavin sat down at a CRT monitor much like the one pictured above, and stubbornly laid down the first few classes of his persistence framework. Again to be clear here, my contribution to this project started and ended with him maybe bouncing a few ideas off me over beers, and me nodding and saying it sounded cool.
The Scottish Project continued on into disaster.
And then, a few months later, to everyone in Sydney's surprise, a new Java persistence library called Hibernate was released under the Lesser GNU Public License, with the package name cirrus.inf. There was a certain amount of grumbling from management about how this was allowed to happen, and why the company didn't get any credit for a project they did nothing to support, but as they say, the rest is history.
The fantastic irony is that I didn't get to use Hibernate once during my remaining time at Cirrus: the first time I did more with it than the tutorial was after I moved to Atlassian and started working on Confluence.