Hanalei, Hawaii Tuesday, February 09, 2010

SubSonic: RIP?

I'm getting a non-stop barrage of emails/IMs/blog comments in the wake of TechEd asking me if SubSonic is dead and buried. Accusations of "Microsoft has bought and buried SubSonic" seem to be coming at me from various places.

I'm getting a non-stop barrage of emails/IMs/blog comments in the wake of TechEd asking me if SubSonic is dead and buried. Accusations of "Microsoft has bought and buried SubSonic" seem to be coming at me from various places. Someone even asked me if SubSonic is the Hillary Clinton of ASP.NET. Good grief people...

No, Never. Not. Ever.
This is partly my fault. I've been trying to be a good guy about this whole "Is SubSonic Dead?" thing for the last 6 months and essentially just ignore it. It sort of calls into question my integrity - suggesting I might have sold SubSonic's soul to Redmond.

I get this from time to time if we don't pop a release every month - it happened right before we released 2.0.3.06_supes_274

No. SubSonic is not dead. No souls were sold. It hasn't been bought. Microsoft did not bury me.

I understand that a "sense of movement" indicates that a body is not a corpse, and I've felt that we've had that. Our checkins have been regular, as have our beta pushes of 2.1.

As a matter of fact, we just released 2.1 Release Candidate 1 today. Many thanks to Eric for that one!

Gray, Twitching Fingers
Today, as a matter of fact, I'm tackling (and hopefully solving) one of the core IQueryable bits that's holding me back from a full Linq To SubSonic implementation. It's not easy, this LINQ stuff, but I'm getting there!

The Dynamic Data Question
Yes, Dynamic Data. I like Dynamic Data. Some of my best friends use Dynamic Data. It's presence does not mean that SubSonic is dead - simply because it's a shinier scaffold. It does what it does very, very well and I am actually quite fond of it :).

SubSonic != Dynamic Data. Yes there are overlaps, but that's what SubSonic is really - one big overlap. It happens to be a very easy to use overlap, and that's always been my focus.

Just what is Rob Conery doing? I thought SubSonic was going to be Dynamic Data!

No, never. That project (aka Oryx) was afoot long before I arrived and it fits a need that Microsoft has - and it fits it well.Yes, there are some interesting parallels - but that can be said about many programs at Microsoft :). Sometimes the parallels exist inside these blue walls...

Overlap is OK. It gives you choice. It inspires competition to be better.

It's happening, I promise. But I can't jump until the plane leaves the ground - so I ask for your patience. Patience while MVC matures (and I drive as much love into the platform as I can), patience while Dynamic Data crystallizes, patience while I work out IQueryable.


Firefly - June 4, 2008 -

I would say SubSonic is more like Mike Gravel :)

Chad Myers - June 5, 2008 -

"The reports of SubSonic's demise have been greatly exaggerated..."

I hear ya with the IQueryable stuff, man. Keep up the good work.

Matt - June 5, 2008 -

Hey Rob

I like dynamic data too :) With the latest drop from a few weeks ago, there is now a provider model. Any chance of a SubSonic provider?

John S. - June 5, 2008 -

I follow SubSonic closely and it has never felt dead to me with the regular checkins and beta releases. But it's a lack of information that worries me. Here are my questions:

Why build LINQ to SubSonic? What's the benefit? What will LINQ be able to do that SqlQuery can't? Is there a plan for SubSonic 3.0 beyond LINQ and moving Sugar to extension methods? If so, what's the plan?

And then there's the mixed messages. Why isn't SubSonic in the MVC screencasts? The impression was that SubSonic was going to be the convention-based DAL for MVC, yet we've seen very little of that. I want to start using MVC, but I don't want to use LINQ. I was waiting for the SubSonic bits to show up.

I trust your judgment but I think a little more clarity will help quell the worries people have.

Boersnoes - June 5, 2008 -

Hey,

I must admit I know nothing about SubSonic (lo me!)

