[I can't believe I'm writing this post and taking on (somewhat) who I'm taking on... But this needs to be said publicly.]

If you haven't read all the buzz... go here and read Sam's thoughts on Martin's Microsoft article.  While your at it read the crappy stuff (IMO) that MS is doing to Jamie.

Ok, I think that's all the link outs.  Before I go any further I have to say that there are some things being said that I absolutely agree... MS Legal has been scaring me more and more by their tactics.  By no means am I ignoring what they are doing...

That said I saw something in Sam's comments that I have to take issue with...

All of my peers on and the "Agile .NET" community have already moved onto Castle/Windsor, NUNit, NAnt, MonoRail, Spring.NET, NHibernate, etc instead of Microsoft solutions. Its virtually over already.

In case you don't see what's so wrong about this... I figure that Sam is referring to his fellow CodeBetter agilists Jeremy, Scott, Jeffrey, etc., but it also could mean that he's speaking for all of us.  He's not.  I love ASP.NET even though it is considered "a leaky abstraction" by some... mainly because one can't do TDD with it (a practice that has NEVER given me personally the ROI... although I'm about to try again with MBUnit... so don't flame me).

Honestly while I understand the whole MVC pattern and why everyone is all gaga... it's not always necessary to go to that extreme.  My understanding has been that MVC is great for web sites that have high traffic... what does that mean?  Honestly I have to say that I don't know what that really means.

Let me put up something in regards to the superior MVC architecture.  The last company I worked for (TechData which was oftentimes called the "evil corporation") is (or at least was) the second or third largest e-commerce site in the world... it just happens to be b2b (which is why you probably never heard of it).  What did we use for this?  ASP.NET and remoting... and by ASP.NET I don't mean monorails or any other MVC-based architecture.  Am I saying their architecture is/was perfect?  By no means!  I could probably give a number of the DailyWTF entries based on examples from this site (and this is probably true of a number of high volume sites unless the architects were able to predict the usage accurately).

I've looked at Spring and it mainly fits into my thoughts on IOC (I know it does more, but I never got passed the IOC).  I still feel that IOC's are overkill unless you are trying to do TDD (then it makes perfect sense because it alleviates some of the pains of testing). 

I actually have a little more with Castle's ActiveRecord used with NHIbernate (I would never use NHibernate without some kind of wrapper as I really don't want to write that much code/XML... I'd rather use something like SubSonic any day).

I have used Nant... I won't say anything good or bad about it.  I see it's power, but have also felt the pain of editing long build scripts....


I know I'll probably be labeled a Mort (for the tirade above) even though I've just entered my 15th year in the field as a professional developer.  I have seen all kinds of things... I've tried all kinds of program techniques too... I weigh new techniques/technologies based on ROI.  If it buys me something (faster dev time, better code in the same amount of time, better performance, etc.) then I'm all over it, if it doesn't seem to have the cost-benefit or has too many issues to do in a sane fashion I'll skip it...

As far as OSS stuff goes, I use Open Source tools, but am cautious about the licenses on the libraries I use... which is really the issue... It's GPL versus commercial... (and not free versus commercial). There's danger with GPL something that MS is trying to avoid... It's understandable for them to be that way within their own products.  In Jamie's case I really wish they would come up with an arrangement that consoles the lawyers and let's him continue on... he's really helping MS out (which is really the big point they are missing). 

Sometimes I wonder if the hoopla is that MS can't/won't say something like... "we've been watching the whole ROR... and we like it... we like it enough to copy and attempt to improve it (in our MS Proprietary way)."

If there's anything to remember... when Sam seems to speak for everyone at CodeBetter, he's not really speaking for everyone... sorry if I stepped on some toes with this post.  I've just been frustrated with the "this is the best way to do this... believe me" attitudes that seem to float around in the blogosphere (or the view that if it OSS then it is therefore better)

[tags: Microsoft, Dev Philosophy]

Print | posted on Thursday, May 31, 2007 5:29 PM


# re: Correction...

left by at 5/31/2007 7:17 PM Gravatar

Jay, you're not a Mort.  You're a thoughtful software engineer that is open-minded enough to try something new, wise enough to know that not everything new is useful, and thoughtful enough to detect strengths and weaknesses in every product.  Thanks for bringing some perspective to this conversation.

# re: Correction...

left by at 5/31/2007 7:57 PM Gravatar


I'm sorry I said everyone. You are correct that I do not speak for everyone. I really should speak for myself only. I do respect your opinions and viewpoints. You are not wrong for having them. You saw me take on Ayende over CAB and the whole OSS thing too. I also use what is going to deliver the best results for my business problems. Many times that is commercial products and Microsoft technologies. However, increasingly I find that to keep working in the way that I believe is best for myself and my business, I am forced more and more to go outside to excellent OSS tools that provide what I need and want. I remain open minded, concerned about some OSS licenses and still trying to be but one voice in a vibrant community.

# re: Correction...

left by at 5/31/2007 8:46 PM Gravatar

Whew... I survived disagreeing with Sam

<wiping sweat from brow />

Seriously I don't totally disagree.  I think MS is at a crossroads.  They can become IBM and litigate their patents/IP to kill all competitors or they can embrace community and become something greater IMO.  

I understand in the midst of this there is a business to run... As a business owner... let me repeat that... they have a business to run which means sometimes protecting your butt even when it's not what you really want to do.

I want to trust every potential client I get, but I quickly learned that contracts are essential for instance.... Running a business can sometimes suck and you end up treating people as enemies when you don't want to.


# re: Correction...

left by at 5/31/2007 9:29 PM Gravatar

>Whew... I survived disagreeing with Sam

><wiping sweat from brow />

If you only could know how much I want to be nice and do the right thing...  

# re: Correction...

left by at 6/1/2007 4:12 AM Gravatar

My take on Sam's comments... I suspect that when he referred to his "peers" on CodeBetter that he was talking about the cult of agilists who have infiltrated the site :)

# re: Correction...

left by at 6/1/2007 2:28 PM Gravatar


I found your post very reflective and descriptive. Although I don't agree with a couple of your comments.

"My understanding has been that MVC is great for web sites that have high traffic... what does that mean?  Honestly I have to say that I don't know what that really means."

I believe it is especially beneficial for small projects as well as large ones, because in the long run when a project might grow and have added functionality it is much easier to scale an MVC app as all your concerns are seperated and easy to extend. It also benefits any other developer coming into the project to see where the "boundaries" are located at and how the application flows. It's very rare that I find MVC is not beneficial to my applications, unless of course it is a very very basic input form, at which point I go to php to accomplish 1 hour or less projects rather than create a full blown oop app.

"I still feel that IOC's are overkill unless you are trying to do TDD (then it makes perfect sense because it alleviates some of the pains of testing)."

On this note, In some situations IoC's are overkill, but you gain alot more benefits from them than just testability. The largest benefit is loose coupling and high cohesion. I think testability is an added benefit but definately not the main one. After using Windsor on my my last few projects, I couldn't imagine not using one. It makes my code so much more elegant and modular than I can honestly say that I would be hard pressed without it.

I hope you take my comments as constructive criticism and not negative in any way. I think any buzz for MVC and IoC are good buzz because it spreads the word around more on better application desing.

# re: Correction...

left by at 6/1/2007 2:33 PM Gravatar

It's worth noting that almost all of the major .net OSS apps are not GPLed, but under something like Apache or LGPL.

# re: Correction...

left by at 6/1/2007 2:54 PM Gravatar


My first actual exposure to MVC came in a book on JSP and it describes that the whole MVC pattern came as a result of trying to deal with sites (like Amazon) which take a large number of hits.

I'm not really dissing on the pattern as much as I'm saying that it creates a larger number of classes then something like say the ActiveRecord pattern (which in my mind means  Data/Bus Objects tier and UI tier)... it's certainly sloppier, but when the site is small and won't really rise to anything more than to a medium size.... Many programmers do the evil thing of placing all code in the codebehind of the page (EVIL! EVIL! EVIL!)

I let IoC alone... The point being that testability hasn't really proven itself to me yet (I usually do my testing against the actual end product... rather heavily...Before you comment... I have bemoaned the fact that I need to be more testable... I just don't want to force a more complex pattern onto my code)


