esc
Anthology / Yagnipedia / Xcode

Xcode

The IDE That Inherited NeXTSTEP's Elegance and Then Forgot Where It Put It
Technology · First observed 2003 (Apple — descended from NeXTSTEP's Project Builder and Interface Builder, which were elegant, and Xcode, which remembers being elegant the way an adult remembers being thin) · Severity: Mandatory — the only way to build for Apple platforms, which is either a testament to integration or a symptom of monopoly, depending on whether your build succeeded

Xcode is Apple’s integrated development environment for building software on Apple platforms. It is the only way to build for iOS, macOS, watchOS, tvOS, and visionOS. This is either a testament to deep platform integration or a monopoly enforced through toolchain lock-in, and the answer depends entirely on whether your current build is succeeding or failing.

Xcode descends from NeXTSTEP’s development tools — Project Builder and Interface Builder — which were elegant, fast, and designed by people who understood that a development environment should get out of the way. Xcode inherited these tools in 2003 when Apple absorbed NeXT’s technology. It has been adding to them ever since, and the additions have not always been elegant.

“The NeXTSTEP tools were what development tools should be. Clean. Fast. Consistent. The developer thought about the code, not the tool. Xcode started there. Xcode has not stayed there.”
riclib, who taught NeXTSTEP and remembers the elegance

The NeXTSTEP Years

riclib taught NeXTSTEP at university. This is how he paid for one of his years of education — not by using the tools, but by teaching others to use them. The tools were worth teaching.

Project Builder was an IDE that edited code and built projects. Interface Builder was a visual tool that laid out user interfaces by dragging objects from a palette. The two worked together through a mechanism that NeXTSTEP called “outlets and actions” — connections between the visual interface and the code, made by drawing lines in Interface Builder. The pattern was clean: the interface was designed visually, the code was written textually, and the connections between them were explicit and inspectable.

This was 1990. On a NeXT workstation. The visual interface builder was not a toy — it was the tool that NeXTSTEP developers used professionally, that Tim Berners-Lee used to build the first web browser, that id Software used alongside their development of Doom. The tools were real. The tools were elegant. The tools paid for a year of university.

“Four years of university. CygnusEd slides paid for one. NeXTSTEP teaching paid for another. SQLWindows abuse paid for a third. The fourth… the fourth I don’t remember, which means it was probably paid by something equally creative and equally not what the tool was designed for.”
— riclib, on the economics of education through tool mastery

The Inheritance

When Apple acquired NeXT in 1997, the NeXTSTEP development tools came with it. Project Builder became Xcode (2003). Interface Builder was absorbed into Xcode (eventually). The Objective-C runtime became the foundation of macOS and iOS. The elegant tools from 1990 became the mandatory tools of the world’s most valuable company.

The elegance did not fully survive the transition. What NeXTSTEP did with restraint, Xcode did with accretion:

The Monopoly

Xcode is the only way to build for Apple platforms. There is no alternative. You cannot build an iOS app in VS Code. You cannot build a macOS app in Zed. You can write Swift in any editor, but you cannot compile, sign, and deploy without Xcode.

This lock-in means that Xcode does not compete. Xcode does not need to be faster than VS Code, because VS Code cannot build for iOS. Xcode does not need to be lighter than Zed, because Zed cannot sign an app. Xcode’s market share is 100% of Apple development, by mandate, not by merit.

The result is an IDE that is simultaneously the most used Apple development tool and the most complained about. Every WWDC, developers hope for Xcode improvements. Every WWDC, Apple announces Swift improvements instead. The language gets better. The IDE stays the same.

Measured Characteristics

Year released:                           2003
Ancestor:                                NeXTSTEP Project Builder + Interface Builder (1988)
Creator:                                 Apple (inherited from NeXT)
Platforms targeted:                      iOS, macOS, watchOS, tvOS, visionOS
Alternative IDEs for Apple platforms:    none (this is the monopoly)
Simulator RAM usage:                     8 GB (to simulate a device with 6 GB)
Indexing frequency:                      every time you look away
Code signing comprehensibility:          zero
Stack Overflow threads about provisioning: ~700 (none definitively correct)
Interface Builder status:                exists alongside SwiftUI (neither complete, both supported)
NeXTSTEP elegance retained:             some (the concepts survive, the grace does not)
riclib's NeXTSTEP year:                  one year of university, paid by teaching
Total university years paid by tools:    CygnusEd (1), NeXTSTEP (1), SQLWindows (1), unknown (1)

See Also