Standardise Abra Terminology #36
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
We use app and recipe interchangably? I find this sorta confusing esp when coding. I think we could work on the naming of things for this. Related to #13 I guess.
Yep, consistency would be good. We couldn't think of a better names starting out, but "recipe" seems to make sense to people.
Before:
wordpress_foo_com.env
= "app"I think now:
wordpress_foo_com.env
= "app"Thanks for raising this, also on my mind! The idea of the recipe didn't really sit well with me in the code for exactly the reason you mentioned. I think we just need to firm up some stuff and we're good.
On the command-line now, we have
app new
(is it an app?) which takes a<type>
argument (is it a type of an app?) which all makes use of what is referred to in another sub-command as arecipe
.Our top-level concepts for end-users are 1. Apps 2. Recipes 3. Servers which is pretty good. 3 is a magic number.
"Recipes" are analogous to "Packages" in other projects. "I installed the Gitea package" in other projects means "I deployed the Gitea app" in our project, I think. Because there are two types of people here, the people who deploy apps and the people who package them for Co-op Cloud (those may overlap but it is good to separate the concerns for the concepts).
Guessing at some steps:
abra app new ... <recipe>
TYPE=
toRECIPE=
in the.env
filesfoo/bar:v1.0.0
)compose.yml
)But for the general case, you only need to care about recipes if you are cooking one up. Otherwise, everything is an app! In this sense, a recipe is kind of an implementation detail.
Can we organise the code to match the magic 3 @roxxers? We can break out into other types but these will always find their place as a field in these 3 top-level types. When we write code, we work mostly with these types and this mental model.
I'll stop typing now but that might mean the
config
package becomesrecipe
?(sorry I can't stop)
This could instead be: Apps, Recipes and Servers as top-level?
The libre-ness is a sub-point of an App.
The packaging format is a sub-point of a Recipe.
The container orchestrator/runtime is a sub-point of a Server.
The command-line tool is not really part of an architecture, that should stay on the same page I guess, can be dropped down into another section, I think. But yeah, this mapping seems to hold in the docs as well?
I think this is because we implemented
app new
before we'd come up with "recipe", and never went back and changed it.The "magic 3" sounds great. And your migration steps look A+.
Not exactly. Partly the package could be split but I am going go overhual this so that the config is loaded when needed and is persistant. So this area of th ecode will change a lot.
We could do an inventory of the public APIs of each file and try to plan out interfaces that match names all together one day. https://github.com/princjef/gomarkdoc is really handy for this to get a good overview.
I've done some reorganising of the code and renaming and such and I think I have a pretty good handle of converging all the things into this magic 3 in the very near future! We'll have a number of changes to make in other places but we'll get there. Just a quick update from my side.
I'm calling this done. When you work in the recipe commands, you just
recipe := internal.ValidateRecipe(c)
and then work with it. And then when you're in the app commands, you justapp := internal.ValidateApp(c)
and then you work with that. I think we have the guardrails up now. There are lots of ways it can be improved but anyway, moving along.