I would agree... but if you see GPL and LGPL you think that they are related and therefore LGPL must be as evil as GPL (the funniest explanation I ever read about LGPL was in the FAQ for itext... the Java PDF library... for the uninformed LGPL is not evil like the GPL).  I think it's easy for the uninformed to see it all as trying to twist my arm to make all my software free.

# re: Correction...

left by at 6/1/2007 8:25 PM Gravatar

Hey Jay, I'm going to play Devil's advocate here for a minute (and you know I do this often, so no surprise there :-))

With regards to what's happening with Jamie, here's the skinny from what I know - Microsoft took an incredibly powerful tool that on the high end sells for over $1000 and put a version out there for absolutely free. We all agree that MS isn't in the free software camp - they write software to make money (like most of us do). The stipulation they make in the EULA is that Express edition is not extensible, and nobody should create macros/VSIP packages/add-ins for Express SKUs. Might sound sucky upfront, but it's their product and their licensing agreement. If we don't like the license, our choice is to not use the product. Licenses are important for any software builder - even the OSS crowd would be incredibly pissed if someone abused their license and modified their code for commercial distribution without returning the changes to the OSS project (if that was a stipulation of thier license). Simply put, we have to abide by the license agreements the software builders create.

From my understanding, MS tapped him on the shoulder and politely asked that he remove the add-in for Express SKUs only. There was no mention of forcing him to remove the entire product suite. Jamie blatently refused and forced the issue to escalate. It was also no accident. Jamie had to create several hacks and registry modifications to make the add-in work in Express as add-ins are disabled in Express SKU products by default. The entire issue from what I know revolves around creating extensions for Express SKUs. The entire matter would have been moot if the product simply worked outside the VS IDE for Express only.

