Preferences

ahofmann parent
I'm pretty sure, that the BSD family is pretty mature and secure. Linux is just good enough for most people.

8fingerlouie
A big part of the difference is that the BSDs are designed by a governing committee. They usually don't have 15 different solutions for the same problem, but instead 2-3 solutions that work well.

Take filesystems, the official filesystems are UFS(1/2) and ZFS. They have GEOM as LVM and LUKS and more.

That being said, the majority of money and development goes into Linux, which by itself may make it a better system (eventually).

Edit: Of course UFS is not deprecated.

gnfargbl
I can't help but make the comparison with cryptographic network protocols, where the industry started with a kitchen-sink approach (e.g. pluggable cipher suites in TLS) and ended up moving towards fixed primitives (e.g. Wireguard mostly uses DJB-originated techniques, take them or leave them).

The general lesson from that seems to be that a simpler, well-understood, well-tested and mostly static attack surface is better than a more complex, more fully-featured and more dynamic attack surface. I wonder whether we'll see a trend towards even more boring Linux distributions which focus on consistency over modernity. I wouldn't complain if we did.

8fingerlouie
The main strength of WireGuard is that it’s simple. It’s like 10% of the code size of IPSEC.

Less code means less possibility for bugs, and is easier to audit.

In my book, WireGuard perfectly follows the UNIX philosophy of making a simple tool that does exactly one thing and does it well.

graemep
> A big part of the difference is that the BSDs are designed by a governing committee. They usually don't have 15 different solutions for the same problem, but instead 2-3 solutions that work well.

The right comparison is not between a particular BSD and Linux, its between a particular BSD and a Linux distro.

jeltz
I feel the BSDs are much more different from each other than the average Linux distros are.
graemep
Average/most popular distros, maybe.

The full range of distros are very different from each other. Consider Void, Alpine, Gentoo, Chimera, NixOS.....

Different C libraries, init systems, different default command line utilities....

anthk
That's nothing. Alpine can run Glibc binaries with compat libraries.

Try running a FreeBSD binary under OpenBSD.

uncircle
> A big part of the difference is that the BSDs are designed by a governing committee

