A good friend of mine Jason Darling sent me over a new article by Martin Fowler about Ruby at Microsoft. He asked for my thoughts on it. Martin makes some good points, and there are some I want to point out.
First, Microsoft hiring John Lam several months back may have been a signal that MS wants Ruby on the .NET platform. But that doesn’t preclude someone else from working on a NRuby open-source platfrom ala JRuby. Yes, John was working on something similar, but if one is worried about the control MS will have over the platform, or if it will meet the needs of the community, then I say we build the platform that meets the needs of the community as the community.
Martin says “Ruby doesn’t compete with the core revenue generators in Microsoft’s line up.” Perhaps not, but one of the challenges of an organization releasing something is that they have to support it. So if they did release a Ruby runtime as an official Microsoft product, I reckon they’d have to support it, meaning they’d have to ramp people up on that. So I suppose they’d probably just put it on Codeplex to sidestep that.
Martin also says “If Microsoft doesn’t support the Ruby platform, it runs the risk of people moving away from .NET (and Windows) on server farms if Ruby on Rails becomes successful.” I think this is unlikely, at least for a while. .NET is free. They would likely run Ruby on Windows – probably using IIS somehow. And with the Ruby in Steel project, devs might continue using Visual Studio, and probably TFS as well. Yes, people may use Linux, but there’s more to the servers in a data center than what runs on top of them – especially given the level of support the larger customers can get with Microsoft.
I tend to agree with Martin’s comments on the AlphaGeeks. I remember when Neal Ford began really using Ruby and Rails, and thinking how much of an impact Ruby would have on the .NET community. Just like it is hard to compete with Apple because they are cool, it’s hard to compete with Ruby because it is fun. How does one compete against fun? By it’s very nature, if you aren’t for fun…
Regarding Agile at Microsoft – I think an interesting turning point occurred when Microsoft released the Agile for MSF process template as the default template in TFS. I go onsite to a lot of customers who are now interested in agile processes because of that. And internally, it seems like there are more and more pushes for agility inside the teams.
In fact, I had a long conversation last night with some colleagues about this very thing. They hadn’t really heard or understood what this whole “agile” thing was all about. Two of them came from dev teams inside Microsoft. And we had a very good discussion about what agile is, what the agile methodologies are really about (finding the pain points stopping you from delivering quality, working software that meets your customer’s needs and applying the proper methodologies to help with that pain), and how difficult it is to become agile in a legacy environment – especially as large as some of the teams are at Microsoft.
In his closing, Martin talks about what a great opportunity this is for Microsoft to work with the Ruby community. Not to sound like a Microsoft apologist, since I truly don’t know the answer to this, but were things like that said about Sun? “JRuby is an excellent opportunity for Sun to work with the Ruby community.” Granted, Sun is a different ballgame, but it goes back to my earlier point.
We as a community shouldn’t be as concerned about what Microsoft is doing with Ruby and .NET. We should assume that they are only doing things that benefit their bottom line, and work to create excellent alternatives. Microsoft may have bastardized NUnit, but they also integrated the output and tracking of that into a data warehouse which can actually report some interesting information with the devs having to do little more than run the reports.
So, I’m not sure what opportunity we have at hand. But, whatever it is, we as a community shouldn’t rely on others to create the things we want. In fact, that’s kind of counter to the open-source movement. Instead, let’s build our own, creating integration with Visual Studio, making it easy to mix Ruby and ASP.NET, and innovating Ruby. Let’s make Ruby (and Python) languages that truly can run anywhere – StandAlone, in a JVM, in .NET, or wherever the future may lie.
Disclaimer: All thoughts above are my own and don’t reflect the thinkings or opinions of my employer. I don’t speak for them – my blog uses blogger for goodness sakes. Prices may vary. Void where prohibited.