In 2000, I wrote a Linux device driver that “decrypted” the output of a certain device, and my company, which hosted open-source projects, agreed to host it.
The “encryption” was only a XOR, but that was enough for the maker of said device to sue my company under 17 U.S.C. § 1201 for hundreds of millions in damages.
The story got a lot of press back then because it highlighted how stupid the then-new DMCA was, and also because there was a David open-source enthusiasts vs. Goliath heartless corporation flavor to it.
Our lawyer decided to pick up the fight to generate free publicity for our fledgling company. For discovery, the maker of the device requested “a copy of any and all potentially infringing source code”. They weren’t specific and they didn’t specify the medium.
So we printed the entire Linux kernel source code including my driver in 5-pt font and sent them the boxes of printouts. Legally they had been served, so there was nothing they could do about it.
MacOS and iOS have Darwin as their base, which is really a mutt. Apple started with the NeXTSTEP kernel, which was a mix of 4.3BSD and Mach, then folded in some FreeBSD, other open source components, and some in-house code.
It’s Android that uses the Linux kernel as its base, and the millions of phones makes it a juicy target.
Not too surprising that iOS has linux in its DNA, but never realized Android does too. Always assumed it was more windows-based. Good to know.
iOS doesn’t have any Linux.
FreeBSD is not Linux. Linux is a kernel and Apple uses Mach, a different kernel. They do both share that they’re POSIX, but OS X is actual, factual, UNIX, and Linux has never paid the money to qualify.
How different is the FreeBSD kernel from the Linux kernel?
Like in terms of interfaces, if I were to port a device driver, am I just changing some header files and some constants/enums/ifdefs?
Or there’s like entirely different function signatures / APIs?
I would look at the source of LinuxKPI to get an idea of how different they are.
Well of course I could go look at the source code. We had to write a hello world Linux module in college. Was just being lazy and thought some expert might give a quick synopsis.
Though based on your reply, I’m guessing they are more different than I imagined.
My bad I’m conflating bash and Unix. From my end both apple and Linux use bash so they have the same underlying base…but I realize that’s not accurate, and even unix and bash are not synonomous.