Monday June 02, 2008
One of the more interesting presentations at this years RailsConf seems (I wasn’t at the conference myself) to have been the one about MagLev. Lots of excitement, a fair bit of koolaid-drinking and a good round of healty sceptism.
But the real interesting part of MagLev to me isn’t the claimed performance numbers (though that in itself may be interesting, but not until we know how ruby-conformant the final product is going to be). What’s really interesting is the Gemstone/S based persistance part of MagLev, along with the distributed VM part, and not at least Gemstone (the company) itself, with a long experience of creating dynamic language VMs.
And yes, so far it might be mostly koolaid (since none of us outside Gemstone has used it), but I seem to remember a certain Ruby webframework being called samething similar in 2004, and continued to receive trash even after its release. History will probably repeat itself here with the arm-chair experts.
I for one find traditional relational databases lacking in a lot of problem-domains, that’s why I’m interested in (admititly young) projects such as CouchDB, StrokeDB and Neo4j, and anything else that teases my mind with new posibilities. Yes, Facebook, Skype and others scales MySQL/Postgres indeed, but it’s interesting to note that the reasons for that is probably more developer culture and experience related. While the Gemstone Smalltalk implementation seems to cater more towards wildly enterprising sectors, such as the financial and shipping markets, where the demand is quite different from sending virtual vampires to your friends. Then again, that argument works the other way as well.
I don’t think ActiveRecord is no-where near being the perfect way to persist objects, rather I think it’s one of the better ways to map objects to a relational database. There’s a small syntactic difference there, between an enhanced class (by inheriting from ActiveRecord::Base) and an object you interact with just as you would with any other object, which in turn is persisted across machines and sessions as those very same pure objects.
People playing around with a shared global object store made by a company who has been doing it for 15+ years is a good thing. Who knows,
maybe hopefully someone will get inspired to write something new based on ideas we’ll get from using MagLev. Maybe Seaside (or something similar in spirit) will find its way back to its Ruby roots. Maybe even other Ruby implementation hackers will start to implement something similar to Gemstone at the bottom.
What’s also interesting is that Gemstone the company even does this to begin with. I hope it’s because they see Ruby as something they could help with their dynamic language VM experience. But moreso it might be because they see real business value in Ruby, and being able to provide a fast, scalable platform for enterprises who mgiht feel that Smalltalk is a bit old fashioned for todays developers, but dynamic enough to give them flexibility while being able lean against a vendor. Of course, I know little of Gemstone the company or their customers, but that that seems to be the tune as of lately.
From the sounds of it, MagLev is not going to be completely open source, but I’m with Giles Bowkett and Wincent Colaiuta on this one, while the majority of the Rails community says things should be F/OSS, that has never stopped them from using mostly closed-source things like Macs and Textmate. As long as it’s shiny, works great and gets the job done, the majority of Rails developers will happily use it. And that in itself is fine.
Maybe it’ll MagLev really will be fast, maybe it’ll inspire people and make their work enjoyable, maybe it’ll allow certain applications to scale easier, maybe it’s persistance model will be a joy to work with. And Maybe, just maybe, it’ll be friggin’ sweet. But I, for one, welcome our new Object overlords and can’t wait to see what they’re upto because anything doing interesting things to, or with, Ruby is a good thing.