Sunday, May 03, 2009 - I've been reading a lot of old blog posts tonite regarding Microsoft and Open Source - it really reminds me of the interesting stances the company has taken over the last 5 to 10 years (I've only been working with Microsoft for just about 2 years now). For instance - I read a post from Scoble that goes over why "Web 2.0 entrepreneurs" don't trust the M$ Stack - and I must say, it's a pretty interesting read and the points that Scoble raises are still felt pretty strongly:
As I’ve been going around the world I’ve been meeting with many people who’ve built their companies on non-Microsoft stuff. Some of whom have companies worth billions of dollars now. Some of whom you’ve never heard about unless you read TechCrunch. Here’s 12 reasons Web 2.0 entrepreneurs like Ross tell me that they aren’t using Microsoft’s stuff: 1) Startup costs. Linux is free. Ruby on Rails is free. MySQL is free. 2) Performance per dollar. They perceive that a Linux server running Apache has more performance than IIS running .NET. 3) Finding tech staff is easier. There are a whole new raft of young, highly skilled people willing to work long hours at startups who can build sites using Ruby on Rails. 4) Perception of scalability. The geeks who run these new businesses perceive that they can scale up their data centers with Linux and not with Windows (the old “Google runs on Linux” argument). 5) That Microsoft doesn’t care about small businesses. After all, Microsoft is an evil borg, but Ruby on Rails comes from a single guy: David Heinemeier Hansson. He has a blog and answers questions fast. 6) That open source makes it easier to fix problems and/or build custom solutions. A variant of the old “Google or Amazon couldn’t be built on Windows” argument. 7) On clients, they want to choose the highest-reach platforms. That doesn’t mean a Windows app. Or even an app that runs only in IE. It must run on every variant of Linux and Macintosh too. 8) They don’t want to take shit from their friends (or, even, their Venture Capitalist). Most of this is just pure cost-control. I can hear the conversation now: “OK, you wanna go with Windows as your platform, but is the extra feature worth the licensing fees for Windows?” 9) No lockin. These new businesses don’t want to be locked into a specific vendor’s problems, er products. Why? Because that way they can’t shop for the best price among tools (or move to something else if the architecture changes). 10) More security. The new businesses perceive Linux, Apache, Firefox, and other open source stuff to have higher security than stuff built on Windows. 11) More agility. I’ve had entrepreneurs tell me they need to be able to buy a server and have it totally up and running in less than 30 minutes and that they say that Linux is better at that. 12) The working set is smaller. Because Linux can be stripped down, the entrepreneurs are telling me that they can make their server-side stuff run faster and with less memory usage.I'd love to know if these opinions have softened at all - or if they've been further reinforced - especially given the release of ASP.NET MVC (and it's subsequent listing on Codeplex under Ms-PL). I'm going to guess that they're roughly the same: people will believe what they're going to believe and for some reason, when it comes to Microsoft, changing people's minds is really hard. One thing that's particularly interesting to me is that Microsoft, at least some divisions, are actively changing their "thinking" if you will to a more open posture. The Ms-PL of ASP.NET MVC (mentioned above), some of the work that Developer Division is doing with the Mono team, and the source availability of the entire .NET stack (yes, I know it's still not open) are evidence of a shift in thinking. Great! But now what? Clearly openness and transparency is super groovy - but then what? I'm a huge champion of the open and transparent thing and I've been able to do some great stuff in the open with the MVC Storefront and I've taken you along with me. I like to think that I was brought to Microsoft to help keep "rolling the bubble" towards more openness - but I have no way of knowing where the rowers are a-rowing; so I just keep plugging along and thankfully they're letting me :). The Storefront has been a great learning tool, and a lot of people have thanked me for it (and you're all very welcome! I learned a ton too). But now what? It was always my intent to pop what I did up on Codeplex and share it with people with the idea that if it had legs - well hooray! So far I have every reason to think it will become quite the open, flexible, "new thinking" type of application that people can learn from, use, extend, and so on. It fires me up and makes me pretty happy because I really like Open Source and what it can do. But then again - I'm a Microsoft employee and this is a Microsoft project, after all. They've given me tremendous latitude to do with it what I will so people can learn core concepts surrounding ASP.NET MVC. That part is sort of done, and now we have Kona - an app that I'm hoping will be somewhat influential with respect to Open Source apps built on ASP.NET. Nice idea - but then there's the fact that I work on the ASP.NET team. What does it mean to you that I'm an MS Employee, on the ASP.NET team, building an OSI-licensed ecommerce app? Do you think Microsoft should do more things like this in a more formal way? Or should it stay out of the picture and let others run with this kind of thing? There are so many questions that I have in my head - and I'm very, very interested to know what you think here: What do you think Microsoft should do with respect to Open Source and .NET?
On the other hand, most (all) non MS stacks for professional dev are there for the taking, no questions, no restrictions, zero costs. From IDEs, os's, tooling etc. Just the fact that having to apply for membership of something is enough of a barrier to entry.
There is one thing that MS could do: put to bed an questions regarding the viability of the mono stack as a open and safe platform to develop on. Everytime mono comes up on slashdot or what not, there is usually a barage of posts regarding patents etc that may bite adpoters in the ass later. As such, the OSS community seem to not want to touch it.
The silverlight cooperation is a step in the right direction. I would love to see that with the rest of the stack with the Novell guys.
Essentially, be a bit more hands-off where it comes to defining the direction of tools and libraries - allow consumers to run with scissors a mite more. Openness and extensibility; openness so people can contribute opinions and influence the direction a product is going, and extensibility so they can make it go the way they want if openness fails.
2) If you're going to embrace open source standards, like XML, be consistent with your compliance of those standards. If you're going to support XML-based screens like XAML, then support the main things that developers love about XML-based screens, like CSS. If not, then expect developers to switch to xHTML, and ignore XAML completely.
3) If you're going to upgrade code, then put in an update tool that is quick and WORKS! Don't convert lines to labels. Don't convert data and adodb controls to labels. Write decent converters for ALL your existing controls and code.
4) Keep your settings in one place. If they are small, keep them in one file. If they are large, keep them in one folder. If they are huge, use lots of subfolders, but keep them in one overall folder. Makes them easy to backup, and easy to restore in case of problems.
5) STOP USING THE REGISTRY. It's just not practical. INI files worked fantastically. If you HAVE to update other INI files, like when installing programs, then just have a separate INI file that can be built off all the other files like a VIEW, and update THAT. It doesn't corrupt the original files, and if things corrupt, then it's easy to rebuild them.
6) MAKE DLL FILES READ ONLY. Dlls are the biggest reason that programs stop working, as their editability makes them corrupt regularly, and that makes the programs work erratically. You can't even tell what the problem is, because it's erratic. Follow IBM's example. Have read-only modules, and store your values in encrypted config files. Copy Apple's example, and make them rebuild the config files if they aren't there. Then if the config values corrupt, the dlls just rebuild them with default settings, and the program still works, and the developers can just go in and amend them.
7) Stop trying to tell everyone all the solutions. Make your knowledge base forums-based, and include non-Microsoft forums, as well as Microsoft solutions and Microsoft forums, just like open source people do, because the majority of solutions are found in forums, from other users who encountered the same problems.
8) When open source has a better solution, embrace it. Don't ignore it, or you'll find that developers will switch to the products with the better solutions.
9) STOP INTEGRATING YOUR PRODUCTS! It's not fun when SQL Server is integrated with everything else, because it's a nightmare when it fails to install properly in one part. It corrupts everything it's integrated with.
Make each product a stand-alone, that can exist without anything else, just like open-source does. When you HAVE to integrate, follow the example of Apache and PHP, and ODBC. just have a single module that connects them, and have a few lines that can be added to a config file, like PHP does with Apache. It works, and if Apache fails to start because PHP isn't right, you can go in to the config file, rem out those few lines, and Apache starts fine. Then you can reinstall your PHP module correctly in 10 minutes, edit the config files back and, you have working integration.
There is probably a lot more. But what you have to remember, is really only one thing. Cool GUIs look nice, and that appeals to most people when looking at a product. But when it comes down to running a business, or using a product every day, the thing that matters is not how it looks, but if it does the job, and if it stops working, then how easy it is to change it to an earlier version that DOES work. Nothing more. If not, then your customers will buy ONE Microsoft product, but will switch to open source when they need to buy new products.
Looks count for the first date. But to keep a man, you need a nice personality, and a willingness to not make his life too difficult.
The only reason why most people weren't using open source until now, was that the open source geeks were turning up on the first date a dirty t-shirt and sweat pants. But now they're dressing a lot better, and they're getting more dates, and KEEPING them. Before too long, Microsoft won't get a date for the prom, becuase everyone else has been hooked up for years, and is happy staying that way.