30 comments

[ 4.7 ms ] story [ 74.9 ms ] thread
Alas, only 12 references to APFS, that part appears to not be part of the drop, yet.

https://github.com/apple/darwin-xnu/search?p=2&q=APFS&type=&...

Note HFS+ is in a kernel module and not in the main tree (though is also open source), it therefore seems unlikely the APFS will ever be released in the same tree.
Those releases are here. In previous xnu drops, the HFS+ module was in the xnu tree, but it was moved out for a version of xnu which only ever shipped on iOS (10) and WatchOS (3) and all subsequent releases.

https://opensource.apple.com/source/hfs/

Apple has said they plan to release the format spec, but not the code.
It’s interestingly my to me that while Windows has undergone multiple pretty much ground up rewrites (Windows 3/95/98, Windows NT/2000/XP, Vista/7/8/10) and largely incompatible parallel unrelated code bases (eg Windows CE contained little to no common code with desktop windows), OSX and iOS (and BSD for that matter) have an unbroken source code lineage going back to the 70s.

Yes various portions of the OS were swapped out or rewritten at various points, but nothing remotely close to the way everything under the surface API layers of Windows was gutted and clean sheet rewritten every decade or so. I think it offers an object lesson in writing systems to be modular and extensible.

This interpretation is linear going back decades, but looking at Apple OS history all up, you see them same hard fork/rewrite between Classic Mac OS and OS X.
Right. That’s because Classic was outright replaced. The NeXTSTEP code has parts with origins in the 70s.
Did Vista's kernel break from XP's in some significant way? I've never heard anything indicating that Vista/7/8/10 were a new kernel, and not a continuation of the NT line.
There are only two code lines. The original 3.x and the NT 4.x. Everything starting with 2000/XP was a derivative of the first NT kernel.
It's a small nitpick, but the first version of NT was 3.1. It was a separate codebase from Windows 3.1, of course.
How much of Windows has _honestly_ been re-written? There's so much baggage in Windows it seams it's just not possible it has been re-written that many times.
Most of windows 3.11 was in assembly and p-code (according to the book "undocumented windows"). A lot of assembly was still present in 95, but almost all was converted to C/C++ in XP and vista.
Not as much as some would believe. The change from NT 5.x to NT 6.0 (Vista) wasn't really a rewrite in any sense of the word, at least no more than Linux 4.0 is a "rewrite" compared to 3.0, despite that all the little chunks had been touched over eventually.

Many applications (such as Notepad and Paint) derive directly from the original Windows 1.0 versions.

MacOS from versions 1 to 9 were very different to Mac OSX.

If you want to stretch the truth and say OSX has a lineage going back to the 70s, Windows 10 also has a lineage going back to the 70s:

http://windowsitpro.com/windows-client/windows-nt-and-vms-re...

In regard to "1970s code lineage" I think the parent is referring to the fact that the original XNU codebase incorporated parts of the BSD kernel, which was released in the 70s.

The same can be said of the code lineage of FreeBSD and I guess some other UNIXs I think.

Windows NT on the other hand, while having similarities to VMS I don't believe at any point shared actual code.

Well, he did say OS X (today named macOS), which is built on top of Darwin. Darwin itself is a combination of two things: XNU and BSD.

The BSD parts originally came from 4.3BSD, and were later upgraded with code from FreeBSD, with many userland tools from NetBSD. So by that token, the macOS lineage goes back to 1977, the year BSD was first released.

FreeBSD is based on the original BSD distribution. While FreeBSD got rid of all the AT&T code, you could also make a good case that since it derives from AT&T UNIX, its lineage goes all the way back to 1973.

XNU is not that old; it was developed at NeXT in the 1990s, and is based around Mach, a kernel first released in 1985.

Stretching the truth is pretending modern OSX/MacOS has any significant legacy in the old Mac OS 1-9. It doesn't. Youre talking about the lineage of the brand, while I'm talking about the lineage of the source code.

As I explained in my post it's a reskin of NextSTEP. That's why all the Objective C libraries are called NSTextField and such - NS stands for NextSTEP. In fact it's why OSX is largely written in ObjectiveC at all as that was the NS development language. The legacy Mac OS compatibility layer was a user level subsystem that was dumped years ago.

> "As I explained in my post it's a reskin of NextSTEP."

I'm aware of that. My gripe was with painting OSX as something with heritage stretching back to the 70s whilst suggesting that Microsoft's OSes have a far shallower legacy. If you acknowledge an old version of BSD as the forefather of OSX, I'd expect similar treatment for the forefathers of Windows.

Contrasting the subtle incompatibilities and custom APIs in Mac with the unparalleled legacy support in Windows.. I'm not sure the lesson is what you are suggesting.
Interesting also that Apple before Jobs's return had several complete or near-complete rewrites of the OS: System 7, Taligent, Copland, and NewtonOS (I'm not counting A/UX because it was largely System V at its core, or MacOS 2-6 & 8-9 because they were largely incremental improvements on System 1 & 7 respectively).

Perhaps a rule-of-thumb is that a tech company becomes dominant when it has a widely-used OS, and it loses relevance when it has multiple widely-used OSes. Seems to apply across multiple technology generations: Bell Labs (UNIX -> Plan9, Inferno), IBM (System/360 -> PC-DOS, OS/2, MVS, Taligent, etc.), Microsoft (DOS/Win95 -> WinME, XP, Vista, WinCE), Apple (mentioned above). It makes me wonder what Google's fate is, given that they went from having the dominant mobile OS (Android) in 2012 to now having Android, ChromeOS, Fuchsia, and a few others that aren't well-known.

> Perhaps a rule-of-thumb is that a tech company becomes dominant when it has a widely-used OS, and it loses relevance when it has multiple widely-used OSes. Seems to apply across multiple technology generations: Bell Labs (UNIX -> Plan9, Inferno), IBM (System/360 -> PC-DOS, OS/2, MVS, Taligent, etc.)

Your example of IBM doesn't really make sense. IBM has had multiple mainframe operating systems simultaneously going back to the 1960s. On System/360 descended systems, there are four surviving lineages of mainframe operating system – z/OS, z/VSE, z/VM and z/TPF. All four have ancestry going back to the 1960s – z/OS descends from OS/360 (196?), z/VSE descends from DOS/360 (1966), z/VM from VM/CMS (1972) which was the successor to CP/CMS (1968), z/TPF descends from ACP (1968). MVS / z/OS has always been the most popular of the four, and z/VM has fallen from an independent timesharing operating system into being a mere hypervisor (despite keeping, with rare use, most of those timesharing operating system features), but IBM is really a counterexample to your rule of thumb rather than support for it. IBM's operating system pluralism reaches back into its heyday as opposed to being some symptom of corporate decline.

Vista is not a ground-up rewrite by any stretch of the imagination. A considerable change, don't get me wrong, but not a rewrite; it could be seen as something on the order of Linux 2.4 to Linux 2.6. Windows 3 through ME were one codebase (like MacOS), and NT was (sorta, but not completely) another (like darwin/xnu). If anything current versions of NT have more Windows lineage than OS X has Mac lineage.
But why?

What use is this to anyone?

It's useful for source auditing. A lot of third parties like to review source code of things on behalf of customers, this makes it a bit more straightforward.
So you know what's rrrreally going on.
Personally I'm glad it reaffirms Apple's commitment to open source (which has been strong since the early OSX days), and to refute those who claim the OS shipping on Android is functionally more open the iOS (does Google publish the code for their common library that almost every app requires?).

Android OHA version != what's deployed on phones.