Steve Jobs tried to convince Dell to license Mac software
cnet.com
cnet.com
While I don't really blame Dell for not taking this deal (it seemed like a pretty raw deal for Dell), I wonder how much more popular Unix would be nowadays had this gone through. OS X was (and is) almost certainly the largest desktop *nix distro out there, and if it were installed on every Dell computer (and presumably later other manufacturers as well), I wonder if Unix might have become the "standard" for desktop OS's.
Microsoft is pouring buckets of money and human capital into WSL2. Today, it's their way to drag cloud developers away from the Mac and Linux ecosystems into the corporate-blessed Windows ecosystem. But tomorrow, maybe developers and server admins will demand more Linux compatibility and, who knows, maybe they will reach a point where the only way to improve performance is to "port" Windows services and applications to the Linux kernel. The open source community has already proven that much of it can be done via Wine.
One of those things that doesn't look terribly likely now but might prove obvious in retrospect.
At the scale of MS a "major" Windows feature can't be cheap, even if it looks simple.
Seriously, look at how difficult it is for them to port the old style control center or improve notepad.exe.
WSL2 is actually the third iteration of this technology, not the second, and I believe has the same original goal and they've dedicated a large amount of engineering effort to that goal.
Here's my case:
Windows 10 Mobile had "Project Astoria", which involved working with app developers to port apps to Windows Phone. This involved library support and translation layers to enable APKs to run on Windows.
WSL1 abandoned the approach of requiring developers to modify apps, and used "pico processes" with kernel driver and Windows kernel's support for alternative subsystems to Win32 to map Linux syscalls to Windows equivalents. This enabled binary compatibility for most apps, but fell short.
WSL2 switched to the lightweight Hyper-V integration (now using the host compute system APIs to manage lightweight containers/VMs) but added deep driver integration with graphics to enable machine learning and hardware accelerated graphic workloads to work within Linux using vGPU drivers and RAIL respectively. And soon VAIL, to enable full fidelity graphical applications (i.e.: Android apps) to run on Windows without compromise.
That's a lot of engineering time on 3 high complexity projects over a span of at least 6 years, publicly.
Link to a talk on X11/Wayland and VAIL: https://xdc2020.x.org/event/9/contributions/611/attachments/...
I don't think VAIL has shipped yet, and getting that working correctly and securely, as it involves sharing memory between the WSL2 VM with a Linux kernel and the host Windows kernel, seems to me the most likely blocking issue for why they haven't yet released Android app support on Windows. See this comment on the readme of the WSLg repo:
> Please note that for the first release of WSLg, vGPU interops with the Weston compositor through system memory. If running on a discrete GPU, this effectively means that the rendered data is copied from VRAM to system memory before being presented to the compositor within WSLg, and uploaded onto the GPU again on the Windows side.
As for originally being intended for Win32 apps, I do wonder if "Vail" and "VAIL" are different projects within the OS division. The Linux/X11/Wayland and vGPU interop part of VAIL requires different expertise and deep knowledge of the Linux graphical stack.
And for the other parts, the interop bits are new, but the deck from when the WSL2 devs presented this specifically said it was a great solution because it was already being used for Azure Virtual Desktop (hosted Windows VMs).
The difference is not whether GPU applications do or do not work. They work with both. The difference is, do they work with zero copying via shared memory between the Windows host and the WSL virtual machine?
RAIL enabled graphical applications - including those that use the GPU - to be presented as windows on the Windows desktop. But it involves extra latency on the order of several to tens of frames, depending on how expensive the framebuffer copying and synchronization steps are.
VAIL enables performance (and input lag) that is on par with running Linux natively.
In general the experience is worse than using a real macos app but it as terrible than running in Web browser/electron (e.g. Slack, Spotify), or a macOS app that looks like it was written under duress by someone who didn’t give a shit (e.g. WhatsApp)
Unfortunately, Google's anticompetitive moves with SafetyNet will ensure that many Android apps will only run on Google-blessed hardware and software platforms.
WSL 1 & 2 are amazingly innovative platforms, as is WINE. Microsoft has undoubtedly created untold value for developers and their shareholders with WSL. The anticompetitive limitations implemented in SafetyNet, however, serve to stifle such innovation, and prevent many Android apps from running on other platforms.
If there is a larger purpose around WSL, VS Code, and "MS <3 Linux" messaging, it is definitely this. They have really changed their reputation among developers.
However, I can't ignore that they've certainly created value for engineers that use Windows to develop software that runs on Linux, similar to the value created by WINE's developers. It's just a shame that similar value and innovation are stifled by the limitations set by Google's SafetyNet when it comes to running Android software on other platforms.
However, the goal wasn't to make "Linux" a first class citizen so much as to bring "non-Windows" developers underneath the mothership.
It's even beginning to affect the embedded world: https://www.nordicsemi.com/News/2021/10/Nordic-launches-nRF-...
... now if only the language servers it relies on could be anywhere near as polished :| rust-analyzer is a stunning example of what's possible with language services, gopls is only barely functional enough to be worth running.
In every category imaginable, the NT kernel is better designed. Async IO, better power management, pageable kernel memory, stable driver API. I'd much rather KDE shell on NT kernel.
I get that Linux is popular, but no objective evaluation would claim that Linux kernel is better in any metric other than "how open source is it?" Spend some time to read the NT docs and get familiar with the design and you'll see.
This may be a hard pill to swallow, but in many areas linux's design is still very much "my first kernel" (I will give credit where it is due though, it is slowly being patched piece by piece, slowly). Whereas NT was written by a team who's done it a few times and avoided a lot of pitfalls (eg: synchronous by default IO, really??)
There are absolutely parts of Linux with all the architecture and engineering rigor of a favela. Real big "I want a new room and have two sheets of corrugated steel, a neighbor's wall, and an afternoon" energy.
There are also major parts of it that have benefited from decades of 'this tweak that won't be driver ABI compatible increases efficiency in this use case by measurable but single digit perf'. And yes, there's politics to getting that merged, but the barrier is way lower in Linux. You try a lot of that in how Microsoft builds software and at best you put a target on your back because you just made a lot of work for another team. At worst that amount of differently siloed work just kills the idea in the first place.
Actually, it was because NTFS semantics do not match ext semantics and lots of linux apps expect the latter. MS was clear on that...
It's that the NT filesystem stack puts the FS cache between user space and the FS driver, whereas on Linux it sits between FS driver and the block device driver. What that means is that on Linux, you get caching of blocks containing FS metadata for free, but on NT it has to be manually performed. That kills perf when looking at a lot of metadata.
When they say NTFS is to blame, they mean the NT FileSystem stack.
And yet on same hardware, windows gets twice the battery life and idles at about half the power. Maybe NT's way IS better afterall?
Same power efficiency.
And did you come back here an hour later to get another quip in?
Are we looking at the same graph? https://openbenchmarking.org/embed.php?i=1807102-RA-DELLXPSB...
windows is idling at less than half the power! Idle power matters since most laptops spend most of their time idle waiting for the comparatively-slow humans to press keys
> And did you come back here an hour later to get another quip in?
And "quip" is a questionable (bordering on implied ad-hominem) word choice given that my only fault is disagreeing with you.
The min use under Windows is slightly lower, the average is higher, and most importantly of all, the battery life (the metric we actually care about) appears about the same.
As the article says "Overall, the power use between Windows 10 and the four tested Linux distributions was basically on-par with each other." and "Beyond this data, the battery life of this Dell XPS laptop has been about the same as seen under Windows 10 with the testing thus far. So overall it's a pleasant surprise with not having tested any other Kabylake-R laptops and wasn't quite sure if the Linux power efficiency would be able to run on-par with Windows 10 at this point."
So it would appear that your new claim (that Windows gets twice the battery life) is without merit.
I wish laptops were like a phones, where race to idle is key, but they're not. The upper levels of the software stacks both on Windows and Linux aren't there yet.
That doesn't necessarily mean the Linux implementation is good; it could be that the syscall API is bad and can't be implemented any other way.
The syscall API for such things (fstat(2)) is pretty unobjectionable.
I can't comment on most of these things since I don't know much coding about them, but I will definitely grant you the stable driver API. Drivers are a huge pain in the ass in Linux, and until DKMS it was pretty common for upgrading my kernel to break my wifi card, which was really annoying.
> I get that Linux is popular, but no objective evaluation would claim that Linux kernel is better in any metric other than "how open source is it?"
I mean, that's a pretty big feature. Didn't Linux get multicore support well before Windows almost entirely because Linux was open source and popular on servers? When something is open source, companies (or people) don't have to wait for a specific monolithic company to decide that a certain feature is worthy.
> synchronous by default IO, really??
I will totally admit a lot of ignorance as I don't work in kernel spaces, but hasn't Linux had Async IO in the form of `epoll` for like 20 years? It's not the default but I feel like it's pretty commonly used.
-----
Of the things I do like about Linux (outside of open source), it follows the "everything's a file" mantra from Unix. It makes it fairly fun and easy to arbitrarily glue applications together (admittedly at the cost of performance sometimes).
Also, I like that you can choose different filesystems more or less arbitrarily. I don't have a Linux laptop anymore (I run macOS), but I when I did I was running ZFS on root with Ubuntu, and ZFS is pretty awesome. As far as I'm aware, with Windows you're basically stuck with NTFS.
As an API, epoll is kind of... suboptimal. Of course, lots of great things have been built with it, but there's a reason it's being replaced with io-uring, which is a lot more similar to Windows iocp.
https://windows-internals.com/i-o-rings-when-one-i-o-operati...
The novel thing of io-uring is using a new data structure to do it with fewer syscalls, thus less syscall overhead.
epoll() was introduced in Linux 2.5.44 [1], which was released in 2002 [2]. Epoll is not a wonderful API. Linux's real reply to NT's anync io is io_uring, which only appeared in Linux 5.1 [4] in 2019(!!) [2], and is still wildly evolving
[1] https://en.wikipedia.org/wiki/Epoll
[2] https://en.wikipedia.org/wiki/Linux_kernel_version_history
Granted, that’s not really a good excuse for Linux having a crappy system, just why I think there wasn’t ever a ton of urgency for it.
https://windows-internals.com/i-o-rings-when-one-i-o-operati...
In begin of AMD64 a lot of Windows software was single threaded 32 bit still, while on Debian with APT you had a working 64 bit environment. It was mostly userland which could not handle the amount of max cores found in even consumer grade multicore AMD64.
Even recently many games did not take advantage of multiple cores, while AMD has been strong performance wise multiple cores, Intel was best single core until Zen 3 recently. Windows would be unable to perform well (use max cores) on AMD64 by AMD.
You can see it now too. Intel gets slight performance boost with Windows 11 compared to 10 while AMD loses performance. Which AMD said they will address in October.
There's probably many areas where Linux comes strongly ahead - a much wider array of supported architectures, and even on the windows supported ones Linux scales much better by the virtue of being deployed from the smallest embedded computers to (all of) the largest supercomputers.
Edit:
Microsoft wouldn't ever open-source NT but, damn, GNU/Windows NT would be a sweet OS to use. (Make it license-compatible with ZFS and it'd be awesome.)
Interix was implemented in more of a pure "NT" manner, being a subsystem, as compared w/ WSL1. WSL1 just shims Linux syscalls. I'd rather build software from source targeting Interix (as just another "Unix"-flavored build target) than running native Linux binaries.
https://docs.microsoft.com/en-us/windows-server/administrati...
I wouldn't say never. I think the chance of that happening is ever so slightly increasing every year. The benefits of open source NT kernel will some day outweigh Microsoft keeping it close. Its strategic value is decreasing. ( The whole OS on the other hand is a different question though. )
It took them 7 years to get it stable enough to run on Windows Server, and they had to rewrite the entire stack to do it.
Until then, they were running the service on Unix.
https://news.softpedia.com/news/Windows-Live-Hotmail-Was-Pow...
This was true until io_uring, but io_uring is far more useful for far more purposes than overlapped IO.
https://docs.microsoft.com/en-us/windows/win32/api/ioringapi...
One of the reasons NT kernel is great is it was developed by the same people who developed VMS.
Yes really.
Synchronous, multi-threaded is the sane default from any perspective. (Performance, safety, developer convenience, flexibility, you name it.)
P.S. I've been making high-performance "web-scale" services for more than a decade.
This move killed cygwin and a lot of dual-boot linux installs within a year of availability.
here's the thing though - everyone i know just needs the basic korn shell and basic unix like features for their laptop. no one is writing apps targeting wsl, no one's running it on a server. the features we use wsl for have been the same since 1988, and we're not interested in the new ones.
I got into Slackware Linux, as means to do university work at home, and when I started working it was Windows NT, Aix, HP-UX and Solaris. We had a couple of Linux based servers but they were used as toys, like smuggling a couple of networked games into the office.
install windows 10. install WSL(2). install apache in WSL(2). start edge. point the edge browser at WSL(2). Notice the default network settings disallow edge from talking to WSL(2).
or start up something that uses mDNS.
or try to use non-latin characters on the terminal.
I'm sure MSFT is putting a lot of money in WSL2. but it's hard to argue they're serious about it.
No, its their way to avoid corporate (now and becoming cloud) developers already on Windows from being dragged off the Windows ecosystem. Its defensive, not (primarily) expansive.
Pulling on this thread, if the iPhone didn't exist (because Apple was solely software), I think there's a chance that the big player in the mobile space today would probably be Blackberry. They were doing extremely well before the iPhone, and if Apple hadn't disrupted the entire smartphone industry, I don't really see why that would haven't continued. I wonder if that means that smartphones would still have keyboards?
Java and Java 2 EE are deeply related to those endeavours.
I'm not saying it would have worked out any better for Sun, just that they were one of the bigger players in the tech world in the late 90's/early 2000's, and I could see trying to break into the desktop space seeming valuable to them at the time.
https://cs.gmu.edu/~sean/stuff/java-objc.html
https://en.wikipedia.org/wiki/Distributed_Objects_Everywhere
No way an executive would rollback on that decision, a couple of years afterwards.
No chances.
Going from BlackBerry to Google or Microsoft was seen as a great move. The opposite was basically unheard of. BB could never attract any talent.
As for Blackberry: and Nokia. I know Nokia was not very popular in US (for smartphone), but elsewhere in the world they were. In Europe it is Android which replaced both Nokia and Blackberry.
Android was coming regardless of iPhone. A major thing would be if OSK would be as good as it is on Android if iPhone would not have existed.
But Nokia was ready for the masses with N9 were it not for burning platform memo.
Symbian also had and used capability based security. iOS got it much later, and Android plays catch up on security and privacy with iOS.
Edit: removed asterisks before *nix as it triggered markdown
Half a phone convo:
Hi, this is Steve Jobs. If you engage in licensing with Apple, I will port my Unix-based OS to your brand of generic PC hardware.
What? Yes, I sorta know I can already do that without you licensing anything from me.
Why am I talking to you? Good question, you see ...
Yes, I know about Linux.
But anyway, so how about it?
I’m thrilled that we have unix with nice GUI that runs Photoshop. That was always my dream machine as a kid.
But boy, was BeOS awesome. The most responsive OS I ever used. The priorities were set straight: user input is king, so is audio and video.
And the aesthetics matched my taste remarkably well. I always thought NeXT was hideous by comparison.
Take this snippet from the wikipedia:
"Apple CEO Gil Amelio started negotiations to buy Be Inc., but negotiations stalled when Be CEO Jean-Louis Gassée wanted $300 million;[11] Apple was unwilling to offer any more than $125 million. Apple's board of directors decided NeXTSTEP was a better choice and purchased NeXT in 1996 for $429 million, bringing back Apple co-founder Steve Jobs.[12]" [ https://en.wikipedia.org/wiki/BeOS ]
It seems to me that BOTH $300M and $429M are greater than $125M and $429M is greater than $300M.
Having been both a NeXTStep and BeOS developer, I can assure you that NeXTStep was a MUCH more mature product than BeOS. Was it money? maybe. a little. Was NeXTStep better value for money? maybe. probably.
I rankle every time I hear the story about Gassée being greedy. He might have been asking for more than Apple wanted to pay, but I think it's simplistic to say it was only about money. NeXTStep morphed into Rhapsody and MacOS reasonably quickly. And the MetroWerks compiler for BeOS was DEFINITELY buggy.
I think there was no discount Gassée could offer that would make up for the longer time-to-market for a BeOS based next-gen Mac OS.
It's not like something came out of Google recently. If anything, Google is desperately trying to catch-up with Amazon and Microsoft in cloud and Apple in consumer etc. They are entering a long path of gradual decline.
MSFT market cap today is 2.22T GOOGL is 1.86T
They're not exactly playing "catch up". It's more like "keep up"
So I can imagine large companies would not trust OS X at that time and it would have been a big risk for Dell.
NextStep/OpenStep had support for x86 since 1994, so it was all ready to go if Dell wanted to play ball. But it wouldn't have included any support for Classic Mac software.
In other words, it wouldn't have supported any software at all, except for the few OpenStep devs still hanging on. But perhaps it would have been a good way to help kick-start OpenStep development.
Apple's original plan was to ship OpenStep as the next generation Mac OS, while running classic Mac OS software in a VM. This OS was eventually released as Mac OS X Server in 1999
But this plan was hugely unpopular in the Mac community. Microsoft and Adobe told Apple that there was no way they would port Office and Photoshop to OpenStep, and that killed the original plan.
This forced Apple to go back and tightly merge classic Mac OS and OpenStep, with the Carbon APIs and a ported version of the classic Mac Finder.
And thus, Mac OS X was conceived.
Three years later it was released.
Two years after that, it was good enough to use.
Two years after that, it was running circles around an aged Windows XP.
One could argue that XP is still running. Quietly plodding away unseen on some pretty critical systems.
I'm sure that counts for something, no?
Jobs wanted a cut on every PC sold if the deal went through. That was too much for Dell since they were selling so much PCs already, so it fell through.
https://podcasts.apple.com/us/podcast/googles-game-changing-...
But since other people in this thread are talking about other Unixes, it's fun to think of what would happen if IBM and Apple continued the AIX / Mac experiments.
They had some cool models in the 2000s.
https://www.theverge.com/2014/2/6/5385716/sony-vaio-iconic-p...
I would have killed to have Vista on my VAIO. I had Windows ME on it! Despite that fact, it still sits among my most beloved computers that I have owned. It was also the first that I had purchased new whereas all the previous ones were hand-me-downs.
Thanks for the trip down memory lane!
[0] https://usatoday30.usatoday.com/tech/news/2007-01-28-verizon...
Truthfully, it would certainly relieve a lot of pressure on Apple surrounding the Pro models. There are certain models that Apple always look like its reluctant to build and the Mac Pro has been that model. It would also have made the virtualization story a bit better.
iphone and ipad basically work because they're owned. There could have been a port out to Samsung native OLED tablets any time. The lesson was learned early: don't bother forming alliances which leave "their" name on the box.
I'm curious what a world like that would have looked like, where you can choose between OS X and Windows when purchasing a computer.
If there were two operating systems installed, there's a good chance that a majority of people would still only use Windows, and Dell would be paying a license to Apple that only 10% of their customers actually used.
That is a really interesting what-if scenario, but I don't think the mid-90s Apple corporate management would have been willing to go through with it. At the very least they would have tried to lock it down to Apple designed Intel hardware, they've never been able to let go of being a hardware company.
Give Dell an outdated OS, and launch a brand new OS yourself
Steve Jobs would have literally done anything to save Apple, you only need to watch the 1997 Macworld Expo to see how far he was willing to go. Those people absolutely hated Gates and you can guarantee you would have seen Michael Dell on that stage if it had gone the other way.
With that said Mac Clones were a thing, Jobs even tried to keep those deals going but they did not make sense at the time. Apple for all its worth was both a hardware and software company and the clone makers would have been competition anyways.
Based on the terms discussed, and that wikipedia says the licensed clones were ended because of unfavorable terms for Apple, I'm getting the impression that Jobs was trying to find a bigger partner and also make the deal work well for Apple, but was more interested in a good deal for Apple than a sustainable partnership for both companies. This deal didn't happen, and the licensed clone program was ended, and Apple returned to being the only maker of machines running Mac OS, which mostly worked out for them.
Also, isn't Dell the guy who said Apple should be liquidated and funds returned to shareholders in the mid-90s?