As with everything, I would like to educate myself.

So.. where do I start? Are there any good real-life examples/tutorials?

Maybe a number of screencasts like for MVC? That would be awesome! Rob & ScottH should screencast the whole world!

Mike - June 5, 2008 -

Maybe you can get an intern this summer from Microsoft to help out, like writing docs, tests, blogging etc. Microsoft's resources could surely help you out there.

Between MVC, SubSonic, blogging, the commerce screencasts, there's only so much a guy can do right?

Good luck!

PS. Is SubSonic 3 going to be the one with migrations? Doesn't Microsoft want that to be in the core .NET library some day?

Robin - June 5, 2008 -

I agree with John S. that it's the lack of information rather than the actual progress that is worrying. For example, the project site hasn't changed in months as far as I can tell and I think it's quite hard to find any information on the site if you're new to SubSonic.

The one question I certainly have is support for MySql. Does "a full Linq to Subsonic implementation" mean that MySql is not supported until MySql provide support for Linq (which knowing MySql might take a few years...). This would be especially annoying given the vastly improved MySql support in 2.1.

Finally, interesting use of Google Code as the SubSonic repository. I think that proves the project hasn't been bought by Microsoft!

Keep up the great work though and thanks for the great webcasts.

Jeremy - June 5, 2008 -

I've never thought the project was dead, certainly seemed slowed down a bit lately as everyone was busy with other adventures and that's common with open source, but one thing that's always chapped my ass is the issue tracker on codeplex always having 300 to 400 open tickets. I think this might be contributing to some people's opinion that the project is dead or not stable because there are a gazillion open issues.

I know how hard it is to keep up with all of the submitted tasks, but if there was a dedicated admin that could at least start filtering tickets and applying more of a GTD method to the list that would be great. I'm sure 90% of the issues out there are either duplicates, already fixed, or some bonehead suggestion I made that will never make it into the codebase.

Would be nice to see the list cleaned up and possible broken up into planned releases (thinking trac project layout) or closed if its not applicable, already been fixed, or just plain isn't going to get done.

Other than that I'm not complaining as Subsonic has been the cats meow since it first came out and I'd still be happy to using 1.0 as that is still better than almost all of the alternatives out there.

Keep up the good work!

Eric Kemp - June 5, 2008 -

Please see this post if you downloaded RC 1 prior to 10:05 AM EST on June 5th. monk.thelonio.us/.../Important-Notic

Pawel Krakowiak - June 5, 2008 -

I was attending a local Heroes {Community} Launch in my city a few days ago (yeah, we have our own :P) and when I brought up SubSonic in a ORM discussion I met the same reaction - that SubSonic is dead and there haven't been any releases for months, which I knew was not true because I saw your SVN repo before. It's good you wrote this post, at least I can point people to it now if somebody claims that I'm using a dead tool.

Chad - June 5, 2008 -

I second what @John S. said about the mixed messages. Meaning... I too was a bit confused/bummed to see that the Commerce MVC screencasts had no mention or use of SubSonic. That's not a knock on the screencasts (they're REALLY great), it just means I like SubSonic so much that I wish you'd use it in there! I too was under the impression that SubSonic was going to be used in at least a more *official* way by Microsoft - but I haven't seen any of that yet. Did I (we) misunderstand?

J Wynia - June 5, 2008 -

I've been using Subsonic with MVC on a couple of projects as my models and it works just fine. I don't know if the WAY I'm using them is anything one could describe as orthodox, but I'm using them together without difficulty.

Because I'm new to both Subsonic and MVC in the last couple of months, I'm reluctant to put out my own screencast showing how I'm doing it because of that suspected unorthodox approach.

Willie Tilton - June 5, 2008 -

I don't think it could be called dead when you're releasing things monthly. That's way above the average of other OS projects.

Having said that though, I think it's the lack of documentation and communication. For instance, you mentioned migrations a long while back and while that feature has been around, there's been no further mention of it and no real documentation that would be helpful in doing it.

