Mike Spille, of Pyrasun 2.0 fame, has written a blog entry that bashes on Prevayler, the in-memory object persistence scheme that many folks are lauding and praising around the ‘Net circles. In particular, he laments,
The real question: Why do so many people listen to idiots? Beats me. All I can assume is that P.T. Barnum got it 100% right. Klaus and friends have created a rather anemic and shaky codebase, and backed it up with claims that might even make ol’ P.T. blush. In many cases they’re probably just ignorant, but in some they’re either lying or smoking something. I’m sure some people will read this and think I’ve just gone off on a rant and am indulging in needless ad hominem attacks. Well, if you believe that, you probably haven’t read the wiki. Go ahead, read it – I dare you. I triple dog dare you. Go read it you’ll see that these guys are like carnival ucksters, that they sound as oily as fake insurance salesmen.
Unfortunately, Mike’s right here–the marketing that surrounds the Prevayler codebase does seem a bit hyperinflated in a number of places. And that sentence right there should make you stop dead in your tracks.
Since when did open source need marketing?
Think about it–these claims of 3,000 times faster than MySQL, 9,000 times faster than Oracle, the claims of "you don’t really need two-phase commit", the claims of "you don’t really need transactions" of any form (since 2PC is a transaction in the first place), why does an open-source project need to make such claims? It’s open source, for crying out loud! I can download the thing, try it myself, see if it works, and make my own decisions? Why do I need to be bombarded with statements that are worthy of Microsoft’s marketing department?
Unfortunately, this seems to be the norm now for an open-source project. It’s not just enough for us to say "My new project does X, Y, and Z", it has to be written as "My new project is better than Ant because it does X (which Ant doesn’t do), Y (which Ant does but not nearly as well), and Z (which Ant never wanted to do which clearly indicates the lack of foresight of the Ant developers so clearly I must be brighter than all of them combined!)". Whatever happened to "just let me download it and I’ll make my own value judgements"? I don’t recall Linus Torvalds ever making performance claims of Linux against Windows; I only recall him clearing up misunderstandings of what Linux was and what it wasn’t and so on–discussing facts, not value judgements.
Fact is, unfortunately, it’s become hip in the open-source space, particularly the open-source Java space, to bash on each other. To say that developer X of the open-source project Y is "an idiot" or "incompetent" or "oily" has become a routine part of the open-source Java discussion theme. Look at how we’ve all rallied around Hani’s BileBlog; there’s even knock-offs of the BileBlog, for heaven’s sake! To "bile" somebody is to engage in a full-tilt direct personal and technical attack on something or somebody. When did we fall so far?
Mike’s right about a lot of things about Prevayler, both on a technical and on a presentation level: it doesn’t provide a lot of the same capabilities that a full-fledged database would, and it definitely comes with a lot of hype attached to it. His assessment of the upper limitations of the JVM (2GB, by the way, if you’re running on a 32-bit Windows machine, thanks to the even split of the 4GB process to your code and the operating system code, respectively) is spot-on. His point that Prevayler is single-process and that no schema means evolution must be managed through Object Serialization (although a bit easier than I think he gives credit for) is absolutely right. And where I disagree with him 100% is that there are some projects for which Prevayler is precisely the right thing to use–but certainly not all of them.
Come on, guys; a certain amount of technical discourse is, naturally, a good thing. But we’re seeing "bile" become routine, and "hype" become a part of every open-source project. This is a trend that needs to stop if we’re going to actually get anything meaningful done in the long run.