While I cannot agree nor disagree on the quality of BSDs (haven't used one in 20 years), I find it funny that in this case a design by committee is proof of quality.

I guess it's better than design by headless chicken which is how the Linux user-space is developed. Personally, I am a big fan of design by dictatorship, where one guy at the top either has a vision or can reject silly features and ideas with strong-enough words (Torvalds, Jobs, etc.) - this is the only way to create a cohesive experience, and honestly if it works for the kernel, there's no reason it shouldn't work in userspace.

throw0101b
> While I cannot agree nor disagree on the quality of BSDs (haven't used one in 20 years), I find it funny that in this case a design by committee is proof of quality.

I don't think "design" is correct word: organized, managed, or ran perhaps.

> The FreeBSD Project is run by FreeBSD committers, or developers who have direct commit access to the master Git repository.[1] The FreeBSD Core Team exists to provide direction and is responsible for setting goals for the FreeBSD Project and to provide mediation in the event of disputes, and also takes the final decision in case of disagreement between individuals and teams involved in the project.[2]

* https://en.wikipedia.org/wiki/FreeBSD_Core_Team

There is no BDFL, à la Linux or formerly Python: it's a 'board of directors'. Decisions are mostly dispute / policy-focused, and less technical for a particular bit of code.

8fingerlouie
They fill the same position as a BDFL though.

They decide what gets included in the default distribution, they set the goals and provider sponsorships for achieving them.

So yes, board of directors is probably more fitting.

And then of course you have the people with a commit bit. They can essentially work on whatever they like, but inclusion into the main branch is still up to the core team.

There was a huge debate some years ago when Netgate sponsored development/porting of WireGuard to FreeBSD, and the code was of a poor quality, and was ultimately removed from FreeBSD 13.

eikenberry
Similar to Debian's governing structure.
assimpleaspossi
UFS is not deprecated on FreeBSD.
hxorr
I believe it is the default on netBSD
bee_rider
BSD doesn’t count, everybody agrees it is the best OS they aren’t using.
NexRebular
> I'm pretty sure, that the BSD family is pretty mature and secure.

Not to mention illumos-based systems too.

johannes1234321
I ran Open Solaris for a while on my Laptop and it's quite nice. However the lack of support by practically any software vendor made many things a pain.

Since then even more stuff went to the Web, but I really I doubt Illumos got any extra traction.

NexRebular
Most of our server infrastructure runs on illumos at $work. SmartOS/Triton handles our "cloud" and OmniOS runs our storage. The linux monoculture problem luckily can still be handled with zones and bhyve, and I do trust illumos developers' competence to deliver good quality secure software a lot more than linux developers' as well.

Now if FreeBSD (or indeed illumos) would get CUDA-support we could stop using linux for GPU nodes too.

throw0101b
> Now if FreeBSD (or indeed illumos) would get CUDA-support we could stop using linux for GPU nodes too.

Could you not run Linux CUDA binaries under FreeBSD's Linuxulator?

NexRebular
It is possible, yes, but I would prefer to have full linux-free support for production use. There is on-going work for FreeBSD Cuda, though[0]. Just have to wait and see.

[0] https://www.freebsd.org/status/report-2024-04-2024-06/#_part...

charcircuit
>is pretty mature and secure

They are still missing something like capability based security like iOS and Android have where apps have to be granted access to use things like files or the camera. It may have been considered secure a couple decades ago, but they have fallen behind the competiton.

wahern
FreeBSD literally has Capsicum: https://en.wikipedia.org/wiki/Capsicum_(Unix) That might be the most pure capability system out of all of them, though it's not something that works without application modification (yet). Android and iOS applications can automatically work with the native capability framework because they rely on higher-level SDK APIs. But AFAIU those capability systems are very coarse-grained, in the sense that it's difficult leverage the capability system internally within a single application. And keeping lower-level APIs (e.g. for C and POSIX filesystem I/O) nominally working (if at all) requires some impure hacks. All of which makes them very similar to FreeBSD Jails or Linux containers in that respect.

I wouldn't consider any of these systems "secure", though, as a practical matter. In terms of preventing a breakout, I'd trust an application on OpenBSD with strict pledge and unveil limits, or a Linux process in a classic seccomp sandbox (i.e. only read, write, and exit syscalls), more than any of those other systems. Maybe Capsicum, too, but I'm not familiar enough with the implementation to know how well it limits kernel code surface area. But any application that can poke at (directly or indirectly) complicated hardware, like the GPU, is highly problematic unless there are proofs of correctness for any series of inputs that can be sent by the process (which I don't think is the case).

8fingerlouie
You can use Jails and limit access to hardware resources for each jail. Still not as dynamic, but will get the job done.
charcircuit
Sure, but this is not done automatically for the user.
bee_rider
For the types of computers BSD is typically run on, just unplug the webcam.
o11c
IMO, the real problem with trying to enforce capability-based systems on desktop/server environments is the correct API isn't implemented. `capabilities(7)` is only a tiny subset of `credentials(7)`, `PR_SET_NO_NEW_PRIVS` is an abomination, `SCM_RIGHTS` has warts, and `close_range` is fundamentally braindead.

We need at least the following sets: effective, permitted, bounding (per escalation method?), and the ability to make a copy of all of the preceding to automatically apply to a child (or to ourselves if we request an atomic change). Linux's `inheritable` set is just confusing, and confusion means people will use it wrong. At least we aren't Windows.

NexRebular
> They are still missing something like capability based security

...like Capsicum?

https://wiki.freebsd.org/Capsicum

charcircuit
No, that requires explicit changes by programs to use meaning that malware can ignore it and steal your browser's cookies and take secret photos with your webcam.
NexRebular
So the capability-based security framework is not missing unlike your original statement?
charcircuit
My original statement is about how users have to explicitly give programs access to the files and the webcam before they can use them. This is missing.
resource_waste
iOS so so insecure that thousands of people have been hacked and at least 1 person was killed.

The last place in security is iOS.

This item has no comments currently.