Having looked at the migrations again now I've found that you guys have put a ton of effort into it, but in all this time just one line about it? I think it's pretty huge so maybe I'll blog more on how I got my stuff going.

Same with the video casts you've done. Why Linq to SQL? Just to learn something else? If this doesn't send a message of "I'm not using SubSonic anymore, why should you?" than I don't know what does.

Rob Conery - June 5, 2008 -

>>>Why build LINQ to SubSonic? What's the benefit? What will LINQ be able to do that SqlQuery can't? <<<

LINQ is a set of language extensions - ones that people in a year or so will be very familiar with. They are a DSL of sorts, and work nicely with IQueryable. SubSonic is simply going to support this syntax.

The benefit is that you can use LINQ and IQueryable and use SubSonic as your provider. Or NHibernate. Or LinqToSql - interchangeably. LINQ is the "english" of querying for 3.5 and beyond.

>>>And then there's the mixed messages. Why isn't SubSonic in the MVC screencasts? <<<

The Storefront is a starter kit and a Microsoft product. Microsoft can't ship SubSonic because of the licensing. However I'm using this experience to help me build out SubSonic, and my ultimate goal is to, at the very end, show how you can swap out LinqToSql and create SubSonic-fired repositories hitting VistaDB or MySQL.

>>>For example, the project site hasn't changed in months as far as I can tell and I think it's quite hard to find any information on the site if you're new to SubSonic.<<<

I just changed the site over completely 2 months ago, and added 8 articles. What are you having a hard time finding?

>>>one thing that's always chapped my ass is the issue tracker on codeplex always having 300 to 400 open tickets<<<

Sometimes we don't close them like we should (I do this a lot) and also a lot of those "Issues" are simply comments. We rely heavily on the voting system as well.

That said - 2.l is so full of goodness (which I will be talking about in the next 2 weeks) I, for the life of me, can't see why people think this project is dead.

>>>I think it's the lack of documentation <<<

Amazingly, this project revolves mostly around myself and Eric Kemp. A couple of folks have jumped on to add some things here and there, but no one touches docs. Yet everyone complains about them. To me it's a losing battle no matter what you do.

T Morgan - June 5, 2008 -

Apparently, these people don't read your blog. You haven't been even remotely ambiguous on the topic. How many times do you have to say the words 'No, it's not dying and isn't going to.' before people actually comprehend the English?

I don't get it. We all knew things would change when you were officially hired by MS and the fact that you are working as diligently as you have been on SubSonic reveals that you are a.) A robot or b.) A tireless and dedicated developer.

I seriously think these people are the loud minority. I know things move a lot faster in Development Land than in reality, but c'mon. Anyone paying attention knows nothing is going to happen to SubSonic. 'WTF' is just right.

ertert - June 6, 2008 -

OMFG! Subsonic is DEAD?

Ryan - June 6, 2008 -

Why not have a public documentation wiki? That way there would be a singular place to put all of the SubSonic knowledge that's currently scattered around the internet.

There is no lack of documentation on SubSonic, the problem is that it isn't found all in one place.

Esico - June 6, 2008 -

@Rob:

>>LINQ is a set of language extensions - ones that people in a year or so will be very familiar with. <<

Well i'm not too sure about this. Only one of 7 developers at the company I work is a linq fan. They and I don't like the readability and the Linq overhead (mem + perf).

>>They are a DSL of sorts, and work nicely with IQueryable. SubSonic is simply going to support this syntax.<<

Only the syntax or is SubSonic going to query via the Linq library?

>>The benefit is that you can use LINQ and IQueryable and use SubSonic as your provider. Or NHibernate. Or LinqToSql - interchangeably. <<

Guess this answered my previous question but raises another:

Why should I not use the LinqToSQl provider when I'm using MSSQL? In this case there's no need for SubSonic anymore (at least the orm bits). In other words SubSonic will become the overhead for Linq.

