1. 5
  1. 4

    Cocoa on 10.0 was almost exactly the same as the OpenStep specification from 1992. CoreFoundation was bridged with the OpenStep Foundation so folks using C or Java could use the same core abstractions, but OpenStep apps could be recompiled unmodified for OS X 10.0. It’s really amazing how far ahead of its time OpenStep was. Remember that the API specification and the NeXT and Sun implementations came out at about the same time as Windows 3.1, yet by the time Windows XP and KDE 1.0 were released they were still the GUI toolkit APIs that developers enjoyed using the most. I think the Linux desktop environment story could have been very different if GNUstep had had the same investment that either GTK or Qt got.

    One of the things OpenStep / Cocoa got right from the start was to have very consistent naming and a handful of patterns that were applied consistently across the whole framework. It’s very easy to lean and easy to find the right tool in the toolbox for any given use.

    UIKit fixes a lot of the things where OpenStep optimised for constraints that are no longer valid (NSCell is a bit horrible and if you have >8MiB of RAM then it doesn’t really matter, it’s gone in UIKit), but it also lost a lot of the internal consistency.

    1. 3

      I liked this little story:

      It’s like being a cast member at Disneyland, right? If you actually see the back lot of Disneyland, the magic is pulled away, right? It’s not the same, right? You don’t always want to know how the sausage is made. Being smack in the middle like OS 9 at a time when the winds were clearly shifting in OS X’s direction, it was like, the politics of the higher ups, it was definitely being felt.

      I was working on the file system team and three months in, they said, “Okay, well, we’re not doing any new features in the file system. We’re going to reassign you to help them work on the multiprocessing API’s with this other guy”

      I was doing some unit testing for that for like a couple of months.Then, it was announced, “Oh, we’re not doing any new features for that either.” Okay, so then now what I’m going to do?

      Then, my boss assigned me to write this app showing these two bars for the dual processors. That didn’t go anywhere. He kept telling me, “No. Keep working on it. This is not busy work. This is not busy work.”

      It turned out to be busy work.

      I’ve been there