Monday, October 23. 2006The Impending Ruby FractureComments
Display comments as
(Linear | Threaded)
A clarification on the MS stuff -- John Lam was hired, but he worked on Ruby/CLR, not Ruby.NET. Ruby.NET is getting funding from MS, but so far I don't think they have hired anyone from the project.
I can't say what MS will decide to do once they get a working implementation, but I think the rest of the implementers working on Ruby are committed to a common spec and test cases. If there is any forking of Ruby, it will be because the community splinters as well. After just getting home from RubyConf, the community seems as strong as ever.
A very good wrap-up of the state of VMs. I agree it's going to be an interesting time for Ruby and Ruby VMs over the next several months. However I'll try to allay a few fears.
I am not a language designer. Before JRuby, I had never even tried to implement a language before. What brought me to Ruby was Ruby, and there are very few things about the language itself I would want to change. I am not interested in creating an incompatible version of Ruby, and to that end we have taken great pains to make sure even quirky Ruby behavior continues to work correctly. Ruby's quirks are not eggregious enough to drive day-to-day developers away, so though the temptation may exist to "fix" things, such a change would cause fragmentation. I would like JRuby to be not only a new language option for Java developers, but also a new VM option for Ruby developers. Only by staying true to Matz's vision can we make that happen for both worlds. I can't vouch for the other implementations, but I would see any change that makes JRuby incompatible as a very bad idea. And so at least for JRuby we are keeping compatibility of prime importance.
"Matz has said that 1.9 would run native threads (rather than the current green threads) but YARV will ship with green threads because it's too difficult to maintain compatibility with all the C extensions that have been written for green threads."
This is not the case. What ko1 and matz said was that the initial 1.9 release would use a 'Giant Lock' implementation of native threads, a la Python. This is still a huge improvement over what we have currently. Fully-parallel 'real deal' threads will come later. Also, it's spelled 'Rubinius'. I don't mean to sound too critical. I agree with many of your concerns; I just don't think that the enterprise is the most important consumer of programming languages.
"I just don't think that the enterprise is the most important consumer of programming languages."
This is very interesting to me. I don't especially have an opinion on whether enterprises are an important customer. I think that comes down to where you want to get your resource from, really. However, I do think that the problems that enterprises encounter are extremely important ones to solve... I've only been working in enterprises for a couple of years. Before that my experience was single apps on single machines. The reason that I moved in to enterprises is partly because of the good wages, but it's also because I think their needs in terms of computer systems are a tiny sand bed for discovering what the real world needs. I've "been here" long enough to see that enterprises really want "joined up" applications (for want of a better phrase). They're all about a massively distributed data and processing. They want to be agile, they want to let anyone anywhere do anything with the data that they're allowed to grab. But then, they want to be able to introduce control so that they can share implementation and keep data orthogonal and cannonical. I dream (really) and think daily about a global data system. One where absolutely all of the data (and that means "source code" too) that exists is conceptually just a huge connected database of living objects. In this, anyone will be able to add their own data, and anyone who wants to will be able to use that. Given time, the data I and others attach to a company's products (good or rubbish) will get seen if people care, and it could become as much an established feature of the data as anything that the company supplies. I believe this is "what the world needs" from computers. I think it's going to happen (slowly and falteringly) because it's also what any reasonably large group of people (such as an enterprise) need from computers. That's why I think that enterprises are well worth looking at - because they're spending billions (big word, but probably true world wide) of pounds on slowly bumbling towards the answers. As a collection, they work as a giant evolutionary problem solver on "how to make computers help people communicate".
To clarify what I meant about enterprises:
I've spent a lot of time building connected systems in the enterprise. I feel like I have a pretty good handle on what they need, expect, etc, etc. At many times in history, though, there have been much better options available than those that were in common use. Python has been 'enterprise ready' for many years, and at a level far above where Ruby is currently. (I say this despite not using Python for anything anymore.) Smalltalk would have been a nice COBOL replacement a long, long time ago. Python should have long since replaced JCL. I know of organizations that are still writing new production code in Algol. I'll let that sink in. Anyway, the upshot of all that is that enterprises aren't very language-oriented. Why would we want to drive the development of 'our' programming language based on people who will never care about us? Even if enterprises start using Ruby heavily, they won't thank us for it. They won't contribute anything. How often do you think IBM got sent patches for their mainframe operating systems by customers? I doubt it happened very often. Enterprises are pretty insular. They consume but don't provide. Apache, Linux, Firefox, the GNU tools, BIND, Postfix, etc, etc.. these things run the Internet. Enterprises are marginal. We only care about them because they have fat checkbooks and can pay us to pretend to care about them, in my opinion. Scientific users are just as bad. They are still writing code in FORTRAN because they don't want to change. They still don't write unit tests, even though the whole scientific method emphasizes verification. I think that if Ruby helps enterprises and academic programmers raise their level of awareness and productivity, that is awesome. I seriously could not be happier. However, I think it should be a side-effect, not a goal. In my opinion, optimizing a language for use by small teams and individuals is not a mistake. It's a totally valid choice, and one that should be defended.
Paranthetical: actually, IBM's mainframe customers wrote the original IBM mainframe operating systems. (Look up the Share Operating System, SOS.) It's not true that enterprises don't or won't contribute. Some won't, some will, it usually comes down to the individuals involved.
That was (for the most part) true for the 7090 and its cousins. However, IBM wrote the compilers and operating systems for System\360.
What I'm not sure about is when "software as a product", independent of hardware, first started happening. The basic software and operating systems, compilers, assemblers, etc., were nearly always bundled with the machine until a certain point.
Have you been hoodwink.d?
Something like that, where it was hosted on freenet under a hash of the resource you were looking for hoodwinks for to avoid the central server, and where you could attach grease-monkey scripts to it for people to use, config files and downloads relevant to the page, discussion the page didn't have forums for, etc... Also some sort of distributed trust system, to help you find the helpful content, both the original and overlay content.
I came away with a completely different impression from RubyConf 2006. The old line about seeing things not as they are but as we are seems quite apt here. In any event, I've expounded at greater length on my blog and of course on the Ruby Talk mailing list.
But to put it bluntly, Rails ain't enterprise ready and it ain't Ruby's fault! Clearly both Sun and Microsoft have discovered Rails and are sponsoring ports of Ruby to their respective virtual machines because of it. But there's an awful lot Rails needs that has nothing to do with Ruby virtual machines. Rails runs perfectly well on the current 1.8.5 with a Windows Ruby from Curt Hibbs or a Solaris Ruby on either hardware platform. What Rails needs to become enterprise ready is a couple of things. Number one is an attitude shift. Rails people have just got to stop saying they have a silver bullet, because the only thing silver bullets are good for is shooting yourself in the foot. DHH has just got to stop saying "Fuck" at conferences. And finally, you need to stop saying things like "At the core, I think Ruby is defined by Rails. Sooner or later, the Rails guys will realize they're the dog and start finding a tail that's easier to wag for the customers with lots of money." That kind of nonsense reflects badly on both Ruby and Rails. Second, Rails itself needs to be bulletproof, and it needs to make the tough jobs of web app developers easier. Right now, the tough jobs aren't making social web sites with rounded corners, managing the flow of information for overwhelmed knowledge workers, blogs, wikis, content management systems, or any of that other web 2.0 nonsense. The tough jobs are maintaining the privacy of the millions of people who blindly entrust their financial identities to computers. The tough jobs are Sarbanes-Oxley compliance. The tough jobs are keeping up with the intricate accounting and tax laws and practices. Those are the things Rails needs make easy.
Ed,
Thanks for your excellent perspective. I want to better understand your criticism of my comment about Rails defining Ruby outside of the "Ruby as Perl replacement" space. Is it that you think that Ruby would become more than a niche language without Rails? Is it that you disagree that the language and the framework will become increasingly influenced by large-dollar customers as it gains popularity? Or did I mis-understand your point altogther? I want to understand where we disagree. Thanks, David PS -- I don't think you're "That Guy." If anything, I may be "That Guy" for publicly posting something that seems to have made a bunch of people cranky.
"DHH has just got to stop saying "Fuck" at conferences."
I wouldn't say that personally I'm hostile to the idea of Rails in the enterprise, but really who cares. Rails was not built for enterprise. Soz. If that's where it ends up, then that's a positive thing, but the framework was never made with the aim of courting big companies with big budgets. It's actually about programmers enjoying what they do. So why then would DHH modify his behaviour? To court a bunch of people he doesn't care about? I'm rather amused by the idea that a bunch of people doing what they like, for their own sake, should suddenly be expected to get 'serious' coz there's enterprise to be courtin' man! "Rails people have just got to stop saying they have a silver bullet" Depends on what tap you're drinking from. DHH for example has made a point of saying that Rails isn't for everyone everywhere. That's an attitude I've seen filtering through to a lot of other Rails devs.
While Ruby is defined by Rails for the mass public, I think any decent developer that has actually worked the framework will agree that the beauty of Rails really lies in the Ruby language itself.
It's Ruby that makes me able to do something like this: @matches = Item.select{ |i| i.totalsales > 1000 }.map{|i| i.custname}.uniq If it was simply the framework, then copycats like Cake would be mass accepted, considering the volume of PHP developers out there already... but it's just not as easy to use, and it's because of the language.
'I want to better understand your criticism of my comment about Rails defining Ruby outside of the "Ruby as Perl replacement" space.'
I don't think of Ruby as either a Perl replacement or as defined as the "engine" for Rails. Ruby may have hit the public consciousness because of Rails, but, as you've probably noticed, I have some real issues with Rails -- many more than I do with Ruby. I've written a lot of Perl code in the past few years. 90 percent of it is Perl 4; it evolved out of earlier code written in Korn shell with heavy use of nawk and gawk. If you think Perl is ugly, you ought to look at what I was doing before in awk. Ruby is a true programming language, a much more complete and well designed programming language than any of the other so-called "scripting" languages. About the only resemblance it bears to Perl is its adoption of Perl's regular expressions, arrays, hashes and syntactic flexibility. 'Is it that you think that Ruby would become more than a niche language without Rails?' There's no such thing as "Ruby without Rails" any more. You can't un-ring that bell! As well as I understand market dynamics and the ecological niches that programming languages get forced into, I think Ruby has a much better chance of becoming a widely used multi-purpose programming language than Perl or PHP. Where the doubt lies in my mind is with Ruby vs. Python. Especially in my "homeland", scientific computing, Python has a huge lead in terms of libraries and projects over Ruby. That's one of the reasons I'm building Rameau and why I'm building it the way I'm building it -- as scripting language agnostic as possible. Because I want Rameau to be used by people who are good at Python or Perl already, without forcing them to learn Ruby. 'Is it that you disagree that the language and the framework will become increasingly influenced by large-dollar customers as it gains popularity?' I'll point you to my comments on Obie Fernandez' blog, rather than repeat them here. http://www.infoq.com/news/how-many-rubies-future#view_3305
David writes: "I explained to him how Java applications were deployed (WAR files) and how app servers could load multiple versions of classes into the same running VM such that different apps could have version specific libraries. He immediately "got it""
I'm not convinced that allowing different of versions of classes/libraries in the same vm is a good idea. It's the source of lots of hard-to-figure-out errors in the j2ee world and doesn't add enough value to be worth the tradeoff IMHO. Especially for webapps - just run the different apps in seperate processes and route the traffic with a fronting apache server or something.
I don't see this fracturing you do. I think Charles' attitude is common - Matz's Ruby is the spec, literally.
And as for Enterprise, not only do I agree with Mr eel, that the idea of courting the enterprise is silly. If "the enterprise market" needs a feature, let them pay a coder to write it. That said, I think Ruby, and Rails, are both "Enterprise Ready". Ready for what? Well, rails isn't great at serving large static files, but squid is, and anyone who setup the first without the second... they wouldn't have used the enterprise-approved solution anyways. What's enterprise ready anyways? Enterprises roll out many apps that aren't to "Everyone". They write internal tools, CRMs, supplier/customer info/ordering pages, etc. These things don't require an insane number of hits/second to be valuable.
I think you've proved my point.
You say that Matz is the spec. Matz says that he is not interested in providing enterprise features in Ruby. Thus, the spec says that Ruby is not enterprise ready. You say that enterprise users should pay for the features they want. That's fine. Given that the spec isn't going to change to support those features (see above), then the folks who pay for new features cause those new features to be added to a non-approved version of Ruby. That non-approved, out of spec version is a fracture.
The problem with other languages that led to fragmentation was, imho, how they got tied to a particular VM for one feature, but then that platform tended to embrace and extend.
So you'd use Common Lisp for feature X, but then start using Y and Z, so it'd be hard to run your lisp elsewhere. But they weren't trying for compatibility - the Ruby community is basing the behavior of one VM off of another to emulate it. At that, there should eventually be less difference between Rubinius and JRuby than between Ruby 1.8.4 and 1.8.5, a gulf which doesn't fragment the community. The fragmentation of languages from the 60s-70s isn't, IMHO, likely to happen anymore. Those communities weren't close enough (communication) to avoid their languages splitting into multiple dialects. Also, these languages tend to have fewer users, so there's less of a slowing influence from the community to check the diversion.
Ruby is a scripting Smalltalk with a very nice library, excellent FP, and a great community that does most things that Perl and many DSLs do. If a good VM makes it possible to apply this nice little language to more applications, all the better.
But if RAILS or "Enterprise" change my favorite little scripting language, than a pox on all your money-soiled houses! Bah! Matz is rightfully reluctant to see his baby take on such a new role.
Rails is the dog? Ruby is the tail?
Then, what is the vendor that can provide a VM? Is PHP, Python getting fragmented? If not why not? Cant we learn from them to prevent Ruby's fragmentation? thanks, kyaw kyaw naing
The vendor that seems best positioned to provide a VM for running Ruby is Sun with the JRuby project.
PHP and Python and not getting fragmented because the base PHP and Python implementations are pretty good. On the other hand, the MRI is a steaming pile of dog poop (before you flame me, just read Zed's uptime statistics for Rails processes.) Matz didn't choose to learn from PHP and Python. Matz dismisses the enterprise folks. Matz (and much of the Ruby core team) is someplace between unresponsive and hostel to people who report bugs. Ruby and Rails have lots of great ideas, but the Ruby developers do not care about the people who are increasingly taking advantage of those ideas, so other folks are doing Ruby implementations and listening to the actual users of Ruby. Charles Nutter and Evan Phoenix are doing awesome things to service the Ruby world that Matz and Co. don't care to service.
Yes, you are right.
If they dont pay attention to users' hassles and concerns, some vendors will fill the void and reap huge gains. Anyway, we user stand to gain. Thanks. |
David PollakCalendar
QuicksearchCategoriesBlog Administration |
||||||||||||||||||||||||||||||||||||||||||
Recently I stumbled across a blog entry about "the impending Ruby fracture" by David Pollak, which serves only as the catalyst for this post. Specifically, the belief that "Ruby needs to address the needs of the other 90% of the market," with that 90% sup
Tracked: Mar 11, 19:56