>>LINQ is the "english" of querying for 3.5 and beyond.<<

I'm not to sure bout this either. Yes VS2008 is polluting my web.config with linq stuff and adds linq thingies in every new webpage (a not so nice pushing strategie from MS).

>>(from John S)What will LINQ be able to do that SqlQuery can't?<<

I'm curious about that too. Because v2.1 RC1 looks very good indeed and about the realy complex queries: trust me you don't want to linq these either.

I hope i'm not coming on too strong here but i'm really worrying that SubSonic with Linq will sacrifice to much in perf + mem overhead, gain comlexity and will lose it's free spirit (mono etc).

Sincerly

Edward

Robin - June 6, 2008 -

>>>>I just changed the site over completely 2 months ago, and added 8 articles. What are you having a hard time finding?

The main thing is up-to-date news on the project. I think given that this is the main SubSonic project site there should be a prominent news feed on the homepage or something. At the moment any news on SubSonic comes through yours or Erik's blog when it really it should appear on the homepage of the project site (as it ranks nr.1 on Google for subsonic searches). If I am new to SubSonic how do I know to look at your blogs? 2.1 is now at RC1 yet the homepage makes no mention of this. There's a link to Beta 2 at the bottom left but that's it.

A prominent getting started section wouldn't go amiss either. I know there is a link down the page to a webcast and another soniccast link down on the left but these are not prominent or obvious. I would suggest to add a "Getting started" menu item next to home which lists all the webcasts (in an appropriate order for learning) as well links to posts around the web. eg your blog is excellent and full of info, but it's hard to get at the info you wrote 18 months ago since it's a blog and not a project site.

Note that I am thinking about this from the eyes of a newbie trying to play around with subsonic for the first time, not someone who's been using it for 6 months (they know where to get their info).

Rob Conery - June 6, 2008 -

@Esico: >>>Well i'm not too sure about this. Only one of 7 developers at the company I work is a linq fan. They and I don't like the readability and the Linq overhead (mem + perf).<<<

Have you run benchmarks? If you're referring to Linq To Sql, it's actually crazy nanoseconds slower than SqlClient. People aren't LINQ fans (usually) because they haven't tried it. It's different. It's scary. It's insanely useful.

Again - LINQ is a set of language extensions that work on any type of IEnumerable - it doesn't have to be a database.

>>>VS2008 is polluting my web.config with linq stuff and adds linq thingies in every new webpage <<<

Really? What kind of stuff is that? LINQ is a C# language feature.

>>>i'm really worrying that SubSonic with Linq will sacrifice to much in perf + mem overhead, gain comlexity and will lose it's free spirit (mono etc). <<<

You and many others it appears. Get to know LINQ (the language set) and what you can do with it. Not sure where you're getting your perf info - I haven't seen anything to suggest it lags.

>>>At the moment any news on SubSonic comes through yours or Erik's blog <<<

I cross-post everything SubSonic-related (except for this post :) over to the new site. It's why I rolled it over (it's a blog).

>>>If I am new to SubSonic how do I know to look at your blogs?<<<

Good point.

>>>2.1 is now at RC1 yet the homepage makes no mention of this<<<

Nother good point.

>>>A prominent getting started section wouldn't go amiss either<<<

Hatrick with the good points! I'll put some love towards that today.

Willie - June 6, 2008 -

> Amazingly, this project revolves mostly around myself and Eric Kemp. A couple of folks have jumped on to add some things here and there, but no one touches docs. Yet everyone complains about them. To me it's a losing battle no matter what you do.

@Rob: I'll help with the documentation. A lot of times I'm just figuring it out anyway and will write something up, either for myself, or blog it.

I think if you gave us the keys to help with the documentation we'd all pitch in.

I think honestly if they think it's dead, just refer them to the svn logs. I mean...seriously.

Rob Conery - June 6, 2008 -

Thanks Willie - send me an email address and i'll get your account setup!

Esico - June 6, 2008 -

