Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CCSMB-9: Disabling Automatic Updating and Dependency Installation in Lua Programs #25

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions Standards/CCSMB-9.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# CCSMB 9: Disabling Automatic Updating and Dependency Installation in Lua Programs

*Author: Tomodachi94 <@tomodachi94>*

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should add the text referring to RFC 2119 at the top here if we're gonna use the keywords

## Rationale
This RFC allows users to programmatically disable autoupdating and dependency installation in programs.
Some users opt to use package managers when installing programs, which typically manage updates and dependencies on their own; additionally, some users would like to remain on a specific version for stability.

## Autoupdating specification
Programs implementing an autoupdater MAY support the following options for disabling that function.

Programs which are specifically designed to update programs, namely installers and package managers, SHOULD NOT implement the following.

Programs implementing an autoupdater MUST implement all options listed below in order to be considered compliant.

### `settings` API setting
Compliant programs MUST allow disabling autoupdating through the `ccsmb.autoupdate.enable` setting. If the option is set to `false`, autoupdating MUST be disabled. If the option is unset, compliant programs MAY choose to enable or disable autoupdating for itself.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here too we should probably define what happens if its true


Programs running on operating systems which remove the `settings` API MAY be considered compliant if they choose not to implement the `ccsmb.autoupdate.enable` setting. Such operating systems MAY implement equivalent functionality through other means appropriate for that system.

### Global variable

Compliant programs MUST allow disabling autoupdating through the `CCSMB_ENABLE_AUTOUPDATING` global variable. If the global is set to `false`, autoupdating MUST be disabled. If the variable is unset, compliant programs MAY choose to enable or disable autoupdating for itself.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And what if the global variable is true? I think this should also be defined


## Dependency installation specification
Programs implementing autoinstallation of dependencies MAY support the following options for disabling that function.

Programs which are specifically designed to install dependencies, namely installers and package managers, SHOULD NOT implement the following.

Programs implementing autoinstallation of dependencies MUST implement all options listed below in order to be considered compliant.

### `settings` API setting
Compliant programs MUST allow disabling dependency installation through the `ccsmb.dependencyInstallation.enable` setting. If the option is set to `true`, autoinstallation of dependencies MUST be disabled. If the option is unset, compliant programs MAY choose to enable or disable dependency installation for itself.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And if its false?

I may be annoying about this but I think all options should be clearly defined

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If its set to true, it should be enabled, not disabled, its way more clear


Programs running on operating systems which remove the `settings` API MAY be considered compliant if they choose not to implement the `ccsmb.dependencyInstallation.enable` setting. Such operating systems MAY implement equivalent functionality through other means appropriate for that system.

### Global variable

Compliant programs MUST allow disabling autoinstallation of dependencies through the `CCSMB_ENABLE_DEPENDENCY_INSTALLATION` global variable. If the global is set to `false`, autoupdating MUST be disabled. If the option is unset, compliant programs MAY choose to enable or disable dependency installation for itself.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And here too, if its set to true the behaviour should be defined.