I still remember being in awe that they pulled this off at all, clumsy as some of the compromises were. Newer filesystems and application designs have eliminated many of the differences, although I still miss resource forks.
I think resource forks suck. That said, I think metadata about a file outside of the file has always been problematic. I don't know if there's ever been a clean solution to timestamps, r/w/x, ACLs and more.
The Challenges of Integrating the Unix and Mac OS Environments (2000)
21–30 of 35 posts
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#22Earlier quoted context omitted.
Yes, I do. I recall they had ads where they showed the amazing things you could do with one-line commands at the shell - they had examples of pipelines including grep and awk etc. I remember being amused that these familiar idioms that had been used in the Unix/Linux world for ages were being presented as amazing new capabilities.
For Mac users, this was a new capability. Before that, I was always using remote X sessions to get onto shared Unix systems.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#23Earlier quoted context omitted.
I feel the modern approach takes the main strengths of resource forks and builds on them—instead of needing to use ResEdit, all of your application resources are just ordinary files stored in a directory. Images are stored in standard formats like PNG, data is often stored in plist or text formats.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#24Earlier quoted context omitted.
I feel the modern approach takes the main strengths of resource forks and builds on them—instead of needing to use ResEdit, all of your application resources are just ordinary files stored in a directory. Images are stored in standard formats like PNG, data is often stored in plist or text formats.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.
Resources also provided the programmer with a way of working with the data in a structured way. Unix is of course remarkably primitive here, you'll get bytes and like it.
It's always a little funny to see the scorn Unix minimalists have for the old Mac OS. It seems very hard for some people to understand that rather than technical purity or whatever, the Mac developers were working from the interface on in, and the interface was meant to make the computer approachable for people who'd never touched one before and weren't interested in computers for their own sake.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#25Earlier quoted context omitted.
I feel the modern approach takes the main strengths of resource forks and builds on them—instead of needing to use ResEdit, all of your application resources are just ordinary files stored in a directory. Images are stored in standard formats like PNG, data is often stored in plist or text formats.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#26> some of the user interface features pioneered by Mac OS such the desktop That is not true. The desktop metaphor, for example, was first introduced at Xerox PARC in 1970, and used commercially in the Xerox Star workstation in 1981.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#27Earlier quoted context omitted.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.
The first Mac filesystem didn't even have folders! So either every little thing would be visible to the user, or they'd have to hide files somehow. But really you wanted to just have one thing that you could copy around, double click, etc. Resources also provided the programmer with a way of working with the data in a structured way. Unix is of course remarkably primitive here, you'll get bytes and like it. It's alwa…
I remember putting FKEY resources into the System resource file so the user could type Shift-Command- anywhere to automate some common task.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#28> some of the user interface features pioneered by Mac OS such the desktop That is not true. The desktop metaphor, for example, was first introduced at Xerox PARC in 1970, and used commercially in the Xerox Star workstation in 1981.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#29Earlier quoted context omitted.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.
The first Mac filesystem didn't even have folders! So either every little thing would be visible to the user, or they'd have to hide files somehow. But really you wanted to just have one thing that you could copy around, double click, etc. Resources also provided the programmer with a way of working with the data in a structured way. Unix is of course remarkably primitive here, you'll get bytes and like it. It's alwa…
The article hints at how files work. On MFS you would refer to a file as a (volume ID, filename) pair. On HFS, you would refer to a file as a (volume ID, directory ID, filename) triplet. A bunch of toolbox calls (syscalls) got duplicate versions for HFS—but if you were working with legacy code, you could create a fake volume ID called a “working directory” that could be used as if it were a volume ID in a (volume ID, filename) pair. These “working directories” are just awful. The working directory table is global to the entire system and they are not reference-counted—if you open the same working directory twice, you get the same ID both times, and you only have to close it once.
As a funny note—the original filesystem, MFS, had a maximum file name length of 255 characters. HFS, its successor, had a 31-character limit when it first appeared. As a compromise, the new FSSpec file APIs that appeared in System 7 used a 63-character limit filename, because 63 characters was the maximum filename length that the Finder supported.
You could create files with names longer than 63 characters on MFS volumes, it’s just that if you browsed these volumes in the Finder, the Finder would crash!
I’ve got a blog post in the work that is going through some of the wackiness I’ve seen in the old Mac OS filesystem API, and I’ve recently been on the RetroDev Discord helping some people write file handling code for classic Mac OS programs.
Re: The Challenges of Integrating the Unix and Mac OS Environments (2000)
#30Earlier quoted context omitted.
I feel the modern approach takes the main strengths of resource forks and builds on them—instead of needing to use ResEdit, all of your application resources are just ordinary files stored in a directory. Images are stored in standard formats like PNG, data is often stored in plist or text formats.
Maybe somebody who knows classic Mac well can correct me here if I'm wrong, but I feel like resource forks were also solving a "constrained memory and an OS that didn't do paging" problem. So the library deciding how to load and possibly when to evict sounds like it was kind of the point. Simulating what might be the job of mmap() on a modern system.