>>Have you run benchmarks? If you're referring to Linq To Sql, it's actually crazy nanoseconds slower than SqlClient. <<

Yes for simple crud stuff it is. For more complex queries the generated sql gets monster propertions. Bloat written all over it.

>>You and many others it appears. Get to know LINQ (the language set) and what you can do with it. Not sure where you're getting your perf info - I haven't seen anything to suggest it lags.<<

this benchmarks is sound: codebetter.com/.../linq-to-objects

>>>VS2008 is polluting my web.config with linq stuff and adds linq thingies in every new webpage <<<

Really? What kind of stuff is that? LINQ is a C# language feature.<<<<

yes really: it adds a linq assembly ref. in the web.config and linq uses clause in every new webpage. a bit annoying.

Cheers

Rob Conery - June 6, 2008 -

@Esico - kind of the very definition of FUD if you ask me.

>>>it adds a linq assembly ref. in the web.config and linq uses clause in every new webpage<<<

Seriously? This is "polluting my web.config with linq stuff and adds linq thingies in every new webpag". I think you can come up with a more cogent arguement than the asthetics of one line of XML and a single using statement.

>>>this benchmarks is sound<<<

Dude, these aren't benchmarks. It's also not Linq To Sql. Let me help you out here:

"After working with Linq-to-objects, I started thinking about how this tool could work in the wrong hands. At its simplest, a seemingly elegant query could easily turn into a CPU hog if the underlying data structure isn't organized well"

That's the first paragraph - not sure if you actually read it. It's about abusing a tool.

I don't mind people challenging my opinions, but you're not doing that here. I don't know what you have agains LINQ, but none of what you've said supports your claim that Linq it a perf hog. It's not.

Mycall - June 6, 2008 -

jdconley.com/.../linq-to-sql-sur and channel9.msdn.com/.../ShowPost.aspx do mention how LINQ can be slow.

PS: Love thy SubSonic

Rob Conery - June 7, 2008 -

LOL not sure how my post RE SubSonic has started to revolve around LINQ.

So, like with any tool, you can abuse what you're doing. I'm not going to "defend" LINQ and say it's wonderful - because I've been bitten too. But like anything code-oriented there are slow ways, and there are fast ways.

String concatenation vs. Stringbuilders.

You can indeed hurt yourself with Linq To Sql. But to put this in perspective - the article you sited here is talking about 10,000 inserts to a DB. "And it took a whopping 2 seconds". Whatever.

Esico - June 7, 2008 -

>>@Esico - kind of the very definition of FUD if you ask me.<<

It's about using things that you don't need.

>>>> I think you can come up with a more cogent arguement than the asthetics of one line of XML and a single using statement. <<<<

ofcourse it is not about asthetics. It's about loading code or including code that you don't need/want.

>>Dude, these aren't benchmarks. It's also not Linq To Sql. <<

They are good performance test. You can download it yourself and yes it is L2O and it is all LINQ and IQueryable. <<

"After working with Linq-to-objects, I started thinking about how this tool could work in the wrong hands. At its simplest, a seemingly elegant query could easily turn into a CPU hog if the underlying data structure isn't organized well"

>>That's the first paragraph - not sure if you actually read it. It's about abusing a tool.

<<<

It's about how easy it is to get it wrong/slow.

>>I don't mind people challenging my opinions, but you're not doing that here. I don't know what you have agains LINQ, but none of what you've said supports your claim that Linq it a perf hog. It's not.<<

I'm not anti-Linq. I certainly can see where I could use Linq (quering xml and some object collections scenarios). It is a very smart technology under the hood. no doubt.

>>LOL not sure how my post RE SubSonic has started to revolve around LINQ<<

It's is your claim: "LINQ is a set of language extensions - ones that people in a year or so will be very familiar with." and my strong doubt that SubSonic needs Linq.

SubSonic is my orm of choice mainly because of it's transparance, simplicity and perf. I really looking forward to 2.1 aka Pakala. A lot of time and good energy is put in that. Life will be once again better for us SubSonic addicts. No doubt. After that? we'll see.

