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:
-
Interface Builder still exists, but now coexists with SwiftUI, and neither knows how to feel about the other. IB is the old way. SwiftUI is the new way. Both are in the same IDE. Both are supported. Neither is complete. The developer chooses between a mature tool with a declining future and an immature tool with a promising future, and the choice must be made per-project, per-screen, sometimes per-view.
-
Code signing and provisioning is a system so complex that it has its own mythology. Provisioning profiles, certificates, entitlements, App IDs, team identifiers — a hierarchy of cryptographic identity management that exists to ensure only authorised developers can deploy to Apple devices, and that fails in ways that no error message can explain. “Signing requires a development team” is the message. The fix is unknowable. Stack Overflow has seven hundred threads about it. None of them are definitively correct.
-
The Simulator uses 8 GB of RAM to simulate a phone with 6 GB of RAM. The simulator is slower than the phone. The simulator sometimes behaves differently from the phone. The simulator exists because deploying to a real device requires code signing (see above).
-
Indexing is what Xcode does when it should be editing. The indexing spinner appears when a project is opened and reappears whenever the developer changes something significant. During indexing, autocomplete is unavailable, jump-to-definition is unavailable, and the developer is reminded that the IDE is doing work that has nothing to do with what the developer wants to do.
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
- Visual Studio — The other IDE that accreted beyond recognition. Visual Studio escaped into VS Code. Xcode has no escape, because Xcode is mandatory.
- VS Code — The editor that cannot build for Apple platforms. If it could, Xcode would have competition for the first time.
- Delphi — The IDE that Visual Interface Builder should have become. Delphi’s component model was what Interface Builder aspired to. Delphi compiled faster. Delphi was not mandatory.
- Turbo Pascal — The ancestor of the “integrated” in IDE. Turbo Pascal compiled in seconds on 640 KB. Xcode indexes for minutes on 16 GB.
- CygnusEd — Another year of university. CygnusEd paid through slides. NeXTSTEP paid through teaching. Both tools were used for things their designers never imagined.
