I like Martin Fowler. As a veritable lighthouse of the patterns and agile communities, he's both a resource and a calm steady voice for change in an industry that cannot succeed without change.
So, when he posted his recent entry on "Ruby and Microsoft" I was eager to take a look. He cites a general willingness of the Ruby community to work with Microsoft and I'm glad of that. He also points out, and rightly so, that Microsoft has some pretty strict rules designed to prevent open source code from creeping into the product code base, rules that get in the way of open source collaboration. That's what happens when the company is sued repeatedly for two decades by our competitors and government agencies.
Just as IBM suffered under long running, financially and politically motivated, anti-trust suits, which knocked them down a step and opened up the computer hardware market, Microsoft has been similarly affected. Hopefully, we are making the turn quicker than our friends in big blue did, largely by observing their example. They did turn the corner, and IBM makes money. We will turn the corner, and we make money too. I'm sure of that. But the lawsuits matter. They really do.
That said, I have to say that I disagree with Martin about many of the aspects he hit upon. I refer readers to this excellent post from Peter Laudati.
In this response to Martin, Peter argues eloquently for including tools in the toolset that support ALL developers, not just Martin's "alpha geeks." I agree with Peter. The MS Platform should encourage all developers to succeed. I also resent the term "alpha geek." Truly awful.
I would add that Microsoft should NOT deliver open source tools built in to the Visual Studio platform, because we cannot possibly support those tools. If the community develops a tool, they should support it. I have no problem linking to the alt.net stuff and encouraging folks to use it.
I think it would be great if a group of Open Source developers would create an all-up "add-on" install that contains all their favorite tools like NAnt, NHibernate, NUnit, Spring.Net, etc in a single package, complete with documentation and samples, that allows folks to easily add the alt.net tools to their setup in one jump.
Mr Fowler's being unfair to suggest that MS treats open source differently than "technology companies" like IBM, Sun and Apple. We aren't wildly supporting open source. We don't oppose open source either. (not anymore). The vast majority of software companies are "friendly but not too friendly" with open source. (There are tens of thousands of software companies. Martin doesn't name a single serious software company on the open source side.)
It's not the entire industry on one side with Microsoft on the other. It's an industry segment who support open source and make their money on hardware and/or services vs. the segment of companies who make their money selling software licenses. That latter group pretty much ignores open source (or releases bits into open source when we don't want to support it ourselves). Microsoft happens to be in the latter camp, and we are a big player... but we are far from unusual. (Note: I include OSS vendors like Redhat as services companies because, face it, you aren't paying for the operating system... you are paying for the support, and support is a service).
Oh, and I remember when the uber-geeks of yesterday went to Powerbuilder (and declared the death of VB) and then to Delphi (and again declared the death of VB) and then to EJB (and declared the death of everything). Nothing happened. Those platforms are not serious threats. The uber-geeks don't have a great track record for picking winners. I'm not worried.
The economics of intellectual property is entirely different than the economics of heavy manufacturing, so your car analogy doesn't work. What if Toyota could make a car by Investing $1 Billion in R&D, but then could manufacture the car for $200 each. They still need to recoup their Billion dollars, so they add $6,000 to the price of each car.
Of course, they make different models. One has fewer options and another has cool seats and a sun roof.
For a small number of people who want very basic transportation, they make a model for only $1,000. It does well but doesn't cut into the sales for the full car.
Along comes a person, who I will call X, who sees profit in taking that $1,000 car and adding features to it. He'd sell his features for $200. Toyota takes notice. If they allow X to add features, they would have to allow others to do so as well, and if they add enough features, the folks buying the $6,000 car would switch to the now-more-expensive upgraded basic version for $2,500.
Now Toyota is stuck! How can they afford to sell a very basic car if doing so undercuts the billion dollar investment that allowed them to build the car in the first place?
Like everyone who bought the basic car, X agreed not to put any features in it that could be used to increase its value ON RESALE TO OTHERS. That is reserved for the car that Toyota uses to reduce its massive R&D debt. Seems fair.
X violated that agreement.
Now,X is free to upgrade his own car, if he wants to. The same upgrade interfaces are even available. He just can't do it in a way that helps to create a grey-market for upgraded cars.
Who is in the wrong here? X is.
Re the "Death of VB" - well, VB died 5 years ago. Java killed VB. MS abandoned VB with .NET, VB.NET is Java in VB clothing. I guess some of those uber-geeks were right after all!
Mat Hobbs, you are uninformed. Your comments are hilarious - got any more?
Yes I realize the economics are different. Toyota will not sell the car in this instance because they loose all control over the vehicle. No owner is going to sign a license agreement for this car. What you are describing in the your example is a lease.
You don't own the car, someone else owns it. Its great for some people and business. You're not allowed to modify it. Fees are paid if the car is damaged or the number of miles driven are over.
If Toyota were to do what you describe, they would probably follow a model similar to the EV1.
Personally, I believe that software manufacturers be honest and call what they are doing leasing. Hardware manufacturers for things like router where you have to have a software license for the OS in order to legally use it should be the same.
I agree that the model in heavy manufacturing that is most similar to software licensing is the 'auto lease.'
However, we have not been dishonest IMHO. Whether you purchase Windows Vista, or download Visual Studio Express, you are 'leasing' the property. The legal term is 'license' but no one has hidden this fact from anyone.
Software is not 'bought' or 'sold.' We allow others to use the intellectual property we create, but we retain ownership, and we therefore, without a doubt, retain control. We DO have the right, unlike the blender manufacturer, to control what is done TO the software. Personally, I don't think we have (or want) any standing on what you build WITH the tool, but I'm no expert on that space... but clearly we want to retain control over what you add TO the product.
I hope we are on the same page.
"... but clearly we want to retain control over what you add TO the product."
This is the problem. MS wants to maintain control. Without releasing some control, I don't believe that MS will ever get a true community to grow. The community cannot trust because it there is no guarantee that those in control will not clamp down on it.
In this case when I say community, I mean opensource. Obviously, MS has a thriving community/ecosystem of paying commercial entities. I don't expect you to answer this, but can MS give up enough control to attract the opensource community while retaining it's commercial side?
When I got to the eclipse website, I look at all of the neat things that I can do with eclipse. As I want I can download these things and play around with them. Or I can go elsewhere and find things that people have created separate from the project and use them (i.e. Subclipse, Ruby Development Tools).
When I go to the Visual Studio website, I don't see a thriving community. If I want something for Visual Studio, I can thumb thru a software catalog (i.e. Programmer's Paradise). Of course since I don't use VS, I am _biased_ in this regards. I don't have a need to look so I've not seen it.
Thanks for the responses.