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

Add support for configuration and add-on inheritance #6822

Open
LeonarddeR opened this issue Jan 30, 2017 · 6 comments
Open

Add support for configuration and add-on inheritance #6822

LeonarddeR opened this issue Jan 30, 2017 · 6 comments

Comments

@LeonarddeR
Copy link
Collaborator

In the current situation, it is not possible to share add-ons between profiles, unless you install them all into a profile explicitly. This means that add-ons will be on the system multiple times, which is undesirable in case of large add-on packages, such as Vocalizer voices.

Because of this, I propose a system of configuration inheritance which allows to setup a custom base line configuration in the all users profile or at least a folder only administrators have access to. IN this case, it is possible to setup a base line configuration with installed voices and add-ons all the users profiles can inherit from. I think it could be considered to make this base line configuration equal to the system configuration.

Several additional thoughts:

  • Add-ons installed in the base line configuration should be unremovable
  • Also, support for configuration profiles should be disabled in this configuration, since that would make the order of inheritance too complex.
@jcsteh
Copy link
Contributor

jcsteh commented Jan 30, 2017

Having a system wide location for add-ons makes sense and has been discussed a few times already. Many add-ons would need to be updated to support this, though; e.g. they can't just assume they can save configuration in their add-on directory. For this reason, I think we'll need a manifest flag indicating whether an add-on supports this and we should not allow it at all for add-ons which don't.

I don't think we want to implement your other points, though:

  1. Inheriting from global configuration could be intrusive for users. Most NVDA settings are related to user preferences. I don't think it makes sense for a user to suddenly have a configuration they've been using for years changed due to a system wide change. We could perhaps use it as an initial configuration when a user first starts NVDA, though.
  2. I don't think this should be equivalent to the system configuration. An admin might want an add-on to be available for all users, but that doesn't mean they want it to run on the secure desktop, as this could be a major security risk for some add-ons. See also my comment on Move system configuration to %programdata% #6824.

@LeonarddeR
Copy link
Collaborator Author

LeonarddeR commented Jan 31, 2017 via email

@jcsteh
Copy link
Contributor

jcsteh commented Feb 1, 2017 via email

@derekriemer
Copy link
Collaborator

derekriemer commented Feb 1, 2017 via email

@LeonarddeR
Copy link
Collaborator Author

Here is what I've done so far:

  • Added inCentralStorage and supportsCentralStorage properties to the addonHandler.Addon class. The latter is based on a flag in the manifest file
  • Renamed config.getSystemConfigPath to getCentralConfigPath. getSystemConfigPath did already return the program data folder and was used nowhere anyway
  • Added central storage support to addonHandler._getDefaultAddonPaths
  • Central add-ons are now visible in the add-on gui as such and can't be removed
  • The possibility to copy the current user config to the central config

I haven't looked into storing drivers, plugins and app modules in the central config yet.

@JulienCochuyt
Copy link
Collaborator

Most NVDA settings are related to user preferences

Update and usage statistics -related settings are IMHO a good counter example.
These could be easily addressed by an add-on in the central storage, though.

I haven't looked into storing drivers, plugins and app modules in the central config yet.

I guess we can fairly handle the limitation of not having scratchpad support in the central storage.

@LeonarddeR, do you plan to publish your work in progress as a PR any soon?
We could really benefit from this feature for our mass deployment process in some corporate environments: cc @rthxy
Do you wish any assistance in rebasing babbage/i6822 onto latest master?

I think this issue should be renamed to something like "Support for central add-on storage"
ie. "configuration inheritance" seems now to be out of scope, and "add-on inheritance" might be thought as relating to the ability of an add-on to require or extend another add-on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants