

The end of MVC. Seems to be banished - CrystalBlood
http://wiki.apidesign.org/wiki/DCI

======
cscotta
There's no need to sensationalize this. It's not the end of MVC and I'm not
sure what's "banished" here. This sort of headline is a depressing trend.

But it is an interesting pattern for software architecture/engineering, and
I'm glad to learn about it. I'll admit that after reading this summary I'm not
entirely clear on how this marks any sort of revolutionary change in program
design. Instead, it strikes me as a mental shift enabled by a few years'
reflection on what MVC aspires to be. Indeed, the author says as much: "This
may not seem like a really big change and indeed, technically, it is not.
However the mental shift is huge!"

I'm not a Java developer, but in Ruby this sounds something like implementing
a significant amount of program logic in modules rather than directly in a
Merb/Rails/Datamapper/what-have-you model in order to achieve a looser
coupling of the data/business logic layer.

So, I dunno. It's a really cool idea, and welcome to HN...but please change
the headline to something less sensational/linkbait and more informative like
- "Data/Context/Interaction - Thinking Beyond MVC Structure."

~~~
cscotta
Update - here's a much better article than the one linked, written by DCI's
creator (who also helped popularize MVC):
<http://www.artima.com/articles/dci_vision.html>

~~~
DenisM
Whoa, 8000 words. Anything more concise?

------
jimfl
From my reading, DCI doesn't supplant MVC, but is an architecture for
organizing code. Object behaviors are mixed in (via mixins, traits, or
templates) according to roles (the common examples are ATM withdrawal and
deposit) which are implemented separately.

There would be a couple of benefits of this aside from the advertised ones:
Automated tests are associated with the role bahaviors. Instead of testing all
of the possible behaviors of an object, tests are targeted at the individual
traits. Also, by separating the roles from the data it's easier to mock the
data layer.

When code needs to be removed or refactored, it is easy to find the code (and
tests!) involved. Adding features becomes less of a refactor, and more just
adding traits.

------
pohl
I thought MVP already supplanted MVC. I haven't wrapped my head around DCI
yet, but my first question is whether this resembles MVP in any way.

------
CrystalBlood
Claims to be the new modernized version of MVC, is it really promising?

