22 February 2007

Linq and my pet peeves with Microsoft's approach towards other open source projects

Linq, I know for those of you already on the .Net 3.0 wagon must've played with it already and no doubt, it's a feature that we've been waiting for a long time since objectspace was abandoned.

For those of you who don't know what Linq is, it's Microsoft's ORM framework which will be delivered as part of "Orcas" family. Such far, it includes everything that I typically see in other ORM framework like Hibernate but better in terms of development because what lacked in Hibernate of all times was an easy to use, GUI mapping tool. (don't tell me you never minded the fact you have to map hundreds of tables and their relationship with each other manually in the xml files), well Visual Studio "Oracs" solved the issue right out of the box by providing a visual mapping GUI right in the visual studio.

I'm not surprised though,  while developing my web services factory application, i've enjoyed the default code generation, UI mapping tool and other fantastic automations. The "Guidance Package" was idea with a set of "recipes" are simply brilliant, although, writing my own "guidance package" wasn't that simple the last time when I took a look at it. Still, I give props to Microsoft developers again for putting lots of focus on making our developer experiences pleasant and help us start our projects quickly.

But, oh yeah.. the "but" word, I was disappointed again when I found out that Linq by default, only ships with a sql server provider.  Since the introduction of "Provider" patterns, Membership, Profile, WebParts and etc, all the useful out of the box frameworks, they've always lacked the support for open source databases like mysql and postgresql. Microsoft is slick on this, their explanation is that "provider" pattern means you can implement whatever you want, we just provide you with some interfaces and a default sql server implementation, basically, telling ppl ike me to not ask for too much of them. I was just thinking of dropping NHibernate for Linq, now I have to sit back and re-think about my decision, after all, NHibernate does support multiple databases. (but honestly, I probably will only use at most two different databases, even so, sql server will still be my main focus)

Seriously, how many average joe developers like me can implement a provider ourselves? .NET 2.0 has been out for two years, I have yet to see a complete implementation of the membership, profile, webparts provider for mysql and postgresql, such I'm seriously not optimistic about seeing a complete implementation of mysql/postgresl for linq)

I guess what really bothers me is that I think the choice is consciously made by some  folks in the management (non-technical folks).They purposely decided to promote sql server while squeeze out mysql and postgresql. This goes the same for other projects like enterprise library. I just think non-technical people don't understand developer's mentality. By offering the option doesn't NOT mean we will abandon you for others! Think about all the developers who purposely chose not to use your stuff because you DO NOT support them. Oh yeah, please, don't tell me you don't have enough money to hire several dedicated developers for mysql and postgresql.

To be fair, in the last two years, I've seen great stride stepped forward via Microsoft embracing the community. Many teams like Ajax, Enterprise Library, ASP.NET website and others have became extremely active in the community and engage the community. All of their team members have personally answered a lot of people's questions, give out tips and my impression is that they all have blogs to talk about their work as well. Scott Gunther, their product manager is especially helpful, I personally have gain I don't know how many tips and tricks from his postings. Honestly, I have never felt closer to MS and I have to say, they are probably one of the best doing this out of all other companies out there (even better than a lot of open source communities). Something must've changed on top of their management, somebody technical must've finally gained some say in those big offices.

So I beg the questions, why not step a little further? Are you concerned of market share? or are those technical folks who promoted the "embrace" campagin got snagged via the wanted to feel important  non-technical office ass?  If so, well, I can tell you this. By giving people the options and support of open source databases, it only makes you better!  Most of us who like sql server will still use sql server, it's just the comfort of KNOWING you provide mysql and postgresql implementation, it makes us choose you.

My own project management product is soon to be released for commercial purchases. One of the biggest problem I had is supporting multiple databases. Our main focus is the sql server market, but I know we will have folks who might use mysql instead. So if this is not improved by v2 of my product, it doesn't matter how great linq is, I will be forced to use NHibernate for the sole purposes of bring multiple db support to my customers.

What is that classic phrase? Oh yeah, fight your enemies by bringing them closer. I just feel if Microsoft really wants to be even better, they should support the open source projects instead of fighting them.

End of My Pet Peeves Speech.

 
Anonymous comments are disabled