Random thoughts in a vacum
Chris Holmes responded to my post about not liking the P&P stuff. Specifically, he takes offence at my dismissal of CAB:
I wouldn't phrase it like that, even if I would have agreed to this statement. I think that ObjectBuilder has a long way to go before it has feature parity with Castle Windsor, but that is different than "bloated... ... not worthy of licking my boots... ". Let us not dramatise this issue needlessly.
Now to the rest of the post. I am an ornery bastard, so I am going to go over a lot of the stuff that Chris mentioned that I think deserves a response. That is not everything by a long shot, but I am catching on my RSS/Email after 21 hours of travel, so I got my excuses.
Not really, you implement what you need, and that is much less of what the CAB is trying to do. You would also build it while using it, which tend to give you much more real-world design, with all the rough spots removed or hidden.
Would it be acceptable for them to build Enterprise Library using Castle Windsor?
From a corporate culture alone, I would say that they can't do that. While the choice of tools would certainly affect the way the end result would be built, I don't think that it would significantly change the final product.
Actually, when the building blocks are not stable, there isn't much hope for the building. But that is just to debacle the statement, not to trash talk everything else.
That is news to me, and frankly I find it offensive. I will say that something sucks if trying to use it will cause pain, not if it doesn't bring me any value.
Thanks :-). What am I talking about when I am talking about complexing and hard to use is relative to the problem at hand. I want the simplest solution possible, because trying to solve business problems with pesky clients, hard time limits and changing requirements is hard enough. Simplicity is a goal we should all strive for. That is not to say that you should choose a solution that is too simple, because that would hinder your ability to handle the business scenario.
Here is a good metric that I like to use. Take an technology, and try to build it without any tool assistance. Is it still a good approach? If not, then there it is complex and hard to use. A lot of UI frameworks fails this test, by the way. WinForms certainly does, when you start to think about complex UI.
Code word of the day: cobble. I had it thrown at me in the TFS vs. OSS stack as well. I am not a native english speaker, but I do believe that this carries with it negative conotations. My response to this: Mu.
Very few, actually. Better to ask, how many developers need a framework to help use MVC in WinForms, and the number would be very high (at least among the developers that know what MVC is). Frankly, I am not sure that an MVC framework is even needed in WinForms. You can probably get away with declerative event wiring alone, and even that I would keep to the more complex applications. MVC architecture I would start by default for everything but the smallest stuff, but MVC framework is not something that I would just start building.
You have nothing to be jealous about. I will let you in on my secret.
How to build the CAB in half a day: Don't build the CAB.
My main objection to the CAB is that it is too big and invasive. I wouldn't even try to do the same. My approach for this would be a lot simpler, a lot less powerful, and be easier to get starting with. I would grow it with need, so it is shaped by actual business need, not by BDUF though process.
Comments
On 'cobble'
I as well have heard this idea twice. In Bill's response, he gives the same idea, like you have to piecemeal things together.
This goes back to MS's idea that they have to be the 'all in all' for everything.
I totally disagree. But this is the idea they preach to the choir boys.
But, again, this is MS's way of eliminating tools the community builds. They can try to deny it, but it's evident in how they build software. MSUnit is the classic example.
I was a 100% fanboy of MS, but over the last year I've started to see how they produce alot of tools half-baked in attempt to be the sole provider.
I don't think their 'dominance' approach is healthy for the .net community.
I am surprised that you did not invoke YAGNI or KISS. Why didn't you?
I mean this in reference to both the time it took them to use CAB from learning to complete product as well as the grow it yourself approach.
The had to spend time learning how to use the overly complex CAB as well as then write code against it took X amount of time. If they had written a framework themselves for just what they needed it would have taken Y amount of time. Y will be less than X if they adhere to YAGNI and KISS in the creation of their framework.
The KISS and YAGNI approach to selecting a framework is how I see what you are advocating. So when looking for a framework to enable you to meet customer demands look for one that does just what you actually NEED in a simple way. Restrain yourself from the allure that all those other features cause in you.
This whole thing seems an awful lot like Samsara: http://en.wikipedia.org/wiki/Samsara_(Buddhism).
You are suffering (struggling to make a product for the customer).
You grasp at what you think will ease or heal the suffering (start using CAB)
The thing you are grasping, as well as the grasping itself, are what cause so much of your suffering (CAB is making things more difficult than they have to be, as well your desire to use all the shiny new features)
You repeat the cycle on the next project
I think one of the biggest distinctions that people miss here is the difference between need and want.
Jay,
You have expressed my thoughts so much better than I could have. I didn't invoke either of them because the terms didn't occur to me.
I have attempted to use CAB as an architect at the company I work for was advocating that we all use it.
Within 1/2 hour I concluded that I couldn't understand what problems it was trying to solve or indeed how I could use it to solve the problems I wanted to solve, so instead of solving my problem, I spent time trying to understand CAB when really writing my own framework using passive view and WinForms really was the way to go.
Together with solving the actual problem and building up a UI framework from the bottom up, using passive view, nUnit and Rhino Mocks, since then I haven't looked back. I previously put everything in the Form/UserControl, but now I have presenter logic classes everywhere and the QA dept struggle to find bugs...
Totally agree ... the EAAB/P&P stuff is heavily bloated.
The few good nuggets in it, unfortunately tend to get swamped by the other parts, which managers have a nasty habit of 'standardising' on after they see how good the DAAB is ...
Postback from http://dotmad.blogspot.com/2007/05/reinventing-wheel.html
First of all let me day that I agree that the P&P stuff is heavily bloated. (Though I have looked into several of the products only in passing and I have not implemented any yet.)
I have a markedly Agile mentality, even if I have yet to work on a team that that uses any of the agile approaches. And if I were to pick a side, it would definitely not be with the more Agile approach – its nice to see MS moving that direction no matter how little or how poorly implemented we may believe they are doing it. The fact that they are showing some movement is a victory in the legitimacy of the approach.
But, let me play devils advocate and turn the table. There are a couple of other frameworks out there that the same argument may be applied to. For example, why use NHibernate? Many of the features may never be used in a project, so why not apply YAGNI and (re)write these features it as you need them?
I guess what I’m saying is that bloat is not necessarily the main thing that is wrong with a given framework. If the bloat is well thought out and useful, and more importantly, if the client implementation of the framework allows you to use just what you need in an appropriate manner (simple implementation, simple API, and quick learning curve; more complicated implementation, more complicated API, and quick learning curve), then use the framework – be it an MS framework or OSS.
Barry, you make good points, but the complexity in the framework is not something that I can about. It is complexity exposed to the user that I care deeply about.
With NHibernate, if I don't need a feature, I literally have no need to pay for it. That isn't the say with the P&P, where I may not need stuff, but I have no way of avoiding it.
I agree. Exactly the point I was trying to make in the last paragraph.
Comment preview