Cocoa, a quiet software revolution!
Cocoa is the software stack that originated with NeXT computers.
While the NeXT OS was yet another Unix which ran tasks, and managed files – it was Cocoa that set that project apart.
Cocoa was a solution to the problem of how to build modern graphical applications.
And since that point, Cocoa has become more influential and is now the backbone technology driving the most influential tech company on the planet.
If you watch this video presented by Steve Jobs, you see that a workstation running NeXTStep is capable of everything you expect of a modern desktop computer. Except this video is from 1992. It is twenty years old.
Stepstone created Objective-C to combine the object oriented properties of Smalltalk with the C language. NeXT acquired the language from Stepstone and extended their work by connecting software objects to on-screen GUI representations.
This design model allowed objects representing the view to be untangled from the internal representation of the data. This Model / View / Controller design pattern became the heart of NeXTStep (which was later re-named Cocoa)
The technology was an elegant solution to the problem of rapidly building a modern GUI application.
The management of windows, menus, selecting, scrolling, networking, exchanging data etc …. was solved by having a rich API implemented in a dynamic and flexible object-oriented language. Application interfaces were drawn on screen – and then wired up to code which directly could read from, and be driven by the object based on-screen interface.
It was the power of Cocoa which led to Tim Berners Lee creating the World Wide Web on a NeXT workstation. Here’s the very first “hypertext” web-browser running in 1991
And Id Software used NeXTStep to create the world-editors for Doom and Quake.
If this was all that Cocoa had achieved, it would justify being on the most admirable software. But since that point, it has done a couple more noteworthy things.
When Apple aquired NeXT, NeXTStep was re-badged Cocoa and became the basis for both the desktop Mac OS X and the mobile iOS – which runs on the iPhone, iPod Touch and iPad.
Anyone writing an app for the Mac will be using Cocoa.
And developers building applications for iOS use almost the exact same Cocoa APIs.
They are able to lay out graphical interfaces, and then hook them up to a network of objects expressed in Objective-C code. With much of the needed functionality already handled by pre-existing Cocoa objects.
And developers who build apps in this way benefit from the maturity of this technology. For many simple applications, developers simply provide the glue to wire up pre-existing on-screen devices to pre-existing Cocoa functionality.
This results in fast, efficient apps where all drawing, scrolling and animation will automatically be hardware accelerated. This affords iOS apps a performance advantage and gives users a consistent, familiar interface.
Even those people who are not fans of Apple can recognise that the iPhone software stack has been massively influential in the evolution of mobile devices. How we think of software has changed because of this device.
But I am not sure they realise is that the most important software component is not the OS but is the application building toolkit. This is the software which is the secret weapon.