Standardise Abra Terminology #36
Closed
opened 2021-08-02 22:34:51 +00:00 by roxxers
·
8 comments
No Branch/Tag Specified
main
local-integration-testing
renovate/otel-weaver-0.x
renovate/codespell-2.x
renovate/github.com-charmbracelet-lipgloss-2.x
renovate/github.com-charmbracelet-bubbletea-2.x
renovate/tonistiigi-xx-1.x
renovate/alpine-3.x
renovate/github.com-charmbracelet-log-2.x
chore-deps
fix/492
fix/deps
fix/613
0.13.0-beta
0.13.0-rc2-beta
0.13.0-rc1-beta
0.12.0-beta
0.11.0-beta
0.10.1-beta
0.10.0-beta
0.10.0-rc2-beta
0.10.0-rc1-beta
0.9.0-beta
0.8.1-beta
0.8.0-beta
0.8.0-rc2-beta
0.8.0-rc1-beta
0.7.0-beta
0.7.0-rc3-beta
0.7.0-rc2-beta
0.6.0-beta
0.5.1-beta
0.5.0-alpha
0.4.1-alpha
0.4.0-alpha
0.4.0-alpha-rc8
0.4.0-alpha-rc7
0.4.0-alpha-rc6
0.4.0-alpha-rc5
0.4.0-alpha-rc4
0.4.0-alpha-rc3
0.4.0-alpha-rc2
0.4.0-alpha-rc1
0.3.1-alpha-rc2
0.3.1-alpha-rc1
0.3.1-rc1
0.3.0-alpha
0.2.2-alpha
0.2.1-alpha
0.2.0-alpha
0.1.8-alpha
0.1.7-alpha
0.1.6-alpha
0.1.5-alpha
0.1.4-alpha
0.1.3-alpha
0.1.2-alpha
0.1.1-alpha
0.1.0-alpha
10.0.5
10.0.3
10.0.2
10.0.1
10.0.0
9.0.0
8.0.1
8.0.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
checkout
0.6.0
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Labels
Clear labels
bug
build
ci/cd
critical fix
design
documentation
duplicate
easy-first-issue
enhancement
help wanted
i10n
i18n
installer
invalid
question
release
release-candidate
security
tech-debt
test
wontfix
Something is not working
go build related issues
Building things with CI/CD
https://docs.coopcloud.tech/federation/resolutions/passed/010/
UI/UX
Documenting all the things
This issue or pull request already exists
Something for new people to get stuck into. We hope it's easy!
New feature
Need some help
Everything to do with localisation
Everything to do with internationalisation
Everything to do with the install script.
Something is wrong
More information is needed
Release management
Related to the new release candidate
Security related
Unit/integration testing
This won't be fixed
No Label
design
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
Apfelwurm
BornDeleuze
Brooke
carla
cas (Cassowary)
coopcloud
cyrnel
decentral1se (d1)
dede
devydave
fauno (fauno)
iexos
jade (Jade Ambrose)
jjsfunhouse
jmakdah2 (Jackie Makdah)
joe-irving (Joe Irving)
kawaiipunk (KawaiiPunk)
knoflook
kolaente
lambdabundesverband
linnealovespie (April)
moosemower
moritz
notplants
oxaliq (sorrel)
p4u1
pharaohgraphy (Andrew 🐦🔥❤️🔥✴️)
renovate-bot (Comrade Renovate Bot)
ripclap
simon
sixsmith (Sixsmith)
stevensting
trav
val (val (he/him))
yksflip
Clear assignees
No Assignees
decentral1se
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: toolshed/abra#36
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.envfilesfoo/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
configpackage 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 newbefore 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.