Sincerly,

Rob Conery - June 7, 2008 -

Esico unless you've used it and had problems you weren't able to get around, I have to question your opinion. It sounds to me like you haven't, and you've read negative blog posts and made up your mind.

Either way - let's do this. Bookmark this post/conversation and come back in a year. We'll pick this conversation up then :).

Firefly - June 7, 2008 -

I am one of the guys that really like the LINQ syntax, I think it's nice and elegant way to query data. Performance wise anything that wrongly implemented could be a performance hog. Those are the kind of argument that just doesn't go anywhere.

Secondly there is nothing about the LINQ to object benchmark is sound. Here is a few thing that I want to point out for good measure. The test doesn't have a link to an actually working VS project that we can actually compile and run, just a few copy and paste code. His hard coded test require a understanding of the actual data structure. A fair comparison would be running a foreach statement because that's what LINQ have to do. There isn't even any mention of what the actually upper limit and lower limit bound for the dictionary. So until we see an actual project with source that we can compile and verify those are just baseless claim.

Sorry Rob I don't want to turn this into an argument about LINQ or not I just want to raise a few fact check to Esico.

Esico - June 7, 2008 -

deal

kevin - June 7, 2008 -

I might be wrong in my understanding of LINQ, but doesn't any perf problems with LINQ to SQL or LINQ to Objects have to do with the implementation of the "to XXX" and not the LINQ language extension itself (this is crap db architecture aside and poor coding on the user's part not being a factor). So if there are worries that there will be perf issues using LINQ to Subsonic, then one is saying this because they are worried Rob and the team won't implement it well, something that does not worry me in the slightest.

One of the main reasons I love subsonic is the many ways you can accomplish the same action; different people in the team I work with like the different styles, but we can all agree that the subsonic generated classes are awesome. Having used LINQ a lot as of late, the thought of being able to use LINQ to query subsonic classes is just another reason to love subsonic.

I think Esico might not be seeing the forest from the trees here, LINQ is bigger than any of it's implementations and I do not think Rob was saying "In a year, everyone will be using LINQ to this or that" but that people will be familiar with the syntax.

Mike - June 8, 2008 -

Some people just don't 'get' LINQ. I dodn't either. The compiler just translates the contextual keywords to method invocations. These methods are brought into scope by importing a namespace that has extension methods. That's it. It's simple and elegant, not a performance hog.

If you don't like the VS templates, change them! That's NO reason to dislike LINQ. Any issues with a specific implementation are not because of LINQ. Saying it's too easy to make mistakes, well that's no argument. I think I can get into problems with SubSonic or NHibernate too. IF I didn't know what I was doing. Luckily I do know, that's what being a professional is all about.

Philip Dockerman - June 12, 2008 -

Hi Rob,

Sorry for hijaking your thread but do you mind if I ask why there's never been a SubSonic provider for XML?

It seems such an oversight I guessed there must be a good reason for it's absence (otherwise I'm tempted to have a stab :) )

Cheers and keep up the good work.

Phil.

j - June 18, 2008 -

Good one Phil!

I hate working with XML. it just isnt fun...

subsonic would make it fun... If you made it, I for one would use it.

You Go Phil!

(said to the tone of "You Go Girl!", with a wave of the hand while snapping fingers)

Mitch - June 18, 2008 -

Here is my two cents on the business side of LINQ: I don't like LINQ becase it is expensive to implement!

At a time where there are a hundred game changing technologies out there it is very hard to justify the investment in LINQ as supposed to say MVC, or perhaps jQuery, or maybe Silverlight... but wait SSDS looks really good too, how about MESH, or google AppEngine, wait ADO.NET Data Services.... you get my point :)

