1. 32

  2. 9

    I went on a big Objective-C kick a while back. I read the original Objective-C paper (boy was the syntax not user friendly in those early days). I tried really hard to find the original documentation for the Stepstone “Software ICs” that they released; these were Objective-C component/class libraries that predated NeXT and OPENSTEP. I never found complete documentation, though they are somewhat documented in Cox’s Object-Oriented Programming: An Evolutionary Approach (at least in the first edition, which is the version I have).

    During this kick, I reached out to Dr. Cox (and his business partner Tom Love) to see if they had any historical documentation they’d be willing to part with. Sadly they did not, but both of them were kind of to respond and answer my questions. I was honored that he took the time to respond at all to some random nobody.

    1. 2

      Computer History Museum has an interview with him:


      He had interesting thoughts on Open Source:

      – I wanted to create a Future where developers could earn by creating components. But now they are all controlled by advertising and malware.”

      – But in open source you can fix what is broken.

      – For sure. you can build a house with mud and stones. but who would like to live there? it is better to use general components like we all do with houses.

      1. 1

        it is better to use general components like we all do with houses.

        I mean this is where we got to, that’s why package repositories are so huge these days (npm, crates, etc).

        1. 2

          Indeed, I think that although a lot of thought went into the design of a general interface for reusable software modules (pipes, functions, objects, software-ICs…) it was ultimately the open source license that provided most impetus for reuse.

      2. 1

        I have spent a lot of time working on Objective-C (I’m still maintainer of the GNUstep runtime and the associated clang bits) but I’m quite sad that this is how Brad is remembered. Objective-C is not used how he imagined it would be. His vision for the language is far closer to the world that I hope we create.

        Objective-C was intended as a bridge language, allowing C programmers to package libraries with late-bound interfaces. These could then be used directly if necessary, but also supported enough reflection and dynamic behaviour that they were easy to surface into higher-level languages. It’s trivial to write a generic bridge for instantiating Objective-C objects and calling methods from Ruby, Python, and so on. Brad Cox saw high-performance library implementation, API design, and building rich applications out of component libraries with high-level abstractions as separable tasks, requiring different skills and different tools.

        Objective-C is an artefact that can be used to build part of this ecosystem (though it’s somewhat dated: a modern version would integrate fine-grained compartmentalization and enforce fault isolation across component boundaries). but it is far less valuable as a stand-alone creation than as an example in Brad’s intellectual vision.