I believe that Apple's announcement of the 2019 Mac Pro at the 2019 Apple Worldwide Developers Conference has finally brought much clarification regarding Apple's position on the Mac. During the years of 2016 and 2017, Mac users like myself felt that Apple has abandoned the desktop Mac market, particularly for pro users. After all, the Mac Mini went for years without a refresh after the 2014 model was released, and the previous-generation Mac Pro hadn't been updated since its release in 2013. But after years of silence, Apple finally broke its silence in April 2017 by doing something that hasn't been done since unrealized murmurs of a PowerBook G5 back in 2004 and 2005 before the Intel switch occurred: Apple announced that a new, modular Mac Pro was in the works and that it would be released at a later date. 2017 and 2018 did not come with any Mac Pro product releases other than a drop in price for the 2013 Mac Pro, but it did come with the release of the iMac Pro and the long-awaited refresh of the Mac Mini. Finally, on June 3, 2019, Apple finally announced the highly-anticipated new Mac Pro model, which is a user-serviceable, upgradeable, and expandable tower computer that is reminiscent of the Power Mac G5 and the 2006-2012 Mac Pro.
While I believe that this announcement has shown that Apple is still committed to the Mac and that Apple is willing to make very powerful machines for its most technologically demanding customers, I also believe that the new Mac Pro is a disappointment for some Mac users (including myself), and that the implicit statements that Apple is making about its Mac product line has some unfortunate implications for users such as myself.
For about two decades, Apple sold entry-level Power Macintosh and Mac Pro models at the inflation-adjusted price point of $2,500-$3,000. The Power Macintosh and the Mac Pro were (and still are) Apple's models that provide user-serviceability, upgradability, and (with the exception of the 2013 "trash can" Mac Pro) internal expandability. Starting with the 2008 MacBook Air and the 2012 Retina MacBook Pro, Macs gradually became less user-serviceable. RAM started to get soldered onto the motherboard, and batteries became more difficult to replace. This then started to spread to Apple's consumer desktops: the 2014 Mac Mini has soldered RAM, and many models of the iMac also have soldered RAM. The 2016 MacBook Pro was the first Mac to have soldered storage, making it impossible to remove the storage device from the computer, which is important for data recovery. The 2018 Mac Mini thankfully no longer has soldered RAM (although RAM installation must still be done by an Apple-authorized repair center), but it has soldered storage. Users who wanted user-serviceability and upgradability were pointed to the Mac Pro, Apple's only model that offers these things.
However, when Apple announced the 2019 Mac Pro, it announced a starting price of $5,999, which is double the $2,999 starting price of the previous-generation Mac Pro, making it the highest-priced entry-level Power Macintosh or Mac Pro since the mid-1990s. For users of previous-generation entry-level Mac Pro models (like myself; I own an entry-level 2013 Mac Pro that I bought in April 2017 after Apple discounted its price), this news is disappointing since $5,999 is a tremendous leap from $2,999. I was prepared for a $2,999 or even $3,499 announcement, but not for a $5,999 one, which is well beyond my budget for a computer. Unfortunately, I'm left with the following options when it is time to upgrade, none of which are appealing for me:
- Sacrifice user-serviceability and upgradability by purchasing a Mac Mini or iMac. However, user-serviceability and upgradeability are very important for me. I would like to take advantage of falling prices over time in order to upgrade my computer whenever its necessary over time instead of having to guess my anticipated needs for the next few years and having to buy the upgrades up front at today's prices, not to mention that Apple charges a considerable sum for upgrades. Moreover, non-serviceability precludes easy repair and easy data recoverability.
- Scrimp and save for a 2019 Mac Pro. Don't get me wrong; the 2019 Mac Pro is an excellent machine. I would love to have one if I had the money. But $6,000 is steep for a personal computer even on a Silicon Valley computer scientist's salary.
- Switch to Windows 10 or Linux. After the controversial 2016 MacBook Pro was released, I actually promptly purchased a refurbished ThinkPad T430 at Fry's for less than $150 in order to reacquaint myself with Windows, which I haven't used regularly since the Windows XP days. My assessment of Windows 10 is that while its technical underpinnings are solid and its Windows Subsystem for Linux had made it possible for me to do Unix-style programming on Windows (which is one of the reasons why I use macOS: the fact that it is Unix underneath), unfortunately I find the interface gaudy (and the fact that my ThinkPad had a 1366x768 screen didn't help matters since Windows 10's interface seems to be optimized for high-resolution displays), and I find the advertisements, telemetry, and mandatory updates very annoying. I also tried various Linux distributions, including KDE Neon and Linux Mint (which I currently use). While I can be productive in Linux, I still find myself missing macOS. I miss programs like Dictionary.app and Photos.app, and a recent update to Linux Mint 19 has somehow made Japanese text input no longer work with Firefox (although it works with other applications). I prefer the various Linux desktops like MATE and KDE to Windows 10, but I love the Mac's attention to detail, especially when it comes to font rendering. I can make do with either Windows 10 or Linux, but I find myself more productive in macOS. I find that macOS provides a more polished, more consistent, less buggy, and far less annoying experience than Windows 10 or Linux.
- Build a Hackintosh. While I find the prospect of using macOS on PC hardware intriguing, unfortunately this is a non-starter for me. I don't want to sound sanctimonious, but as a professional in the tech industry, I want to respect software licenses, even though I feel that users should be able to have the freedom to install whatever operating system they want on their hardware. Also, for users who have no qualms with violating the macOS EULA, there are other challenges such as getting iCloud and iPhone integration to work properly on Hackintoshes, and there's also the prospect of Apple rendering Hackintoshing extremely difficult or impossible to do in the future through the use of Apple's T2 chip, which has been included in every Mac that has been redesigned since 2017 with the introduction of the iMac Pro.
Given these options, I'll express a lament about the state of personal computing these days: you can legally have a polished OS tied to restrictive hardware (unless you have $5,999 to shell out for a Mac Pro) or an unpolished OS running on a wide variety of hardware with varying degrees of freedom regarding user-serviceability, upgradeability, and expandability. However, you can't have both (unless you want to build a Hackintosh): a polished OS running on the hardware of your choice.
What would it take for a new competing operating system to emerge, one that is not restricted to a particular vendor's hardware and yet is polished? Unfortunately it will take a very large amount of work in order for it to be at par with even Windows 10 and desktop Linux distributions. Below are the most formidable problems such an effort will bring:
What would it take for a new competing operating system to emerge, one that is not restricted to a particular vendor's hardware and yet is polished? Unfortunately it will take a very large amount of work in order for it to be at par with even Windows 10 and desktop Linux distributions. Below are the most formidable problems such an effort will bring:
- There's the classic chicken-and-egg problem of software availability and user adoption: developers are less likely to develop for a new platform unless they're convinced it will attract a significant amount of users, and users are less likely to adopt a new platform if there are no software tools available for them to do their desired tasks.
- There's the sheer amount of time and resources needed to create a modern operating system from the ground up. All of our modern desktop operating systems (macOS, Windows 10, desktop Linux distributions) were evolved over many decades. I believe the last semi-successful example of a consumer OS being built from scratch was BeOS, which was built in the 1990s; I say "semi-successful" because it did gain a cult-following among the users it attracted but it ultimately failed in the marketplace. Apple's Taligent and Copland projects, both from the 1990s, were radical attempts to build new consumer operating systems from the ground-up, but they were never finished despite the amount of resources these projects were given.
- Obtaining hardware support for a new operating system is challenging. Many hardware vendors do not publicly provide the documentation needed for independent developers to write device drivers supporting their hardware, and many vendors are only willing to provide closed-source drivers for popular operating systems (see the chicken-and-egg problem above). It is possible to perform reverse-engineering to create device drivers, but this is difficult to do with complex hardware and sometimes requires substantial resources.
- Even though the rise of the Web and mobile computing has made platforms less important today than they were in the 1990s, there is still a need for native software, and there's also still a need to interact with dominant file formats and protocols. Part of the reason why desktop Linux (and even the Mac for that matter) has struggled for adoption is compatibility with certain, more popular software packages. Consider how long projects like GIMP and LibreOffice have existed and how they still struggle against more dominant products like Adobe Photoshop and Microsoft Office, respectively. Part of these struggles include dealing with the files created by dominant software packages, which are often encoded in proprietary formats. And projects that work specifically on application interoperability, whether at the source or binary level, tend to struggle. Consider the long struggles of projects such as Wine (a Win32 compatibility layer for Unix-like operating systems), ReactOS (a Windows clone), and GNUstep (a reimplementation of the Cocoa API used in macOS, which is derived from the OpenStep API from the NeXT era). Now, Windows and macOS are moving targets and thus those aforementioned projects will continue to need to play catch-up and with fewer resources than their corporate counterparts, but unfortunately it took a long time for projects like FreeDOS (a FOSS clone of MS-DOS) and Haiku (a FOSS clone of BeOS) to become mature enough to be useable, largely due to the small amount of resources these projects have relative to the resources that were available to develop the original systems.
- If the new operating system is commercial, then how do we develop a sustainable business model, especially in a world where people expect software such as operating systems to be free? If the new operating system is open source, then how do we attract and retain developers?
Now, it is possible to mitigate some of these concerns by building on the work of others. For example, we can use Linux or one of the BSDs in order to avoid having to write an operating system kernel and also to dramatically reduce the number of drivers that would have to be written. In fact, this is what Google and Apple did to create Android and macOS, respectively; Android uses a modified Linux kernel, while macOS, derived from NeXTSTEP, was built on Carnegie Mellon University's Mach microkernel and 4.3BSD (later upgraded to FreeBSD in the Mac OS X days).
Another way of decreasing the amount of time needed to embark on such an effort is to take advantage of computer science research that was not available in previous decades. For example, Viewpoints Research Institute worked on a project named STEPS that sought to dramatically reduce the amount of lines of code necessary to write a full-fledged operating system by using domain-specific languages to write various subsystems. An implementation of an operating system inspired by the STEPS project may encourage the rapid development of useful applications for it in a style similar to STEPS, thus potentially revolutionizing software development.
I've been thinking a lot about another canceled Apple project from the 1990s called OpenDoc, which was an attempt to make GUI application development more component-based rather than monolithic, which is similar to the Unix philosophy of using small utilities that interact with each other using pipes and I/O redirection. The ultimate realization of a component-based GUI would be the Smalltalk environment from Xerox PARC, where everything in the environment is an object that can be manipulated by other objects in the system. I read an insightful comment from the Hacker News forum (https://news.ycombinator.com/item?id=13573373) that states that the Linux desktop might have been more competitive had it embraced an OpenDoc-like style of component-based software instead of trying to fight Microsoft, Apple, Adobe, and other major software companies head on by building large, monolithic software packages like LibreOffice and GIMP.
The challenge with component-based GUIs, though, is maintaining a common standard of UI conventions across components. UI consistency across applications is one of the strongest suits of macOS, and this is also true of its ancestors: both the classic Mac OS and NeXTSTEP. For example, although the pipes-and-redirection approach of Unix command-line utilities works very well, unfortunately there isn't a lot of consistency between Unix tools, with argument flags often differing between utilities despite having similar meanings (for example, whether to use -r or -R to recursively search a directory tree depends on the tool).
Despite these challenges, I believe the time is ripe for a polished desktop operating system that serves as a competitor to macOS, Windows 10, and desktop Linux distributions. This OS should attract users who are dissatisfied with today's current OS offerings and who desire consistency, usability, and reliability.
Another way of decreasing the amount of time needed to embark on such an effort is to take advantage of computer science research that was not available in previous decades. For example, Viewpoints Research Institute worked on a project named STEPS that sought to dramatically reduce the amount of lines of code necessary to write a full-fledged operating system by using domain-specific languages to write various subsystems. An implementation of an operating system inspired by the STEPS project may encourage the rapid development of useful applications for it in a style similar to STEPS, thus potentially revolutionizing software development.
I've been thinking a lot about another canceled Apple project from the 1990s called OpenDoc, which was an attempt to make GUI application development more component-based rather than monolithic, which is similar to the Unix philosophy of using small utilities that interact with each other using pipes and I/O redirection. The ultimate realization of a component-based GUI would be the Smalltalk environment from Xerox PARC, where everything in the environment is an object that can be manipulated by other objects in the system. I read an insightful comment from the Hacker News forum (https://news.ycombinator.com/item?id=13573373) that states that the Linux desktop might have been more competitive had it embraced an OpenDoc-like style of component-based software instead of trying to fight Microsoft, Apple, Adobe, and other major software companies head on by building large, monolithic software packages like LibreOffice and GIMP.
The challenge with component-based GUIs, though, is maintaining a common standard of UI conventions across components. UI consistency across applications is one of the strongest suits of macOS, and this is also true of its ancestors: both the classic Mac OS and NeXTSTEP. For example, although the pipes-and-redirection approach of Unix command-line utilities works very well, unfortunately there isn't a lot of consistency between Unix tools, with argument flags often differing between utilities despite having similar meanings (for example, whether to use -r or -R to recursively search a directory tree depends on the tool).
Despite these challenges, I believe the time is ripe for a polished desktop operating system that serves as a competitor to macOS, Windows 10, and desktop Linux distributions. This OS should attract users who are dissatisfied with today's current OS offerings and who desire consistency, usability, and reliability.
No comments:
Post a Comment