> A hexagon defines some ports (the component it needs to work), some adapters 
> (the implementations it provides to other hexagons) and a core domain: the 
> logic of this hexagon.

Thank you for elaborating your thoughts. I see much better now what you are 
trying to do. I like many of the ideas of the hexagonal architecture that you 
are trying to achieve.

In that case, let’s just focus on the core. The rest is really not that 
important at this time if the immediate goal is to document the project.

I am a long-time enthusiast of DDD. If the “core” of the hexagonal architecture 
matches the “core domain” in the DDD sense, it would make the system very easy 
to understand. The “core” domain ought to be very explicit and should exactly 
match the domain concepts. When reading the code, it ought to be really obvious 
what is happening.

My impression is that we agree on pretty much everything except maybe the 
details about how the core is developed. I don’t think it’s important at this 
time to go into that, though.

From where I am coming from, in general the core domain should be able to pop 
out to somebody like me with very little effort. The ports and adapters merely 
provide access to the core (or support for the core, depending on your 
perspective), so if the core is clear and well understood, then the rest ought 
to be quite secondary. When using the system, the core does not change, only 
the “outside” components that interact with the core change. For this reason, 
the wiring that happens (for example with Guice Modules) is basically the 
connection between the outside components to the core via the ports/adapters, 
but the ports/adapters ought to be obvious if the core communicates its 
intentions well.

If that describes James, then the path forward is now clear.

> `Core domains` are a bit hidden in the current code

With your help, I will try to figure out what the core is, and the rest should 
follow quite nicely. 

I will start a separate thread relating to the “core”, because this topic has 
drifted from the original discussion about Guice. Unless you think I am way off 
track with your thinking, I would suggest that you not reply to this email, but 
wait for me to start the new thread. :-)


I think it’s good that we got here. Thanks for your patience.

Cheers,
=David



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to