On Friday, August 26, 2016 at 1:24:15 PM UTC-5, Mark Hamburg wrote:
>
> People create layer cake designs because they help manage systems 
> complexity. What I'm hearing here is that Elm should only be considered for 
> the very topmost layer. If it can't reach deeper, then it needs to compete 
> with the technologies that sit below it because those will try to push 
> upward.
>

People come to elm with designs that they relied on in languages/systems 
with entirely different semantics.  The core problem people keep bringing 
up here stems I think from a desire to take a not-fit-for-purpose 
'architecture' and make Elm apps work that way.

You can!  There's some plumbing involved!  You can write functions to help 
with that plumbing or send out Cmd with tasks!  I don't recommend it mostly.

I've seen people with 5-deep nested trees of components that I would write 
flat.  It's a lot less code to do it that way.  The compiler helps manage 
the complexity.  Introducing the layers in these cases increases complexity.

--- THAT PART IS OVER, HERE'S ANOTHER THING

OK, so I do use component hierarchies in some elm applications.  I think if 
you're doing that, it's actually a good thing for each layer to handle the 
'outbound things' and potentially transform them on the way up the chain. 
 If you don't need to do this, I think you probably don't need the 
hierarchy you built.  As an example, I have a Chat component.  It doesn't 
know that chat happens on websockets.  It sends out a `Maybe OutMsg` in 
response to some updates that is of type `Say String`.  It just says a 
thing.  The parent knows "aha!  The way I say things for him is to call 
this function on the websocket!  And since I set a 'callback' on this 
component I know that his outbound message should be wrapped with 
"sometopic"!"  If I changed the chat app to use longpolling or something, 
the Chat component doesn't need to change - just the piece that manages 
communication.  All the Chat component knows is it wanted to say something.

If you let children output parent messages in some way, rather than their 
own semantics, you make designs that are more rigid that they should be.

- Josh, just adding his random and probably amateur architectural ramblings 
to any thread he can.

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to