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

[Feature Request]: Official ARM download for macOS #2786

Open
2 tasks done
12people opened this issue Oct 30, 2022 · 54 comments
Open
2 tasks done

[Feature Request]: Official ARM download for macOS #2786

12people opened this issue Oct 30, 2022 · 54 comments

Comments

@12people
Copy link

Guidelines

  • I have searched the issue tracker for open and closed issues that are similar to the feature request I want to file, without success.
  • I have searched the documentation for information that matches the description of the feature request I want to file, without success.

Problem Description

There is no ARM-based build for macOS at https://freetubeapp.io/#download .

Proposed Solution

Provide an official ARM build for macOS at https://freetubeapp.io/#download .

Alternatives Considered

Adding FreeTube to the macOS app store and offering an ARM-based build there.

Issue Labels

new feature, support for external software

Additional Information

No response

@absidue
Copy link
Member

absidue commented Oct 31, 2022

Please see #2771 (reply in thread)

@12people
Copy link
Author

@absidue Thanks for that!

There's one part of the comment that isn't addressed, though: "If not, instead of binary, add it to brew or MacPorts as a source package?" Would that at least be possible?

A lot of my software comes from Homebrew, so I'd be happy to see the ARM version of FreeTube there too. Or is this version there already?

(Also, should I close this issue?)

@dxlr8r
Copy link

dxlr8r commented Nov 1, 2022

Homebrew does not compile FreeTube, it fetches and installs the built binaries. A binary that requires Rosetta to run on ARM Macs.

@12people
Copy link
Author

12people commented Nov 1, 2022

Homebrew does not compile FreeTube, it fetches and installs the built binaries. A binary that requires Rosetta to run on ARM Macs.

Oh, ok, good to know.

@absidue
Copy link
Member

absidue commented Nov 2, 2022

"If not, instead of binary, add it to brew or MacPorts as a source package?" Would that at least be possible?

@12people We don't maintain the homebrew or MacPorts packages, if you would like to use source packages, please ask their respective maintainers to add them.

@absidue
Copy link
Member

absidue commented Nov 4, 2022

