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

Provide a way to avoid loading incompatible app modules #1327

Closed
nvaccessAuto opened this issue Jan 19, 2011 · 3 comments
Closed

Provide a way to avoid loading incompatible app modules #1327

nvaccessAuto opened this issue Jan 19, 2011 · 3 comments

Comments

@nvaccessAuto
Copy link

Reported by vtsaran on 2011-01-19 22:54
When installing the fresh copy of NVDA, the installer, or the program itself, should verify that the user-contributed app modules do not conflict with the new code. Most recently I encountered a situation with one of the app modules, modified by me, where I was getting errors from NVDA due to my code being incompatible with the latest changes within the software. It did not immediately occur to me that the errors were produced by my faulty module, and not by NVDA.
I am not sure if the check has to be done by NVDA itself or by the installer though.

@nvaccessAuto
Copy link
Author

Comment 1 by jteh on 2011-01-19 23:01
There's no real way to do this as things stand currently. A module can import successfully but fail to run at any given point. Such is the nature of dynamic languages.

However, in future, we will have better backwards compatibility. This means that, at least for one version, deprecation warnings or similar will be issued if a module tries to use deprecated API.

We may also want to consider an NVDA version requirement or similar on app modules. If not equal to the current version, the module will fail to load.
Changes:
Changed title from "NVDA should validate user app modules against the main install binary" to "Provide a way to avoid loading incompatible app modules"
Milestone changed from None to None

@LeonarddeR
Copy link
Collaborator

@jcsteh: Do you have anything to add to your last comment?

@jcsteh
Copy link
Contributor

jcsteh commented Jul 19, 2017

  1. Any changes relating to compatibility checks should be done for add-on packages, rather than app modules, as directly copying app modules was deprecated long ago.
  2. If we change public API, we do our best to deprecate it for at least one version so authors have time to update their add-ons. We document any deprecations or removals in the What's New.
  3. Users should ensure they're running the latest version of any add-ons they're using. This will be made easier once we get automatic add-on updates.
  4. Add-ons can do version or API checks when installing (in installTasks), though there is no such facility when NVDA updates.
  5. It has been proposed that we specify version requirements in add-on manifests. The problem with this is that when an author publishes an add-on, they can't know in what future release something they depend on might be removed.
  6. Overall, I don't think there is a programmatic way to deal with this. However, I think clear documentation of deprecations and removals for developers (as we're already doing) and automatic add-on updates should sufficiently mitigate this.

Closing.

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

No branches or pull requests

3 participants