I know it's fashionable to knock on MS for being the 800 lbs gorilla, but in this case, I don't see the facts as being on Jamie's side. If I'm mistaken about any of the details, then I appologize ahead of time, but I think this requires a reasonable look from all legal angles rather than simply a sympathetic view for the underdog, much as that's our natural inclination.

Also, I fail to see the ROI here for Jamie. Express users are not really pro developers. They are hobbyists and people who are programming stuff as a sidenote - not as a primary function of a job - think Excel/Access scripters who need simple tools or some guy at home writing a video game or slideshow site or desktop widget. That was the intention of the Express SKU (in addition to being a starter product to get non-MS devs to try out and get hooked on .NET). But additionally, the numbers point to that fact as well - most Express users admit to fitting into this non-professional developer status. Jamie's tool is targetted at professional developers, so in a way, I don't think all the time he spent on that side of it produces a payoff for his product. The majority of people who would use it (the version meant for Express) are pro developers who want to use VS without paying the price for the real deal. I'm really not inclinded to be sympathetic at all to anyone in that camp.

# re: Correction...

left by at 6/1/2007 8:46 PM Gravatar


You are mistaken on the "hack" point.  "Hack" is what a lot of people have used, but it's not really a hack from what I understand.

Jamie is actually using published APIs to get his addin to work.  The only real additional thing he was applying is a registry key (which I'm not sure how he acquired the registry key).

My understanding is that he has ceased, but someone realized that by applying the reg key his addin now works in the Express SKU which they don't like.

Again, this is my understanding (from Jamie and From Phil Haack's post).  You and I are in agreement about Express, but I have heard some of our TDD peers (a few on this site actually) say that when they teach someone they believe that TDD should be taught up front (kind of like someone else I know who believes the OOP should be taught up front... for the rest of the world DP is a friend and I'm talking about his OOP beliefs).

Anyway, I'm not in disagreement with MS' rights... I'm just saying that it would be a nice touch for them to say... "Jamie, you are indemnified to ship a FREE addin for our FREE product.  If you try to sell something for our FREE product we will be forced to bring you down."

# re: Correction...

left by at 6/2/2007 2:24 AM Gravatar

Well, not that it's a point to argue over, but it is a hack :-) Express has no published API for add-ins because Express add-ins are disabled. If you try to stuff functionality where it isn't intended, in a mannor for which it wasn't intended, it's a hack. Also, the issue isn't about free either. MS' point here is not about other people making money off of VS Express, but the fact that they themselves make no money off of VS. Simply put, their take on it is that if you want a real dev versions of VS, you should pay for it. They disabled add-ins to prevent people from adding professional developer features to VS, which would then at some point make "real" VS pointless. But like I said, there's nothing wrong with having TDD tools for non-pro developers - it just has to work outside the Express IDE, in much the same manner as NUnit did for a long time. Had that been the case, I doubt there would have been any issue to begin with. And being a realist, even though I do believe that people ought to learn OOP upfront, most really don't. Same holds true for TDD. It's not that I would want to keep these tools away from them, but more like I know they simply won't use it - so the ROI from Jamie's point of view is extremely low when dealing with Express (unless you are dealing with a small segment of people who avidly want to avoid paying for Std+, and are trying to get away with something they shouldn't be). I think he's lost more time and money fighting the issue than it was ever worth to his product to begin with :-)

Again, even though we naturally tend to sympathize with the underdog when we see a David and Goliath scenario, David doesn't always have the goods. In this case, I don't see where Jamie has a legitimate claim. If the reverse was true, and it certainly has been in MS' long history, then I'd be all for calling MS out on it. In short, sometimes it's just not about sentimentality.

# re: Correction...

left by at 6/2/2007 11:36 AM Gravatar

I would agree on the lost time and money... and truthfully why go to the effort to make a product for Express... except that he himself used Express to create the product... which in and of itself was a violation of the EULA.

By no means am I disagreeing with the fact that he violated the EULA...  I'm just hearing from people I respect that the hand was a little heavier than it should have been (especially, when you consider that he removed the functionality (by removing the registry key) and someone realized that the reg key was all that stood between the functionality working (in other words my understanding was that he tried to comply and was then beat down because of a hack that could be applied by a user to make it functional again).  Again, I don't claim to understand everything and honestly I haven't read everything... but at some point it starts to sound like MS playing hardball and almost forcing a guy to move away from the whole space which is what Sam and Martin's posts are about...

I do marketing which is something I don't think you have tons of experience with... if the it is perceived in the marketplace that you are a bad guy... then you are a bad guy and people avoid using your products (something I almost did at the beginning of the year).

# re: Correction...

left by at 6/4/2007 2:26 PM Gravatar

FWIW, on MVC, I went back to check my copy of "JavaServer Pages" (published by O'Reilly); the edition I have now appears to have changed the original language (I know it talked more of high availability).

I know I probably led you all to believe that I thought this is the only reason for this pattern (utter follishness and probably caused by the rapid fire way in which I write posts sometimes).  It still seems like overkill to me sometimes especially when you are ONLY building a web site and that site is going to have the entire architecture on a single machine.

That was really my point.  I think I must work on much smaller-medium scale sites than what many of you guys work on.  Beyond the fact that I feel like you guys are often trying to find the perfect model... or the one model that will rule them all... this seems to be the case with MVC...

Didn't Martin Fowler recently blog about the heavy usage of MVC?  Also for the record, I'm all about separating the view from everything else, but to say MVC is ALWAYS the answer really doesn't work for me (the key here is the word "ALWAYS".

# re: Correction...

left by at 6/4/2007 3:28 PM Gravatar


Separation of Concerns is almost always the answer.  MVC and/or MVP in all of its various flavors are simply the most commonly used solution for Separation of Concerns in the user interface.  An all in one autonomous view is perfectly fine for very small screens, but I'd want some sort of division for anything nontrivial.

It's not just technical beauty and elegance that drives me towards MVC, it's the eternal quest for better maintainability.  Testability too, but that's almost synonymous with maintainability in my book.

# re: Correction...

left by at 6/4/2007 3:56 PM Gravatar

As stated in numerous places elsewhere... we agree that we disagree and leave it at that...

The point of all this was not to drudge up my understanding of MVC or MVP, but to point out that Sam was not speaking for all of codebetter...

The way I have seen my post handled elsewhere has made me step back again... I look at you agile guys and I wonder do I want to be associated with you...

# re: Correction...

left by at 6/11/2007 11:17 PM Gravatar

alpha geek is relative to where you are and who you are.  i like kirk allen evans definition of alpha geek a little better -

Email (never displayed)
Please add 2 and 1 and type the answer here: