
GUI Architectures (2006) - mercer
https://martinfowler.com/eaaDev/uiArchs.html
======
kmicklas
At first I was amazed there is no mention of Functional Reactive Programming.
Then again this is from 2006 when there were no fast, powerful, and practical
FRP frameworks.

I suspect we will see somewhat of a revolution in terms of client side
development in the coming years - with a vast reduction in complexity and huge
increase of programmer productivity.

~~~
uranian
> with a vast reduction in complexity

That is very optimistic looking at the current state of client side
development with it's ever changing Javascript, Babel, Typescript, whatever
script, Webpack, with HMR?, React or Vue? Angular? Flux? Redux? Isomorphic?
Linters? Testing? CI? CSS/???SS or inline?, some NPM modules maybe?, and so
on.. Sorry for me being a bit more pessimistic here.

~~~
napsterbr
Elm. No, really, elm. It goes away with all the js fatigue, your code is
clean, readable and reliable, and does not produce runtime errors. You don't
need npm (though it's probably a good idea for development, since you get hot-
reload for free). Linter, testing and ci is a must, regardless of which kind
of development we are talking about. Of course, linting with elm is a no-
brainer with elm-format, and testing is much easier when you don't have side-
effects. Plus you get fuzz testing "by default".

I was just as pessimistic as you wrt frontend development, I had dropped it
off altogether. Elm made frontend dev enjoyable again. Can't recommend it
enough.

If someone wants to talk about elm and how it is to develop with it, feel free
to drop me a line. Email is on profile.

~~~
uranian
Thanks, this is interesting.

------
narribbi
When you read Trygve Reenskaug's original 1979 paper "MODELS - VIEWS -
CONTROLLERS" \-- it is very short, simple, and crystal-clear --
([http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf](http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf)),
it obvious what Trygve meant:

* The MODEL is something like a web server

* The VIEW is something like a browser

* The CONTROLLER is something like the Windows start menu

Trygve literally writes:

"A view (=browser) is attached to its model (=server) and gets the data
necessary for the presentation from the model by asking questions (=submitting
queries). It may also update the model (=posting) by sending appropriate
messages. A controller (=start menu) provides the user with input (=menu
items) by arranging for relevant views (=windows) to present themselves in
appropriate places on the screen."

~~~
pvg
He literally writes these things but none of it really suggests your analogy.
'Controller = start menu' seems particularly iffy.

~~~
cottonflop
Taskbar might be more appropriate. Or even browser tabs, given he went with
the browser.

~~~
coldtea
Browser tabs are the same thing as a start menu conceptually.

Hardly the best example of an MVC controller (even if they still are
controllers).

------
jlebrech
with WebAssembly we should be able to compile applications written in
qt/gtk/sdl and use javascript to render their gui to a canvas and send the
mouse events back the the apps, and html will just be a layout engine that
places those apps, similar to xwindows.