Back to the original proposals in the post, both offering FreeTube on the macOS App Store (would likely get rejected anyway, as it's a 3rd party YouTube client) and providing official macOS arm64 builds involve handing over loads of money to Apple. As arm64 macOS Gatekeeper rejects any apps that weren't built on your machine or aren't signed with a certificate issued by Apple.

Is that good for security? Yes. Does it screw over open source projects? 100%

The current solutions:

  1. Build FreeTube yourself
  2. Reach out to those unofficial repositories and ask them to add suport for building FreeTube on your machine (basically number 1 but you don't need to work out how to build it yourself)
  3. We provide official arm64 builds but have to ask everyone to add a Gatekeeper exception for FreeTube

@12people
Copy link
Author

12people commented Nov 4, 2022

There's also the possibility of asking Apple for a fee waiver, if there's a trusted maintainer in one of the eligible countries: Australia, Brazil, Canada, China mainland, France, Germany, Israel, Italy, Japan, Mexico, South Korea, United Kingdom, United States.

See Apple's official developer docs page on this for details.

@unilock
Copy link

unilock commented Dec 1, 2022

If I'm thinking of the right thing, you can bypass Gatekeeper on a per-app(/binary) basis via the "Open Anyway" button under System Preferences > "Security & Security" that appears after you get the "unidentified developer" pop-up, as detailed by Apple here (under "If you want to open an app that hasn’t been notarized or is from an unidentified developer"):
https://support.apple.com/en-us/HT202491

You can bring up the same "Are you sure you want to open [this app]?" dialogue by right-clicking a given unsigned app in Finder and selecting "Open" from the context menu, or by holding ⌃ (control) while launching said app from Launchpad or the Dock (via left-click).

You'll only need to go through said dialogue once, after which (on subsequent launches) the unsigned app will open immediately as any other app would.

Note that you'll have to go through the same Gatekeeper-bypass process after every app update (read: every time the app binary itself is changed).

@12people
Copy link
Author

12people commented Dec 3, 2022

@unilock Unfortunately, that doesn't work for M1 apps, only for Intel apps.

@12people
Copy link
Author

12people commented Dec 3, 2022

How about doing what 0 A.D. does: precede the download link with an informational message that one needs to run xattr -cr /Applications/FreeTube.app after installation?

Non-technical users who don't want to ever touch the Terminal could use Intel apps, but power users could easily run this command once and then just use the optimized M1 version.

@unilock
Copy link

unilock commented Jan 20, 2023

Maybe also of note, Homebrew has a --no-quarantine flag when installing a cask that automatically removes the quarantine attribute from the installed app. Although it's been said that the Homebrew cask isn't under FreeTube's control.

The command would be:

brew install --cask --no-quarantine freetube

(Or am I trying to solve a different problem? Is the quarantine attribute at all related to having to self-sign the FreeTube binary before it can be launched on Apple silicon...?)

@macOS-Mavericks
Copy link

macOS-Mavericks commented Mar 24, 2023

3. We provide official arm64 builds but have to ask everyone to add a Gatekeeper exception for FreeTube

I'm already doing xattr -cr /Applications/FreeTube.app with a few other arm64 macOS apps. A silicon build of FreeTube would be greatly appreciated, even if it was an unofficial build or a fork.

@bencodesall
Copy link

bencodesall commented Sep 27, 2023

Maybe also of note, Homebrew has a --no-quarantine flag when installing a cask that automatically removes the quarantine attribute from the installed app. Although it's been said that the Homebrew cask isn't under FreeTube's control.

The command would be:

brew install --cask --no-quarantine freetube

(Or am I trying to solve a different problem? Is the quarantine attribute at all related to having to self-sign the FreeTube binary before it can be launched on Apple silicon...?)

@unilock Does this work well on apple silicon m1/m2? How does one know the origin/control over a cask/package in brew?

@absidue
Copy link
Member

absidue commented Sep 27, 2023

@bencodesall For FreeTube you can check our README, anything listed in the unofficial downloads section is not maintained by the FreeTube team.

The only official downloads for FreeTube are the official website (https://freetubeapp.io), the GitHub releases (https://github.com/FreeTubeApp/FreeTube/releases) and the flatpak (https://flathub.org/apps/io.freetubeapp.FreeTube).

@toobuntu
Copy link

toobuntu commented Feb 18, 2024

It seems an arm64 build can now be added to the GitHub Action workflow. GitHub made M1 runners available for free for open-source projects: https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source/

It would still require a note be added to disable Gatekeeper. But having a pre-built binary would benefit many users and, as mentioned, it would be easy to include —no-quarantine in the Homebrew command (once the cask definition gets updated for arm64).

@absidue
Copy link
Member

absidue commented Feb 18, 2024

@toobuntu Unfortunately that won't help here, the problem is that if you want to run an arm64 version of an app on an arm64 Mac, it has to be signed with an Apple developer certificate ($99 a year and I'm pretty sure you need a Mac to even get the certificate in the first place, so that's at least another $600) or built on the same machine that you want to run it on, otherwise gatekeeper will refuse to let it run. As far as I know there is a command you can run to tell gatekeeper to not block it, but you have to run it every single time you download a new version of FreeTube, so for users of the nightly builds that would be a nightmare.

Basically it's a lot easier for everyone to just run the x64 build of FreeTube through Rosetta 2.

@toobuntu
Copy link

toobuntu commented Feb 19, 2024

Basically it's a lot easier for everyone to just run the x64 build of FreeTube through Rosetta 2.

I fully agree with the ease of running the x64 build through Rosetta 2. However, considering the long-term phase-out of Rosetta 2, I suggest exploring a Homebrew tap solution1. This tap, hosted by FreeTubeApp, could provide a streamlined way for macOS users on Apple Silicon to download and install the unsigned arm64 binary without manual intervention2 to bypass Gatekeeper restrictions3. GitHub Actions workflows can automate the tap's cask definition updates on new releases, and hosting the unsigned binary as a release asset in the tap repo should be possible if you don't want to have it in this repo. Thank you for FreeTube, and I respect whatever you decide regarding Apple Silicon support.

Footnotes

  1. A tap can be as simple as a separate GitHub repo named homebrew-FreeTube with two files: README.md and Casks/freetubeapp-freetube.rb. The README could explain to use the --no-quarantine option and why. The existing x64 (Intel) cask hosted by Homebrew would be unaffected and still available for users to install as before.

  2. Running /usr/bin/xattr -d com.apple.quarantine <path/to/freetube-<version>-mac-arm64.dmg> after every new binary download.

  3. Unsigned apps are not allowed in the official Homebrew cask tap, but "fear not. Removal of a cask from the official repositories means we won’t support it, but you can do so by hosting your own tap." (Source)

@PikachuEXE
Copy link
Collaborator

Question is how to generate arm64 version but not allowing users to download (we want them to use homebrew cask when it's setup to avoid manual step(s)) while there is an URL for downloading for the cask...

@toobuntu
Copy link

toobuntu commented Feb 20, 2024

@PikachuEXE

So my thought on that was to keep the download out of the main FreeTube repo altogether and instead publish it as a release asset to the new homebrew-FreeTube tap repo.

It would still be possible to download it directly from there, but at least that is a step removed and it wouldn’t be visible among the other release assets here.

The readme for this repo could point those interested in Apple Silicon support to the tap repo, and the tap repo’s readme could explain about using Homebrew with —no-quarantine. (It could also mention that if one does directly download it from the tap repo’s releases, it would be necessary to remove the com.apple.quarantine xattr using a command of the form /usr/bin/xattr -d com.apple.quarantine <path/to/freetube-<version>-mac-arm64.dmg>.

hosting the unsigned binary as a release asset in the tap repo should be possible if you don't want to have it in this repo.

I am excited that you are even considering the self-hosted Homebrew tap suggestion, and am happy to help in any way I can.

@PikachuEXE
Copy link
Collaborator

Just no idea how to automate the asset building (semi auto is fine) & the cask update
It might be fine to do it manually for first few releases (FT has infrequent releases anyway) but prefer automating it (and test it before making it official
I got Macbook to test cask changes (https://github.com/PikachuEXE/homebrew-FreeTube

@toobuntu
Copy link

There are several ways to do that, and it depends if you have the cooperation of upstream. One possibility is the Homebrew bump cask GitHub Action or its more recently updated fork. If upstream will use it in their workflow, then it can be used in standard mode to update the cask definition when a new release happens. If not, then it can be used in livecheck mode on a schedule.

For building and uploading the release assets, I suppose the answer is similar. If upstream will do it and has permissions to push a new release to the tap, great. If not, the tap's workflow would have to check for a new release on a schedule and then build, package, release and upload.

We can discuss these further at the tap repo.

@12people
Copy link
Author

Any updates?

@PikachuEXE
Copy link
Collaborator

Currently I maintain a Homebrew Tap
https://github.com/PikachuEXE/homebrew-FreeTube

No idea when an official one would be available (or if would be using a tap as distribution method)

@openforfuture
Copy link

Currently I maintain a Homebrew Tap https://github.com/PikachuEXE/homebrew-FreeTube

No idea when an official one would be available (or if would be using a tap as distribution method)

Thank you 🙏 your version makes a huge difference for Apple silicon users: would be great to see it soon part of normal releases. 🤞

@psiberfunk
Copy link

psiberfunk commented Jun 22, 2024

@toobuntu Unfortunately that won't help here, the problem is that if you want to run an arm64 version of an app on an arm64 Mac, it has to be signed with an Apple developer certificate ($99 a year and I'm pretty sure you need a Mac to even get the certificate in the first place, so that's at least another $600) or built on the same machine that you want to run it on, otherwise gatekeeper will refuse to let it run. As far as I know there is a command you can run to tell gatekeeper to not block it, but you have to run it every single time you download a new version of FreeTube, so for users of the nightly builds that would be a nightmare.

Basically it's a lot easier for everyone to just run the x64 build of FreeTube through Rosetta 2.

@absidue

I already have to deal with “FreeTube” cannot be opened because the developer cannot be verified. stuff on the Freetube x64 version on my M3 mac now .. every time I update it I've got to use the option-right-click-open trick to get around it, as it is.

I don't see how providing an official arm binary would make this worse ?

Screenshot 2024-06-22 at 2 58 10 PM

Holding option when selecting open from the context (right click) menu gives this dialog which allows you to grant it a gatekeeper exception:
Screenshot 2024-06-22 at 3 00 34 PM

@macOS-Mavericks
Copy link

macOS-Mavericks commented Jun 23, 2024

Thank for PikachuEXE for another build.

I just manually download your macOS ARM builds from https://github.com/PikachuEXE/homebrew-FreeTube/releases and then run xattr -r -d com.apple.quarantine /Applications/FreeTube.app in Terminal, much like I do with LibreWolf browser builds.

@PikachuEXE
Copy link
Collaborator

@macOS-Mavericks If you got homebrew installed you can just follow the instructions in the README

@aileks
Copy link

aileks commented Jun 25, 2024

Back to the original proposals in the post, both offering FreeTube on the macOS App Store (would likely get rejected anyway, as it's a 3rd party YouTube client) and providing official macOS arm64 builds involve handing over loads of money to Apple. As arm64 macOS Gatekeeper rejects any apps that weren't built on your machine or aren't signed with a certificate issued by Apple.

Is that good for security? Yes. Does it screw over open source projects? 100%

The current solutions:

  1. Build FreeTube yourself
  2. Reach out to those unofficial repositories and ask them to add suport for building FreeTube on your machine (basically number 1 but you don't need to work out how to build it yourself)
  3. We provide official arm64 builds but have to ask everyone to add a Gatekeeper exception for FreeTube

Even the Intel one gives me a Gatekeeper pop-up, so I'm a little confused on this. I built an arm64 version and didn't get a Gatekeeper notice since I've already allowed the app.

@PikachuEXE
Copy link
Collaborator

@aileks
If you can afford to build locally it might be the most flexible way (to include additional changes for example)
macOS does not care about apps built locally thus there is no popup which is also a benefit

@psiberfunk
Copy link

psiberfunk commented Jun 25, 2024

Yea I think now that even the Intel one warns there’s no reason not to have an official Apple silicon build that’s no worse from an install perspective ?

@aileks
Copy link

aileks commented Jun 26, 2024

@aileks If you can afford to build locally it might be the most flexible way (to include additional changes for example) macOS does not care about apps built locally thus there is no popup which is also a benefit

Ah ok, that makes sense. Still, though, Gatekeeper pops up on the current Intel version.

@psiberfunk
Copy link

psiberfunk commented Aug 12, 2024

is there an easy how-to to building this locally ? @PikachuEXE mentioned the Readme.. but I don't see build instructions there?

@absidue : Considering gatekeeper pops up on both Arm and x86 builds .. there's really no reason not to automate the official arm builds at this point, unless i'm missing something ?

@toobuntu
Copy link

toobuntu commented Aug 12, 2024

@psiberfunk:

Earlier this year, I made a script to build and install FreeTube on Apple Silicon. Below is a simplified version of it. (The original leveraged Homebrew to inform me of version updates.) I have since stopped using the script and switched to using the Homebrew tap.

Dependencies are jq and yarn (I am using the --frozen-lockfile option with Yarn version 1.22.22).

#! /bin/ksh
set -o errexit
set -o nounset
set -o pipefail
#
# Script to build FreeTube for Apple Silicon
# As of 14 Feb 2024, the FreeTube Homebrew cask installs an Intel build, which requires Rosetta 2 to run on Apple Silicon.
#
# Dependencies:
#   yarn
#   jq
#
# License: GPLv3+

typeset repo_dir="$HOME/devel/github/FreeTube-build-environment"

# Build the application in a development area of the filesystem
# Remove existing directory if it exists
if [ -d "$repo_dir" ]; then
  printf "Removing existing directory: %s\n" "$repo_dir"
  /bin/rm -rf "$repo_dir" || { printf 1>&2 "Error: Failed to remove existing directory.\n"; exit 1; }
fi

# Get the tag name of the most recent non-draft release
typeset tag_name="$(/usr/bin/curl --silent --url "https://api.github.com/repos/FreeTubeApp/FreeTube/releases?per_page=10" | jq -r '.[0] | select(.draft == false) | .tag_name')"

# Clone the repository at the extracted tag
if git clone --branch "$tag_name" https://github.com/FreeTubeApp/FreeTube "$repo_dir"; then
  printf "Repository cloned successfully to: %s\n" "$repo_dir"
  cd "$repo_dir" || { printf 1>&2 "Error: Failed to change directory.\n"; exit 1; }
else
  printf 1>&2 "Error: Failed to clone the repository."
  exit 1
fi

# Install build dependencies
yarn install --frozen-lockfile || { printf 1>&2 "Error: Failed to install build dependencies.\n"; exit 3; }

# Configure Electron Builder to generate only the macOS application bundle (.app) without additional packaging.
sed -i '' "s/targets = Platform.MAC.createTarget(\[[^]]*\], arch)/targets = Platform.MAC.createTarget(\['dir'\], arch)/" _scripts/build.js

# Build macOS .app bundle
yarn build:arm64 || { printf 1>&2 "Error: Failed to build macOS .app bundle."; exit 4; }
# Alternatively: npm run build:arm64 || { printf 1>&2 "Error: Failed to build macOS .app bundle."; exit 4; }

# Quit the application if running prior to installing it
/usr/bin/osascript <<EOF
tell application "System Events"
    if (name of processes) contains "FreeTube" then
        tell application "FreeTube" to activate
        repeat until frontmost of process "FreeTube" is true
            delay 0.1
        end repeat

        keystroke "q" using command down
    end if
end tell
EOF

# Uninstall an existing version if present in /Applications
/usr/bin/sudo /bin/rm -rf /Applications/FreeTube.app

# Install the Apple Silicon build to /Applications
{ /usr/bin/sudo /bin/cp -RL build/mac-arm64/FreeTube.app /Applications && \
  /usr/bin/sudo /usr/sbin/chown -R root:wheel /Applications/FreeTube.app; }

# Check for errors after installation to /Applications
if [ $? -eq 0 ]; then
  printf "FreeTube built and installed successfully.\n"
else
  printf 1>&2 "Error: An unexpected error occurred during the installation process.\n"
  exit 1
fi

# Inform the user about the potential delay for Spotlight to reflect the new version
printf "Spotlight might take some time to rebuild its index and reflect the new version of FreeTube.\n"

# Offer to open FreeTube
read -r -n 1 -t 5 var?"Open FreeTube now? (This helps Spotlight index the new version.) [y|n] " < /dev/tty
printf "\n"
case "$var" in
  [Yy]) open -a "/Applications/FreeTube.app" ;;
  *) printf "Installation of FreeTube is complete. You can open it later by locating it in your Applications folder.\n" ;;
esac

# Print a goodbye message
printf "All done. Exiting...\n"

@jgowdy
Copy link

jgowdy commented Sep 1, 2024

If the x64 version requires a Gatekeeper pop-up and the press-Command-open trick (which it does) on macOS arm64, I don't get how compiling an arm64 version provides any different of a user experience as x64 binaries. Why are we conflating the two issues? Gatekeeper behaves similarly with the version being published by the project today, so there's no reason not to provide arm64 builds. I literally just installed the x64 build of FreeTube on an arm64 macOS system, and Gatekeeper behavior was identical to the user experience we seem heavily concerned about here.

What is the perceived difference between providing an x64 binary and an arm64 binary for arm64 macOS users? Because if it is Gatekeeper, there is no difference.

@absidue
Copy link
Member

absidue commented Sep 1, 2024

What is the perceived difference between providing an x64 binary and an arm64 binary for arm64 macOS users? Because if it is Gatekeeper, there is no difference.

The difference from my understanding at least is that Gatekeeper is a lot stricter for arm64 binaries on arm64, so the "press-Command-open" trick doesn't work, instead you have to run a command in your terminal every time you download a FreeTube binary.

#2786 (comment)

@absidue
Copy link
Member

absidue commented Sep 1, 2024

Maybe the right solution is that we provide arm64 macOS builds but only if the people in this thread agree provide support for the users that struggle with the arm64 macOS builds. Of course if you don't hold up your end of the bargain we could always stop providing arm64 macOS builds from that point onwards...

@psiberfunk
Copy link

Or we just ship a README_TO_USE.txt file in the arm64 builds with the following text:

Because Apple is strict with ARM 64 binary security, you need to free this app from Gatekeeper restrictions.

1. Open your Terminal App
2. Paste in "xattr -dr com.apple.quarantine"  (do not hit enter)
3. Drag the FreeTube icon to the terminal.  (Now press enter)

Congratulations! You're free!  Sadly you'll need to do this again on upgrades.

@lil5
Copy link

lil5 commented Sep 1, 2024

I'm confused I use pika's homebrew tap, and have never needed to run anything from the terminal after an update.

I might make more sense to advise people to either use homebrew or follow the following instructions

@absidue
Copy link
Member

absidue commented Sep 1, 2024

@lil5 If you followed the instructions in the README of that homebrew tap you would have passed the --no-quarantine flag, which makes homebrew run that command for you: https://github.com/PikachuEXE/homebrew-FreeTube?tab=readme-ov-file#about---no-quarantine

@absidue
Copy link
Member

absidue commented Sep 1, 2024

@psiberfunk The main issue with your idea is that people are highly likely to forget to run it after an update, especially if they aren't particularly technical. Even if we stick it in the README, on the website near the download button, in the docs and in the release notes of every future release we do, people will still forget and come and complain about it not working.

So if you are willing to personally handle any issue or discussion that anyone opens about that in the future, ideally without us having to remind you about it, then sure we can add an arm64 macOS build to the release.

TL;DR You want us to do something that will cause more support burden and seem to be expecting us volunteers to just happily do more work because of you, when there are already ways to get an arm64 macOS build.

@psiberfunk
Copy link

So, I think we have this problem no matter what we do, we already have to tell people to right click and open… And Apple is inevitably going to apply this same gatekeeper stuff to all binaries. So we need some sort of solution that is easier to use that helps people install this With a minimal number of ways to go down the wrong path … I swear I’ve seen something like this with a installer package or scripted solution .. I’ll Have to start digging, but we have to confront this reality sooner or later.

in the meantime, do you know how universal binaries are treated? That’s potentially a stopgap solution?

@absidue
Copy link
Member

absidue commented Sep 1, 2024

in the meantime, do you know how universal binaries are treated? That’s potentially a stopgap solution?

Probably the same, as universal apps are just the x64 and arm64 binaries glued together and macOS just picks the appropriate slice from the binary (so yes they are double the install size), although someone with a mac would have to test that.

@psiberfunk
Copy link

in the meantime, do you know how universal binaries are treated? That’s potentially a stopgap solution?

Probably the same, as universal apps are just the x64 and arm64 binaries glued together and macOS just picks the appropriate slice from the binary (so yes they are double the install size), although someone with a mac would have to test that.

I’ll test if if you can throw a universal build at me somewhere ?

@psiberfunk
Copy link

Another thought , make the arm64 builds available but make people look on GitHub for them via an extra click or two that makes them realize they need special instructions for now ?

@macOS-Mavericks
Copy link

macOS-Mavericks commented Sep 1, 2024

I am completely lost with this ongoing debate. I dig FreeTube, but I opt to download and install my stuff manually, not through Homebrew. LibreWolf has had a faq about applying Apple silicon attributes and for me, since I'm a manual kind of guy, I cut and paste the terminal command after each update.

https://librewolf.net/installation/macos/
It is possible that Apple Silicon users see their recently installed LibreWolf flagged as broken. More details are available in our FAQ.

@psiberfunk
Copy link

I am completely lost with this ongoing debate. I dig FreeTube, but I opt to download and install my stuff manually, not through Homebrew. LibreWolf has had a faq about applying Apple silicon attributes and for me, since I'm a manual kind of guy, I cut and paste the terminal command after each update.

https://librewolf.net/installation/macos/ It is possible that Apple Silicon users see their recently installed LibreWolf flagged as broken. More details are available in our FAQ.

To put it simply there's a debate over whether to make it easy to get an ARM/Apple-Silicon build for most people even though that means they'd need to go through some extra steps to use it. Most people arn't quite handy enough to build it themselves, and relying on forks and downstream ports is a bit clunky and potentially offers a path for bad actors to exploit for malware insertion.

@absidue
Copy link
Member

absidue commented Sep 1, 2024

and relying on forks and downstream ports is a bit clunky and potentially offers a path for bad actors to exploit for malware insertion.

The homebrew tap is maintained by one of the FreeTube maintainers, so if you are that worried about them adding malware, you should probably stop using FreeTube from the upstream repository too.

@absidue
Copy link
Member

absidue commented Sep 1, 2024

Another thought , make the arm64 builds available but make people look on GitHub for them via an extra click or two that makes them realize they need special instructions for now ?

We could do it for the nightly builds, that way most people wouldn't use them. But then all of you would be even more mad because we would only be doing it for the nightly builds. Basically at this point it comes down to whether @psiberfunk is going to agree to pick up the inevitable extra support burden.

@psiberfunk
Copy link

Another thought , make the arm64 builds available but make people look on GitHub for them via an extra click or two that makes them realize they need special instructions for now ?

We could do it for the nightly builds, that way most people wouldn't use them. But then all of you would be even more mad because we would only be doing it for the nightly builds. Basically at this point it comes down to whether @psiberfunk is going to agree to pick up the inevitable extra support burden.

I'm not sure that's a good idea for a wide variety of reasons, but I do think we ought to figure out a way to mitigate this issue which is inevitably coming for regular binaries too. It's not great to rely on x86 translation as the offering for mac users when you can produce the arm binaries as it both consumes more power and is just kicking the can down the road. The nightlies would be better than nothing certainly... and you could bury the ARM version at first to see how much support issues it actually creates at first.

I don't really see how people needing to read instructions to right click and hold option is any different than the terminal dance.. they're both more or less the same level of hassle.

@psiberfunk
Copy link

What about a one-double-clickable shell script that does all this for the user ?

I'm thinking something like this in the DMG :

Install.command.zip

@toobuntu
Copy link

toobuntu commented Sep 1, 2024

While I personally use and recommend the Homebrew Tap, not everybody wants to use Homebrew. You could test the waters by updating the README to point people to the Homebrew Tap, or, as mentioned above, its releases page (which mentions the quarantine issue and provides a link to learn how to remove it).

It can be interesting to see how other projects deal with this issue. I just came across this method from oss-cad-suite-build, to provide an activation script which removes the quarantine, and mention the script in the README. Added in YosysHQ/oss-cad-suite-build@288ffba. The problem of application updates remains, though. You could consider adding to the "there's an update available" popup message that the Gatekeeper Quarantine will have to be bypassed after the update completes.

I suppose, in addition to updating the README, it could be added to the issue template with a link to https://support.apple.com/en-us/102445#openanyway. Because if someone landed there, they didn't handle it in Terminal.

@psiberfunk
Copy link

psiberfunk commented Sep 16, 2024

Well, this is now a problem for everyone running the latest macOS. As of Sequoia , the problem applies to both intel and ARM binaries, as far as I can tell: https://arstechnica.com/gadgets/2024/09/macos-15-sequoia-the-ars-technica-review/17/#h1

"In macOS Sequoia, users will no longer be able to Control-click to override Gatekeeper when opening software that isn’t signed correctly or notarized," the brief note reads. "They’ll need to visit System Settings > Privacy & Security to review security information for software before allowing it to run."

The right-click/control-click option for easily opening unsigned apps is no longer available. Users who want to open unsigned software will now need to go the long way around to do it: First, try to launch the app and dismiss the dialog box telling you that it can't be opened. Then, open Settings, go to the Privacy & Security screen, scroll all the way to the bottom to get to the Security section, and click the Open Anyway button that appears for the last unsigned app you tried to run.

The time has come .. we've got to deal with the same problem for all macOS users now.

@chris-aeviator
Copy link

Why not give people the choice - a this-is-dead-but-easy-to-use-x86-rosetta-osx and a osx-arm64 build. I can chose what's best for me, don't make a 2 year discussion out of it.

@macOS-Mavericks
Copy link

macOS-Mavericks commented Sep 30, 2024

What about a one-double-clickable shell script that does all this for the user ?

I'm thinking something like this in the DMG :

Install.command.zip

This install script rocks, after testing it out. I think it's the best solution offered so far.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: To assign
Development

No branches or pull requests

15 participants