It’s funny how I used to think that operating systems, databases, and cloud systems, as these kind of arcane things that were somehow apart from the rest of software. I could not begin to grasp how they could deal with running programs, access control, or any of these things that once seemed so foreign and mysterious to me. And realising that it’s actually just software, that there’s no black magic to it, just lower-…
macOS Internals
91–100 of 146 posts
Re: macOS Internals
#92History is such a great way to learn anything. It’s interesting - like a mystery revealed, but also provides the why - why things are the way they are. I was looking into accounting the other day, and you can go back to the first document that mentioned credit and debit and introduced modern accounting. There are so many topics like this that seem confusing and arbitrary but it all began extremely simply and pragmati…
Re: macOS Internals
#93Earlier quoted context omitted.
The thing that made me realize this was compilers! "Wait, code is just text?" "Always has been" I still have to remind myself of this sometimes when I think "woah, how does this work?" and then I try to step through how it might be built.
I don’t know that code was always text, but I’m thankful to have been born in the days after programming assembly on punch cards was not the only way.
Re: macOS Internals
#94There are also some amusing writings not included here about modern macOS changing things in a way Siracusa dislikes. For example, mandatory file extensions (written in 2001, when the Internet was a thing and file extensions were required for all file exchanges) [0] or the Spatial Finder saga [1] about missing an antiquated way to make a mess on your screen and pretend to be managing folders. [0] https://arstechnica.…
But I still maintain that adding the NeXT browser view to the OS 9 Finder would be the perfect experience. The OS X Finder went down this awful .DS_Store-strewn half-assed path and it’s still just the weirdest set of choices imaginable.
Re: macOS Internals
#95Earlier quoted context omitted.
Thanks for the blinding insight.
What they solve is that they are not just shared libraries, they include any other resources the library needs like translations, images, other data etc and for developers any header files. But it works if you just treat them as shared libraied - just use -F on the compiler anlink rather than -l and the headers are not needed in /usr/include etc. The are also versioned so easy for two apps to have different versions…
NeXT used it with AppKit for a few releases, but when they came to Apple they realized it would be impossible to support something like Aqua with the desired UX without having to update all the versions of the framework every release, which would defeat some of the purpose, not to mention exploding the QA matrix.
Re: macOS Internals
#96macOS probably doesn't get enough love from an OS design perspective. Over the years I've had reasons to work pretty closely with the guts of all of Linux, macOS and Windows and macOS is probably my favourite, design wise, although for some tasks you can't beat the flexibility and feature set of Linux. A few highlights that are lesser known: - XPC/Mach is a pretty reasonable IPC system that avoids the huge complexity…
/usr/bin/softwareupdate [1]
Re: macOS Internals
#97Earlier quoted context omitted.
Agreed. This is why often reading a Wikipedia page is the worst way to learn something. The best way is to get a teacher to tell you the relevant history leading up to the thing, and it makes much more sense.
Though many Wikipedia pages have a History section doing exactly that. (More should have one.)
Re: macOS Internals
#98Earlier quoted context omitted.
What they solve is that they are not just shared libraries, they include any other resources the library needs like translations, images, other data etc and for developers any header files. But it works if you just treat them as shared libraied - just use -F on the compiler anlink rather than -l and the headers are not needed in /usr/include etc. The are also versioned so easy for two apps to have different versions…
Minor clarification: two apps can embed different, incompatible versions of the same framework without versioning — the versioning is a NeXTism that allows the system vendor to ship a newer, binary incompatible version of the framework. NeXT used it with AppKit for a few releases, but when they came to Apple they realized it would be impossible to support something like Aqua with the desired UX without having to upda…
I think versioning could work if your framework is not used by many apps - the link structure and version number is still there but I have not tried for 20 years.
The correct current practice is as you say to embed the framework in the app at build time so you don't link to outside non Apple Frameworks.
Re: macOS Internals
#99Damn, I was hoping for a MacOS version of SysInternals.
Re: macOS Internals
#100Does anybody know how to force sandboxing for a 3rd party app?