LINQ does not provide a good a return on investment when compared to a lot of these other technologies... Why you ask? well simple.. LINQ replaces something that works well enough. The first priority to be tackled by LINQ is DB querying... and yes I know that you can also query objects etc.etc. Although LINQ is query heaven for all things IQueryable, at the end of the day it will be used 80% - at least in the first wave of implementation - to query a DB, something that has been done very well by a bunch of other frameworks already i.e. SubSonic.

So when it comes to steering my small dev shop, well let's just say that LINQ is not a high priority.

I think I'll tackle MVC first... or maybe AppEngine... crap! now I'm confused...

Mitch

Rob Conery - June 18, 2008 -

@Philip: I hate XML :). I wouldn't stop someone from building an XML provider though :).

@Mitch: >>>I don't like LINQ becase it is expensive to implement!<<<

It's a language feature... expensive? It's already there.

>>>LINQ does not provide a good a return on investment<<<

LINQ is free? ROI? Huh?

>>>LINQ replaces something that works well enough<<<

If you're talking SQL - sure, I agree. If you're talking for loops running over collections - nah. If you're talking XMLDataReaders - nah.

>>>So when it comes to steering my small dev shop, well let's just say that LINQ is not a high priority.<<<

Fair enough. But let's wait until you start using 3.5 and that 10 lines of code is reduced to 1 with some terse LINQ syntax :).

LINQ/MVC/AppEngine/MESH are apples to pine cones. LINQ, again, is a language feature

Mitch - June 19, 2008 -

@Rob,

I mean expensive from the point of view of retraining / retooling.

When learning / implementing a new technology for me ROI means the efficiency gained in the long run minus the hours spent in retraining / retooling. I believe it to be my responsibility to support my team in their retraining and retooling, I see it as an investment, not an expense. However when investing, once must decide which technologies have the best ROI.

I don't question that LINQ in the long run has a positive ROI. My point was that LINQ is competing for mindshare and training budgets, against many other new technologies - albeit not solving the same problem - that have a much better ROI, for instance MVC.

I do admit that looking at LINQ syntax is simply a very pleasant experience. I'll just have to hold my enthusiasm because there are other technologies that solve other more pressing problems.

As I said before this is my take from the business angle.

Kevin - June 19, 2008 -

@Mitch,

I would say given the learning curve of LINQ (reading 9 blog posts by ScottGu and you know probably 75% of what a normal programmer needs to know - list of those can be found here http://weblogs.asp.net/scottgu/archive/2007/09/07/linq-to-sql-part-9-using-a-custom-linq-expression-with-the-lt-asp-linqdatasource-gt-control.aspx) and the fact that LINQ is a language feature that you can use in any data driven app (unlike MVC which can only be used for web apps) that the ROI on LINQ is quite high. Granted, if you have something in place already that achieves the fast development speed that LINQ can help you obtain, then there is no point (just like if you already like webforms, then screw MVC). But for the business I work at, in which > 50% of the code is classic asp with inline sql (ewwwwwwwww), our issue is more that we have many pressing issues and LINQ provides a very quick solution to one large area of that.

I am no business person, but of course no one is going to invest time and resources in something that they already have something reasonable in place for. But I would say to anyone saying ROI on Linq might not be high is wrong (if you take importance of your own company's needs out of the equation)

Mitch - June 20, 2008 -

@Kevin

I agree with you, in your scenario I can see how LINQ would be a very high priority, for you LINQ has a very high ROI.

.... for me not as much precisely because we already have a tool that can do sort of the same thing LINQ does for DB access.

@Rob

I love your blog because these sort of discussions are the norm... great job on getting us fired up... keep up the great work.

Mich - June 20, 2008 -

@Kevin

You are definitely a much better communicator than I am... You restated I wanted to say very succinctly and in a much clearer way. I'm sure your company will have no problem buying your arguments to implement LINQ.

You are also right about this deviating from Rob's original post... Sorry Rob ... but then again most interesting conversations never end up where they started.

That was too civilized... you are just wrong and I'm right... that sounds more dramatic and fun... just kidding ;)

Gecko