Bye Bye, IB2

IBIcons.jpg

I’m still using IB2 at work, but we’ll be making the move to Leopard over the next few months. I feel a slight pang of pre-nostalgia when I think about trading in Interface Builder 2 and its historical code base for its shiny new successor, Interface Builder 3. I know that IB3 is going to be a million times more usable and that it was past time for a real change in the world of IB, but those who know me know that I tend to pine for the old before embracing the new. I’ll pine now and get it over with.

I remember the exact moment when I realized how amazingly cool Interface Builder is. I was making a custom palette for some GUI classes, implementing the drawing and mouse event handling methods for when they would be running in IB. While I was typing, it struck me that what I was doing was a little strange. I was giving these classes a second, meta life only to be invoked by Interface Builder. All of the views and controls in Cocoa have this second IB life. When we drop them into a window, they draw preview versions of themselves and sometimes even respond to our mouse and key events (if we poke around in just the right spots). Interface Builder takes over from there. It guides us as we drag the views around, adjust their sizes and much more. Wow, what a clever and useful application. Who thought of this? They’re a genius.

Jean-Marie Hullot and his Interface Builder

965797A3-7BB9-4D8E-8207-2FD87BF7906E.jpg

Interface Builder was developed by Jean-Marie Hullot, pictured above during his days at NeXT. There is little written about him or his invention on the internet except that Hullot wrote the original version in some Lispy language and that it was originally called ‘SOS Interface’. Steve Jobs loved it, kidnapped Hullot and Tim Berners-Lee used it to make the first web browser, WorldWideWeb. Now we all use Interface Builder.

While I was scouring the net for information about Hullot, I came across a PDF excerpt from the book “How the Web was Born: The Story of the World Wide Web” by James Gillies and Robert Cailliau. There is a short section about Hullot and Interface Builder, titled “Monsieur Hullot’s holiday’. This is my favorite bit (emphasis is mine):

Hullot was using a Macintosh, and like many developers, he rapidly found that although the Mac’s GUI might have been brilliant, it was a pig of a machine to write applications on. ‘When the Macintosh was invented,’ he explains, ’suddenly, compared to what you had to do before, you had to add at least 60 or 70 percent of your time to make the user interface.’ Before the Macintosh, the interface was pretty basic-you would just type a line of text and the computer would respond with successive lines scrolling up the screen-but that meant that programmers didn’t have to worry about it. All the windows and menus that came with the Mac were great for the people who used the end applications, but for the people who had to write them they were a nightmare. Each time they wanted a menu or a window in their application, they had to program it in from scratch. Hullot’s big idea was to turn the problem into a simple question of drawing lines on the screen. He made a palette of objects for things like menu items and windows. Then to build the outline of an application you would simply take objects from the palette and draw lines between them. So, for example, you could pick up a menu object, and then by drawing lines from the other objects like ‘Open’ or ‘Print’, you would put those functions in the menu.

Hullot called his invention Interface Builder. It was a powerful tool that, like Smalltalk, put the power of objects at the developer’s disposal.

Kind of amazing, huh? These days, it’s easy to take things like windows and menus for granted. They come free with our development tools. On top of that, the responder chain and target/action mechanisms make it simple to dynamically link buttons and menu items to actions. If your app has a simple interface, there’s very little code that needs to be written for UI development. Even if your interface is complex, much of the burden is lifted by Hullot’s technology. Thank you, Jean-Marie.

The book goes on to describe Hullot and Jobs’ first meeting and the rest is history. In case you haven’t seen it, here’s a video of Steve Jobs presenting some applications on NeXTSTEP. He shows Interface Builder at 23:40. Funny how little has changed until now.

So, I’ll say goodbye to Inteface Builder 2 and end my pining now. Bye bye, IB2. Your interface was really strange and awkward but you were really cool and useful. I’ll miss palettes (not really, actually).

Tags: , ,

11 Responses to “Bye Bye, IB2”

  1. Andy Lee Says:

    Thanks for the bit of history! I haven’t dived into all the new things about IB3 yet; it’s on my “one of these days” list, like so many things.

    It’s weird dragging out a connection and seeing a straight line go directly from an object to its outlet. I’d gotten so used to seeing an L-shaped line, with one horizontal leg and one vertical one, that a single direct line seems wrong. Back in the NextStep days I was told the L was implemented as two very thin windows.

    I do wish that when I click on a connection in the inspector, a line would appear between the object and its outlet, like it does in IB2.

  2. Cathy Says:

    I’m really curious about how much of IB3’s interface is like the old IB. I hope they got rid of floating palettes, that’s what always trips me up in IB. I hate it when the palette palette gets stuck begind the inspector palette. rrrr.

  3. Peter Hosey Says:

    Andy Lee: It’s still implemented that way (as two windows) in IB 2.

    If you press ⇧⌘4, then space, the two legs will highlight when you mouse over them, and you can take a screenshot of either one by clicking on it. This proves that each leg is a window (that’s what pressing space gets you).

    This also goes for the box around the object.

  4. Andy Lee Says:

    Peter: Clever!

    Of course the nice thing about the two skinny windows was that you could easily and efficiently draw connections between objects that aren’t in the same window, in the days before we had the luxuries we have now, like full-screen floating transparent windows.

  5. John C. Randolph Says:

    Oh, that video takes me back. I’d forgotten about the days when you dragged an outline of a window, and how cool it was that NeXTStep just let you move the window around intact.

    -jcr

  6. Cathy Says:

    I know! There are so many cool ideas in NeXTStep. Sometimes my husband I and I kick around the idea of getting one of those boxes just for *research*. Would be fun to have around, anyway : )

  7. John C. Randolph Says:

    I’ve got a fair bit of NeXT hardware in my garage. If you want to get your hands on NeXTSTEP though, you’re probably better off finding a copy of OpenStep 4.2 for Intel, and installing it in VMWare or parallels. A Motorola 68040 is not a very snappy machine, to say the least.

    -jcr

  8. bigham Says:

    “I know that IB3 is going to be a million times more usable and that it was past time for a real change in the world of IB.”

    IB3 is a nightmare and a big failure when it comes to usability. IB2 still rules.

  9. Cathy Says:

    *heart sinking*

  10. Josh Fisher Says:

    He’s such a great salesman! I loved the dig at dos, and the casual way he threw in “smooth scrolling throughout.” Thanks for the research, Steven and Cathy!

  11. Cathy Says:

    YEah! Steve is so smooth! : D

Leave a Reply