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.