I agree on many points of your post but I also think that changing the name would result in additional confusion and, from my point of view (or Viewmodel if you like J), Model-View-ViewModel or M-V-VM has now become the official name of the pattern by “popular demand” so I’ll stay with the current verbose name.
-Corrado
Nice to hear the wonderful term “gormless” bandied about on a technical discussion list – makes me feel right at home as an exiled North Yorkshireman…
It is a benefit for me too. I don’t use “View” as a suffix though, because it really depends what the view does, but using the same same as the View plus a “ViewModel” suffix makes things easy and clear.
Cheers,
Laurent
"If you go down the route of using different names for different implementations, then every time you implement a pattern in any new language you'll be using a new name, and communication will suffer."
Here's my thought. Even though C# supports a different implementation of the Singleton pattern than C++, we don't call it Statically Constructed Single Object because of those implementation details. We call it singleton as well.Yes WPF has more features that change HOW you implement Presentation Model/View Model...but at the core the two are the same. If you look at the PRISM guidance, they call it Presentation Model. Presentation and View are semantically the same...as are the two patterns. I believe that we are defeating the purpose of a pattern language by changing the name of a pattern because of a few implementation details.
Wow, long thread.. I will try to comment here on all the points I just read.
Bill,
· I have to +1 John’s ask “if there is a valid concern for the name, beyond how long it is to title books and articles, let’s hear it, publicly or privately, what ever you are comfortable with. Community-wise, you all have contributed to the pattern much more than Microsoft (who did the name) so we should stick to a name we are all comfortable with to avoid confusing others. Can you explain why you see a difference between “M-V-VM” and just “ViewModel” in name??
· Any one who has ever discussed this with me, has heard that the “name” does not matter. The P&P folks and me did try to use PM two years ago, and it just was not sticking beyond the 50 people who were in Prism v1 councel.. Today, after learning the lessons, I would vote for M-V-VM because that puts me into context with two other well recognized UI patterns “Model View Controller” and Model View Presenter”. I have to explain this to people who don’t read fowler, and most have heard of MVC and MVP, but not heard of Presentation Model, so when I said MVVM = PM == delicious rugables they stared at me equally confused.
· I do disagree that Commands == Events. Sorry but that is too big of a bridge for me to jump. Beyond coupling, commands have CanExecute, are binding friendly, etc.. In my book, Apples != pears. Close, but not close enough.
· I am not sure I care much for calling the pattern WPF or XAML specific. So I am not opposed to someone saying they are using M-V-VM in Windows Forms.
Again, I think the answer here is getting to the root of the name
problem; if you are trying to give credit to Fowler, I wonder
if that is necessary. All of the disciples are imo an “elite”
group of architects/developers, who I am sure are far above the average curve,
but even then I would be willing to bet $1 that half of us ( me included, and
John included) had never heard of Presentation Model until someone told us ‘MVVM
== PM from Fowler’… so worrying about
attributing something that no one knew before seems unnecessary.
I don’t see any real advantage between “View Model” and “M-V-VM”;
to be candid I use those interchangeably and I doubt we need to formalize one
name over the other .
From: wpf-di...@googlegroups.com [mailto:wpf-di...@googlegroups.com] On Behalf Of Bill Kempf
Sent: Tuesday, May 05, 2009 9:41 AM
To: wpf-di...@googlegroups.com
Laurent
--
Sent from mobile
-original message-
Subject: [WPF Disciples] Re: A Rose by any other name...
From: Bill Kempf <wek...@gmail.com>
Date: 05.05.2009 19:16
We transplanted Hoosiers are agreeing again ;).
On Tue, May 5, 2009 at 12:55 PM, Mike Brown <mbro...@gmail.com> wrote:
> Here's my thought. Even though C# supports a different implementation of
> the Singleton pattern than C++, we don't call it Statically Constructed
> Single Object because of those implementation details. We call it singleton
> as well.
>
> Yes WPF has more features that change HOW you implement Presentation
> Model/View Model...but at the core the two are the same. If you look at the
> PRISM guidance, they call it Presentation Model. Presentation and View are
> semantically the same...as are the two patterns. I believe that we are
> defeating the purpose of a pattern language by changing the name of a
> pattern because of a few implementation details.
>
--
Wow, long thread.. I will try to comment here on all the points I just read.
Bill,
· I have to +1 John’s ask “if there is a valid concern for the name, beyond how long it is to title books and articles, let’s hear it, publicly or privately, what ever you are comfortable with. Community-wise, you all have contributed to the pattern much more than Microsoft (who did the name) so we should stick to a name we are all comfortable with to avoid confusing others. Can you explain why you see a difference between “M-V-VM” and just “ViewModel” in name??
· Any one who has ever discussed this with me, has heard that the “name” does not matter. The P&P folks and me did try to use PM two years ago, and it just was not sticking beyond the 50 people who were in Prism v1 councel.. Today, after learning the lessons, I would vote for M-V-VM because that puts me into context with two other well recognized UI patterns “Model View Controller” and Model View Presenter”. I have to explain this to people who don’t read fowler, and most have heard of MVC and MVP, but not heard of Presentation Model, so when I said MVVM = PM == delicious rugables they stared at me equally confused.
· I do disagree that Commands == Events. Sorry but that is too big of a bridge for me to jump. Beyond coupling, commands have CanExecute, are binding friendly, etc.. In my book, Apples != pears. Close, but not close enough.
· I am not sure I care much for calling the pattern WPF or XAML specific. So I am not opposed to someone saying they are using M-V-VM in Windows Forms.
Again, I think the answer here is getting to the root of the name problem; if you are trying to give credit to Fowler, I wonder if that is necessary. All of the disciples are imo an “elite” group of architects/developers, who I am sure are far above the average curve, but even then I would be willing to bet $1 that half of us ( me included, and John included) had never heard of Presentation Model until someone told us ‘MVVM == PM from Fowler’… so worrying about attributing something that no one knew before seems unnecessary.
I don’t see any real advantage between “View Model” and “M-V-VM”; to be candid I use those interchangeably and I doubt we need to formalize one name over the other .
It's certainly not about giving credit to Mr. Fowler. I think historical record clearly shows that both parties "discovered" the pattern independently at roughly the same time. Both deserve credit, and are given credit by me. No, this is about establishing shared vocabulary. The larger community knows this pattern by a different name. At the very least, we should acknowledge that, and I'd prefer we just use the name more broadly known. It's really as simple as that. We developers who target Microsoft platforms, and you MSFT fellows get enough grief about "lock in" and related topics, without adding to the issue by formulating our own vocabulary for things that already have an accepted vocabulary outside of our smaller community.
Thanks for response Bill. Where do we go from here?? Do people care to vote for names now? [How would we capture feedback from Silverlight folks? Should we? ]..
Have to agree with Peter that despite our blunt writing and loud passion, everything here is said with great respect. Apologies if that does not come through on email.
Below, I clarified my points from earlier, but no need to reply… We could go on for a while, and instead I think we just need a vote.. If all the names are in the hat; else let’s get the names in the hat.
Cheers,
· MVP is a term we have used a lot at Microsoft for last five years; if you read the P&P stuff on client apps, etc.. You will see it a lot, so I would venture my audience (ISVs and breadth developers) are at 90% heard of MVP and < 10% heard of presentation model; standardizing on that name is going to be a tough sell at this point. Again, that audience is different from disciples (and to some extent different from WPF early adopters, but that audience is going to be moving to WPF and Silverlight this year and next so we are focused on them a bit). To put it into context, < 30% of that audience has ever heard of Martin Fowler, yet they write some pretty cool and business critical apps.
·
Across Microsoft, “Model-View-ViewModel and ViewModel are
used interchangeably” .. I use the full-name when I am introducing the
pattern (e.g a training or event), titling a presentation, etc.. once I
get talking about it or writing about it, I shorten it to “ViewModel”
(as that is where the magic happens). This is standard for a
lot of our products (long formal name but we use acronym, like WPF, or long name
but we use codename, like Cider). I am not saying that is not painful
five times a year, just explaining how we think about it so that when voting you
all can decide whether it is 2 or 3 choices: Presentation Model, ViewModel
(with nothing else, ever), or Model-View-ViewModel (which shortens to
ViewModel) . I can’t see huge difference between
2 and 3; but that could be just me (since I drink the blue koolaid every day).
· You coin commands and events as a minor implementation detail; I struggle with that; I think it is a significant detail because in .NET world we don’t have elegant ways to encapsulate logic in ViewModel using events. How are others keeping all logic in ViewModel using just events and not coupling to the views? Sorry to not let it go, we can sideline it; I am mostly curious cause if there is a simple, intuitive, decoupled way, I would love to embrace it myself.
From:
wpf-di...@googlegroups.com [mailto:wpf-di...@googlegroups.com] On
Behalf Of Bill Kempf
Sent: Tuesday, May 05, 2009 11:04 AM
To: wpf-di...@googlegroups.com
Subject: [WPF Disciples] Re: A Rose by any other name...
On Tue, May 5, 2009 at 1:37 PM, Jaime Rodriguez <jai...@microsoft.com> wrote:
Adding Ivo for the toolkit feedback… Again, the current toolkit was a 0.1 by the WPF test team, please hold off until 0.5 so you get a comprehensive view beyond that team.
Fully agree that M-V-VM and PM are the same.. { on our MVVM training we use Fowler’s diagram; you can see deck from my blog }..
Agree that Microsoft also needs to solve the “event to viewmodel” hookup .. It is something being evaluated a lot, unfortunately it did not make the current release..
Cheers,
Hello? Metric System for the win! I, for one, welcome our new "Model View ViewModel" overlords.
From: wpf-di...@googlegroups.com
[mailto:wpf-di...@googlegroups.com] On Behalf Of Josh Smith
Sent: Tuesday, May 05, 2009 3:53 PM
To: wpf-di...@googlegroups.com
Subject: [WPF Disciples] Re: A Rose by any other name...
> "MVVM" gets 186000 hits. Since the last is also the speed of light in miles-per-second, I vote for MVVM.
What is the cost of changing the terminology from MVVM to PresentationModel? When people want to learn about ViewModel's I presume they use the trusty search engines to find what has been written already. Using BrandX I get 79800 hits on the term PresentationModel and 1.2 million on ViewModel. Who's going to update all the links? <image001.gif>