[HN Gopher] Spelunking Apple's Open Source
       ___________________________________________________________________
        
       Spelunking Apple's Open Source
        
       Author : ingve
       Score  : 107 points
       Date   : 2023-03-17 14:11 UTC (8 hours ago)
        
 (HTM) web link (bitsplitting.org)
 (TXT) w3m dump (bitsplitting.org)
        
       | gavinhoward wrote:
       | Like the author, I appreciate the Apple OSS Distributions, even
       | though I don't use Mac OSX.
       | 
       | Four or five weeks ago, I was searching GitHub for every instance
       | of my email for legal reasons. I came across it in an Apple OSS
       | Distribution. And that is when I learned that my best project had
       | been silently shipped with Ventura.
       | 
       | I was ecstatic! [1] It's always great to see more people adopt
       | your work.
       | 
       | Don't worry; they followed the license.
       | 
       | [1]: https://gavinhoward.com/2023/02/my-code-conquered-another-
       | os...
        
         | m463 wrote:
         | I use bc all the time :)
        
         | bartvk wrote:
         | Wow, you authored bc? It's incredibly useful. I have to admit
         | that since Spotlight now supports quick calculations, it's my
         | second step. But it used to be my first. Thanks so much for
         | your work.
        
         | ramg wrote:
         | This is really cool. I use 'bc' in a small script that I run
         | almost daily.
        
           | gavinhoward wrote:
           | Cool! If I may ask, what does the script do?
        
             | ramg wrote:
             | I like to know how much incremental disk space I'm using so
             | I have a series of scripts that tell me the files which
             | have been deleted/added and outputs to get the sum (yes, I
             | know there are better ways). The impetus for checking disk
             | usage is a tale in IT stupidity which I don't talk about!
             | But now I use the script for other purposes as well such as
             | verifying that my mirror has the same deltas without doing
             | a full compare. I hope I haven't disappointed you with my
             | usage :-)
             | 
             | I really should rewrite this but it was written many years
             | ago and grew into something more than I originally
             | intended. Plus, it works.
        
         | mackey wrote:
         | Any idea why they would ship such an old version?
        
           | m463 wrote:
           | I've noticed other projects stopped shipping when GPLv2
           | became GPLv3
           | 
           | Also, I noticed they've been technically in violation of the
           | GPL for years with bash - they never shipped source for
           | rootless.h/etc
        
           | gavinhoward wrote:
           | Nope.
           | 
           | An acquaintance had a theory, though. They presumed that
           | Apple was doing two years of regression testing on Ventura,
           | so maybe they grabbed the latest version at the time, tested
           | stuff for two years and shipped the version they tested.
           | 
           | If so, I don't blame them. Most protects are not run like
           | mine, so they need to test for the lowest common denominator
           | and assume that later versions will have new bugs.
        
             | yjftsjthsd-h wrote:
             | They're vendoring in each of those projects, though; they
             | could just read the commits.
        
         | FractalHQ wrote:
         | What's bc? Is it Bit Counter? I just skimmed the website and gh
         | readme looking for a definition of BC, and I'm still unsure.
         | Only clue I found is that it has something to do with
         | calculators....
        
           | lapcat wrote:
           | I can't resist, because this is the perfect opportunity...
           | RTFM
        
           | DonaldPShimoda wrote:
           | GNU `bc` is a command-line arbitrary-precision calculator
           | language [1]. It seems the parent comment's author
           | implemented an alternative version that is now shipping in
           | macOS, presumably because Apple doesn't like the GNU
           | licenses.
           | 
           | [1] https://www.gnu.org/software/bc/manual/html_mono/bc.html
        
       | frou_dh wrote:
       | If you look at the repos in https://github.com/apple-oss-
       | distributions and their commit messages, that is pretty much the
       | definition of the "Throwing it over the wall every so often"
       | approach to open source.
       | 
       | At least the name-brand projects like Webkit and Swift (which
       | have logos and everything) are on a different planet to that.
        
         | rafram wrote:
         | Yeah, which is a totally valid approach under the GPL, and
         | essentially the closest one to how source distribution would've
         | worked at the time the license was written (software disks
         | either come with source code or instructions to acquire it).
        
           | benatkin wrote:
           | It's only a totally valid approach if you're hostile to it.
           | It's following the letter of the law but not the spirit of
           | it.
        
             | cellularmitosis wrote:
             | For certain use-cases, this approach is actually _more_
             | convenient, i.e. supporting old platforms. If I'm trying to
             | build a modern piece of software on Tiger, but it turns out
             | I need to first back-port cctools from Leopard, they've
             | made that task extremely convenient for me.
        
               | mistrial9 wrote:
               | git checkout tag ## use this next time
        
               | cellularmitosis wrote:
               | It is unlikely that a given open source project would
               | organize their tags along the lines of "Tiger 10.4.11"
        
       | boomanaiden154 wrote:
       | These can definitely be fun to go through. Recently there was a
       | code dump to `ld64` that contained references to Apple's upcoming
       | RealityOS. [1]
       | 
       | Kind of surprising that they haven't taken it down. It is pretty
       | cool to see these easter eggs in addition to the massively
       | improved ability to debug things by having an open source
       | toolchain, especially in regards to bringing other toolchains to
       | MacOS (eg mold/LLVM (especially LLD)).
       | 
       | 1. https://github.com/apple-oss-
       | distributions/ld64/commit/59a99...
        
       | jjoonathan wrote:
       | Yeah, this is a good resource! One time I needed to printf-
       | sprinkle dyld in order to figure out why our app was dying on a
       | security update... it turned out to be an installer setting a
       | sticky bit and the security update silently ignoring libraries if
       | any containing folder had a sticky bit set.
       | 
       | Anyway, since the source code has been up for a while, and since
       | HN has GPT fever at the moment, the question naturally arises...
       | can ChatGPT get this one?                   The "lsof" tool on
       | Mac OS X uses the "kernal control" API to obtain a list of
       | open ports. This API allows access to various kernel resources,
       | including         network sockets, and provides information about
       | the state of the system. The         "lsof" command uses this API
       | to list all open files, including network sockets,         and
       | displays information about the processes that are using them.
       | 
       | It looks confidently wrong in this case, unless "kernal control"
       | is a real name for the part of the XNU API containing
       | proc_pidinfo.
        
       | cmsj wrote:
       | Ironically, the example they give (using lsof's source to learn
       | how to list open ports), while open source, requires an apple-
       | private entitlement to run with modern macOS security
       | protections.
        
       | mtlmtlmtlmtl wrote:
       | Uncool. For a glorious second I thought Spelunky 2 had been open
       | sourced.
       | 
       | Now I'm sad.
        
       | Someone wrote:
       | FTA: _If you were curious about the "banner" command, which was
       | historically used to generate ASCII text suitable for printing
       | huge messages at dot matrix printers (!)_
       | 
       | Dot matrix printers typically allow for better output than grids
       | of monospaced characters, and, AFAIK, weren't commonly used with
       | computers when _banner_ was written, so I would think it was made
       | for line printers (https://en.wikipedia.org/wiki/Line_printer),
       | not dot matrix ones.
       | 
       | I don't know when that was, but https://www.tuhs.org/cgi-
       | bin/utree.pl?file=2.11BSD/src/games... has a man page dated
       | October 1982. https://www.tuhs.org/cgi-
       | bin/utree.pl?file=V6/usr/source/s1/... must be older since
       | version 6 Unix is from 1975. Also, the man page supports that
       | claim by saying
       | 
       |  _"you may want a printer or a fast hardcopy terminal, but if you
       | are patient, a decwriter or other 300 baud terminal will do."_
        
         | jws wrote:
         | There was a pretty good time interval between dot matrix
         | printers becoming a thing and any kind of dot addressable
         | graphics. For many years you just sent them regular old ascii
         | codes and got text.
         | 
         | I think communication interfaces had to come up in speed for it
         | to make sense, and memory on the computer to hold an entire
         | page of pixels. I mean, at 72dpi that's 50KB just for the data!
         | You were mostly into the IBM PC era before that was a thing.
        
           | vetinari wrote:
           | On the dot matrix printers, the text mode was much faster
           | than the graphics mode. So you could print pretty graphics,
           | but you would have wait for your printout.
        
         | JohnFen wrote:
         | I first used banner on a PDP mainframe in 1977.
        
       | ssklash wrote:
       | ReactOS is used in a similar manner for a lot of Windows devs,
       | offensive security, malware devs presumably. Since Windows isn't
       | open source, React is a great resource for seeing how things
       | could/might be done, relevant APIs, etc.
        
       ___________________________________________________________________
       (page generated 2023-03-17 23:01 UTC)