Februrary 2008: ehcache
Project name: ehcache
Date founded/started: 2003-10-23
Project page: http://sourceforge.net/projects/ehcache
Description of project:
Ehcache is a Java distributed cache for general purpose caching, Java EE, and lightweight containers. It features memory and disk stores, replicate by copy, invalidate, listeners, cache loaders, cache extensions, cache exception handlers, a gzip caching servlet filter, and more. Ehcache is the only fully featured open source cache that is not aligned with any vendor stack. It is available under the open source Apache Software License and is actively developed, maintained, and supported.
Why and how did you get started?
In October 2003 I submitted some patches to Apache Java Caching System that the project failed to act on for several months. Gavin King was the maintainer at the time of Hibernate, a new object/relational persistence and query service for Java which was held back by caching issues. Hibernate decided to make an open API to plug in different caching implementations. Ehcache was one of the first of those.
What is the software’s intended audience?
How many people do you believe are using your software?
Ehcache gets about 4,000 downloads per month from SourceForge.net, plus probably a similar number from Maven repositories. It is included in 39 software stacks, according to Ohloh. It is probably present in most running Java enterprise and Web applications. So, several hundred thousand to millions of systems, and hundreds of millions of users.
What has been your biggest challenge?
Keeping up with feature requests. Distributed caching was a major initiative which has taken several years to mature. It is now widely used on clusters up to 20 nodes.
Why do you think your project has been so well received?
A number of reasons. It got a huge kickstart from Hibernate. But the Hibernate support happened because of the code quality. There is high test coverage. And lots of multithreaded testing, perf testing, and limit testing. I had a bugbear at the time about code that was not part of well-formed projects — formal releases, a bug tracking system, revision control. SourceForge.net provides this for us now, but at the time I was using some code that was copied around without any formality. So I try to ensure that ehcache is well-formed. That includes having comprehensive documentation, which now includes a book. I guess caching is also a subtle thing. It sounds easy but because it is typically in a highly contended part of the system, the threading must be not only correct but performant. Finally I try to address bugs quickly.
Where do you see your project going?
I am working on JSR107, the JCACHE specification. Ehcache-1.4 already has a JCACHE API matching the current draft. I would like to see it be one of the first JSR107-compliant caches. The next thing to do is to add more distributed caching options, such as JGroups and JMS. JGroups has been done and has been in use in production for nearly a year. I plan to apply that one to the 1.5 code base.
What are you most proud of?
It is nice to see so many people using your code.
If you could change something about the project, what would it be?
I am Australian. We pronounce the name “ee h cayche.” It rhymes. But in the US and Europe it is “ee h cash.” So the name is not quite as good as I thought it was. But is still a palindrome.
How do you coordinate the project?
Other than Mauro Talevi, who handles Maven, I do all merges and commits. Volunteers come to me with something they want to do. If I like the sound of it I ask them to submit a patch. I then merge the patch and maybe add extra testing. I have found that most patches contain errors. Caching is not something where errors are well tolerated, so I retain control. Some regular users help out on the forums.
There is a lot more test code than production code in ehcache. The test suite takes about an hour to run and tests 90%-plus of methods. It also tests integration with common libraries such as Spring and Hibernate.
Do you work on the project full-time, or do you have another job?
Part-time. The time commitment varies. I tend to put betas out there for a while, so there are lulls while I am waiting for feedback. My day job is Chief Architect at Wotif.com, an online travel company.
What is your development environment like?
Mac OS X, dual core G5, Java 1.5 and Java 1.6. IntelliJ IDE.
|1.4.0||2008-01-31||1.4 release – add many new API features|
|1.3.0||2007-06-11||1.3 release – JCACHE implementation and stable distributed caching release|
|1.2||2006-4-25||ehcache-1.2. ehcache-1.2 represents the addition of many new features while remaining backward compatible with 1.1.|
|0.7||2004-1-2||Bug fix release|
|0.6||2003-12-8||Bug fix release|
|0.5||2003-11-18||Hibernate compatibility release|
|0.4||2003-11-13||First public release|
How can others contribute?
They can provide forum answers, bug fixes, and feature enhancements. The main requirement is good code, with comprehensive test cases. To get involved contact me via my SourceForge.net email.
Check out our previous projects of the month.