See also https://en.wikipedia.org/wiki/List_of_products_based_on_Free...
FreeBSD was popular for many appliances, especially in the late 1990s and early 2000s, as it was generally rock-solid, had very mature networking, and the legal departments at the time liked the more permissive licence.
It's getting less and less common to see it, though. Sheer market share numbers mean performance, driver support, user familiarity, and companies no longer being afraid of the GPL mean that has Linux pretty much taken over.
It makes me a bit sad, but the OS on most Juniper gear is just a control plane for ASICs nowadays and NetApp has moved on to more advanced filesystems. Finding developers to write drivers/software for Linux is probably an order of magnitude easier.
All it forbids is blocking users from running modified FOSS code which macOS doesn't do. You can compile what you want and run it in Xcode. Even on iOS you can do this.
What TiVo did was shipping FOSS code but not giving users any access to their device.
A USB distributions like NomadBSD ( https://www.nomadbsd.org/ ) can be used to test compatibility without installing the OS.
Also, for HW compatibility: https://bsd-hardware.info/
Even if true, not having great support for laptops doesn't mean "no one uses FreeBSD". Obviously it's supported by essentially all server hardware and is used there, as well as many routers and the Playstation.
It's a desktop (a NUC) though so I don't use WiFi. I really hate laptops.
FreeBSD is pretty neat, don't get me wrong, I have played with it on servers and I ran an OPNsense router for years, so this isn't a dig on the OS as a whole, just that I don't think it's a good fit for laptops, at least the ones I've tried.
The only issues I have with is Bluetooth which to be fair was trying to connect a Xbox controller and HDMI-Sound, otherwise it all works.
WiFi too. A bit archaic to change SSID but that's more software then hardware.
Couldn't be happier and with ZFS I have on-boot encryption.
Typically I purchase hardware supported by the software I intend on using. I don’t blame the software or hardware vendors, if I intend to use them in a non-supported way.
I run it myself on my desktop and it's great. What I like is that it's not constantly changing stuff for the sake of it like with Linux. New init systems, changing ifconfig for other commands etc. And it's much better documented.
I have isolated jails with their own vNics running a nested bHyve VM instance inside which inside you then host a jail with its own vnic.
If something jumps out of the they are dead locked to the VM, if they jump out of that, they're trapped in a jail.
You have web services you desire to host. Let's call our first jail, infrastructure.
Within our infrastructure jail we want to create a Virtual Machine for actual web services.
You have a AMP stack and you wish to keep MySQL, Apache and PHP isolated. Security right?
We construct a VM named Web Services running FreeBSD. This VM now enables us to construct more jails to handle isolated MySQL and Apache/PHP instances. These jails have no idea about the host underneath as they're being hosted in a floating hive.
The VM is now the host so all jails connected traditionally via a Bridge and this is where netgraph comes in. However to explain NG over HN would be painful.
bHyve too isn't just limited to a single jail, you could then create a second jail on the FBSD host and construct the same. "Network Infrastructure" where you handle routing between jails.
So you now have two jails, each running virtual machines isolated from each other running hierarchical jails.
In my case I have a storage virtual machine. Using ZFS, space is dynamic and storage jail within issue all my nfs zfs shares, my smb shares et cetera. This makes backups easy as all I ever need to do is backup the storage virtual machine.
A media jail where I hold all my streaming services and a network jail where all things network infrastructure go. Routers, monitoring, dns et cetera.
You can go deeper than that. I was playing with a host where you had a, VM, Jail with hosted a dedicated firewall for jails which hosted jails for services.
Host > Jail > VM > FW Jail > Service Jail A > Jail A, B, C
And because all is contained in a virtual machine, I just power off the VM and backup the raw image.