[
https://issues.apache.org/jira/browse/JAMES-3360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17180464#comment-17180464
]
David Leangen commented on JAMES-3360:
--------------------------------------
Thank you for commenting. I think your comment is kinda proving my point about
the "technical solution" versus the "model". I will try to explain in my
comments.
{quote}The change is mostly wording as you say and IMO not something to spend
much time on it .
{quote}
Right, but a "model" is essentially "just wording". Words express concepts.
Saying we don't care about the words is the same as saying that we don't care
about the model.
Are you saying that you don't care about the model?
{quote}As long as it's documented how it works we can name it however we want.
{quote}
True. We could even call it an "apple" if we want. I'm not sure that helps with
comprehension. The whole point of a model is to try to reduce cognitive
dissonance. But again, if we don't care about models, then what you say is
entirely correct.
{quote}I think the name comes from the repository pattern which is not far from
what it does: [https://deviq.com/repository-pattern/]
{quote}
The repository pattern used by DDD is about persisting domain objects. It is
not related to actual modeling of the domain. It is important not to confuse
the two. "Repository" is a technical solution that DDD proposes "to help keep a
domain focus" (cf p. 107 of "Domain Driven Design" by Eric Evans), while the
"Directory" concept I am suggesting is an actual model of the domain (looking
up users).
{quote}Directory is more of a read-only thing (not necessarily) while
repository is read/write.
{quote}
I don't think so. Otherwise how would a directory get populated with user
information?
{quote}[https://www.merriam-webster.com/dictionary/repository]
{quote}
The definition I see here is: "a place, room, or container where something is
deposited or stored".
I think this actually proves my point. We do not store users in a room. Yes, we
store user **data**. So repository is for storing data, i.e. a technical
solution if the concept of "user" is actually important in the email domain,
which I believe it is.
If I am mistaken, please let me know and I will be the first to close this
issue.
So do we only care about the technical solution to the problem, and don't give
a rat's a** about the model (assuming "users" are part of the model)? Because
if we actually care about modeling, then we need to be able to decouple our
thinking from the technical solution of the model.
> Change "User Repository" to "User Directory"
> --------------------------------------------
>
> Key: JAMES-3360
> URL: https://issues.apache.org/jira/browse/JAMES-3360
> Project: James Server
> Issue Type: Improvement
> Reporter: David Leangen
> Priority: Major
>
> I wonder if there isn't a wording problem here.
> I understand that the idea is to have a place to store user data. However,
> the naming looks at the problem from a purely technical point of view. A
> "Repository" by definition is a place to "put" something. For example, in the
> real world, a document repository is an actual place to put documents.
> The wording suggests that we have some place where we put people, which seems
> very strange to me if we correspond the idea to the real world. It creates a
> very strange mental model for me.
> I think the concept that should be modeled here is more along the lines of a
> "Directory". We have a kind of index that gives useful information about how
> to locate users. It is not a place where we take people and lock them up.
> Rather, it is a list of information about people. Does that make sense?
> [Here is a
> definition|https://dictionary.cambridge.org/dictionary/english/directory] we
> could use:
> {quote}a list of telephone numbers, names, addresses, or other information
> {quote}
> Note that if the Repository is never exposed to anybody except implementors,
> and it really is just a place to put data, then this issue would not bother
> me. However, it is my understanding from writing the new documents that this
> concept is actually exposed, so I think the concept needs to be fixed.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]