This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-04-05
Channels
- # announcements (12)
- # babashka (29)
- # bangalore-clj (3)
- # beginners (153)
- # calva (2)
- # chlorine-clover (46)
- # cider (11)
- # clj-kondo (21)
- # cljfx (20)
- # cljs-dev (3)
- # clojure (393)
- # clojure-australia (2)
- # clojure-europe (15)
- # clojure-spec (40)
- # clojure-uk (1)
- # clojurescript (3)
- # community-development (1)
- # conjure (2)
- # cursive (1)
- # data-oriented-programming (1)
- # datomic (7)
- # defnpodcast (2)
- # docs (2)
- # figwheel-main (5)
- # fulcro (52)
- # graalvm (2)
- # inf-clojure (21)
- # malli (10)
- # meander (6)
- # mid-cities-meetup (13)
- # nrepl (1)
- # off-topic (24)
- # other-languages (1)
- # pathom (3)
- # polylith (18)
- # re-frame (6)
- # reitit (11)
- # ring-swagger (2)
- # shadow-cljs (56)
- # specter (1)
- # xtdb (7)
Hi everyone!
The Polylith team (me, Furkan, and James) have been having an internal discussion about whether we should rename `base` to `gateway`.
gateway
is more descriptive about the role that building block plays in a Polylith artefact, but `base` is already established in our documentation, and doesn’t overlap with an existing computing/networking concept.
We would love to hear your opinion about this potential change (in this thread)!
Please add your comment here!
Hi guys! I have been learning polylith since two days and I love it! 🙂
For a new comer, base
maybe difficult to understand without reading the documentation! I’m wondering if a base
can be used in different projects
?
gateway
is more understandable. What about service
?
Here’s some suggestions from me: api
entrypoint
baseplate
We used the word service
earlier for what we today call project
. A project can be a service
if you put the right combination of components
, libraries
and a base
in it (the base exposes the code as a service) which is an indicator that it’s not the right word for the concept @UHZPYLPU1.
We discussed api
and we came to the conclusion that a base
consists of both an api
and a thin implementation that delegates to components
. A component has a similar relation to its interface
, which also is why interface
is not the best name for a component
@U018VMC8T0W.
I should have mentioned that your other two suggestions were just fine! 😃 @U018VMC8T0W
I don’t think gateway
is any more descriptive than base
— and I think most uses of gateway
in IT refer to something that wraps an external service (often a database, as in data gateway
). See https://martinfowler.com/eaaCatalog/gateway.html for example.
I would have suggested service
if it didn’t already have prior use in an earlier version of Polylith. I like entrypoint
but it’s overly verbose. I agree base
is somewhat nondescript/opaque and potentially confusing for newcomers but I’m not sure what to suggest as being better.
Good input @U04V70XH6!
A question about the cardinality of bases: is the expectation that a project has exactly one base (and multiple components) or are there common situations where a project might have multiple bases? (asking in the context of naming and whether cardinality can play into it)
We have only used one base per project so far (none for libraries). I guess it could be relevant if you have huge APIs (e.g. REST) where different teams are responsible for different parts of that API, but that’s not something we in the Polylith team have any experience of.
I'd stick with base, it doesn't take long to learn what is meant by the name base. It makes sense to me in the context of the lego analogy. Personally I never had any issues understanding what a base is.
As someone who has been putting a lot of time in to moving a project in to a Polylith structure, I'd rather things stay as they are unless there are large and obvious reasons as to why they need to change.
Nice feedback @U0L5T5DHP, sounds reasonable.
If the “normal” cardinality is one base in each project, then I would say stick with bases
at this point as it makes sense with the LEGO analogy: each project
is built from one base
and a bunch of components
. In general. Even if a base is reused across multiple projects. And even if occasionally a project
somehow combines multiple bases
.