4 ms·
At the time of NeXT’s heyday in the early ‘90s, most GUI programming was textual. You’d call add(button) and button.text = “Hello World” to build up your GUI, a
by alblue 6y ago
At the time of NeXT’s heyday in the early ‘90s, most GUI programming was textual. You’d call add(button) and button.text = “Hello World” to build up your GUI, and have to wire up the events from your button to take specific actions. Quite a lot of GUI programming is still like this, even now.
What NeXT brought was a GUI editor that allowed you to drag a button from a palette and onto a window (or view). You could then change the text on the button by double clicking on it and renaming the default text. You also got to determine where and how large the button was in relation to the rest of the window.
Most GUI builders could do this, so what was special about Interface Builder?
Two things stood out. First, you could specify how the button reacted to window resizing. There was a “springs and struts” layout mechanism that allowed you to say which parts were fixed offsets and which were variable. You could also say if the button would resize, and if so, in the X or Y or both directions.
The second thing was the ability to connect the button to an action. By Ctrl clicking and dragging, you could wire up the default action to a “selector” — in effect, a virtual method call, on the owner of the button. This owner would be populated at startup, typically the application (controller). So you could have your code with the responder and another team build the UI, and they would join together at runtime.
You could also use properties generated by code as well - you could connect the button’s field to an object’s property (aka an outlet) so that changing the code changed the UI.
The fact that you could drag and drop connections from UI to code, and from code to UI, as well as building a responsive UI, was really what stood out.
This still lives on in Xcode today; IB and PB begat Xcode and IB which begat Xcode. The “nib” format - Next Interface Builder - was a binary format file containing the descriptive state of the Ui and the wiring requirements, which was renamed “xib” when XML became all the rage is the same thing. The fact that IB has been subsumed into Xcode still hides the fact that is what’s happening under the covers.
I think it’s important to realise that this was in an age when Windows 3.1 was all the rage, and we had only just got out of 256 colour VGA while Next station had 16 million.
Nowadays with everyone doing MVC programming with the web, it doesn’t seem so important. But then there was a time when no one wrote unit tests because it was seen as pointless; but it is from these seeds that ideas become mainstream.
- altcognito 6y agoI’m sure that your aware that Ms access, Delphi, Visual Basic, progress as well as a host of other tools existed at the time, and you’re fine to point out that Next was superior but given that really none of these systems survived, something else must be going on.
- stjohnswarts 6y agoWhat? Delphi and the Microsoft tools are still available. They did survive they just didn't prosper I suppose you could say.
- alblue 6y agoSure, but Delphi was released in 1995 as the first version, whereas this was something I was programming in 1992 (and I came late to the party with Nextstep 3). https://en.wikipedia.org/wiki/History_of_Delphi_(software) https://en.wikipedia.org/wiki/History_of_Delphi_(software) Visual Basic came out in 1991, by which time Nextstep was already at version 2.1 So yes, these things existed, but after Next had demonstrated them.
- altcognito 6y agoThe timeline was off in my head, it was a long ago!
- oumua_don17 6y agoAnd original Interface builder was developed in Lisp :) [1] [1] https://paulhammant.com/2013/03/28/interface-builders-alternative-lisp-timeline/ https://paulhammant.com/2013/03/28/interface-builders-altern...
- markus_zhang 6y agoThanks. This looks slick and ahead of its time. GUI development has also been a bit messy or heavy and I wish we had easier solutions nowadays.
- 6y ago