WISE-Developers / Project_issues

This handles incoming tickets like bugs and feature requests
GNU Affero General Public License v3.0
2 stars 0 forks source link

[Prometheus Bug]: Pre-requisites for version 2021.12.03 are super confusing #78

Open nealmcloughlin opened 2 years ago

nealmcloughlin commented 2 years ago

Contact Details

neal.mcloughlin@gov.bc.ca

What happened?

The Prometheus 2021.12.03 installer is vague as to what to install for prerequisites. I had the correct pre-requisites installed for Prometheus 6.2.4. I have attached a screenshot of what I see on the installer when I try to install Prometheus 2021.12.03.

prometheus_2021 12 03_installer_prerequisites

For the missing vcredist 2010 for Java, the hyperlink takes me here: https://www.microsoft.com/en-ca/download/details.aspx?id=26999

There is only one option on the hyperlinked Microsoft website. However, it is called "Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update". There is no reference to Java which makes me wonder if I'm downloading and installing the right software. When I hover over the info button it indicates that Java 1.8 or higher is required. WTF? I have Java 8 Update 321 installed on my computer.

Incorrect Intel Redist Version does not tell me what I need to install. The hyperlink takes me here: https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#inpage-nav-3-1

I have a lot of options on the hyperlinked Intel website. There is nothing on this website called "Intel Redist". My best guess is that I need Intel® oneAPI DPC++/C++ Compiler Runtime for Windows version 2022.0.2. When I however over the info button it indicates I need Intel® oneAPI DPC++/C++ Compiler Runtime for Windows version 21.3. I can't find anything on the Intel website with this version number. Which option do I need to install?

Here is what I want changed in the Prometheus installer - we need to get this right for Prometheus EOL:

  1. Provide the exact name of all software prerequisites as they appear on their respective source websites. There should be no ambiguity.
  2. There is not enough real-estate to list the full names of prerequisites with a hyperlink to the right. The full name of the software prerequisite should be the hyperlink to download.
  3. Get rid of the info on hover buttons. It is not apparent that they do anything and they will be made redundant by the previous two changes.

Version

(Dev) 2021.12.03

What version of Windows are you seeing the problem on?

Windows 10 64-bit

Relevant log output

No response

Code of Conduct

spydmobile commented 2 years ago

@RobBryce is this something you are already aware of???

RobBryce commented 2 years ago

The text says "Missing vcredist for Java". It is as it's stated: VCredist 2010 is a prerequisite for Java. The Java installer doesn't check for this during its install and we introduced this to the installer some time ago to deal with failed Java installs in the past. We have linked the current/latest version of this that we are aware of (Service Pack 1, with the update). We could change the text to that for VC 14.x (last on the list) and not indicate why we need the VCredist 2010. But we need to check for this because we need Java and the Java installer doesn't check for it.

RobBryce commented 2 years ago

The other (Intel) issue is one which is a moving target, discussed with Brett recently:

  1. Intel is a moving target (recently) on what they are calling their different products. This makes (1) in Neal's post hard to achieve.
  2. Intel is a moving target with versions (which is okay) but they don't seem to keep historical versions of their products around like Microsoft does (which isn't quite okay). They are also making it hard to future-proof this check, because they change the GUID that we need to check in the compiler to make sure that the prerequisite is installed. For example:
    • we know how to check for Intel 21.3
    • we don't know how to check for a future version 2022.0.3 because it hasn't been released yet
    • the check for 21.3 won't work to recognize 2022.03.
  3. Intel is a moving target w/r to what they are putting on the page that we are linking to. Some time in the past, when we included the link, it was associated with 21.3.
  4. Intel is a moving target for where we look in the registry for where it may be installed.

Intel prerequisites are found in Redmine #1238. Neal closed #1238 now stating "Prerequisites now have an information button describing what is required.".

We want links in our installer to help the user. But we have no control over the lifetime or content of these external links. And we have no control over how future versions of our prerequisites may register with the system, so that we can recognize it. We had similar issues with Java, which is why we made that check optional so that the user can continue when they know the system is correctly set up.

We opted for links to assist the user instead of embedding prerequisite installers in our installer, even though we had full control over what was in our installer. If I recall correctly, we were concerned about licensing and distribution, and also the size of our installer.

