Comment by cwillu
20 days ago
“Mac will try hard not to let you run this; it will tell you the app is damaged and can’t be opened and helpfully offer to trash it for you. From a terminal you can xattr -cr /path/to/OpenCiv3.app to enable running it.”
How far OSX has come since the days of the “cancel or allow” parody advert.
The lockdown has been slow and steady. Slow enough that at every juncture, apologists point out that it is still possible to run software you choose. I think we enjoy freedom that people do not appreciate because they never had to earn it. Gaining it back will require extraordinary effort.
Mac support is the bane of my existence. It doesn't help that none of us core contributors have one, so if anyone is willing to be a lab monkey...
Apple has been slowly tightening the screws on app notarization (code signing) requirements for running apps on macOS. To do it properly you need to be a registered developer ($100/year), and they're certainly not making it easy if you don't have access to a Mac.
https://support.apple.com/guide/security/app-code-signing-pr...
> On devices with macOS 10.15, all apps distributed outside the App Store must be signed by the developer using an Apple-issued Developer ID certificate (combined with a private key) and notarized by Apple to run under the default Gatekeeper settings.
Re: Developer ID Certificates: https://developer.apple.com/help/account/certificates/create...
I suspect the friction that users are facing are due to dodging the above requirements.
The whole sdk has a restriction that you can't use it off platform. The code signing thing is just a tax on ios devs
6 replies →
Needing an apple device to compile for an apple device is not an unreasonable requirement. Paying $100 every year is.
7 replies →
I have a Macbook Pro M4 Max, an Apple Developer account, a bit of time, and some enthusiasm. Would love to help!
Notarize it.
You can run macOS in a docker container. There’s no hardware acceleration for gpu, but works well enough.
You can also try macinabox if you have unraid:
https://hub.docker.com/r/spaceinvaderone/macinabox
It’s probably the easiest way of setting up a Mac VM if you have unraid. I know there are similar options for qemu and kvm based hypervisors. If you have an amd gpu you should be able to pass it through.
But you can't distribute whatever you build legally as far as im aware. The apple sdks prevent you from shipping legally.
The only way atm is installing homebrew and using a gnu tool chain if I understand the license of the official sdks correctly?
1 reply →
quickemu [1] is good at running macOS VMs.
1: https://github.com/quickemu-project/quickemu
My only experience with docker is headless in CI. I do have AMD. I'll have to look into this. Thanks
Emulating mac or using mac SDKs on non apple devices is against apple's bullshit license though.
10 replies →
Rather than making people run commands in Terminal, it would be more ideal to just tell people to try to run the app, then go to System Settings -> Privacy & Security -> scroll down until they see the Open Anyway button.
It'll be a skill they can use for any unsigned app and you can have cute screenshots. The Terminal command, on the other hand, is a huge barrier to entry.
https://github.com/fragmede/civ-iii/releases/tag/v0.3-mac-si...
I have a MacBook m4 Pro, m3, mac Mini m3, an apple developer account and willing to help.
I volunteer.
Why not build it as a web app and play via browser?
Contact the maintainer of macsourceports. They do exactly what you despise for dozens of projects.
> How far OSX has come since the days of the “cancel or allow” parody advert.
In case you're wondering like me, this is the advert in question: https://www.youtube.com/watch?v=8CwoluNRSSc&t=0
lol, I just assumed this was a reference to the old workflow for bypassing code-signing on OS X, which was you had to click 'Cancel' in the popup then right-click and select "open" (no indication in the UI that this did something different than double-clicking).
What is going on with this? I tried that and the alias I have built in for this problem, `make_safe() { xattr -d -r com.apple.quarantine $1 }`
The application cannot be opened for an unexpected reason, error=Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0xae1038720 {Error Domain=NSPOSIXErrorDomain Code=163 "Unknown error: 163" UserInfo={NSLocalizedDescription=Launchd job spawn failed}}}
The situation is actually worse than it looks.
This error exists because Apple has effectively made app notarization mandatory, otherwise, users see this warning. In theory, notarization is straightforward: upload your DMG via their API, and within minutes you get a notarized/stamped app back.
…until you hit the infamous "Team is not yet configured for notarization" error.
Once that happens, you can be completely blocked from notarizing your app for months. Apple has confirmed via email that this is a bug on their end. It affects many developers, has been known for years, and Apple still hasn't fixed it. It completely elimiates any chances of you being able to notarize your app, thus, getting rid of this error/warning.
Have a loot at how many people are suffering from this for years with no resolution yet: https://developer.apple.com/forums/thread/118465
Yikes. Why anyone would willingly develop for Apple platforms is beyond me. But then I also don't understand why some some people like using the crap^WmacOS. To each their own I guess. Hardware does look nice though, too bad about their software.
15 replies →
> It affects many developers, has been known for years, and Apple still hasn't fixed it.
Not a feature they care about. Same for deleting apps not released yet. Haven't looked in a while but for over a decade it has been impossible to delete ios apps submitted and not released. So either you have to release the app, make it "apple approved" and then immediately kill it or have an app always present (I think you can hide it but I've not checked that in quite a while.
Can't you (as in the user) still just type `sudo spctl --master-disable` to get rid of the nonsense?
1 reply →
And it inspired me to buy it for $0.99 and that doesn't work on Mac either. The [your least favorite tribe] really are revolting.
I got a Mac only because of the excellent battery life. But I dread Os X. Not only it is dumbed down and it is harder to accomplish what is trivial in other operating system, but I have to actively fight against it if I want to run software that is not downloaded from the app store or I want to open files with apps I downloaded from elsewhere. And the UI is broken.
To be fair, the threat landscape changed, too.
Not terribly fair. When Windows decided running everything as administrator was bad and to add a visual sudo-like prompt, Apple made fun of them for it, but it was Microsoft reacting to a changing threat landscape then too.
Vista gets maligned but UAC is a good feature to have around, and Vista introduced it.
3 replies →
UAC is not a security boundary. Malware can bypass it if it wants.
2 replies →
I mean it has, but the situation is getting ridiculous, I'm at the point where I'm honestly not sure what special set of magical incantations and rituals I need to do to get this process to work, it seems to change between different bits of software and get more complex with time as if Apple keeps finding proverbial bigger fools who can get through this mess without intending to and so they're solution is to keep making it increasingly more Byzantine
The thing that really irks me is I've got a paid developer account with Apple, I've already done the xcode dance, notarized binaries and all that nonsense, shouldn't this have activated some super special bit on my Apple account that says
“this one needs to do random stuff now and again and after saying, `Hey just checking in, doing this will do X to your computer probably, and maybe set it on fire, but if you say "go for it, I promise I know what I'm doing', I'm gonna trust you champ`, finger guns“
(not sure why in my head the personification of Apple would do "finger guns", but here we are I guess :shrug:)
Hell at this point I'll take a checkbox in my settings that says, ”Some people are into extreme sports, I love to install random binaries, just get out of my way“
You shouldn't need the company's permission to run whatever you want on your machine.
23 replies →
IIRC everything you compile on macOS yourself, possibly only when using Apple’s llvm toolchain, already gets the proper bits set to execute just fine. This also seems to work for rust and go binaries. I’m not sure whether that is because they replicated the macOS llvm toolchain behaviour for the flag or whether another mechanism is at play.
1 reply →
You used to be able to boot into the rescue mode and disable their security system. Is that not a thing anymore?
The command line incantation is just a convenience. You can unblock the app that you just tried to run by going to Privacy and Security in system settings and clicking around a bit.
1 reply →
Yes. The threats are now from Apple and other vendors who increasingly want, build and enforce lock in.
This is the reason I dropped macOS as a platform target. Apple will make users think you're a hacker trying to trick them, because macOS acts as if your app is radioactive if you don't pay the Apple tax, and refuses to let users run the apps they want.
Maybe 1 out of 1,000 users will know the magic ritual required to run what they want on their machine, and for every one of those, 10,000 are gaslit into thinking you were trying to harm them by macOS' scary warnings and refusal to do what they want.
Taking a legitimate concern (which of course does factor into the overall trade-offs) but exaggerating it into a tirade is uninteresting. Trade-offs are complex. There is more than one sensible mix depending on one’s values and position.
Only seeing the worst potential explanations of other parties whom make different trade-offs than you is uncharitable. It can also look like what I would call counterfactual hypocrisy, by which I mean, if you were in those shoes, would you actually behave differently?
E.g.: If you were in Apple’s shoes (think about what this entails), what actions would be compatible with a business’s MO from that point of view? From various ethical points of view?
If you say you would’ve behaved differently, is it even possible that you would’ve ended up in their shoes in the first place?
A common response here is early mistakes compound. Or actors have poor character which leads to an inevitable fall. That’s the stuff of Greek tragedies. I’m more of a system thinker. If you look at the patterns, it is pretty easy to see that the leverage points are human systems rather than human nature itself.
If you don’t like the environmental conditions that led to the decision space, then think about changing the system rather than blaming parts of it.
Casting blame on individual parts of the system arguably plays into maintaining the status quo. The most effective changemakers understand how things work and how they got that way without alluding to convenient oversimplifications. Rant now concluded.
> Apple will make users think you're a hacker trying to trick them
Apple will make users know that there are loads of hackers trying to trick them. The threat is extremely real.
> 10,000 are gaslit into thinking you were trying to harm them
Gaslit? Again, many are absolutely trying to harm users. Pretending this is some fake threat is perverse.
As much as people like to complain about downloaded software having restrictions, or encouraging the developer to be verified by Apple, we had already entered a world where users were told to never, ever run any software not by one of the bigs. I mean, I've told relatives that, for good reason after they installed malware and other nonsense repeatedly. It sucks having to get an Apple account and sign your executable, but for any normal user outside of the foolish, that was the only way they were ever going to run your app.
And honestly, for the case given this should be a web app. People shouldn't be trusting some random executable by some random group.
How does paying $100 per year to sign your binary ensure it's not malicious?
1 reply →
Users shouldn't need permission from trillion dollar corporations looking for a source of recurring revenue to be able to run the software they want.
It isn't 2001 anymore, systems are designed to be secure, and the outdated security model of trusting gatekeepers to keep you safe has been shown to be a farce, as billions of dollars are siphoned each year from innocent users who are just listening to good-intentioned people like yourself and trusting the App Store or Play Store. But they still get scammed anyway. The gatekeepers do not give a shit and approve of malware everyday. Hell, if you structure your scam right, you'll make those gatekeepers very rich until they reluctantly remove you. That or they leave the app because it's a "game" or "service".
How many users are being scammed by "legitimate" apps that charge subscription fees for features already on their devices, or god forbid, apps/games that are just illegal and unregulated casinos? Absolutely tons. I regularly find my older relatives being scammed by the App Store with a dozen different recurring subscriptions they didn't know they signed up for and certainly don't use. And those are the apps/services deemed "legitimate" by gatekeepers, because they're profitable even if they're taking advantage of users.
Sorry, I don't trust gatekeepers who run unregulated casinos and are the largest distributors of malware in the world to keep anyone safe. Design systems to be secure and you don't have to trust corrupt gatekeepers' blessings.
2 replies →
It gets a bit old and sad when this topic and macOS processes dominate the comments section.
Like windows complainers, most of us do not care.
And yet people still support it by finding ways around it instead if just leaving mac in the dust, simply not supporting it. Worked for Internet Explorer, will work the same dor mac
[dead]
"cancel or allow" (which Microsoft still does) makes no sense, it just trains user to click "allow" every time. Users don't know what they should allow or not.
It makes a bit more sense on accounts that have a password set, as it requires you to confirm identity when introducing significant changes to the system (and this is something that Apple also does).
Gatekeeper is a different thing, it basically makes sure that the software you're trying to run has been pre-scanned for malware by a trusted party, similar to Windows's "smart screen" and Defender or APt's GPG keyring integration. It's a mechanism that is completely invisible to 99+% of users. If you see a Gatekeeper pop-up and the app in question is not mlaware, the developer is doing something very wrong.
> If you see a Gatekeeper pop-up and the app in question is not mlaware, the developer is doing something very wrong.
Refusing to pay $100 for notarization is not "doing something very wrong".
An American corporation is NOT a trusted party!