-
Notifications
You must be signed in to change notification settings - Fork 0
Design
Rexx Language Association edited this page Feb 7, 2022
·
2 revisions
- There are tasks/package specifications for every package for ISA, OS and version. These are executable (with Rexx, of course). We can call the specs and the packages ‘packages’.
- These packages have releases and they are all in a git repo.
- There are specifications of dependencies, which are also versioned.
- The package manager can install Rexx implementations (brexx, crexx, Regina, ooRexx, bsf4ooRexx) as well as application packages, with or without source.
- The default and minimal operation is to download a zip, decompress it and suggest path settings corresponding to the platform.
- It should tell the user what it is doing and ask for permission (of the user) on every step; the permissions can be waived with a switch like -y (like the others do it). An action should be atomic and have rollback, so it works in a temp directory and do an atomic rename/rollback.
- It must always be possible to remove the package manager and start again.
- It must always be possible to remove a package and try again, for example if the atomicity failed due to network or other trouble
- We try to be thrifty with other people’s bandwith. So we cache packages or execute in place. Use aliases as much as possible. Have a 'clean' command for disk.
- Most of the infra (git, comms, zip) needs to be built into the tools, to counter OS dependencies
- There needs to be some rate limiting built in because of lunatics.