Spille bashes Prevayler… and is mostly right

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.

Hehe… maybe I wasn’t as right as I thought

One of the best things about having this blog is that there are a number of very bright people who are more than willing to call me on my assumptions and perceptions, and a bunch of folks came out and did exactly that on my 2004 reflections post. For example, a friend emailed me and said

    Nice score indeed but you gave yourself plenty of wiggle room by not providing numbers 🙂

Guilty as charged. 🙂

    That being said, are you serious when you say P2P is dying? Have you used edonkey or bittorrent lately?

And here we get to the crux of the thing: Nope, never used either of them, and as soon as Cedric’s email (and Einar’s and Simon Brunning’s comments) showed up, I went to BitTorrent’s website and had a look around. Interesting, but what was even more interesting was Cedric’s next comment:

    Let me make a prediction of my own: P2P will become so prevalent in the next five years that people will simply stop subscribing to expensive cable/satellite dishes and download (legally or not) all their TV shows on P2P networks.

Wow. Interesting. Now, while I could weasel and say that I don’t think that BitTorrent is quite what I had in mind when I used the term "P2P", that’s not really going to go very far, because it clearly is building on many of the same principles that original peer-to-peer built on. What I was originally thinking was the sort of unspoken idea that most servers would sort of disappear in favor of a peer-based cloud of uncategorized resources, sort of what the "downloading music" frenzy was looking for, and that seemed to have no great future. BitTorrent definitely has some interesting ideas to it, but I still don’t see that it’s going to revolutionize the industry–yes, it provides faster downloads, but that’s about the sum total of it, at least thus far. But, admitting my own lack of experience here, I’ve not used it–just read the protocol specs–so I can’t speak with authority here.

How about we say "the hype surrounding peer-to-peer" will finally go away? Can I get away with that? 🙂

Meantime, a few other comments piqued my attention, as well:

    Microsoft did get sued again – lot’s of times. Its just that there wasn’t anything really, really big. They settled out of court for hundreds of millions multiple times, and have just lost part of the battle in Europe. (From Sandeep Kath)

Probably should have clarified the intent–that Microsoft would get sued by a major player, like Sun, IBM, Novell (as Michael Koziarski suggested), which didn’t seem to happen.

    "… realize that "objects" and "XML" don’t, in fact, go together like peanut butter and chocolate …" Since most people who don’t live in the USA think peanut butter and chocolate don’t belong together in the same room let alone in the same food item, maybe your prediction is more accurate than you thought. (From Tobek)

Supposedly, sales of Reese’s chocolate-and-peanut-butter products recently have been taking off worldwide. But, I’ll also admit, the reference was actually to an old US commercial back in the late 70’s, I think, where Reese’s was advertising their product by having somebody with peanut butter and somebody else with chocolate bump into one another and complain about how each ruined the other’s snack, until they tried it and found that "chocolate and peanut butter are two great tastes that taste great together". Hence the reference. (Sorry for the American pop culture lesson if you didn’t care to know the history, but that does perhaps explain it more clearly.) That said, hopefully the rest of the industry starts to gain the same skepticism about objects and XML that the rest of the world appears to have about chocolate and peanut butter. (As for me, I love Reeses’ stuff. 🙂 )

And as to Einar’s comments that .NET’s adoption in the large-scale enterprise has been a "miserable failure", I just have to punt–any statistics any of us care to quote have to be heavily explained and analyzed, since, as I believe it was Benjamin Disraeli put it, "There are three kids of lies in the world: lies, damned lies, and statistics". Any numbers I or you could quote would likely be coming from sources that have an agenda to push, making them suspect. Anecdotally, Einar, you’re right–I don’t see .NET making headway into large-scale enterprise systems. But at the same time, I don’t see Java making headway into small-scale enterprise systems, either, and both are gunning for what the other has. The point being, the large-scale enterprise isn’t the only place that companies and developers are or will be developing code.

So, I dunno, do I get four out of six?

Want to play around with GC in .NET?

Courtesy of the DOTNET-ROTOR list, I’ve download RMTk, the Rotor Memory management ToolKit, a port of the MMTk toolkit (a Memory Management ToolKit in Java) to the Rotor/SSCLI codebase. According to Andrew Gray’s home page for RMTk,

    A significant part of the project has been completed. MMTk’s null GC, mark-sweep, semi-space and generational mark-sweep algorithms run with SSCLI. The code and information on building and running the port is available. The code is not fully developed, it has not been well tested and significant areas of functionality (for example, support for finalization) are missing.

Not bad. While you’d never use Rotor for a production system (Lord, I hope not, anyway….), learning how the various GC systems work is not only a good educational opportunity, but with the .NET 2.0 release, the CLR has hooks to allow people to write and plug in their own custom GC implementations (it was necessary for Yukon, since SQL Server does all its own memory management for optimizations’ sake), and that would conceivably allow third-parties to plug in new GC implementations for particular reasons. Interesting, wot?

In the meantime, I’m also pulling down the MMTk, which is part of the Jikes RVM (Research Virtual Machine) from IBM. It’s a JVM dedicated solely to research-level topics, and so has Java APIs for lots of JVM-level stuff, like bytecode manipulation and such. Wish it ran on Windows (there’s just Linux/Unix-based releases available, and I’m not brave enough to try and port it), but that’s why God invented Virtual PC, right? 🙂 Jikes RVM looks to be a definite recommended download if you want to play around with JVM internals.

Peter Drayton announces generics are now CLS

Peter Drayton posts a blog entry to the BCLTeam’s Weblog stating that they’ve decided to make generics CLS-compliant, thus ensuring that every language which is a CLS consumer (which most are) must also understand generic types, which is very cool. This has a couple of impacts to the .NET community:

    Programmers defining generic types in C# or VB 8 won’t have to worry about trying to build non-generic equivalents for other languages (like JScript); generics will always be available.
    By virtue of the above, we can assume that consumer libraries will also begin to adopt generics as well, making them vastly more useful in the long run.
    By virtue of the above (again), we can also assume that generics will more quickly thread their way through the BCL itself, thus giving us room for things like strongly-typed DataSets (using CLR types this time instead of XML schema) and less-type-unsafe libraries (like ADO.NET is currently). Imagine WinForms controls enforcing type-safety on what they can bind to, by virtue of genericity constraints, for example.

It also marks an ambitious decision, because it means incorporating a few new features into the various compilers between Beta 1 and Beta 2, so while I’m really glad they made this decision, I’m also not 100% convinced that it’s actually going to happen….