Microsoft has been "kind" in not breaking links to prerequisites that we (and others) link to.

For reference, in REDMine, issues around the Java prerequisite checks are found in #965, #1131, #1156 (bypass option), #1207. A possible solution for Intel might be something similar to what we did for Java.

BadgerOnABike commented 2 years ago

Out of curiosity. Are there things in the compiler that are no longer linked that we need to tie to a specific version? Is there a way we can attempt to call something and if it doesn't exist then suggest the compiler version is an issue?

While I agree with our pre-requisite checks I'm wondering at what point we've become hyper restrictive but the linkages aren't actually broken between versions?

Just wondering out loud here, I may be way off with what issues may arise from bad versioning.

Further, in my testing, I've now broken my ability to use Prometheus as 21.3 does not exist online anymore.

RobBryce commented 2 years ago

We link to specific DLL's in both Microsoft and Intel compilers so we are tied to those versions. There are typically breaking changes to the DLL API's with each major release of the Microsoft tool, but Intel seems to be a bit better lately.

BadgerOnABike commented 2 years ago

Is there any potential for a self updating req sheet that the installer can grab from a common location? What I'm thinking is, you start the installer, it checks for a spec sheet update, if none, proceed, otherwise update. This would allow us to clear new compilers without making builds specific to a compiler version?

spydmobile commented 2 years ago

Great idea, a manifest in github repo, that is queried by teh program when it installs!!!!

nealmcloughlin commented 2 years ago

Some good ideas to pursue in future tickets. For now I'm looking for fast, easy fixes that make things as explicitly clear as possible. Rob, I understand the challenges with the Intel website and versions. That said, we are in control of the installer dialog and can make software prerequisites more intuitive from a user experience perspective. I've been installing Prometheus for almost 20 years and I find this dialog frustrating. I can only imagine what our less technically savvy users experience. Let's not worry about justifying past decisions and focus our energy on making the user experience with this installation better. Here is an updated list of what I'm asking for. I know it's not a perfect fix. I also recognize it may go against past decisions. But it will make the user experience better.

  1. Provide the "exact" name of all software prerequisites as they appear on their respective source websites. There should be no ambiguity. Saying "Intel® oneAPI DPC++/C++ Compiler Runtime for Windows version 21.3" is way more clear than "Intel Redist".
  2. There will no longer be enough real-estate to list the full names of prerequisites with a separate download hyperlink to the right. The full name of the software prerequisite should be the hyperlink to download. Do not confuse this with having the hyperlink point to the exact software download. Eg.) The hyperlink can still take the user to the Intel website with all the options. However, the user will know what to look for based on the hyperlink text.
  3. Get rid of the info on hover buttons. It is not apparent that they do anything and they will be made redundant by the previous two changes. This change is intended to make important information front and center as opposed to hidden in an information on hover button.
  4. Add "Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package MFC Security Update" as a separate software prerequisite in the list. While it may be required as a Java prerequisite, it is not Java. It should have it's own check box as it is separate software. The user doesn't need to know what it's for. They just need to know what to download and install. I'm wondering if this is an optional install as I successfully installed Java and Prometheus 6.2.4 without it.

If Prometheus 2021.12.03 can only be installed with version 21.3 of the Intel compiler we have another issue to deal with in a separate ticket, i.e.) Intel compiler version 21.3 is not on the website which means I cannot install Prometheus unless it is compatible with Intel compiler version 2022.0.2. I will test if Prometheus 2021.12.03 can be installed with Intel compiler version 2022.0.2. If so, I would support making this check optional (like we did for Java) so that the user can continue when they know the system is correctly set up. But let's direct that to a separate ticket if/when required.

spydmobile commented 2 years ago

Let proceed with this, but lets make the links in the installer interface a One-Click solution to a know good location (for now on my spyd.com server - Like we do with Download Intel C++ runtime 2021.3.0.3372 on the fgm.ca website.

RobBryce commented 2 years ago

OK, I believe the work here is defined, based on Neal's lasts posts, but instead of pointing to prerequisite sites, we'll put copies along side the C++ runtime installer, so we have control over what versions and where they are (and that they aren't going to disappear on us). Estimate is based on this.

spydmobile commented 2 years ago

@nealmcloughlin will need to test this when the build is complete.