MacOS Catalina: Slow by Design?
sigpipe.macromates.com
sigpipe.macromates.com
- Using a new, random executable. Even echo $rand_int will work. Edit: What I mean here is generate your rand int beforehand and statically include it in your script.
- Using a fresh filename too. Just throw a rand int at the end there. e.g. /tmp/test4329.sh
I MITMd myself while recording the network traffic and, sure enough, there is a request to ocsp.apple.com with a hash in the URL path and a bunch of binary data in the response body. Unsure what it is yet but the URL suggests it is generating a cert for the binary and checking it. See: https://en.wikipedia.org/wiki/Online_Certificate_Status_Prot...
Here's the URL I saw:
http://ocsp.apple.com/ocsp-devid01/ME4wTKADAgEAMEUwQzBBMAkGB...
Edit2: Anyone know what this hash format is? It's not quite base64, nor is it multiple base64 strings separated with '+'s but it seems similar...
Edit3: Here is the exact filename and file I used: https://gist.github.com/UsmannK/abb4b239c98ee45bdfcc5b284bf0...
Edit4 (final one probably...): On subsequent attempts I'm only seeing a request to https://api.apple-cloudkit.com and not the OCSP one anymore. Curiously, there's no headers at all. It is just checking for connectivity.
Even when OCSP is a problem, generally you're more worried about issuing a new certificate than an immediate workaround. What are you going to do, ask all your customers to go into keychain access to work around your problem?
This behavior of slowing down appears to be because apple is making HTTPS connections apparently synchronously (probably unnecessarily) and you'd only be potentially harming yourself by disable OCSP.
Though, I am often frustrated FLOSS desktops and Windows don't allow the behavior I want—maybe this is just cultural.
This is why Chrome disabled OSCP by default all the way back in 2012-2013 era. Not to mention the performance cost of making all HTTPS connections wait for an OCSP lookup. [2]
[1]: https://www.imperialviolet.org/2012/02/05/crlsets.html
[2]: https://arstechnica.com/information-technology/2012/02/googl...
OCSP enabled or not, you're still one website click away from being pwned to oblivion, giving full control to the hacker – which, of course, is inevitable to an extent, since bugs always find their way into software.
So why not make it easy to disable?
> Well, security starts from the user. If you're not mindful of what websites you visit, or what files/apps you download and run, there's no OCSP or anything else there to save you.
Sure, but we're discussing good-faith security here. Presumably if people complain about a missing feature they can envision using it. The scenario here is not visiting a shady website and doing something stupid, the scenario here is something like a man-in-the middle attack using a revoked certificate, which would by definition by difficult for the end-user to detect.
> So why not make it easy to disable?
Because then people would disable it for no discernable good effect.
I mean let me be clear, if you're a security researcher you can just modify your own HTTP stack, run a VM, control the hardware, whatever. This isn't a blocker to investigating HTTPS reactions sans OCSP—this is about denying secure connections when they've publicly revoked the cert used to sign the connection. The only reason this is even considered a discrete feature is that most people have never written an OCSP request in order to then trust an HTTPS server—you're just opening yourself up to be misled without even realizing this (and this goes for most of my very network-stack-aware coworkers).
If you're in a browser, you want the browser to be using best practice security, which necessarily includes OCSP. If you know what you're doing this is trivial to bypass.
Tangent: as much as some developers hate that the only way to distribute apps for the iPhone is through the App Store, as a user I consider that walled garden of apps to be a real security benefit. When John Gruber says “If you must use Zoom or simply want to use it, I highly recommend using it on your iPad and iPhone only. The iOS version is sandboxed and reviewed by the App Store.” There’s a reason why he can say things like that and it’s because Apple draws a hard line in the sand that not everyone will be happy with.
A jailbreak app making it to the app store being bad, and "apple's walled gardens are bad", are fundamentally incompatible.
They should also provide a way to downgrade iOS via Xcode for those with a dev account, but that's another story.
App Store policies are a poor replacement for collective action, of course, but let's not pretend we can just become immune to hostile by sheer force of will.
My MacBook runs homebrew which currently lists 84 packages installed plus their dependencies, very few of which will have been professionally vetted, and of the 127 apps in my /Applications folder only a third of them came from the Mac App Store, and I would estimate that a quarter of the others aren't even signed with a paid developer certificate.
I want the apps that I get from Apple directly to be safe. I want to know that when I put my faith in the App Store that I'm not lulling myself into a false sense of security. I want my parents and girlfriend, who are not technical people, to have that same sense of security without them having to learn entire programming languages to vet source code themselves.
The benefits of closed systems don't go away just because you say so.
I can think of a dozen ways which the OS could prominently display "Not Secure" for non-sandboxed applications, in a way that wouldn't preclude or hinder users from using such applications if they really wanted to.
More relevantly, wouldn't a sandboxed Zoom downloaded from Apple's store be equally secure even if you could install different apps from developers you trust more outside of the store?
"Those who give up freedom for security deserve neither."
(Yes, I know the original intent was slightly different, but that old saying has gotten a lot more vivid recently, as companies are increasingly using the excuse of security to further their own interests and control over their users.)
The ability to control exactly what millions of people can or cannot run on "their" computers is an authoritarian wet dream. People may think Apple's interests aligns with theirs --- but that is not a certainty. How many times have you been stopped from doing what you wanted to because of Apple? It might not be a lot so far, but can you break free from that relationship when/if it does turn against you?
While the content / concept is the main point, facts matter. Even if it is ancillary to the intended message. Why suffer misinformation no matter how small?
The issue is if it becomes practically impossible to move away from Apple to an alternative. Given that they have a pretty typical market share in absolute terms that doesn't seem like a risk right now. They don't even hold an absolute majority in what I assume is their strongest market, the US, let alone globally.
A developer made a game depicting bad practices at FoxConn. Apple removed it for "Objectionable Content"[1]. How is this inherently different from Apple saying you can't use your iPhone to read a certain book?
Apple's restrictions also make it easy for authoritarian governments to ban software they dislike: https://news.ycombinator.com/item?id=21210678
[1] https://www.theverge.com/2012/10/12/3495466/apple-bans-anoth...
But ultimately I own an iPhone because I need a GPS map, SIM card and web browser on the go. Apple doesn't exercise any creative control over those things. Apart from that they explicitly sell a highly curated platform. I expect them to make decisions I don't agree with; that is what curators do. That is the service they sell so I'm not going to complain.
If someone used that walled garden approach on my PC I'd be furious. On my phone, I give them hundreds of dollars for the privilege. If I were going to get upset about freedom and phones, which is reasonable, I have a loooong list of problems before I get to Apple's security model - starting with government interception of messages and moving down to having my name attached to my SIM card. Apple's activities don't really rate, and they have better incentives than Google.
PS. I'm not arguing against phones being scary. Look at the COVID tracking apps that some companies and governments are bringing out that might become mandatory one day. Or the way the US is known to use phone GPS to target drone strikes. Phones are terrifying. Apple's curating/censorship/what have you really doesn't rate on my threat model when dealing with a phone.
As this article shows, Apple is slowly moving in that direction for their PCs. They aren't going to be satisfied with locking down their phones only.
An App Store from which you can download software with confidence is a pretty sensible first step for most users.
Complementing that with a Notarization service for apps that can't live in the App Store, while still giving both users and developers confidence that the user is installing the "real" app, and not something malicious, seems like a pretty sensible way to protect most users outside the App Store.
And if all else fails, there are ways to allow running that un-Notarized, non-App Store app that you're sure you trust.
None of that seems like something that inherently means to take away your ability to run what you want on your PC, it just sounds like a common sense approach to giving your users confidence in what they run, and guiding them to do so safely by default, while allowing overrides as needed.
Are these ALSO things that Apple could use to lock down your PC completely?
Sure... but then, why bother with any of it if that was the intent?
They already have Mac App Store, and they already have the infrastructure to deal with a "whitelist only" approach, so why bother with this Notarization and Gatekeeper stuff at all?
Don't get me wrong, there's plenty of room to criticize Apple for their implementation. They are clearly figuring out some of this as they go, and trying to find a proper balance. That isn't easy, despite how many people make it out like it is.
Give the average user too many prompts or chances to override security, and they will do that, every time, without thinking it through.
On the other hand, bury the overrides too deeply, and risk making things miserable for the developers and power users who need to use your platform freely.
So far, I see only evidence that Apple is trying to find that balance, but no evidence that they intend to lock the entire platform down entirely.
Are they doing it perfectly? Clearly not. But I think if we're being honest, no other platform has either. I appreciate Apple's approach the most so far, but time will tell if they are able to figure this balance out or if another platform will at some point.
Change management. For the same reason why Ebay had to backtrack changing their background color and do it again, slowly.
But as someone who has been using Macs on and off for about 10 years now, I've heard people shout that Apple was locking down Macs from the moment the App Store was created on iOS (and long before it came to MacOS). So far, that hasn't happened.
Is it possible this is the next step in a 10+ years plan to "boil the frog slowly"? Of course! Not sure how they would accomplish this without also losing the developers they need to continue making both MacOS and iOS viable platforms for users, but I guess if they just don't care and want to lock everything down, this could certainly be one more step towards their long term nefarious goal.
But it also still seems like a reasonable step towards making their platform more trusted and secure for the average user while continuing to give devs and power users control.
So far, I see no evidence for the former, and enough evidence for the later, that I'm not too worried.
Don't go buy Apple and then cry in the corner that you aren't getting the right set of toys to play with.
I use Apple devices and fully support don't having random app uploading my stuff into the world.
I am going to say something very cynical now, if the reader doesn't like that, he should tune out now. But I guess Apple can't wait to have that special China deal. ^_^
Apple isn't Mafia, doing personal visits while giving advices to buy Apple computers otherwise accidents do happen.
Buying an Apple computer is a conscious decision.
I love how many around here make their decisions, and then feel entitled to complain and point the finger to big corporations, as if these corporations are the only ones to blame and they poor souls were mislead.
You might say that's illegal, and I'd recommend thinking about why that has become the way it is. Things are deemed important to everyday life, and suddenly they aren't free game.
Shifting the blame onto the victims by saying they should have known the county can do that, is just sheltering yourself from the uncomfortable truth.
I don't want to feel like I'm being taken advatage of either, believe me. It's just better to fight back than let it roll over you.
And I am entitled to complain about big corporations. That is the beauty if you life in a free country and even if it wasn't free to complain about them, I still would do it.
I rather see them all burn today than tomorrow.
Gatekeepers are a good idea for even experts. There's a reason it's still in your best interest to use battle tested crypto libraries instead of writing your own, even if you're a security expert. The reason stands that it's possible for experts to make mistakes, which is why auditing is so important.
Now for this to hold, we need to assume Apple has done a good job with their notarization system, and that it's regularly audited to ensure it's not causing too many issues.
In this case, I trust Apple isn't doing these things to make developers life harder. They're doing it because it's incredibly difficult to make something both ergonomic for experts (developers) and secure/safe for non-experts (average end-users), and they would rather ship something less-than-perfect for developers if it's going to help non-developers.
That distinction is why, in history, non-civilized people find civilization abhorrent and why other people would choose to live under a despot opposed to living on their own. In the ancient world people were not friendly to the idea of abandoning freedoms for class distinctions but once they had it they were not willing to sacrifice personal security or quality of life increases for risk of death and starvation.
That is why people claim freedom isn’t free, because many people, even now, are frequently ready to abandon freedoms for increased security opposed to the extra effort required to increase both.
Here is the Franklin quote (I encourage you to read the whole article): https://www.washingtonpost.com/news/volokh-conspiracy/wp/201...
Your distinction sounds like (what I learnt as) Berlin's negative and positive liberty:
"Negative liberty is the absence of obstacles, barriers or constraints. One has negative liberty to the extent that actions are available to one in this negative sense. Positive liberty is the possibility of acting — or the fact of acting — in such a way as to take control of one's life and realize one's fundamental purposes. While negative liberty is usually attributed to individual agents, positive liberty is sometimes attributed to collectivities, or to individuals considered primarily as members of given collectivities."
"The idea of distinguishing between a negative and a positive sense of the term ‘liberty’ goes back at least to Kant, and was examined and defended in depth by Isaiah Berlin in the 1950s and ’60s."
https://plato.stanford.edu/entries/liberty-positive-negative...
That article goes on:
"Many authors prefer to talk of positive and negative freedom. This is only a difference of style, and the terms ‘liberty’ and ‘freedom’ are normally used interchangeably by political and social philosophers. Although some attempts have been made to distinguish between liberty and freedom (Pitkin 1988; Williams 2001; Dworkin 2011), generally speaking these have not caught on."
Ah that's what I thought!
Also, referring to your other comment, if a "despot can do whatever he wants to you or to your family", like disappear you in the night, and it's not a loss of security, I'm not sure what you mean by 'security'.
I can use macOS, Windows 10, and any distribution Linux I want without having to pick one. That's freedom. I have choices. I choose all of the above in my personal setup. I'll fight to keep my free software but, at the same time, you can pry logic on the mac from my cold dead hands. I've been using it for 15 years and I am not going to stop now. Use the best/preferred tool for the job you have to do.
I thought this was computing for the masses.
Bubye Apple, my next machine will likely be a Dell Ubuntu.
For example, you used to be able to back up your purchased iOS apps to your computer, and restore them from your computer. In one iOS update (9 IIRC?), they removed the ability to back up the apps from your phone. In a later iOS/iTunes update, they removed the ability to restore backed up apps from your computer, making your existing backed-up apps useless, if you still had them.
Now, the only way to keep your software on your iPhone indefinitely is to never delete it, and never reformat your phone. Ohh and never update iOS because they will break backwards compatibility with apps you already have. For any app that is no longer supported by the developer, you're just out of luck (and I have purchased MANY such apps, being an iPhone user since 2009).
If I keep going at this rate, I think I will quit smartphones within a few years.
First xbox was offline, subsequent xboxes were more intrusive
first windows pcs were offline, now they have become spy ("telemetry") machines
Apple has reigned itself in (a bit), but they just as stubbornly put business decisions above user wants.
This isn't true. You can still install existing IPAs you have saved in the past by syncing it with Finder. You can also just AirDrop an IPA to your iOS device to install it.
> Now, the only way to keep your software on your iPhone indefinitely is to never delete it, and never reformat your phone.
You can still back up IPA installers by downloading them with Apple Configurator 2. https://ios.gadgethacks.com/how-to/download-ipa-files-for-io...
motd-news, apport, snaps, whoopsie, kerneloops, ubuntu-report, unattended-upgrades, ...
Casual Manjaro and Arch rolling distro with AUR is better drop.
Perhaps it's time for a "Pro" and "Home" Mac OS.
No - it's for people who want to Get Stuff Done™ and not worry about all the crap under the hood.
I'm trying to think of how macOS is so different from 10/20 years ago. What's missing? What can I not do now? Maybe my brain has just been consumerized and I forgot something important.
I was going to switch to Linux 10 years ago when people were talking about the iOSification of OS X back then, but that never happened.
How about when Apple removed /usr/include in its entirety from Mojave? Or when they decided to make the root filesystem read-only? Or when they removed the ability to permanently disable the "only run verified apps" option? Or when they even made that the default in the first place?
How about when they stopped supporting or updating the MacOS X11 server, which doesn't have proper GPU support and probably never will?
How about when Apple replaced gcc with a thin wrapper around clang, so that /usr/bin/gcc generates identical code to /usr/bin/clang? Or how they froze all GNU tools (including bash) at the last-released GPLv2 version, just so that they could retain the option to lock you out from modifying your OS install?
How about the fact that Apple has officially deprecated Python on MacOS?
How about the increasingly slow filesystem access? Not a big deal for app users, but terrible for shell-scripts and system software kind of generally.
How about when Apple removed the ESC key from two generations of Macbook Pro? And also how they replaced the function keys with a touchbar?
Did you know that Apple will soon be using zsh for /bin/sh? Without much regard to how many shell scripts have a #!/bin/sh hashbang and some bashisms in them? You can call those scripts buggy or poorly designed if you want - but they're plentiful and widespread, and will be broken so that Apple can steer clear of GPLv3 code. All so that they can block you from modifying your OS installation.
MacOS was a Unix nerd's dream 10 years ago. It was fast, reliable, and it had a good terminal paired with amazing hardware and software that "just worked". Over time, everything that attracted me to the platform has slowly eroded. I stopped buying or recommending Macbooks in 2016, and only use one now because my employer is an Apple shop.
Here is a thing, already with NeXTSTEP, UNIX support wasn't never something worthwhile looking for, NeXTSTEP was used for its Objective-C tooling and frameworks, like Renderman and Improv.
The UNIX stuff was just a solution for having a quick ramp up for their OS development, and just like Microsoft with Windows 3.1 NT, to have a tick in the box when selling to the government,
Their famous commercial against Sun, hardly touches on UNIX like development.
https://www.youtube.com/watch?v=UGhfB-NICzg
You aren't going to see a CLI on that NeXTSTEP screen.
Just like the SDK is all about Objective-C related stuff, even the device drivers were written in Objective-C.
https://www.nextop.de/NeXTstep_3.3_Developer_Documentation/
The only fouls here are those that keep giving their money to corporations instead of supporting Linux OEMs, as Microsoft cleverly discovered.
In fact, had either A/UX not been discontinued or Microsoft seriously supported their POSIX personality, Linux would never taken off, as the same crowd would be happily using these systems.
Yep. Sorry. I’m struggling to connect “Unix nerd” to “thinks /bin/sh and /bin/bash are the same”, especially as that’s very much a Linux distro created problem, and (the clue’s in the name) Linux Is Not UNix.
command line apps installed via home-brew don't have gate-keeper/notarization though.
I don't know why ppl seem to think they do...
What am I missing? I'm on the latest Catalina and, for me, anything installed via home-brew / scripts/c++/python/rust I write and run/compile myself, just run.
I also don't see any time different between my apps on linux and macOS.
I use itemr2, with Fulldisk access and it's specified as a devtool in privacy.
What am I missing that's a big problem here?
Apple seems to be trying to walk a line with MacOS and keep all of its user bases happy, but it's a hard line to walk.
That said, how can they lock it down? You need macOS open to develop apps for their other devices.
They can’t get rid of homebrew et al, as they’d lose their iOS developers! Don’t you agree?
The fact they explicitly have a “Dev tool” category you can use here says a lot about their approach being open for power users.
Honestly, it wouldn't surprise me if it just meant distributing package via homebrew means signing the package, much like any other package manager. Yes, you can get something similar with checksums, but it doesn't provide any method of authenticity of the distributor.
Is it friction? Hell yeah. A pain? Yes. Is it purely bad? No. Does it have positives? Some. It's not black and white.
It’s an authoritarian usurpation of the spirit of property rights. I should be able to decide for myself what software to run on my hardware, Apple HQ’s opinion should be irrelevant.
Other than that, he's mostly known for writing and talking about Apple.
That's news to me. My username is my name plus down (I use up for work-related accounts, and down for leisure).
> Other than that, he's mostly known for writing and talking about Apple.
Ahh, ok thanks.
What is the point of all this security these days? What are they protecting us from?
https://support.apple.com/en-ca/guide/console/cnslbf30b61a/m...
OCSP Request Data:
Version: 1 (0x0)
Requestor List:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: 3381D1EFDB68B085214D2EEFAF8C4A69643C2A6C
Issuer Key Hash: 5717EDA2CFDC7C98A110E0FCBE872D2CF2E31754
Serial Number: 7D86ED91E10A66C2AIUI doing what you said would permit the network request to proceed, and it would fail because nothing is listening on port 80 [1] We already know that the phone-home bails out when there's no network connection, so perhaps that code also bails out on connection failure?
Alternatively, is there some way to make DNS lookup itself fail for ocsp.apple.com?
Last resort, if we know how to fake the response, running a dummy server listening on localhost would be faster than allowing the request to go over the internet.
[1] Empirically, `curl http://0.0.0.0` yields a connection failure. I think I know that 0.0.0.0 is used in a listening context to mean "listen on all interfaces" but tbh I don't really know what it means in a sending context. Maybe someone can educate me?
Right, and as far as we know that exception might be caught in the same way as "your computer doesn't have any network connection at all" is caught. Or would those be likely to generate the same exception? Either way, there's a chance that it would result in exec gracefully and quickly not doing the blocking phone-home isn't there?
RAND_FILE="/tmp/test-$RANDOM.sh";
time_helper() { /usr/bin/time $RAND_FILE 2>&1 | tail -1 | awk '{print $1}'; } # this just returns the real run time
echo $'#!/bin/sh\necho Hello' $RANDOM > $RAND_FILE && chmod a+x $RAND_FILE;
echo "Testing $RAND_FILE";
echo "execution time #1: $(time_helper) seconds";
echo "execution time #2: $(time_helper) seconds";
Introducing a network delay makes the effect much more obvious. Normally I see a delay of about 0.1 seconds, but after using the XCode network link conditioner (pf rules) to add 500ms latency to everything the delay shoots way up to ~2 seconds.example output:
Testing /tmp/test-24411.sh
execution time #1: 2.32 seconds
execution time #2: 0.00 seconds
with developer tools checked both executions report "0.0 seconds".After blocking that domain I can see that tccd and syspolicyd are logging some error messages to the console related to the failed connection. I don't recommend blocking because my guess is that'll put syspolicyd/tccd in some unexpected state and they'll repeatedly keep trying to make requests.
Try this for watching security related console log messages:
sudo log stream --debug --info --predicate "processImagePath contains 'tccd' OR processImagePath contains 'syspolicyd' OR processImagePath Contains[c] 'taskgated' OR processImagePath contains 'trustd' OR eventMessage Contains[c] 'malware' OR senderImagePath Contains[c] 'security' "
syspolicyd explicitly logs when it makes the network request. syspolicyd: cloudkit record fetch: https://api.apple-cloudkit.com/database/1/com.apple.gk.ticket-delivery/production/public/records/lookup, 2/2/23de35......
(you need to enable private logging to see that url)Though just today I saw that apparently an enterprise policy config can enable private logging in 10.15.3+ without having to disable SIP. https://georgegarside.com/blog/macos/sierra-console-private/
For reference for others: this is the blog post by OP on enabling private logging in Catalina. check it out! https://saagarjha.com/blog/2019/09/29/making-os-log-public-o...
If you did get it to work could you paste the logs somewhere?
Problem is, that they did it unannounced. There must be really some weird stuff going on in those managers heads. How can they possibly think to go away with that?
Every software place I've worked gives a special urgency to security stuff.
And even if features don't come out regularly, security updates do. This is more of that.
From April 10, 2019: https://developer.apple.com/news/?id=04102019a
https://developer.apple.com/documentation/xcode/notarizing_m...
Those that show up at FOSDEM, carrying their beloved macBooks and iPads while pretending to be into FOSS.
I use Apple devices knowingly what they are for, not as replacement for something else.
It is a bit hard to be an aspiring FOSS contributor given the foundations those contributions are built upon.
Those same Apple loving users would be laugh upon at FOSDEM if they demoed any of their stuff on Windows instead.
Yet, there is hardly any difference between those corporations going all the way back to their origins.
Somehow after NeXTSTEP's adoption as OS X, NeXT and Apple's proprietary behaviour was forgotten and everything excused, because "hey they are shipping an UNIX clone"!
How would that work? When you build a house on rented ground the house may seem to be yours but it can always be taken away from you.
It took me maybe 150 hours to do the switch though during quarantine, and I still haven't managed to be able to properly connect to SMB at work...
I was considering building a Wayland/Pipewire Desktop software stack from scratch since my distro doesn't support them yet. I have become partial to experimenting with new software this way because it allows me to switch back to my known-good distro software without rebooting (most things I care about preserving the state of exist in the console anyway).
If it is relatively supported in a specific distro, I'm sort of interested in trying it.
It's one of the things that work better for me on Linux than on MacOS (no problem with browsing shares, no disappearing shares, no problem with non-normalized unicode filenames).
On MacOSX, I just click on connect to server, and it works for me "as is".
Never happened that with Linux. What did happen that there was a period of time on some distributions (circa Fedora 28-30?), when SMB1 discovery didn't work because entire SMB1 was disabled. This was security migitation (EternalBlue/WannaCry/NotPetya) and Microsoft is doing the same in Windows 2016/2019/10[1][2]. In general, using SMB2/3 is good idea anyway, Linux distributions/Samba eventually enabled SMB1 only for client-side discovery, and you can still enable entire SMB1 if you need it for some reason - do you still have Windows 2003 someplace?
[1] https://blogs.technet.microsoft.com/josebda/2015/04/21/the-d... [2] https://techcommunity.microsoft.com/t5/storage-at-microsoft/...
IIRC, the only smb version that would be considered too old is smbv1 (which I'd hope they are not using on the windows side... its quite insecure and is deprecated by microsoft).
Been using linux since the days you installed Slackware from floppies and recompiled your kernel to get drivers. Command line has always been a bliss, but no one has managed to come up with an usable and consistent GUI yet.
Btw does sleep work on linux laptops these days? How's hi dpi support?
That's part of the problem. Customizability is good, but in return you get inconsistency that you can't fix. And even if all system default apps looks the same (they still look horrible in my opinion), 90% of 3rd party apps look and feel different. You can hardly name a linux (qt or gtk) app that can be name elegant or at least thought through (UI wise). Almost all applications still look like they were build to be used on some factory terminal.
Mind, that was in 2013, and hopefully KDE has improved since then. Perhaps it has even reached the level KDE 3 was at? It's been downhill from there.
Btw, I switched to Macs from running Linux with KDE as my desktop of choice full time.
I am mostly on Windows devices, and use a GNU/Linux aging netbook for travelling.
In what concerns this Asus 1215B, everything works, with the exception that the open source AMD drivers were a downgrade from the binary blobs (OpenGL 4.1 => OpenGL 3.3 without video hardware decoding).
However I still kept it around, because although I don't target GNU/Linux as part of my work, I wanted to give Asus the message that selling GNU/Linux laptops might be a relevant business.
Eventually when it dies, I will be Windows/Android and occasionally macOS only user/developer, but I am not using any of these platforms to emulate GNU/Linux, I use them for their own value.
HiDPI is hit and miss. Some applications work, some (especially Java) break badly. Expect to need manual, fragile configuration. You also cannot set scaling per-screen, so you're SOL if you have heterogenous monitors.
Personally I use Windows. I check back in Linux every few months, but WSL seems to be improving far faster than native Linux is, so there's not much reason to use it anymore.
Even once HiDPI works, assuming that happens, by that point I'll have HDR and VRR as requirements... and I have no confidence that those will work anytime soon.
Both work out of the box with Ubuntu 18.04 running Gnome on a Thinkpad x1 carbon.
But having to flip a few switches is a funny excuse to handcuff yourself to OSX and the hardware required to run it.
hi-dpi works very nicely if you use GTK or Qt. For the other apps, it really depends how they are implemented. For me it has been working better than Windows.
These are strawman agruments. Give Ubuntu 20.04 a try an you'll see stuff pretty much just works on any common hardware. You can even use slackware and get everything working with a bit of fiddling.
MacOS is a very nice OS but it isn't FOSS and it isn't more capable at this point, it's just a personal preference. Pretending otherwise is disingenuous.
The problem is the "pretty much" part.
We all know what that means in practice. That's why OSX is popular.
200% scaling on my 4K screen looks great, wifi, network, sleep, gpu all worked out of the box. And the IDE behaves exactly like on OS X.
The only thing I disliked was the default Ubuntu color scheme, but that was easy enough to change.
Fucking multiple desktop shit.
My MacBook Pro can't even remember the order of my monitors when it goes to sleep, or between reboots. Even Linux can do that.
Windows can only guarantee that everything works because they have a monopoly and therefore hardware vendors have to support windows.
Most laptops don't ship with linux/are never tested with linux, so it's never going to work flawlessly on all possible hardware configurations. It's just not possible.
It does however, 'pretty much' work on most hardware.
And if you buy a machine from a vendor that actually supports/pre-installs/tests linux, all of the hardware will work out of the box.
I recently switched from macOS to Ubuntu 19.10 and then 20.04 as my daily driver and it's way flakier and has far more random app crashes than macOS.
That said, the system is fast, the UX is way further along than I expected -- in some ways it's got a better UX than macOS. It's way, way faster at nearly everything.
If you're installing it on a random windows laptop, you're never going to get better than 'pretty much', because the OEM doesn't support linux or test their hardware with linux.
Whenever you bring anything like this up though you'll just get a load of "When was the last time you tried it? It works perfectly for me" replies. Linux users don't want to admit its flaws.
I used Linux at work for years. Sleep just works, external monitor also just works. HiDPI was rough at the start but works fine now.
Touchpads do kind of suck. I generally really dislike the default mouse acceleration. Font rendering is still so so if you don't have a HiDPI screen and the most popular desktop environments are still kind of terrible.
But sleep definitely does work.
Are you implying that those users are lying?
I'm sure sleep does work reliably for them.
'Does sleep work on linux' is a fallacious question to begin with, because sleep working/not working depends on the hardware.
On some configurations it works flawlessly, on others it doesn't. Therefore you will always have some people saying it works, and others saying it doesn't. FWIW, my current laptop is a machine that ships with linux (system76 darter pro) and sleep works 100% reliably.
In my experience, when sleep doesn't work reliably, it's usually due to buggy firmware behaviour because most vendors don't care about supporting anything other than windows.
Along those lines, since most OEMs don't ship/test linux, it's simply not possible for every single hardware configuration to work flawlessly with linux.
The kernel devs or distros can't possibly support every hardware combination and BIOS bug for each hardware manufacturer.
For Windows the hardware manufactures have a reason to make the drivers bug free, its where they make most of their money, and Microsoft has the capacity to help them get it fixed if needed.
This doesn't exist for Linux unfortunately, unless you buy a laptop where Linux is fully supported (and you use the supported distro and kernel version most likely).
I have to say the main culprit for issues is usually power saving. I assume that's because ACPI is often badly implemented and power saving requires a lot of separate components to function together, to specification. Likely one doesn't, and the laptop comes out of sleep with the touchpad not working, or something worse.
If you're compiling something yourself, the compiler won't put a quarantine bit on it and it will execute fine. Same with homebrew/friends.
Scripts don't need to be signed. There is something else going on here.
not a big deal, assuming no data is kept.
Also I wonder what it looks like if a script is deemed bad...
No, AV vendors did it for decades. In a more efficient way though.
No, the entire thing is the problem. Windows 10 can still open applications that were compiled in 1994, and it doesn't make it less secure.
But from Edit2: Your hash is some sort of base64
let str =
"ME4wTKADAgEAMEUwQzBBMAkGBSsOAwIaBQAEFDOB0e_baLCFIU0u76+MSmlkPCpsBBRXF+2iz9x8mKEQ4Py+hy0s8uMXVAIIfYbtkeEKZsI="Then we see weird random gaps in the alphabet used, not so weird, because not every character will be used in every string:
Prelude Data.List> map head $ group $ sort $ str
"+0246789=ABCDEFGIKLMOPQRSTUVXYZ_abefghiklmpstuwxyz"
If we fill these up then: Prelude Data.List> let xs = "+0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"
Prelude Data.List> length xs
65
So base64 with some non standard symbols. I don't know what standard base64 is supposed to look to be honest, so perhaps it is standard base64. The = is definitely padding.The way to avoid this behavior is to staple the notarization ticket to your bundle (or dmg/pkg), i.e. "/usr/bin/stapler staple <path>." Otherwise, Gatekeeper will fetch the ticket and staple it for the user on the first run.
(I'm the author of xcnotary [1], a tool to make notarization way less painful, including uploading to Apple/polling for completion/stapling/troubleshooting various code signing issues.)
Here's my benchmarking script:
#!/bin/zsh
tmpfile=$(mktemp)
cat >$tmpfile <<EOF
#!/bin/sh
echo $RANDOM # Use a different script each time in case it makes a difference.
EOF
chmod +x $tmpfile
setopt xtrace
time ( $tmpfile )
time ( $tmpfile )
unsetopt xtrace
rm -f $tmpfile
If your local terminal emulator is immune with "Developer Tools" access (interestingly, toggling it off doesn't bring back the delay for some reason), you should be able to reproduce the delay over ssh.Reached out about this to Apple dev support, hope to get more insight.
Noticed the same; it should come back if you disable it and reboot.
The "Developer Tool" pane in System Prefs, Security, Privacy is the same power. Drag anything into that list you'd like to grant the same privilege (such as xcodebuild). This is inherited by child processes as well.
The point of this is to avoid malware packing bits of Xcode with itself and silently compiling itself on the target machine, thus bypassing system security policy.
Isn't launchd Mac's ‘init’? I.e. run before anything else.
otherwise this macos notarisation, along with a possibly of cpu heating issues with left thunderbolt usage and corporate av scanning, makes my machine, next to useless
Maybe in some cases, but the article says "even if you write a one line shell script and run it in a terminal, you will get a delay!"
Shell scripts don't come in bundles. I don't think this kind of stapling is possible for them? I don't think it'd be reasonable to expect users to do this anyway.
Two posts from Apple dev support (Cmd+F "eskimo") describe this in more detail.
I don’t know why grand op is downvoted. DoD requirements literally require a timeout setting for screensavers to begin locking. This has caught systems which have a race condition where you can move your mouse quickly and gain desktop access before it locks.
The long term effects come from the required changes to the development security model to remain productive and profitable (took MSFT a few OOB hotfixes and service packs to fix that example above, look when gnome kde xscreensaver etc introduced that feature etc)
I fail to see how this is a race condition rather than how a screensaver is supposed to work?
What defines when a locking screen saver is “locked”? 10m? Or 10m1s? You are making assumptions and that is what DISA spells out. Which forces the OS design to change in subtle ways. Like xattrs on files as great grand op was alluding to.
Does that provide clarity into how development security models evolve over the lifetime of an application?
The article says the described problem isn't limited in this way:
> This is not just for files downloaded from the internet, nor is it only when you launch them via Finder, this is everything. So even if you write a one line shell script and run it in a terminal, you will get a delay!
His site (http://www.quinn.echidna.id.au/Quinn/WWW/) supports its claim “I'm not a great believer in web” :-)
For example, I can run "terraform apply" and it could take up to 5 minutes to start, leaving my computer almost unusable until it runs. The weird thing is that this only happens sometimes. In some cases, I restart the laptop and it starts working a little bit faster, but the issue comes back after some time.
It's already been a few months since I try to run every command from a VM in a remote location, since I am tired of waiting for my commands to start.
I have a macbook air from 2013 which never had this issue.
Any easy fix that I could test? Disconnecting from the internet is not an option. Disabling SIP could be tried, but I think I already did and didn't seem to fix it, plus it is not a good idea for a company laptop.
Don't we have some sort of hosts file or firewall that we can use to block or fake the connectivity to apple servers?
Certain BSD-syscall-ABI operations like fopen(2) and readdir(2) are now not-so-fast by default, because the OS has to do a synchronous check of the individual process binary's capabilities before letting the syscall through. But POSIX utilities were written to assume that these operations were fast-ish, and therefore they do tons of them, rather than doing any sort of batching.
That means that any CLI process that "walks" the filesystem is going to generate huge amounts of security-subsystem request traffic; which seemingly bottlenecks the security subsystem (OS-wide!); and so slows down the caller process and any other concurrent processes/threads that need capabilities-grants of their own.
To find a fix, it's important to understand the problem in fine detail. So: the CLI process has a set of process-local capabilities (kernel tokens/handles); and whenever it tries to do something, it first tries to use these. If it turns out none of those existing capabilities let it perform the operation, then it has to request the kernel look at it, build a firewall-like "capabilities-rules program" from the collected information, and run it, to determine whether it should grant the process that capability. (This means that anything that already has capabilities granted from its code-signed capabilities manifest doesn't need to sit around waiting for this capabilities-ruleset program to be built and run. Unless the app's capabilities manifest didn't grant the specific capability it's trying to use.)
Unlike macOS app-bundles, regular (i.e. freshly-compiled) BSD-userland executable binaries don't have a capabilities manifest of their own, so they don't start with any process-local capabilities. (You can embed one into them, but the process has to be "capabilities-aware" to actually make use of it, so e.g. GNU coreutils from Homebrew isn't gonna be helped by this. Oh, and it won't kick in if the program isn't also code-signed, IIRC.)
But all processes inherit their capabilities from their runtime ancestors, so there's a simple fix, for the case of running CLI software interactively: grant your terminal emulator the capabilities you need through Preferences. In this case, the "Full Disk Access" capability. Then, since all your all CLI processes have your terminal emulator as a runtime ancestor-process, all your CLI processes will inherit that capability, and thus not need to spend time requesting it from the security subsystem.
Note that this doesn't apply to BSD-userland executable binaries which run as LaunchDaemons, since those aren't being spawned by your terminal emulator. Those either need to learn to use capabilities for real; or, at least, they need to get exec(2)ed by a shim binary that knows how.
-----
tl;dr: I had this problem (slowness in numerous CLI apps, most obvious as `brew upgrade` suddenly taking forever) after upgrading to 10.15 as well. Granting "Full Disk Access" to iTerm fixed it for me.
They are definitely doing something way too slow.
[1] https://wiki.mozilla.org/Sandbox/OS_X_Rule_Set
[2] https://reverse.put.as/wp-content/uploads/2011/09/Apple-Sand...
This capabilities-ruleset interpreter is what Apple uses the term "Gatekeeper" to refer to, mostly. It had already been put in charge of authorizing most Cocoa-land system interactions as of 10.12. But the capabilities-ruleset interpreter wasn't in the code-path for any BSD-land code until 10.15.
A capabilities-ruleset "program" for this interpreter can be very simple (and thus quick to execute), or arbitrarily complex. In terms of how complex a ruleset can get—i.e. what the interpreter's runtime allows it to take into consideration in a single grant evaluation—it knows about all the filesystem bitflags BSD used to, plus Gatekeeper-level grants (e.g. the things you do in Preferences; the "com.apple.quarantine" xattr), plus external system-level capabilities "hotfixes" (i.e. the same sort of "rewrite the deployed code after the fact" fixes that GPU makers deploy to make games run better, but for security instead of performance), plus some stuff (that I don't honestly know too much about) that can require it to contact Apple's servers during the ruleset execution. Much of this stuff can be cached between grant requests, but some of it will inevitably have to hit the disk (or the network!) for a lookup—in the middle of a blocking syscall.
I'm not sure whether it's the implementation (an in-kernel VM doesn't imply slowness; see eBPF) or the particular checks that need to be done, but either way, it adds up to a bit of synchronous slowness per call.
The real killer that makes you notice the problem, though, isn't the per-call overhead, but rather that the whole security subsystem seems to now have an OS-wide concurrency bottleneck in it for some reason. I'm not sure where it is, exactly; the "happy path" for capabilities-grants shouldn't make any Mach IPC calls at all. But it's bottlenecked anyway. (Maybe there's Mach IPC for audit logging?)
The security framework was pretty obviously structured to expect that applications would only send it O(1) capability-grant requests, since the idiomatic thing to do when writing a macOS Cocoa-userland application, if you want to work with a directory's contents, is to get a capability on a whole directory-tree from a folder-picker, and then use that capability to interact with the files.
Under such an approach, the sandbox system would never be asked too many questions at a time, and so you'd never really end up in a situation where the security system is going to be bottlenecked for very long. You'd mostly notice it as increased post-reboot startup latency, not as latency under regular steady-state use.
Under an approach where you've got many concurrent BSD "filesystem walker" processes, each spamming individual fopen(2)-triggered capability requests into the security system, though, a failure-to-scale becomes very apparent. Individual capabilities-grant requests go from taking 0.1s to resolve, to sometimes over 30s. (It's very much like the kind of process-inbox bottlenecks you see in Erlang, that are solved by using process pools or ETS tables.)
Either Apple should have rethought the IPC architecture of sandboxing in 10.15, but forgot/deprioritized this; or they should have made their BSD libc transparently handle "push down" of capabilities to descendent requests, but forgot/deprioritized that.
I believe it is actually a Scheme dialect, and I would be very surprised if it is not compiled to some internal representation upon load.
> This capabilities-ruleset interpreter is what Apple uses the term "Gatekeeper" to refer to, mostly.
I am fairly sure Gatekeeper is mostly just Quarantine and other bits that prevent the execution of random things you download from the internet.
In the latter, Apple's sandbox rule set (custom profiles) is called SBPL - Sandbox Profile Language - and is described as a "Scheme embedded domain specific language".
It's evaluated by libSandbox, which contains TinyScheme! [3]
From what I could understand, the Scheme interpreter generates a blob suitable for passing to the kernel.
---
[1] https://reverse.put.as/wp-content/uploads/2011/09/Apple-Sand...
[2] https://media.blackhat.com/bh-dc-11/Blazakis/BlackHat_DC_201...
There is a bunch of new stuff in 10.15, mostly involving binary execs (and I don't understand all of it), but I'm pretty sure it doesn't match what you're describing.
Running any kind of I/O during a capability check is a broken design.
There is no reason to hit the disk (it should be preloaded), much less the network (such a design will never work if offline).
Is this actually new in macOS 10.15? I seem to recall this being a thing ever since sandboxing was a thing, even all the way back to when it was called Seatbelt.
> That means that any CLI process that "walks" the filesystem is going to generate huge amounts of sandboxd traffic, which bottlenecks sandboxd and so slows down the caller process.
Is this not implemented in the kernel as an extension? I thought the checks went through MAC framework hooks. Doesn't sandboxd just log access violations when told to do so by the Sandbox kernel extension?
> Unlike macOS app-bundles, regular BSD-userland executable binaries don't have a capabilities manifest of their own, so they don't start with any process-local capabilities (with some interesting exceptions, that I think involve the binary being embedded in the directory-structure of a system framework, where the binary inherits its capabilities from the enclosing framework.)
I am fairly sure you can just embed a profile in a section of your app's binary and call the sandboxing Mach call with that…
Maybe you're right; I'm not sure when they actually put the Seatbelt/TrustedBSD interpreter inline in the BSD syscall code-path. What I do know is that, until 10.15, Apple tried to ensure that the BSD-userland libc-syscall codepath retained mostly the same behavioral guarantees as it did before they updated it, in terms of worst-case time-complexities of syscalls. Not sure whether that was using a short-circuit path that went around Seatbelt or used a "mini-Seatbelt" fast path; or whether it was by hard-coding a pre-compiled MAC ruleset for libc calls that only relied upon the filesystem flag-bits, and so never had to do anything blocking during evaluation.
Certainly, even as of 10.12, BSD-userland processes weren't immune to being exec(2)-blocked by the quarantine xattr. But that may have been a partial implementation (e.g. exec(2) going through the MAC system while other syscalls don't.) It's kind of opaque from the outside. It was at least "more than nothing", though I'm not sure if it was "everything."
One thing that is clear is that, until 10.15, BSD processes with no capabilities manifest, still had the pretty much exactly the same default set of privileges that they had before capabilities, which means "almost everything" (and therefore they almost never needed to actually hit up the security system for more grants.) I guess all Apple really needed to have done in 10.15 to "break BSD", was to introduce some more capabilities, and then not put them in the default/implicit manifest.
I suppose what actually happened in 10.15 can be determined easily-enough from the OSS code that's been released. :)
> Is this not implemented in the kernel as an extension? // I am fairly sure you can just embed a profile in a section of your app's binary and call the sandboxing Mach call with that…
Yeah, sorry, you're right; updated my assertions above. I'm not a kernel dev; I've just picked up my understanding of this stuff from running head-first into it while trying to do other things!
On a clean Catalina install this does not happen. Does “terraform version” have the same delay? If not, check your remote configuration - maybe run with TF_LOG=trace. Terraform Cloud will definitely highlight the inherent performance problems of using a VPN.
The comments on the article are annoying: it good that there's a mini way to reproduce, but please, use some further debugging like tcpdump (it still exists on osx, right?). Last time I summarized osx debugging was https://www.slideshare.net/brendangregg/analyzing-os-x-syste...
I'd also stress test it: generate scripts in a loop that include random numbers and execute them.
To make non-App-store apps annoyingly unusable, so the App store will sell more apps, instead of people downloading in other ways?
Just like Apple cripples the Safari browser and PWA apps.
Long term, maybe Apple wants to be able to remote-forbid apps if Apple is developing their own competing app?
Whilst most developers working at Apple understands this, and don't like it? Maybe the developers even feel happy about people here at HN being disappointed, and think that "now the business people here at Apple notice that this causes disappointment" ?
If this drives developers from OSX to other OSes, chances are they will develop apps for those OSes first.
Apple is too big to fail at this point, but driving developers away from your platform isn't a very clever strategy. You never know when you are going to hit a tipping point, and after you notice and people stop using macosx for development its already too late.
It took me ~150 hours to migrate to Linux, but my user and developer experience on Linux is much better than on MacOSX (emacs daemon "just works"!!!), so after all that work I wouldn't consider switching to OSX in the next 5 years at least. I had a Macbook air 2012, and because Apple still hasn't released a laptop that isn't a downgrade from that in some sense (keyboard, magsafe, ...) I've went with a think pad instead. Tiny details, like having a webcam that doesn't suck now prevent me from going back to OSX.
What’s the Linux equivalent of “notarization”? I’m not sure. Of course there’s probably more than one answer to that - let’s just taking signing packages as an example.
In theory Apple could put their weight behind vetting some of the popular open source packages perhaps? Or delegate that to the maintainers of those repositories and make them trusted? Like homebrew, for example (maybe a poor example, but you see how I’m trying to compare this with Linux...)
This is after all, what actually makes macOS useful to people on the command line 99% of the time, anyway.
So anyway, I agree on the surface it seems like this might be beneficial to Apple, but it doesn’t appear to be well considered.
They could invest more time in better sandbox and/or container type features that let people define some of their own more granular security boundaries. But they aren’t I guess? What are they doing here?
Selling UNIX underpinning was just a marketing move for willing to betray GNU/Linux and BSD in name of a better laptop experience, instead of helping OEMs selling their stuff.
Something that NeXT also did against the Sun workstations market.
On Linux side of the this kind of security measures never work, because the moment someone introduces something like this, the distribution gets forked.
It works on ChromeOS and Android, because it hardly matters to userspace that Linux is the actual kernel, Google could embark (and it is actually) in a kernel replacement project and most stuff would just work.
One cannot give the money instead to Apple and then come back complain that they were mislead.
NeXTSTEP was also a true UNIX, that wasn't why most business bought it, rather Renderman and other graphical based tooling.
I have used Apple platforms on and off since the LC II days, their commercial view was always quite clear to me.
https://www.tuxedocomputers.com/
They do GNU/Linux, but BSDs should probably work on their hardware, as mentioned on this old post (sorry in German).
https://www.tuxedocomputers.com/de/Infos/News/OpenBSD-6-3-cu...
Or by getting in touch with companies like os-cillation.
https://www.os-cillation.de/en/opensourceprojekte/bsd-specia...
> max 1,65cm dick
On the other hand, Apple should decide if they care about Docker performance. The answer seems to be "a little" (Hypervisor.framework) but much less than, say, Microsoft.
Apple doesn't talk about their future plans. Today we see stagnation, YET with spikes of exotic ideas (e.g. L4, which would permit efficient L4 Linux).
Per Apple's style, a big kernel change on the Mac side would absolutely be tied to a hardware change, to break things once and not twice. Build a new Mac with a Linux-friendly kernel (perhaps Linux, perhaps modified L4, or something new), put it on their beastly ARM CPUs, and I'm drooling.
Then again I don't work at Apple.
There is nothing standard about a Mac laptop, both technically and in market share.
Companies around the globe don’t care one bit about which laptops SV companies are buying.
https://hackernoon.com/why-do-developers-run-macs-9ad81d58d1...
This would require breaking your code signature and as such requires extra entitlements in the hardened runtime.
If exec is blocking in the kernel on IPC to some daemon, that should be observable (e.g. Instruments with kernel traces enabled).
at this point opensource and apple are sort of on life support.
The Mac remains a Mac: if you turn off SIP it also disables this behavior. You are free to choose less security for more convenience if that is your preference.
> Apple’s most recent OS where it appears that low-level system API such as exec and getxattr now do synchronous network activity before returning to the caller.
Can anyone confirm this? Because honestly this is just terrifying. I don't think even Windows authorises every process from a server. This doesn't sound good for both privacy and speed.
Speed, definitely not, this is going to make things slowwwww
That's security, not privacy...
"Full Disk Access" to allow a program to access any place on your computer without a warning. A few programs requested this, so it looks like it's been around for a while.
The other one is "Developer Tools" and it looks pretty new. The only application requesting it is "Terminal". This "allows app to run software locally that do not meet the system's security policy". So, my reading of this is that in Terminal, you could run scripts that are unsigned and not be penalized speed-wise.
- Location Services
- Contacts
- Calendars
- Reminders
- Photos
- Camera
- Microphone
- Speech Recognition
- Accessibility
- Input Monitoring
- Full Disk Access
- Files and Folders
- Screen Recording
- Automation
- Advertising
- Analytics & Improvements
Granted I don't typically use Terminal.app (iTerm 2 user), so I launched terminal and did some privileged stuff. Had to grant Full Disk Access to, say, `ls ~/Library/Mail`, but "Developer Tools" never popped up.Are you running a beta build or something?
---
Update: Okay, I checked on my other machine and that one does have it (Terminal is listed but disabled by default). What in the actual fuck?!?
(I'm also on 10.15.4 (19E287))
Interestingly, I rebooted the machine without after some benchmarking and experimentation with syspolicyd (see https://news.ycombinator.com/item?id=23274903), and after the reboot the category has mysteriously surfaced... Not sure what triggered it. Launching Xcode? Xcode and CLT were both installed on the machine, but I'm not sure when I last launched Xcode on this machine. Another possible difference I can think of: the machine without was an in-place upgrade, while the other one IIRC was a clean install of 10.15.
In the worst case scenario, you can probably insert into the TCC database (just a SQLite3 database, located at ~/Library/Application Support/com.apple.TCC/TCC.db) directly:
INSERT INTO access VALUES('kTCCServiceDeveloperTool','com.apple.Terminal',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1590165238);
INSERT INTO access VALUES('kTCCServiceDeveloperTool','com.googlecode.iterm2',0,1,1,NULL,NULL,NULL,'UNUSED',NULL,0,1590168367);
(Should be pretty self-explanatory. The first entry is for Terminal.app, the second entry is for iTerm 2.)Back up, obviously. I'm not on the hook for any data loss or system bricking.
Does this not require disabling SIP?
sudo spctl developer-mode enable-terminal
127.0.0.1 api.apple-cloudkit.com
127.0.0.1 *.api.apple-cloudkit.comDon't think so? Apple now theoretically has a centralized database of every Mac user who's ever used youtube-dl. Or Tor. Or TrueCrypt.
Not sure how a list of installed apps is going to be worse than that.
Either you have the ability to control the software, or it controls you
First, there was Apple scanning photos to check for child abuse[0] (that obviously got no attention on this site), then there was this one - Apple uploading hashes of all unsigned executables you run.
Do people really accept that company's "privacy" selling point?
[0] https://news.ycombinator.com/item?id=21180019, https://news.ycombinator.com/item?id=22008855
I could not for the life of me understand why go build would take upwards to 30 seconds to run and sometimes 100ms. I finally realized it was related to my internet connection being extremely spotty. I went online and searched if anybody had the same experience with `go build` but couldn't find anything.
I finally know what happened. This is a pretty intolerable "feature".
> Hello
> /tmp/test.sh 0.00s user 0.00s system 0% cpu 5.746 total
> Hello
> /tmp/test.sh 0.00s user 0.00s system 79% cpu 0.006 total
And even if I didn't connect to my VPN:
> Hello
> /tmp/test2.sh 0.00s user 0.00s system 0% cpu 1.936 total
> Hello
> /tmp/test2.sh 0.00s user 0.00s system 78% cpu 0.005 total
That's just ridiculous and unbearable.
Apple should provide a way to disable this notarization thing, and the user should still be able to enable SIP while disabling it.
additional information:
- macOS version: 10.15.4
- terminal: iTerm2 3.3.9
- didn't install any "security" software
Here is the new result (I only run once for each case):
╒══════════╤═════════════╤═══════════════════════════╕
│ │ │ +"Developer Tools" access │
╞══════════╪═════════════╪═══════════════════════════╡
│ terminal │ 1.448/0.004 │ 0.016/0.004 │
├──────────┼─────────────┼───────────────────────────┤
│ iTerm2 │ 1.240/0.006 │ 0.024/0.007 │
╘══════════╧═════════════╧═══════════════════════════╛
`1.448/0.004` means the first time it is `1.448 total`, and the second time it is `0.004 total`.(It seems I have "good" VPN/internet connection condition at this time)
airyote% echo $'#!/bin/sh\necho Hello' > /tmp/test.sh
airyote% chmod a+x /tmp/test.sh
airyote% time /tmp/test.sh && time /tmp/test.sh
Hello
/tmp/test.sh 0.00s user 0.00s system 74% cpu 0.009 total
Hello
/tmp/test.sh 0.00s user 0.00s system 75% cpu 0.007 total
Is it possible that Allan Odgaard, as good a programmer as he unquestionably is, has something configured suboptimally on his end? Because it just strikes me as super unlikely that Apple has modified all the Unix shells on macOS to send shell scripts off to be notarized. (From what I've read, while shell scripts can be signed, they can't be notarized, and Gatekeeper is not invoked when you run a shell script in Terminal -- although it is invoked if you launch a "quaurantined" shell script from Finder on the first run, but it treats the shell script as an "executable document." This is the way this has worked for years, as I can find references to it in books from 2014.)I have my complaints with macOS Catalina, and I know that Apple's "tighten all the screws" approach to security is anathema to a lot of developers (and if there was a big switch that I could click to disable it all, I probably would), but I'm using Macs running Catalina every day and I gotta admit, they just don't seem to be the dystopian, unlivable hellscape HN keeps telling me they are. At least off the top of my head, I can't think of anything I was doing on my Macs ten years ago that I can't do on my Macs today. ("Yes, but doing it today requires an extra step on the first run that it didn't used to" may be inconvenient, but that's not the same thing as an inability to perform a function -- and an awful lot of complaints about modern Macs seem to be "the security makes this less convenient." There's an argument to be had about whether Catalina's security model strikes the right balance, of course.)
However, I was able to reproduce this by downloading a whole new terminal app, Alacritty. With the random script and file path I can always reproduce the delay in Alacritty. My guess is Terminal.app might have some special case behavior?
See my comment above on some shell script that does the random file name stuff for you.
if he switched the /bin/sh out to /bin/zsh or /bin/bash which ever his default shell was, he wouldn't have seen the first delay.
Also worth noting "echo" doesn't spawn a process but is a routine in the shell itself. If you replaced echo with something that does spawn a process "like scp" it would be interesting to see the results. And if that's doesn't introduce latency then I'd try it with some hello world programs with a UUIDv4 in the binary to ensure they haven't seen the hash before.
In Bash echo is a builtin but /bin/echo also exists if you do actually want to spawn a process.
First, disable SIP to allow yourself to modify the system. Then, disable AMFI, the component responsible for code signature checking, entitlement enforcement and all that very useful stuff, with a kernel argument:
nvram boot-args="amfi_get_out_of_my_way=0x1"
Then you should be done.Catalina has a huge number of things that synchronously block application launch, and if any of them fail you get nothing but a hung app. A friend and I have a running discussion of the many ways where an application would just hang and we’d send samples and spindumps, to each other trying to figure out the right daemon or agent to kill to get the process to start responding again. It’s madness.
I first used the author’s timing method. First runs are consistently about 300 ms, subsequent runs consistently about 3 ms. Something is happening at first run.
Some in the comments are saying it’s “local stuff”, so I tested timing again with internet off. First runs go to about 30 ms, subsequent remain the same. So there is “local stuff”, but it doesn’t explain the delay.
Just to be entirely sure, I installed Little Snitch and got clear confirmation: running a script you just wrote results in syspolicyd connecting to api.apple-cloudkit.com. syspolicyd is the Gatekeeper daemon.
I don’t know what exactly is being sent. Maybe somebody else can do a proper packet analysis.
My only problem in moving to Linux software is that I prefer Apple's hardware. I'm on the 2019 16-inch MBP. Linux's compatibility with all the T2 and SSD hardware isn't there yet, but apparently it almost is.
If Linux on the T2 MBP becomes solid and stable in the next 1-2 years, after extensive testing I may move over permanently. I already use Linux on secondary computers, and I love and value its privacy. Same with my phone. I just love my privacy.
My needs are a high bar though. Productivity must be held back by nothing. I use macOS notes extensively and it syncs with my iPhone which is an extremely useful tool for me to note things down both in audio and. It needs to be reliable and - heh - 'just work'. I just discovered the cross-platform 'Standard Notes' app, with a bit more money paid out to Linux-compatible services like that, maybe it can all work. Casual photoshop can be taken care of via a VM.
Surprisingly, macOS Catalina is itself a disrupter to my productivity. It seems buggy as hell - glitchy, and weirdly slow for many extremely basic things - all since Catalina. I just don't get it. Is it caused by this article's observation? Something's definitely going on.
Maybe Apple will fix this in the next release? Like how they fixed the keyboard?
Either way, I still want to move to Linux on this fabulous (fixed) hardware that is the 16-inch MBP. (T2 issues aside.)
That's just the technical problems. I'm willing to give the UI a break, since it's probably as much me adjusting as it being bad.
This is my first Apple anything, and if this is what "just works" looks like, I don't want it. I could be more productive on an Android tablet at this point.
I usually have to restart and reset the "SMC" to stop the fan from nuking the computer.
I can let the computer drop to 5% battery life and the fan will turn off and the computer will cool down. Which is the opposite of what you want if it was actually overheating.
I also am sick of the touch bar now - after 2 years living with it. I have to press it twice to actually pause my media, because it's an LCD screen and it has to auto turn off to prevent burn-in. That's a regression from the old hard media button in the Fn row which was both instant and far easier to press. At least we got 'Esc' back.
But man, their trackpad...nothing beats it. Still.
OLED.
Each time I want to do something, I goddamn will spend 8 hours figuring it out if have to. E.g. this: https://apple.stackexchange.com/a/381441/163629 - one hotkey to change macOS Notes text into a specific hex colour (and/or bold etc). It took me a day but I worked it out. Where there's a will there's, 99 times out of 100, a way.
You can seemingly do almost anything with AppleScript. Emphasis on almost.
Here's another example: Right after I plug in my iPhone via USB, I have one hotkey to automate a little-known feature of macOS where you can turn your Mac into a speaker dock for the iPhone. Awesome thing when you have the dramatically improved 16-inch MBP speakers. Here's my applescipt for that, just customise according to your iPhone name near the bottom and try it out: https://pastebin.com/raw/9BY710Y6
YMMV, if you have additional audio devices in sound prefs so may need to change the code a bit.
AppleScript also has the ability to perform unix bash scripting and commands, so with homebrew able to install most common Linux packages, you can go wild if you want.
I'm definitely not 'advanced' applescript level, I'm intermediate. Hundreds of HN readers would know more than me. I just google and think until I find a way. I'm not a programmer.
I have other shortcuts e.g. to control the MPV media player even if it's not the currently active window. Again, weird personal needs, but awesome. AppleScript to the rescue.
FastScripts is how I assign universal hotkeys to any of my applescripts.
I worked on the team in charge of improving iOS (13) perf at Apple and IIRC there was no dedicated macOS “task force” like the one on iOS.
Luckily some iOS changes permeated into macOS thanks to some shared codebases.
It's not surprising. Macs are less than 10% of Apple's revenue.
https://www.macrumors.com/2020/04/30/apple-2q-2020-earnings/
No. A special directory can be created at the root of the file system called /AppleInternal. Then, if you work at Apple, you can put some special files there that do stuff. I've read somewhere that they are able to easily disable all of this privacy protection crap and other annoying stuff.
Not to mention people defend and market their products for free.
If the Mac revenue was separated out on its own, it would be about Fortune 120, that is higher than Kraft Heinz. With plenty more space for growth. Apple only has 100M Active Mac users. There are 1.4B Windows PC.
Maybe it's not related to revenue per se, but clearly since iOS became their main thing the Mac has suffered tremendously.
Without Macs for developers and other content creators that other 90% doesn’t exist.
They are risking their entire empire because (apparently) someone at Apple has an axe to grind with macOS's Unix underpinnings. And until they start getting real consequences (developer's leaving in huge numbers), it doesn't seem like it's going to stop. The tragedy is, if they ever do reach that point, where developers are leaving in huge numbers, it'll be too late. Platforms are a momentum game, you're either going up, or you're going down. And once you're going down, you're as good as dead.
To me, the idea that an OS is mostly finished is completely bananas. There's so much room for improvement and hardly any of that potential was tapped into in what's starting to feel like a decade.
And if Apple had invested into a successor for Cocoa, there might be a larger gap between native apps and (Electron) web apps, leading to some lock-in. Instead most new stuff is not native and for good reasons (and I do dislike the way they don't adhere to Mac conventions, but still).
I think ultimately the problem is Tim Cook. He's too attached to Apple's stock price. I think that's the one metric that he believes rates his performance. But inertia is a bitch. Like in politics, the effects might hit hard only once he's out and it could be too late to fix by then.
If I think about how much this impacts the economy overall (i.e. make millions of knowledge workers a little bit less efficient) then I can only hope that I'll see more sophisticated organizational structures in my lifetime that prevent such erosion.
And I'd wager that some iOS games are released without the developer ever touching XCode: https://docs.unity3d.com/Manual/UnityCloudBuildiOS.html
It took longer than expected. I even intended to buy put options, but someone I trust told me otherwise and to invest in equity instead, which I did, because I know that most buy decisions are not made rationally.
But it looks like the time has come now? On the other hand, I have been off by several years before. People are crazier than you think, especially when it comes to status and association with brands and self-confirmation of past decisions. They might well put up with Apples moves for a few more years.
Less than 10% is no excuse.
Perf changes are too numerous to mention, I’d recommend watching last year’s WWDC keynote describing the iOS 12 v/s 13 perf advancements.
Apple doesn't give a fuck about macOS since 2015.
This design seems to cement the trend at Apple to position their products as consumer appliances, not platforms useful for development.
The problem is, there's nothing else out there. Everything is going to shit in one way or another. Windows is now a disaster, Linux was always a disaster in terms of user experience and isn't improving.
Mac OS was the last bastion of somewhat good, thoughtful design, user experience and attention to detail and now they've gone to shit too.
Curious: what have you tried? People who use "Linux" as a catch-all in terms of UX usually have only tried a single distribution with a single desktop environment.
It's really hard for me to use non i3wm supporting OSes now, even though I have to use Windows from work, and have used Macs for the better part of the last 2 decades personally and in college.
I get a fair bit of weekly exposure to Windows 10 and well, it's not like heaps of fun, UX wise.
I'm reluctant to drop Apple mainly because I'm so 'tied up' with the rest of the ecosystem, iphone, Apple Music, iCloud etc.. They are not irreplaceable (for sure) but it always feels like moving away will cost way too much effort and be a pain... Well played, Apple.
This is why I don't want anything by Apple.
I had an ubuntu machine that took a while to boot even with an SSD. Later I installed arch linux on the same machine and boom! it would be to the desktop in seconds. It was night and day.
In which respects? Are you talking about apt vs pacman or something? Default DEs?
Rolling updates for me have not been problematic.
I've had a few updates that gave an error message, and they were easily fixed in one minute after searching the arch website.
I think one was a key expired - I had to manually update it and redo the update process.
The other I can recall was a package that had become obsolete/conflicting and a question had to be answered.
In general rolling updates are a tiny blip every few months.
In comparison, the several debian based distributions I've run have been a "lost weekend" type of upgrade for major updates.
Yup. You've just described a disaster. How many permutations of <hundreds of distros> x <dozens of DMs> must a user try before finding a good UX?
Because there are at least four BSDs, Mac therefore isn't good.
Do you see how ridiculous applying that logic to any operating system is?
Linux isn't a disaster. It's a kernel. There are Linux distributions with great user interfaces and great UX, developed by people who are great at it. There are also distributions that aren't.
Could you name some? No sarcasm, actually interested!
In terms of defaults:
I've heard really good things about Solus, and its use of AppArmor seems really cool. Never touched its package manager, so I won't recommend it, but it might be worth checking out. Its desktop environment is really snappy and has an interesting design philosophy.
Elementary is really cool as a boutique distribution; I don't personally feel any urge to use it seriously (I dislike apt as a package manager), but I always keep its live environment on a flash drive, because it works without any setup on basically anything I throw it at, painlessly, and without error. It's got a cool indie app store full of curated Elementary-centric free software, and overall just feels great. Using it, you'll probably notice a few areas that it clones Mac on, and a few that feel delightfully different.
Clear Linux (Intel's desktop distribution) is pretty popular right now because of how simple it is & how Intel seems to be going to great lengths to optimize it and make it a serious contender, but I don't like its desktop environment (vanilla GNOME 3 as far as I'm aware) all that much.
ChromiumOS is probably the best-designed desktop operating system on the planet right now technically, and I say that as a person who really hates Google. UI-wise it's so-so, but UX-wise it's really something special.
But more interesting are desktop environments in general, since they can be used with any variant of Linux you feel the urge to use. There's an exception there, though, in that Elementary's DE and Deepin's DE tend to not work so well or nicely on platforms that aren't Elementary or Deepin.
There are modern environments:
Plasma has hands-down the best UX of any sort of desktop operating system assuming you've got an Android smartphone; you say you're coming from Apple's environment, so imagine the interop between your Mac and your iPhone, but going both ways instead of just Mac -> iPhone. Texting, handling calls, taking advantage of the computing resources of connected devices, using your phone as an extra trackpad, notifications, unlocking your PC, painless file-sharing, pretty much anything you'd like. There are a bunch of distributions that ship with Plasma by default.
Solus's Budgie is kind of neat in that it takes the main benefit of GNOME 3 (ecosystem) with far fewer downsides.
There are also retro environments, if those are your thing. There's a pretty much perfect NeXTSTEP clone (including the programming environment, not just the UI), amiwm is still pretty interesting, there are clones of basically every UNIX UI under the sun, so on.
I'm not the best person to answer your question, because for the most part I don't go out of my way to use new desktop environments and distributions, and nothing above is my first choice. (In terms of window management, I usually stick with 9wm & E just because I have ridiculous ADHD and 9wm forces me to focus while E allows me to tile painlessly if I ever need it. I use three distributions overall, none of which are very popular at the moment, pretty much solely because I'm really picky with package managers & design philosophies.) That's a "me" issue rather than a Linux issue, though.
It sounds like the finding right combination of DE and package management solution plays a big role here. I don't remember much of my experience with Gentoo's package manager in the early 2000's other than finding it generally did its job (if a bit slowly)... Experience with package managers on Mac (brew, macports) hasn't been great so I'm eager to play around with modern ones on Linux. Same goes for the DE actually: stock, out-of-the-box, macOS is essentially unusable for me until I get my customization (scroll, trackpad, KeyboardMaestro) done exactly right, I can't imagine this not being better on Linux, if anything for the ability to switch among the various DE's.
I'm starting to contemplate this (fully untested) strategy: trying out a few distros and installing the one I like best on VMWare Fusion and then try to use it as much as possible, falling back to macOS if I get stuck or I'm short on time but gradually replacing Mac-specific stuff as I find suitable replacements.. TextMate, the masterpiece of Allan Odgaard (author of the article being discussed here) probably going to be the toughest one. If I'm successful, I should eventually be able to let Linux 'out of the box' and run it on real hardware..
PS: amiwm! This is going to be a must. I do miss the Amiga, a fair bit..
xbps
apk (terrible interface; wonderful technically)
pacman (wonderful interface; so-so technically; dislike the distro that uses it because of technical choices)
InstallPackage (GoboLinux is kind of cheating, because InstallPackage isn't a "real" package manager, but that's kind of the point)
I love TextMate, too! Something you might find nice is how easy it is to run Mac in a VM on Linux; there are scripts that manage the entire thing for you, and it's pretty painless (and so fast; I was surprised). Useful if you have a few packages you can't find replacements for.
You mention Apple Music elsewhere, which you might be interested to know has an Android client and a web client, and you can probably get a native client on Linux, though I'm not immediately aware of one.
That would be excellent! I like the idea of swapping host and guest with this VM strategy, sort of evolutionary platform switching.
https://github.com/foxlet/macOS-Simple-KVM
Really, really fast, and fairly painless.
The last few years I've run Linux VMs on a Macbook, but I'm transitioning to a Linux desktop probably running a macOS VM, which you mentioned in another comment - didn't know there was a practical solution.
It sounds like distros like Elementary and PopOS might suit me as a gentle transition from Macs.
Somehow, when you ask a person about PC or a Mac, the answer is: Windows or MacOS, and then the discussion is about their quirks, or advantages, or deficiencies.
You ask about Linux, and this is what you get:
> Linux isn't a disaster. It's a kernel. There are Linux distributions with great user interfaces and great UX
So, once again: which one of the hundreds of permutations of <distro> x <DM> has a great UX?
I'm sure there are other user-friendly distros that similarly let average users browse the internet, write documents, listen to music and watch movies painlessly.
The fact I can install Steam and play an AAA like Mad Max or Shadow of Mordor mostly seamlessly makes me wonder why people still claim Linux on the desktop is a no-go.
Because they and few others are exceptions? Can you play the latest CoD? GTA V? Assasin's Creed maybe?
> GTA V?
I honestly don't know, but it wouldn't surprise me if I could using WINE. A huge library of Windows AAA games work on WINE.
> Assasin's Creed
I don't know, but Mad Max and Shadow of Mordor are pretty much the same kind of game as Assassin's Creed, following the same kind of gameplay and using the same kind and complexity of 3D graphics/engine.
In any case, these are not exceptions. I forgot to mention the XCOM remake, Alien: Isolation (this is interesting because it has tons of graphics effects, including chroma aberration -- it looks awesome on Linux), SOMA, Victor Vran, Warhammer 40K Dawn of War II, L4D2, and many others. There are tons of Linux games on GOG and Steam, many of them AAA games. If you count indie games or 2D platformers there are literally thousands of them, but I guess that's not what you're after.
My point is that you can't run most AAA games actually, and many of those you can - will give you enough problems (like frame drop or some graphical features unavailable).
And I really don't understand what's the point of being able to run some games. I want to play the games I'm interested in, not the ones that 'are playable'.
>I don't know, but Mad Max and Shadow of Mordor are pretty much the same kind of game as Assassin's Creed, following the same kind of gameplay and using the same kind and complexity of 3D graphics/engine.
No sure what's your point here. You can't replace one with another just because they have similar mechanics.
Steam\GoG has many games that run on linux and macos (by the way), but most of them are indie platformers or things like that. People don't play random games just to kill some time (well, some do), they play TITLES.
> I forgot to mention
more exceptions. They will stop being exceptions when you will be able to run 80% of titles without any issues and not sooner than that.
Gaming is not important to be, I'm a PS4 guy ever since macos switch, just pointing out that games are still has little to do with linux unless we are talking about rare AAA titles and indie scene
> And I really don't understand what's the point of being able to run some games. I want to play the games I'm interested in, not the ones that 'are playable'.
With this definition neither Windows nor the PS4 are valid gaming platforms, since not every game can be played on them.
> They will stop being exceptions when you will be able to run 80% of titles without any issues and not sooner than that.
So now it's 80% when before it was "a few exceptions"? Sorry, I'm uninterested in discussing your arbitrary definitions with you. Nice try moving the goalpost.
PS: re: "without any issues", back when I used Windows for gaming, there was always some issue. The graphics card, drivers, config issues. I guess Windows is not a gaming platform either then?
Hardly. The existence of a distro I don't like doesn't degrade my experience using a distro I do like. You may as well be upset at an ice cream shop for having dozens of flavors when you only like strawberry. Choose the one you like and ignore the ones you don't. It's not rocket science, even children can figure that out.
The problem under discussion here is not that of using a distro you like, but finding a distro that you like.
- multi-language support requires a lot of work to get to the same point as macos.
In particular I use third party shortcut mappers to get language switching on left and right command keys (mimicking the JIS keyboards, but with an english international layout). That looks like something I’d have to give up on code myself.
- printer support is not at the same level.
Using a xerox printer, some options that appear by default on macos where not there on ubuntu. I’m sure there must be drivers somewhere, or I could hunt down more settings. But then my work office two other printers. It would be a PITA to hunt down drivers every time I want to use another printer.
- Hi DPI support is still flagged as experimental, and there’s a bunch of hoops to jump through to get a good setting in multi-monitor mode. Sure it’s doable, but still arcane.
- sleep/wake was weird. It would work most of the time, but randomly kept awake after closing the lid, or not waking up when opening. Not critical, but still not good (I’d ahte to have the battery depleted while traveling)
Overall if I had no choice that would be a fine environment. But as it is now, with all its quirks, I feel macos is still a smoother environment.
Portability is also a fair issue to raise, but it's simply not a problem for me. When I say Linux "on the desktop", I literally mean it: to me a laptop is simply a slightly more portable desktop computer. I sometimes take my work laptop to/from the office, and the battery lasts long enough for that. I'm not worried about longer trips, since I don't use laptops for that. Again, if you do care about this (which is completely fair), I'm aware many Linux distros still have issues with battery life. You certainly can't compete with a Macbook Pro, that's for sure!
I do note that my experience with printers is opposite to yours. Like I said, when trying to connect to an HP wireless printer, Ubuntu autodetected and self-downloaded the necessary drivers; however, it took a lot of patience to get it to work with a Macbook Pro. Today, that I have it configured for my Ubuntu laptop and my wife's Macbook Pro, the Mac will sometimes fail to print (the print job simply stuck in limbo) while my laptop prints reliably. Who knows?
And like I said in another comment, I game (or used to, anyway) a lot with Ubuntu, and many games are even AAA (though they tend to arrive later than on Windows).
So I really have a hard time believing Linux is not "ready for the desktop". It is, and has been for many years now.
edit: one last thing. You mentioned HDPi modes, multimonitor, multilanguage... none of those are for average users. My mom would be comfortable browsing the net, reading mail and watching movies on Ubuntu. She doesn't even know what HDPi is, nor does she want external monitors. (Spoiler: she still uses Windows because she can't learn anything else at this point... I've thought of tricking her by themeing Ubuntu to look like Windows, but that would just be mean).
For the printers, you are right in that it’s far from being a solved problem on macos. I had an EPSON all in one before, and it was also a pain to get everything working. If I remember correctly the generic driver could print, but we didn’t get “advanced” options without going through the EPSON pkg installer and all the garbage coming with it. I’d totally imagine the linux driver being done cleaner than that.
For the record I’ve worked with a decent number of devs using linux workstations, so I totally vouch for your use case. I’d just temper the niche nature of multi-language support; that’s an everyday need for basically all Asia. Granted my use of shortcuts is niche (I wouldn’t need them if I had enough keys), but looking at maintenance projects annual reports there seem to be a sizeable amount of quality of life fixes still on the way.
Have yet to see a distro do multi monitor hi dipi that results in readable fonts out of the box..
This gets updated yearly - https://itvision.altervista.org/why.linux.is.not.ready.for.t...
What do you mean by 'there goes your install'? There are multiple ways you could run bleeding-edge software before it's packaged for Arch. See for example every 'xxx-git' package in the AUR. Or Flatpak.
Linux sucks, but I use it becuase it sucks less than windows, for programming at least.
Try Pop_OS!. I switched from macOS and it's been a relatively painless experience with some tweaks.
I would recommend: Ubuntu, Linux Mint, Elementary OS, Pop!_OS
if you want: nice experience out of the box
I would recommend: Arch, Gentoo, Debian Net inst, Void
if you want a base system and install things you want on top of it
The (hopelessly unscientific) test plan was:
Challenge 1 - write live system ISO to USB drive and boot it on my 2015 MacBook Air (which, though old, still counts as exotic, I guess.)
Challenge 2 - make sure display, network, trackpad and keyboard (+ intl. layout) work correctly. Be able to SFTP to my Mac
Challenge 3 - with little to no docs reading (how is the package manager invoked from CLI?), use the terminal to set up the right environment for a couple of relatively portable hobby projects I've been recently working on (on Mac), compile and test them. This includes, among other things, installing clang or g++, SDL2, Wine (to run an ancient ARM assembler) and finding a usable GBA emulator.
Limitations:
A: 8GB RAM. More ambitious stuff (KVM macOS, VisualStudio Code) will have to wait for an actual install.
B: Deliberately avoiding exposure to the docs is silly but I thought
such an approach would give me an indication as to whether
there exists a distro that uhm, "thinks like me".
Candidates:
Ubuntu, Mint, Fedora, KDE Neon (which, if I'm not wrong, is Ubuntu LTS preconfigured as the latest KDE) and Void.Results:
Challenge 1: unremarkable. All worked right off the bat except for Void, which made it as far as showing the mouse pointer but then froze.
Challenge 2: well, boring ;) All distros were pretty much ready to use and required minimal tweaking. With the tweaking part ranging from effortless (Mint) to minor headscratching (Neon). Not sure whether /etc/X11/XF86Config still exists but I did not miss editing it today.
Challange 3: more interesting:
Neon: all worked as expected except some trial and error required to get Wine working: wine32 was required but it wasn't getting installed by default, apparently. (Not a whole lot easier on Mac anyway, with separate downloads & installs for Wine and XQuartz)
Ubuntu: I failed as apt refused to acknowledge the existence of the packages I needed. This is weird as I believe Neon relies on the same package database. Though undoubtedly my fault, not reading the manual, it is perhaps a bit interesting that I could not readily find my way around the problem.
Fedora: everything worked except for Wine, as the live system ran out memory (disk space) on installing it. Not a big deal, everything else worked very well. Aside: I'm an avid runner and "DNF" is not the most likeable of names for a program I have to use very frequently! j/k..
Mint: everything worked at take one.
I know this isn't even scratching the surface of the surface but I think for now I'm going to go ahead and play more with Mint and Fedora after installing them on MB Air hardware or MB Pro VMware.... with a mind of getting back to KDE/Neon eventually.
I haven't used Ubuntu much lately but I remember always having to add community repository to get some package I needed. (Also one of the reason I love Arch, a lot of packages there updated more quickly than most distro + the AUR for everything not present in official repo)
Each of them has something done better than the others, but all of them are delight to use.
If you want something more traditional with the start menu or dock or desktop icons, perhaps something like KDE Neon is better place to start. It might feel more familiar. Will be lighter/faster too.
Put each of them on a USB and run them live on your machine for few minutes each and see which one makes more sense to you.
This as true today as saying java is slow. Why not just try? You might get pleasantly surprised.
Yeah, but they're the ones who paid for their machines. So... you're saying they're not allowed to use them how they wish?
> Leaving a backdoor to real admin access for the experts just means laypeople will abuse those backdoors and mess up their machines again
Remembering the last 20 years of computer history, most of the critical fail wasn't caused by "laypeople abusing backdoors" but horrible security holes in popular, widely used software packages: Outlook, Flash, Acrobat Reader, Internet Explorer. Apple/Microsoft are not locking down their OSs to protect users from themselves, but rather from other developers. We, software engineers, seem to have completely failed our users as a profession.
Windows is a unfixable disaster, you can't fix it sorry.
Mac OS is now an unfixable disaster, you also can't fix it sorry.
Linux may be a UX disaster, but you can, uniquely, modify it. You can change your UI. You can attempt to fix the problem, and have a real shot at doing so.
Linux is the only one where you can do something about the problem - which is a strong reason to prefer it.
The biggest reason I enjoy elementary OS as a distro is that everything lives on GitHub, package releases happen through GitHub Actions, etc. Fixing a bug can be faster than merely filing a radar in the Apple ecosystem.
Nonsense, 'Linux' can be what you make it. You can have it as sleek as something straight out of the fruit factory or as spartan as a VT100 and anything in between. If you're new to the game the pre-packaged 'consumer' distributions might be a good starting point but for those with a bit of nix savvy - of which I assume there to be many on this board - those bells and whistles probably just get in the way.
If my 8yo daughter and my 82yo mother can use Linux - the latter through a remote X2go session from her kitchen table in the Netherlands to my server under the stairs in Sweden - I'd say people around here can be assumed to be able to handle it. The nice thing about 'Linux' is that you can change out those parts which you find disagreeable for whatever reason for those you like better, this in contrast to that last bastion of somewhat good, thoughtful design, user experience and attention to detail* which by your own statement has been changed into excrement. Just take out the shitty bits and replace them with something better... oh, no, not possible...
That is why the parent poster is right in this sense, things in 'Linux' land might not be perfect - and can never be 'perfect' since one person's perfection is another's nightmare - but at least you get to do something about it.
I'm honestly pretty baffled as to what keeps this meme alive, as KDE and GNOME are both very popular and provide simple, intuitive interfaces for the typical user. Plasma is only complex if you're the type that really wants to customize, but there its complexity is (mostly) necessary for its wide range of possible configuration. People have this idea that desktop Linux users are all a bunch of dorks playing around with Arch and tiling window managers all day and then posting their anime wallpaper setups on /r/unixporn, but that hasn't actually been true for a long time.
The settings UIs in Mint are easily way better than in Windows and Mac.
I use Debian, I like Debian. When I run Wireshark I don't see unknown requests destined to debian.com. That is the definition of simplicity for me. And yes, it doesn't always work out of the box, you have to install some drivers, change configurations but it's getting better and easier. Yet, I'm a software developer so I understand and like that stuff.
> Linux was always a disaster in terms of user experience and isn't improving.
No, you can't define it as a disaster, it's not. If you're an end-user that understands nothing of computers maybe you can but otherwise it's not a disaster. It's just harder and getting easier by day.
> Is there any "security" software running on your Mac? I've seen this sort of thing caused by that, but not in general.
> I ran the two line test and it had no delay at all. The Mac doesn't check for notarization on shell scripts or any non-bundle executable. I just did it again with a new test2.sh and Wireshark capture and there is nothing.
> I do a lot of Keychain code and I've also never seen those delays. The reason I suspect they told you not to use that API is that it's in the "legacy" macOS keychain. They really want everyone to move to the modern keychain but lots of people, myself included, still need the older macOS specific features.
> I'm not saying you are crazy, but all of these things though are the trademark reek of kernel level security software that is intercepting and scanning every exec and file read on the system. We had an issue with Cisco AMP once that took Xcode builds from under 10 seconds to over 5 minutes until we were able to get it fixed.
Having to wait 5-10 seconds for a new terminal tab as Sophos churns (checking autoccomplete scripts, rbenv, etc) was infuriating. Oddly, there was fate sharing with Internet interception, so there was a good chance the browser was getting dragged down too, and vice versa.
Convincing corporate IT of how bad the problem was was maddening. Based on what this author says, 10.15 on rural internet sounds like hell.
% rm /tmp/test.sh ; echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
% time bash /tmp/test.sh && time bash /tmp/test.sh
Hello
bash /tmp/test.sh 0.00s user 0.00s system 83% cpu 0.004 total
Hello
bash /tmp/test.sh 0.00s user 0.00s system 77% cpu 0.003 total
vs the one from the article:
% rm /tmp/test.sh ; echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
% time /tmp/test.sh && time /tmp/test.sh
Hello
/tmp/test.sh 0.00s user 0.00s system 2% cpu 0.134 total
Hello
/tmp/test.sh 0.00s user 0.00s system 73% cpu 0.004 total
(edited for formating)
And I don't mean developers. They're all pretty educated people but it's taken me by surprise. They come to me in frustration over Mac, they don't want to return to Windows and they really, really, really want linux. I've been using linux since about 1997 so they come to me. I usually push back, thinking "do you really want a unix workstation?!" but they insist.
My strategy has been some x2xx lenovo (like x230 or so) for about $300 from ebay, 8/16gb of ram or so with an SSD, the extended battery pack, putting mint on it and then just handing it over. Everyone, much to my continued surprise, has loved it and are really happy with it.
It's happened 4 times now and I'm still shocked every time. They've told me they use youtube to figure things out.
They're fine with libreoffice, gimp does what they need, supposedly spotify works on it fine, they don't know what bash or the kernel is and it's all fine. Incredible.
$ google-chrome --app=https://www.photopea.com
I switched back to my 2012 MBP and it's predictably gone well since, plus I get iMessage integration with my iPhone.
YMMV
>HiDPI support is a giant mixed bag I will say that this is still a thing, although with experimental gnome fractional support it works pretty well now.
Honestly I have a 2019 macbook pro 15 and have more problems with it than I do with my Thinkpad X1 Carbon 6th gen with Fedora 32.
The crazy thing is that I haven't heard it yet from the people I helped. Times may actually be changing now, just not swiftly. Perhaps it's the "decade" of desktop linux.
It's also not because linux is so great but because windows and apple are constantly stumbling over their own shoelaces and shooing customers away.
The major pain points are nearly all related to lack of integration with my iPhone (with Messages being the big one, followed by Notes).
From my perspective as a quote-unquote power user, it feels like Apple just constantly insists on shooting themselves in the foot with unnecessary and ill conceived innovations. Either way, I'm happy with my new setup and probably won't go back to macbooks anytime soon.
Edit: should note, when I say work I mean you can switch between GPUs/launch an app on the dedicated GPU with ease.
It works okay, but you have to launch processes with a specific set of env variables to use the Nvidia card.
This year marks the first year that I can just use linux without having to debug it.
Might give 20 a shot
But I agree that even WSL2 didn't cut the mustard, and I doubt GPU support will fix it. MS is advancing too slow, I think.
If you want to avoid tweaking, stick to native applications, and perhaps more importantly, go for a manufacturer with proper firmware support for high-DPI screens like System76 (Adder WS), Dell (XPS 13), or Lenovo (ThinkPad P1/P53/X1).
Obviously you can use less elegant solutions like changing fonts but it won't work with multiple displays with different resolutions.
It's also true that the trackpad isn't as good as Windows. (It used to be that Mac had the best, but Catalina managed somehow to screw up the trackpad and make it laggy. Catalina has not been good for me!)
Linux as an actually better experience, without gigantic embarrassing flubs like this, is looking better by the day.
Think that's hyperbole? Look at this, from the link:
> The first time a user runs a new executable, Apple delays execution while waiting for a reply from their server. This check for me takes close to a second.
> This is not just for files downloaded from the internet... this is everything. So even if you write a one line shell script and run it in a terminal, you will get a delay!
Consider a developer in this situation.
If your job involves lots of scripting - not unusual, for a dev - and you create dozens of scripts a day, or more - every single one will take about a second, and up to 7 seconds (!) to run, that first time you run it. And that could easily happen upwards of a dozen times a day, because it will happen for each script you create.
That's pretty terrible, for a developer. I don't think you can normalize startup times, for some hacky script, of 1 second as pretty okay or not noticeable. Certainly not if you're talking about a high end work machine.
Times that bad are associated with some junk laptop that's 15 years old - that's not supposed to be Apple.
Even if you build apps (I do), you might have the need to create scripts now and then, possibly even a lot of them (I do, for testing). I don't consider it acceptable to wait 1 sec+ each time I run one. It really does suggest that Apple has gotten extremely careless about their developer audience.
So, yeah - compared to that, Linux performs way better, and looks like a premium work machine by comparison.
I still use a Mac at home for entertainment (I'm typing this comment on one), and I have to say it works much better used that way. I don't have to worry anymore about random Mac OS upgrades breaking functionality that Apple doesn't care about because it's not part of their vanilla out-of-the-Apple-Store experience, but is vital to me as a developer such as 3rd party window management, dock improvements, keyboard tweaks, or not delaying every new execution by phoning home (LMAO).
It was quite slow compared to OS 9, but even most Linux installs have way better performance on equivalent hardware. Windows really is dog slow by comparison.
Coldboot Windows 10 from pushing the power button to reaching the login screen is 7s for me (i7-7700, m2 SSD, 32GB RAM).
I never ever had quicker startups on OSX.
[0]: https://eclecticlight.co/2020/01/27/what-could-possibly-go-w...
[1]: https://eclecticlightdotcom.files.wordpress.com/2020/01/appf...
By far the best linux I've tried when trying to get feature parity with macOS.
Debian or similar or ArchLinux if you have a desktop.
Edit: and WSL is not Linux
On mobile it's much better with Android, but Android isn't adapted to laptops. I haven't tried ChromeOS but it's pretty restricted from what I understood. WSL2 on Windows is Linux and it works great for me but I understand if you don't want windows in your life.
It is Linux as of WSL2, it's just also Windows, so you lose many of the advantages that would make a person recommend Linux in this thread.
Plus, if you're already familiar with how Debian works it should be a no brainer. None of that Ubuntu or other Debian-derived distros with extra sugar and bloat and that many times differ from actual Debian in just the right way to keep you scratching your head.
Even Debian "stable" is pretty good for desktop these days which in the past was always notorious for having super outdated packages but has greatly improved in that regard. Obviously, "sid" is still also a good pick for a desktop if you really need to always run the latest of mostly everything.
I personally have really no issues with systemd and now even go as far as completely removing the ifupdown, isc-dhcp-client, resolvconf and ntpd packages in favor of having my entire network stack configured by systemd-networkd, systemd-resolved and systemd-timesyncd instead.
It's pretty much a standard now across the board and I can't really find any arguments against it besides old habits so I've embraced it. Although it's obviously a bit opinionated, there is a good deal of functionality and flexibility on that thing.
That's also what seems worst about it. Unfortunately there seem to be few other choices these days.
The feeling reminds me of the first Macbooks I used when switching away from Windows Vista.
So far Ubuntu has been great as a default dev/staging workstation. It’s nice not to have to fight with homebrew or docker permissions or other issues on the Mac and spin up most anything.. and it just works.
Note: I really wanted to like WSL, but it just didn't work for me.
I just recently switched from Mac OS to windows and it really hasn’t been a bad experience.
I would go full Linux but the drivers for the GPU on my laptop seem to be a bit of a mess currently.
But no, haven't tried WSL2, I'm comfortable with my Linux setup so not to keen on messing with it at the moment :)
It's ubuntu without the bullshit monitization.
It is lightweight, since you choose everything that is installed, sort of opt-in.
It has all the latest software.
It has "rolling releases" which means there is never a giant lost-weekend distribution upgrade.
It has the AUR (arch user repository) for just about any software ever.
No outdated packages, no ppa. No upgrade. Install is rough but it nails how simple the system is.
Ubuntu is a good starting point. But there is so much more.
https://wiki.archlinux.org/index.php/PKGBUILD
For debian/ubuntu it is not as straightforward.
"it should simply work" is not a given on any linux.
I'm not denigrating those distributions, there are lots of reasons to have a stable release without a lot of things changing (especially development).
It's just that changing lots of assumptions at once is fragile.
if you want: nice experience out of the box
I would recommend: Arch, Gentoo, Debian Net inst, Void
if you want a base system and install things you want on top of it
Fedora 32 Workstation is pretty good if you want to see the best of what Linux can offer. It may not be the lightest and fastest distribution but it is easy to install and everything works. You'll get to experience Gnome which is the most original Linux desktop environment and the best one in terms of user experience in my opinion.
If you want something more traditional with the start menu or dock or desktop icons, perhaps something like KDE Neon is better place to start. It might feel more familiar. Will be lighter/faster too.
Put each of them on a USB and run them live on your machine for few minutes each and see which one makes more sense to you.
I've been running a Debian thinkpad for the last meaningful stretch of time, but from what I recall macOS quarantines any files created by the user via an extended attribute `com.apple.quarantine`. Quarantined files are not allowed to be executed by gatekeeper. It's not about a network check, they just can't be executed. If the user removes the quarantine attribute, then gatekeeper will shut up and the files will execute normally. Alternatively, if a file has a signed hash stapled to it i.e. if it has been notarized, then gatekeeper will also allow execution after verifying the signature. This doesn't require a network check either.
Interestingly, the way to bypass the quarantine behavior is to unarchive a folder. Archives themselves include the quarantine attribute, however, files extracted from the archive using a terminal program (a "developer tools" program) don't. And so macOS doesn't care. Also tools like `curl` don't apply the quarantine bit to downloaded files so curling a binary or shell script still works just fine.
How can something as damning as this ever reach end consumers without getting detected?
You can't remove or change this behavior because some people love it.
EDIT: FWIW the above statements are oversimplifying the situation of course: https://en.wikipedia.org/wiki/X_Window_selection
And more here: https://unix.stackexchange.com/questions/13585/how-can-i-use...
Most fans of Linux will claim the fact that you can choose any number of clipboard managers to customize things to your liking is a critical aspect that draws them to the platform.
Others among us (whether reformed or uninitiated) will commonly cite this same stuff as the reasons we avoid Linux on the desktop.
You should get a very nice experience out of the box with these, which can be reproduced quite easily with less "bloated" distributions such as Arch or Gentoo if you prefer to install things yourself
There is no actually good alternative to Photoshop. gIMP is not remotely in the same league. Pixelmator and Affinity Photo are brought up but they're also like nano vs emacs. Photoshop doesn't run on Linux AFAIK. I'm sure for a graphic designer the same is true for Illustrator. The cheaper alternative exist and you can maybe get by but there's missing so many features.
If you're into games there is really only Windows. Same for VR.
I'm sure there are other categories.
I did serious dev on Linux and that dev didn't require any games or apps so it was great and I loved it. It ran my editor of choice and otherwise I only needed a browser and a terminal. But as soon as I step out of that small subset it's pretty much MacOS or Windows only, at least for the things I want to do with my computer.
VirtualBox has a 'seamless mode' as well, I wonder how well it works on a Linux host and a macOS/Windows guest.
Now imagine the millions of other people in my situation and rethink your comment.
> Now imagine the millions of other people in my situation and rethink your comment.
The comment still holds. Linux should still be considered. I didn't proclaim that it would be a realistic alternative in every case, but I'd wager that for a large proportion of software engineering roles, it would be.
Is there software that may also be suitable for basic image and video editing work and therefore fine for a subset of these creative professionals you refer to? Absolutely. I've seen great results from folks using Blender, Inkscape, OpenShot, GIMP, Krita and others.
We shouldn't just dismiss an OS immediately, and that's what my comment was trying to get at.
Personally I'd need to run a VM for a bunch of software or fight Wine. That's assuming my machine has the right hardware support for everything and even then the trackpad support is likely to not be great.
It's really frustrating to see Apple make all these poor decisions and they almost never are willing to admit their mistakes and go back. In the rare case when they do (e.g. butterfly keyboard, Mac Pro), it takes them years to turn around.
or until they need something to throw out for investors. "dark mode" did not come about because of a technical breakthrough
Teaching my daughter to program on a modern computer, we spend more time bootstrapping and in process, than we do in actual development.
Because that was the experience on those old machines. Switch it on, straight to BASIC prompt in a second or so. If you want to program it’s frictionless. And you can’t break it because BASIC is in ROM.
> Teaching my daughter to program on a modern computer, we spend more time bootstrapping and in process, than we do in actual development.
Arch Linux does not help with this, unless you make it boot into a VIC-20 emulator or something. Arch can help with boot speed, but once you're booted you're back in a full modern OS. So fine, install VSCode and Python... okay, now you get to figure out libraries. Manage terminals. Arrange a filesystem. This is not getting you closer to the VIC-20 or C64's "boot into BASIC".
sudo pacman -S xonsh
chsh --shell /usr/bin/xonsh
Bam! You're booting straight into a full Python environment when you turn on your computer. This is similarly achievable with other languages as well, including BASIC.Getting knowledgeable people costs money so we build more abstractions that lower the cost of development and pass the costs of development from the company to the user in the form of requiring more hardware to do the same thing.
How come I need 16Gb of RAM these days when 8Gb did it yesterday? How come my phone needs 4Gb of RAM while my 2012 tablet had 1Gb? Sure the hardware is cheaper but we're still not using the hardware to it's fullest.
Before that, my 64MB RAM 100mhz Pentium could usually have a couple things open before it'd hit swap too badly. I'm talking like Word and a web browser, not calc and notepad. None of the equivalent programs to those can even open all on their own in a footprint smaller than 64MB these days, let alone with other programs and the OS in the same space. Hell, how many operating systems fit in that with a GUI as capable and usable as, say, Win98se (let alone something really incredible on the performance front, like BeOS)?
I can now use simplenote, discord, slack, the jetbrains dev suite, visual studio code, and this is without including separate developments like Steam, which has made it effortless to switch between Windows, Linux and Mac.
That being said, I still consider Mac OS the superior OS (this call home issue from the article aside), mostly because the font rendering still works better after all these years, Windows and Mac still have better quality software available for them, and Mac still does not have the forced updates as Windows does. Also I have noticed that in Ubuntu, some electron apps like Simplenote, the copy and paste of text is funky at times, like not even letting me select stuff.
Being able to turn the computer on, type in my password and have it be just..ready is so incredibly refreshing. Having a terminal with 0 latency, where copy/paste is sane? Worth a zillion dollars to me right now.
Currently playing with opensuse tumbleweed, i'll probably get frustrated by something and move to arch, so I can fix that something and also be frustrated by a hundred other things.
I mean, I know it's happening, I (sadly) expect it to happen now. But seeing all the bits whizzing over the wire brought home just how much your machine is reporting about what you're up to.
I generally agree, but I sometimes ran Windows 3.0 on a 386SX-16 in the early 90s, and often wondered why it ran so slow on my admittedly underpowered but supported system.
At some point I read (perhaps in Compute! or BYTE) that Windows made something like 20 or 30 syscalls to draw one line of a window's border. That seemed exceptionally inefficient to me, so I stopped using Windows. I generally worked in DOS, but if I wanted a GUI, Geoworks provided an experience at least ten times better (subjectively) -- smooth UI, ability to multitask, a surprisingly good word processor and other well-designed software included.
https://retrocomputing.stackexchange.com/questions/11533/why...
Things finally improved with XP, but W3.1x and W95 were anything but fast - unless you were playing Solitaire.
Yeah, what the heck is this? I use a win10 box solely for gaming, and every single time I wake from sleep, Antimalware Executable keeps my machine from doing anything for several minutes. It's infuriating.
Considering the built in one is pretty slow (and gives useless notifications), I expect it would be an improvement.
The web is much, much, much slower than it used to be.
care to elaborate a bit? what did you understand?
i just can't get my head around this idea that most non-mobile OSes have become such hostile environments...
yes, the population at large only uses their phones and tablets and doesn't care much. but they would be left without any entertainment if it wasn't for those of us who still need decent non-mobile environments.
Also, they are a threat to a free market for software, as they regulate their walled garden with arbitrary rules and skim off a lot of value.
I honestly don't understand why a large portion of developers have so much love for Apple. I'm personally a proud owner of a desktop PC with an ASUS motherboard. It serves me fine, and gives me full control over the software installed on it. I'm not a laptop-person but I believe there are many perfectly capable non-Apple laptops out there.
Apple's ecosystem is also an issue. iOS + macOS is still much better than anything on the market (no alternatives really).
UI is still inconsistent between apps, sometimes it feels like you are using 3 different OS from 3 different time periods. But you can get used to that I guess.
OS settings are still a strange place created to make an average user (or someone who haven't been using the OS for more than a decade) feel as an idiot.
No, amount the Big Three - Windows is the last place I'd look moving too. At least Linux gives me freedom at the expense of UI\UX. Windows give me... well games. I can't thing of any other reason to install linux except competitive gaming.
Not priorities but rather attitude maybe? (Not sure if the best word but this is the best I can think of with my english, hopefully it doesn't sound offensive or tactless)
Imagine you have a car. Great engine, relatively comfortable seats, a new set of tires and a body so ugly you want to ram it into a wall everytime you are behind the wheel. It does its job well but you do not enjoy the time with.
Being able to enjoy my time with a device or an OS (or any other thing or person for that matter) is what I want. Obviously sometimes the issue is on my part.
Obviously in case you work only at the office or you use your computer only (lets say 90% time) for work - than there is no problem.
I would say go for it, I'm glad to not be dealing with any of this nonsense, while paying a premium for it.
You install this new distro (like Elementary if it's still alive) and fall in love with the new Finder clone. But then you install twitter client, torrent client and a dozen of other everyday apps. And they all look terrible. And feel even worse. People still don't care.
As much as I hate certain things about macOS - I'd still chose it over Manjaro for example (haven't really tried PoP)
And not to mentions things like continuity and handoff. I can live without being able to copy paste token from my phone to my computer but this is so convenient T_T
I don't install any of that in work machines, and I'd hope most devs don't either, specially if the company owns the device.
If you really need those, why cannot you use the browser?
> continuity and handoff
Why do you need that for development?
Even if your workflow requires it for some strange reason, why don't you use an alternative? There are plenty of ways to pass data between devices.
tl;dr: I don't have and don't want to have two PCs for two use cases.
I have my personal macbook that I use for work (development) and everything else. I use it when I have to be at the office or when I want to work outside of my apartment. Needless to say I want my personal computer to have applications that I use. For both - work and ... not work.
>> continuity and handoff
>Why do you need that for development?
I don't. I don't use a computer only for development (see above). But even during development something it can come in handy. For example when you are working on a service that has sms auth. Can I just put in 6 digits by hand? Sure. But having them being copied from you phone for you is very convenient.
Many companies lock down devices for good reason. For starters, to prevent employees doing that and risking the entire company.
And the only channel I'm connected to the company is the email and selfhosted gitlab. Now tell me how can a twitter client on my working machine harm this. Not in a fictional one in a life time scenario out of Mr Robot.
As for examples, you have many, including ones discussed in HN regularly.
I just use messages.google.com and save it as an app shortcut, and Telegram native app, and both work well. And generally am fine with web apps if a native app doesn't look right. But finding the right native app for the desktop environment can be an issue. The GNOME skinned apps are pretty nice.
And Manjaro has the AUM for plenty of available tools and such. But that's more dev focused
Seriously though with i3, beautiful fonts, so much in the browser it's not bad.
The Windows + Linux combo is way better for all productivity, gaming and development than the mess macOS has become since Jobs passed away.
As for the rest I've commented about win10 https://news.ycombinator.com/item?id=23274273 and Linux distros: https://news.ycombinator.com/item?id=23274492
I still find macOS to have best balance of productivity, development and feel. Windows is still terrible and linux is just for work.
these
macOS’ only strength for development is the ability to target iOS. For the majority of developers, a Windows/Linux setup is better because it covers everything. Linux is the best environment for most dev fields. Windows is the best for some of them (graphics, gamedev, C#).
What I said is that macOS is the only OS that provides the needed balance of everything (except gaming). Other platforms are not alternatives because you have to chose - either you are getting a good dev machine that is not a enjoyable to use for other use cases, or you are getting windows which is not enjoyable for the reasons I've described in the other comment. The only two reasons to chose windows (as I see it) are gaming (and game development maybe) and windows (often enterprise) development.
To sum it up with an analogy and close the topic: a truck is not an alternative to a volvo s60 just because it is also a car and can do even more than a volvo s60.
PS:
>macOS’ only strength for development
This is your second comment where you for some reason ignore most of my comments and focus just on what suits you.
I use linux to watch movies, create music, play games and everything else. What exactly makes it a "horrible system outside of work" for you?
Same for me, I've even been a maintainer of one (ONE! lol) AUR package.
>especially if you can't really do without a decent UI\UX.
Outside of a few Electron-base apps and maybe a few native gtk\kde one - everything looks like a work of high schooler. Nobody thinks about the UI\UX.
Compare Things3 and something from linux word. Or Bear. Or Twitterrific\Tweetbot.
But go no further than your system's settings: https://imgur.com/a/p0kl7wM - wtf is this? You have a window that takes 80% of your screen some huge ass controls that still take some 20% of the the whole view. Who thought this was a good idea?
Gnome 3 is even worse (I loved gnome2 back in 2009)
Changing the filename to test2.sh on the Mac (which should trigger the delay, right?) gets 0.006s, 0.006s.
I don't think the shell scripts are doing what they claim (and wouldn't the second run be faster anyway because of caching?)
First off the new apps (music, podcasts, etc) are terrible. They killed off iTunes but replaced it with much worse. These apps don't behave like standard macOS apps, the UI is full of inconsistencies and is just so empty. This website has nice examples of the failures of modern Mac OS: https://annoying.technology
For some reason after updating the "new updates" badge was stuck on the system preferences icon (and even on the preference pane itself) despite no updates being available. I ended up having to delete a plist and reboot to fix it, apparently a common issue.
The Mail app will now randomly play the "new mail" sound. I can't confirm it for sure but I'm assuming it's treating read, existing mails when they are moved to the trash/archive or newly created drafts. They screwed up the mail app, a problem that has been solved for decades. WTF? The worst is that I see no major changes in there, so why touch the mail client in the first place if you're not even going to give me additional features in exchange?
Xcode was stuck upgrading in the App Store. It would start the process and never make any progress. Cancelling it had no effect. Rebooting cancelled it but the second attempt, while making progress, ended up failing with a generic error message with no actual information. Logs are useless because they're being spammed by all the background processes even during normal operation making it impossible to find anything. Finally the third attempt succeeded.
1Password now takes 5 more seconds to unlock my password database. Somehow this disgrace of an OS slowed down the password hashing process by an order of magnitude.
Switching screen resolutions or connecting to an external screen takes a good 10 seconds of flickering and frozen UI before everything starts working again. This is now actually worse than both Windows and Linux. I dread moving the laptop or touching the USB-C cable (also because USB-C is so brittle) when it's connected to an external monitor out of fear that it'll disconnect/reconnect and I end up in a 30-second cycle of flickering.
I upgraded a couple of days ago, so those are not early bugs. Apple had a year to fix all of this. The Xcode thing might be an isolated issue but there's no excuse for the general performance penalty or the stuck update badge which has many hits on search engines suggesting it's a widespread issue.
I'm literally halfway there as I type this, Xcode 'installing components'. Having to upgrade essentially everything just to get the right dev tools for the current iOS is madness, feels like buying a new house to fit the new coffeemaker...
I use 1password and it doesn't take 5 seconds to open. Did I accidently install linux or something? because since it's the OS causing your delay it would be causing me to have the same delay.
xcode installs just fine for my entire team. Just did the update myself, worked just fine.
I plug into a dock and undock constantly during the day, and while it could be quickinger, 10 seconds and flickering is NOT my experience.
and what the fk are you doing to your connections that you consider usb-c brittle?!?
> you consider usb-c brittle?!?
It's much easier to unplug USB-C than HDMI or DisplayPort, for one. USB-C itself is a terrible mess that requires an engineering degree to figure out what's compatible and not, and maybe it's just me and I have a shit hub but I had an external hard drive crash midway through a file transfer due to power issues despite being powered by a Apple charger (the hub and all the peripherals went dark and the laptop stopped charging, then started cycling on and off where every time the drive tries to start up again it kills everything).
Just like Twitter's UI, app developers think they know what content is best for you with a 'feed' or 'featured'... they've completely abandoned chronological ordered lists of content unless you click 2-3 buttons.
[1] Catalina has been painless for me, not sure why my experience was different than everyone else
It’s not quite random: it plays the sounds as it gets new email, but then it takes anywhere between a couple of seconds to a minute for the new email to be visible in the UI. Infuriating.
> Xcode was stuck upgrading in the App Store. It would start the process and never make any progress. Cancelling it had no effect. Rebooting cancelled it but the second attempt, while making progress, ended up failing with a generic error message with no actual information.
I just normally kill the store-related daemons when that happens.
My one remaining serious annoyance is that my external monitor color settings are screwed up and there appears to be no fix. Reds are purple and everything is just a little washed out, which is a shame for a 4k monitor that was beautiful with Mojave.
Strangely, right before the computer restarts, or if booted in safe mode the color starts to look perfect again, but I can't seem to replicate that in normal operation.
Could it have something to do with Night Shift? Have you tried enabling and disabling it and see if it fixes that?
I have to disconnect and reconnect USB-C 3 times, turn off the second monitor, switch inputs, restart the €3000 machines twice or whatever. So annoying, how does this pass QA at all?
Also, don't setup and use multiple users at the same time. That's really messy as well.
So many recent things would have pissed him off.
There's no way the 'notch' would have appeared. Nor the fact that the iPhone camera design stopped the device sitting flat on a surface.
>
> echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
> time /tmp/test.sh && time /tmp/test.sh
Am I missing something here?
I just did this, and the timing between the first and second run was barely noticeable -- in fact, the first run was slightly quicker:
> echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh time /tmp/test.sh && time /tmp/test.sh
> Hello
> /tmp/test.sh 0.00s user 0.00s system 55% cpu 0.006 total
> Hello
> /tmp/test.sh 0.00s user 0.00s system 41% cpu 0.010 total
This is on macOS 10.15.4.
The tone of this article reminds me of a passage from the seminal Google+ Platforms Rant:
> Like anything else big and important in life, Accessibility has an evil twin who, jilted by the unbalanced affection displayed by their parents in their youth, has grown into an equally powerful Arch-Nemesis (yes, there's more than one nemesis to accessibility) named Security. And boy howdy are the two ever at odds. > But I'll argue that Accessibility is actually more important than Security because dialing Accessibility to zero means you have no product at all, whereas dialing Security to zero can still get you a reasonably successful product such as the Playstation Network.
- My external trackpad isn't able to connect, at all. Audio devices require that I kill coreaudiod before connecting, otherwise they just disconnect after a few seconds.
- I can wake the laptop with a bluetooth keyboard, but when it's awake the keyboard stops working. Flipping the switch on the backside of the keyboard lets it reconnect again.
- There are transitions that you cannot disable that makes your laptop feel super slow. In Mojave you could disable them, in Catalina you can't unless you want to run with SIP disabled.
- There's also a super fun bug with mobile hotspot failing to activate, and there's no way for you to just manually connect to your own hotspot, it has to go through this bluetooth activation, even though your mobile hotspot is visible and connectable on all other devices. You end up in situation where you connect to your friends hotspot and they connect to yours, since neither of you are able to connect to your own.
I've given up. The quality control in Apple is down the drain, and have been for quite some time. I'm fixing to downgrade to Mojave this weekend, hopefully that will make it more stable. But I'm not holding my breath. To add injury to insult I'm on my third broken keyboard now. Next time it breaks I might just use the consumer laws and make them refund the laptop so they'll have to take a big loss for creating such a flawed device.
Some brave people that were running the public beta reported these issues to Apple, but we're now four point releases in and still no fix. Apple seem to not even want to acknowledge the issue, they just send users to their FAQ which sums up to "have you rebooted?"
The issues seems to start if you have bluetooth devices connected and your laptop becomes memory constrained. And after that it's in a broken or bricked state it seems. You can do tricks like killing coreaudiod to get audio devices to connect, but trackpad is still broken.
I was considering one of the new 13” MBPs but that seems unlikely if injecting network latency into syscalls is the direction things are going.
If you’re not building Mac/iOS apps, find a Linux laptop you can tolerate for development and an iPad Pro for everything else.
All they'd need to do - and it's very simple - is count the number of requests of each given hash lookup.
Since they know the hash for each of their own executables, that gives a direct count of "most used" through to "least used" programs.
Not sure if they'd have the hash for third party executables though, to know what the given hash request corresponds to.
If they receive the hash for 3rd party executables when developers sign things, then Apple seems like it's able to generate usage stats for their entire OS and 3rd party app ecosystem.
I love macOS, but their software generally has issues with flakey internet connectivity and long latencies - down here in South Africa, ~400ms RTT is not uncommon.
As of Catalina, there's no sane way to install the Nix package manager without losing functionality because macOS now disallows creating new files in the root directory[1]. Nix stores its packages in the /nix directory and it's not possible to migrate without causing major disruptions for existing NixOS and other Linux users. This is too bad, since apart from Nix being a nice package manager, it also provides a sane binary package for Emacs. The Homebrew core/cask versions only provides a limited feature set[2][3].
[1]: https://github.com/NixOS/nix/issues/2925
[2]: https://github.com/Homebrew/homebrew-core/issues/31510
[3]: https://github.com/caldwell/build-emacs/search?q=support+is%...
This comment has worked for me on two machines: https://github.com/NixOS/nix/issues/2925#issuecomment-539570...
1. You have to create a separate volume just to install a package manager, which is a poor user experience
2. A separate volume means FileVault won't work out of the box
3. The volume can be mounted only after GUI apps are brought up
4. Restoring after sleep might fail because of 3
All of these are mentioned in the Github issue, but it might be hard to find because it requires so many clicks and scrolling to view the whole thread.
2 — Could you explain? Mine is on and working, I didn't need to do anything else.
3 — Is this if you have login items that need nix to be available? I don't have this so I haven't noticed.
4 — I've never run into this, but again I might just not use Nix for the kind of things that would cause issues.
1. Having to create a volume when a plain old directory should suffice is insane. It's creating a hassle for no good reason for users.
2. /nix would be unencrypted by default if kept in a separate volume. There's also the problem of how to unlock it upon boot.
3. Login items is a very common use case so not supporting it would be problematic for many users.
4. Unreliable sleep is an even bigger problem.
https://github.com/cormiertyshawn895/Retroactive
Got some discussion on HN [1] about 3 months ago amongst other places, cool bit of sleuthing in the vein of efforts to get versions of macOS running on Macs older than officially supported. Personally I'm somewhat resigned to needing VMs to run certain older software, with a big one for me being Creative Suite CS6. Like you I have no interesting in buying into Adobe's subscription lock-in. But it's nice that some stuff can keep running without that layer for a while longer. Hopefully it'll still be possible in 10.16.
----
https://github.com/cormiertyshawn895/Retroactive
It also works for iTunes and iPhoto. Sadly it won't fix any of the other known Catalina issues, of course! ;)
sometimes old errors and mistakes come back and bite
That's why /opt/ exists. What's wrong with /opt/nix/ ? Or /var/opt/nix/ for read-write files that need not be a fixed part of any package installation (the Unix equivalent of system-wide "Application Data").
I am infinitely tired of this node_modules “we know better than you, it isn’t configurable and will never be configurable so stop asking” hubris. It’s not open source entitlement to say that a maintainer with that attitude is bad and wrong.
My homebrew is installed to ~/Library/Homebrew and while they claim it’s unsupported, it works, and if it stops working, then I’ll stop using Homebrew.
I don’t trust software that demands root when it doesn’t need it.
I’m quite glad I can just install it somewhere else, and finally ditch the Homebrew spyware. Thank you for letting me know!
Refusing to conform to the FHS doesn't mean their decision made sense; refusing to conform to the FHS means they made a bad decision in the past and everything progressed from there.
It doesn't 'seem that way now because some platforms have begun locking down their root directories'; it seems that way because creating arbitrary directories in / is a terrible idea, and has been at least since I started using UNIX/Linux systems in the 90's.
Fact is, they made a bad design choice, and now it's come back to bite them (and their users) in the ass.
Why?
(Yes, nowadays hard disks are much larger, we have things like initrd, and we now make /bin and /sbin symlinks to within /usr, but the parent comment did mention the 90s...)
The fact that Nix can be used as a third-party package manager outside of NixOS was a nice side-effect of its design choices. If Nix was designed from the start as a third-party package manager, it might have placed itself in /opt/nix. However, Nix was made years before some platforms started to lock down the root directory. It worked perfectly well with /nix before this happened.
So instead of asking why Nix is placing itself in /nix instead of following some guidelines for traditional unix distributions, I think we should be asking why platforms are disallowing this. If a platform is going to make this big a breaking change, it'd better have a very good reason to do so. I fail to see the reason beside subjective aesthetics.
If you have an application that calls /usr/bin/nginx but doesn't declare a dependency on nginx; but you had nginx installed already the package works fine and you only find our later
In nix you can't do this as you don't know nginx's path without defining a dependency on it; so you don't gain undeclared dependencies on accident.
By forcing a different path you find these things at build time not at run time.
What annoys me more is that a popular nix Fork GNU Guix _did_ change the path; but they made the same mistake again (it's rooted under /gnu) whilst they already has the hindsight that a non-standard directory might be problematic
It also seems like it doesn't really help with the stated problem since a developer who would hard-code /usr/bin/nginx but not list it as a dependency would almost certainly just use whatever `which nginx` returns. The thing which would solve that is depending on a precise version or hash, and if you're doing that, the path prefix doesn't really matter.
> and it's not possible to migrate without causing major disruptions for existing NixOS and other Linux users.
Software that can't be re-parented without breaking is destined to create problems for users... eventually.
/opt/local/nix is probably safe.
"The root directory is untouchable" is a new fear-based imperative that would have been hard to predict.
So while /nix is no problem from the filesystem driver, it is completely flaunting established Unix norms.
Generally you’re right and if you make a piece of software not follow the FHS you better have good reason. Nix, I think, makes a solid case since existing outside of the FHS is the only safe way to not conflict with every package manager.
> it is completely flaunting established Unix norms.
Also, _nix_ is completely flaunting established Unix norms in more ways than one. /nix is where all of the nix stores go, the immutable bundles that get pieced together to form all of the stuff you install. It could go in /var/nix or wherever, it doesn't really matter.
But putting it in /nix is kind of nice in that it's so different from the purposes of the rest of the filesystem. /nix doesn't behave like the rest of a normal Linux system, so it is separate. You can still symlink from /usr/local/bin/foo -> /nix/store/abcdef-1.1.0/bin/foo so the rest of your system has the same expectations.
I get it, people are sensitive about the root directory. "But it's where ALL the stuff lives!". So yeah, try not to ever run 'rm -rf /' (even though this is blocked in most cases now).
But why make it completely inaccessible for creating files/directories in? So much hand-holding for people to make it impossible for a user to ever make a mistake just locks down the ecosystem more, forcing developers to implement proprietary hacks that don't scale properly.
`/var/opt/nix` and `/opt/nix` are options, sure. But you cannot guarantee that those directories will exist on every platform. And if you have to create them, why is this better than `/nix`?
You could make a more sophisticated installation script that attempts to install Nix into conventional locations depending on the specific operating system - or user input - but if you want a simple catch-all, simple installation script `/nix` was a perfect cross-platform installation location, until now.
A correct assumption on virtually all relevant extant systems...
> which may not be the case for every situation
In the supposed scenario where the assumption isn't correct, the downside of /opt/nix vs /nix is basically insignificant. What's the overhead of one level of directory nesting, a single extra inode? Big whoop.
Violating convention comes with risk. Whether violating convention and assuming that risk is a good idea depends on whether the risk is worth the reward. For Nix, I don't think it was.
This is completely false. You can change the installation directory at the cost of losing binary packages. When you change it, packages would be built from source instead. This is what Homebrew does too.
What's more, I don't think many package managers provide this option. Not apt, not yum.
That predefined path being the same (/nix) across all users of nixpkgs is required to be able to share binary packages (you could perhaps build everything from source, but that's a lot of time, more time even than something like gentoo because package updates require all dependencies to be rebuilt as well).
You can call it an insane choice or bad design, but there aren't a whole lot of options here. Could Nix move to a different path? Maybe, but is there a path that all operating systems could abide? If the new path stops working in some future OS, will it still be insane and bad design? Again, maybe, but I happen to love Nix and I use is on macos because it makes my life easier (and I'm on macos for work reasons). I'm willing to bend and do a lot of legwork to be able use Nix, and I'm upset with the Catalina situation.
Can follow some discussion here https://github.com/NixOS/nix/issues/2925
Going with /nix was basically the best way to run into trouble.
How so? Taking over /usr/local as Homebrew does is guaranteed to cause conflict. Using a dedicated file hierarchy as Nix does is quite reasonable and there's nothing magical about rooting it at /.
Because it shoves all its shit there without asking.
Macports actually did it correctly and IME never had any issue.
While locking all needed versions for a specific application provides stability, I can't believe it doesn't come without a large increase of complexity, especially in connection security upgrades which triggers other libraries to need an update as well.
Ha, no. They did the absolute worst thing they could have done and now that they are popular they think they "own" /usr/local. (They used to camp out in /usr, but Apple rightfully put a stop to that real quick when SIP came out.)
Also `brew cask` is nice.
EDIT: also that Macbook had a 128GB HDD, so space was kinda precious, and MacPorts installing its own version of libs that were already on the system was literally taking up GBs of space.
Seems like the ideal setup would be something like Homebrew, except it "lives" in the ~/Library/Brews/ folder or something to that effect.
> a lot of things won't pick it up when you want them to.
That's a hilarious assertion. Back in the days brew's takeover of /usr/local caused OSX upgrades to get stuck for hours on end (some folks reported more than 12h).
I really wish Apple would give third parties the ability to create firmlinks (or at least give Nix one), or barring that, give us a sane way to mount encrypted volumes at the same time that the system volume is unlocked.
It mentions that anyone with an apple developer ID can notarize a qualifying app and submit this notary to the Apple Notary Service. However, the proof of notarization—the notarization ticket—might not be stapled to the application.
In the case of no stapled ticket, Catalina contacts the notary service to see whether a ticket exists. If so, the app is good to go.
[0]: https://eclecticlight.co/2020/05/22/how-come-someone-notariz...
EDIT. More informative link here[1]. It specifically outlines what happens on first run of an app. (and there's a great diagram if you scroll down)
[1]: https://eclecticlight.co/2020/01/27/what-could-possibly-go-w...
But alas the 1000s of engineers gotta be put to work somehow.
I was actually getting a mac mini now that I'm working from home (I thought I'd get better integration with some of the company's wfh infrastructure while still having a unixy environment, so a win/win situation), but I cancelled the purchase after reading this. I get that you can jump some hoops and set some apple specific flags to things so that it works better, but the reason I wanted a mac was to make things easier and not having to look into obscure APIs and features to get simple things working. I was really looking forward to that, but I don't feel that sort of investment will be justified with issues like this in their OS :/
It’s indeed a huge mess, from a privacy standpoint too, not just a performance one. It’s sad also to lose things like AirPlay or iMessage as collateral damage in the process. :/
I just can’t tolerate a machine that hits the network hundreds of times a day when doing normal computing tasks that do not involve the network. They even tolerate this sort of spyware in App Store apps, too.
Is it too much to ask for a polished workstation OS that lets me boot and edit a local text file of notes and save and quit without notifying 4 different parties that I did so?
running just firefox and terminal, ps -ef|wc -l is 198
and many of them have no reason to be on my system.
I think it just skips the checks if internet isn't available. But doesn't that kind of defeats the point of notarization?
EDIT: how to staple: https://developer.apple.com/documentation/xcode/notarizing_m...
It waits 5 seconds while trying to connect, and then it gives up and caches the program as un-notarized, allowing it to run faster on later executions.
Notice that notarization seems to be disabled if the network is disabled from within the OS. To observe the 5 second delay you need to cut the connection outside (e.g., on your router), while the mac still thinks it is connected. I observed it by running catalina inside a virtualbox, and disabling its network.
echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && \
chmod a+x /tmp/test.sh && \
time /tmp/test.sh && \
time /tmp/test.sh && \
echo 'echo Hello2' >> /tmp/test.sh && \
time /tmp/test.sh f=$(mktemp) && \
echo $'#!/bin/sh\necho Hello' > $f && \
chmod a+x $f && \
time $f && \
time $f && \
echo 'echo Hello2' >> $f && \
time $f
On my system: Hello
real 0m0.131s
user 0m0.001s
sys 0m0.002s
Hello
real 0m0.004s
user 0m0.001s
sys 0m0.002s
Hello
Hello2
real 0m0.004s
user 0m0.001s
sys 0m0.002sI have issues with a lot of APIs, but SecKeychain has got to be one of the worst. I don't think it's gotten any love in many, many years. Unlike literally every other Apple API that a Macintosh application might reasonably use, you call its functions (even from Swift) by passing strings as (length:UInt32, data:UnsafePointer<Int8>?) pairs, and getting results out by passing (length:UnsafeMutablePointer<UInt32>?, data:UnsafeMutablePointer<UnsafeMutableRawPointer?>?) pairs, and checking OSStatus return values. Every aspect of it is painful.
In Apple's "Documentation Archive" there's three "Sample Code" downloads related to Keychain. The newest one is for TouchID, and the oldest is for PowerPC. This is an area of the OS that doesn't get much attention.
> This issue has been reported to Apple and assigned FB7679198. Apple has responded that applications should not use this function, though the documentation for SecKeychainFindGenericPassword does not state that it is deprecated
I see that it's now grouped in a section of the docs called "Legacy Password Storage", but not actually "deprecated". Strange. That means you won't get any indication of its non-current status from Xcode, or even reading the release notes.
I like that there's a newer (and presumably less awful) interface. I don't look forward to having to rewrite/retest that corner of my application. Seeing all the CFString/CFDictionary casting and OSStatus checking with the new functions, it still doesn't look all that great.
Setting Terminal as a Developer Tool in Security&Privacy fixed it
I'm currently trying to figure out how to emulate windows from a *nix distribution using qemu. I plan to use this as a "home lab" (k8s cluster or just plain fucking around), but still retain the ability to play an occasional AAA game.
This just makes me wanna start using it for more things besides dev work :(
It'll be interesting to see how much power we developers will let Apple take from us before we jump the garden wall.
I am pretty sure the laptop market has been shrinking generally (as more people have a phone but no laptop). And most developers I know have macs. They probably don't want to make the OS significantly worse for developers...
Nope.
Definitely agree on this one here - I've noticed a big speed improvement when disabling SIP debugging with "csrutil enable --without debug" while in recovery mode.
I should note that the main reason I disable SIP isn't for speed, but to install the yabai window manager to make Aqua far more useful as a developer. I wrote a recent blog post on this, actually (https://triosdevelopers.com/jason.eckert/blog/Entries/2020/5...).
WTAF. If this is really true, this is a reason for me to leave the platform for good. This is just in-acceptable in so many ways.
Wow, this is extremely infuriating! I just ran the "hello world" test script with the network connection disabled and it took 5 seconds to run!
$ echo $'#!/bin/sh\necho Hello' > /tmp/test.sh && chmod a+x /tmp/test.sh
$ time /tmp/test.sh && time /tmp/test.sh
Hello
/tmp/test.sh 0.00s user 0.00s system 0% cpu 4.991 total
Hello
/tmp/test.sh 0.00s user 0.00s system 77% cpu 0.005 totalThere are a bunch of people who can't reproduce the slowness at all, but nearly all downvoted or you have to wade through 100's of comments to get to them.
The majority of comments are just dumping on Macs, nothing whatsoever to do with the content of the article, and seem to be blindly assuming it's true.
And I can't seem to find any substantive discussion of whether this is actually real or not, or just some weird bug on the author's machine.
I don't see any evidence that Catalina is "slow by design", just a single anecdote from the author. I was definitely hoping for some more substantive critique/discussion...
It's possible that they have certain security features disabled.
> The majority of comments are just dumping on Macs, nothing whatsoever to do with the content of the article, and seem to be blindly assuming it's true.
Welcome to Hacker News…this is common on any discussion on any topic, especially one that many people can understand in some way.
That's why I wrote this new comment, in the hopes that maybe it would be seen.
The down votes are because it seems pretty clear that the people who don't experience have long lived instances of their os and likely have grandfathered or disabled security settings. There are a lot of people saying ita pretty easy to replicate with a new os.
And it is, I just did it. Did you?
I don't know what the bug report said, or what specifically was by design. Surely "the entire machine freeze for 1-2 seconds every 10th minute, not to mention everything just being sluggish" is not by design.
And I was unable to replicate it (I was one of the comments that got downvoted), although I don't have the luxury of trying a fresh OS. I haven't disabled any security settings, and I don't know what would have been grandfathered -- that's not mentioned anywhere in the article as a factor.
So that's what's bothering me -- the assumption that contradictory evidence isn't valid while the original post somehow is, and no discussion around that, or what tradeoffs there might be.
Now, finally, there are actually some substantive comments from people testing it. There wasn't before though, and it's still unclear as to whether this really is bad design, a wise tradeoff, or if the author's machine has something else going on. Because their experience of a frustratingly slow Mac is just not the norm at all.
I recently took the trouble to completely wipe the disk and reinstall macos mojave and it's still happening so it's not due to cruft installed over time in OSX. I dunno. I'll deal with it until it gives up the ghost and probably move to a windows machine with the work they're putting into WSL2
The problem was: Parental Control. Apparently, every request was checked and thus slowed the whole thing down. Needless to say, a couple days at least were wasted in this.
I do wonder if the author has something similar going on, either with a directly attached disk or a network share.
Archive: https://web.archive.org/web/20200522164507/https://sigpipe.m...
There's a lot of bullshit on Windows too but nothing near OSX levels of wannabe big brother shit.
Can't think of a better long term short right now in the market than Apple (and sister cult Tesla but the electric story is at least in the early days so they may do ok)
They're not implemented in a braindead way that's being discussed here but they're at the same level big brotherness-wise, if not worse.
I run the commands and get:
Hello
/tmp/test.sh 0.00s user 0.00s system 8% cpu 0.045 total
Hello
/tmp/test.sh 0.00s user 0.00s system 75% cpu 0.005 total
If I'm reading this correctly, the first run takes less than a twentieth of a second, and the second a two-hundredth? I've never experienced anything like "have the entire machine freeze for 1-2 seconds every 10th minute". And I have the slowest internet package I can buy.The only delay that's ever noticeable is when running a program I've installed for the first time, which yes usually seems to take a few seconds, before often telling me the application couldn't be verified or something, do I want to run it anyways. Which makes sense if you're running a checksum on a 400 MB application binary. But after that first time, starting an app is always instant.
Can anyone else elucidate what the author is talking about? They're presenting it as a universal, but maybe there's something else going on with their machine? Clearly something's wrong on their end, but possibly it's just some kind of bug. I'd avoid jumping to conclusions that executables taking a second to launch is "by design".
EDIT: switching from zsh to sh gives more granular results:
Hello
real 0m0.009s
user 0m0.002s
sys 0m0.003s
Hello
real 0m0.005s
user 0m0.001s
sys 0m0.003sSo it's real.
However, scripts are NOT notarised, so what is it doing?
EDIT:
So after digging the scripts are being "checked" for malware, as part of XProtect.
This is interesting, it seems to be hashing scripts and testing to see if its known malware.
Anyway, easy to disable, but weird stuff.
Still no idea what or why the panics would happen, or why the reinstall solved it.
Catalina has been a very bumpy road for me so far.
Who at apple thought it was a good idea to hop on the internet when invoking an application without any warning? This is loony.
Whatever problem you're having, it's a problem specific to your machine.
A few months ago I installed Rider (an IntelliJ-based IDE) on my Mac without toolbox, and upgrading it was a pain. I don't remember the details, but using JetBrains toolbox makes upgrading as simple as clicking a button and waiting until the download / install is complete.
Why does it need the internet all the time?
Are they checking if the app is dangerous? Are they logging all my activity?
I wonder if that defeats the phone home that this article is highlighting.
I clearly won't switch to their system anytime soon...
I've heard people ask me "why bother with Linux when MacOS is Unix?". Well technically it is from its heritage, but it gets less unixy by the day.
Yes, they have polished the GUI, which makes it easy to navigate by mouse. But, when you need to work in speed mode, then you reach for the keyboard shortcuts.
The problem, is that there are plenty, too much sometimes, and they are often inconsistent between applications.
And yes, the Mac has a keyboard shortcut assignment tool, but it often doesn’t work correctly.
I must give credit to Microsoft here. They at least seemed to have perfected most of the common keyboard shortcuts.
Some good features about Windows shortcuts.
1. Alt-Spacebar to open the windows control menu, to move, minimize, maximize, or close the window.
2. Alt combinations are used to control the active Window application itself.
3. Alt-F4 to close the window. But, I would have preferred Alt-Escape instead, to close the window.
4. Control key for shortcuts inside the application. Like, Ctrl-C for copy. O for open. P for print. Etc.
5. Then the Windows key, to control Operating System level shortcuts. Like Win-M to minimize all windows. Win-L to lock the computer. Win-R to launch a command.
Some feature I would like are to use, Win-Spacebar to open a command search, similar to Win-R, but with the ability to list all possible commands. Similar to activating the command palette on VSCode.
And Ctrl-Spacebar, to activate keyboard commands for the active window. Kinda like Emacs, where I can run macros on it, like highlighting the words that I want, and execute something on it, like changing to uppercase, or converting to comma separated, or whatever else is needed.
Apple is the Father, Apple is the Mother.
After Apple has re-invented or re-written the MSFT playbook of the 90s, nothing surprises me anymore.
Yet I cling to these machines, that take away the freedom to do with my hardware as I please. It's odd.
The first computers I ran OS X on were a Pismo Powerbook and one of the first iMacs. Both with upgraded hard drives and maxed out RAM. They were almost unusable, and we'd put classic OS back on them, a new release of OS X would come out, and repeat.
I later got a chance to use a shiny new G5. I couldn't believe how slow it felt. Same goes for the PowerBook G4. The first Intel MacBook Pro didn't feel any faster.
Somewhere around the i5, Mac OS started to feel 'okay'. But I'd always still feel blown away at how fast a similar machine felt running Windows or Linux.
But I've stuck with it ever since 2010. I remember talking about my 16", saying "It's really fast...for a Mac."
Yes these features could be better implemented, but I'm happy they're there. It's very important to be able to opt out of them, but I like that they're the default.
Notarization needs a cleanup pass and the rest of it seems like it needs an optimization pass.
P.S. The rationale for notarization is to not distribute and thus advertise the filters and detection mechanisms Apple uses to detect malware. If these things were distributed then malware authors could analyze and evade them. Security through obscurity does make a certain amount of sense here as the Church-Turing thesis means there are an infinite number of ways to implement any given thing including malware and there is no single filter or analytical step that can detect all possible malware permutations.
That's true (or else there are 0 ways), but it's not what the Church–Turing thesis says.