kev009
a year ago
I use Linux, FreeBSD, NetBSD, and OpenBSD all for fun, learning, and profit(the first two).
At the very least it is nice to make acquaintance with at least one BSD because it will probably expand your knowledge on Linux in ways you wont be able to anticipate.
For example, FreeBSD got me into kernel development, full system debugging, network stack development, driver development, and understanding how the whole kit fits together. Those skills transferred back and forth with reasonable fidelity to Linux, and for me jumping into Linux development cold would have been too big a leap.. especially in confidence and developing a mental model.
For my personal infrastructure, I tend to use FreeBSD because in many ways it is simpler and less surprising, especially when accounting for the passage of time. ifconfig is still ifconfig, and it works great. rc.d is all I need for my own stuff. I like the systematic effects of things like tunables and sysctl for managing hardware and kernel configuration. The man pages are forever useful to new and old users. The kernel APIs and userland APIs are extremely stable akin to commercial operating systems and unlike Linux.
There are warts. There are community frictions. The desktop story and some developer experiences will be perpetually behind Linux due to the size of the contributor base and user base. The job market for BSD is very limited compared to Linux. But I don't think it's an all or nothing affair, and ideally in a high stakes operation you would dual stack for availability and zero-day mitigation (Verisign once gave a great talk on this).
graemep
a year ago
> tend to use FreeBSD because in many ways it is simpler and less surprising, especially when accounting for the passage of time. ifconfig is still ifconfig, and it works great. rc.d is all I need for my own stuff.
That sounds very appealing to me. I have to keep a small number of servers running, but its not my main focus and I would like to spend as little time on it as possible.
I have started using Alpine Linux for servers (not for my desktop, yet) because it is light and simple. Maybe BSD will be the next step.
nucleardog
a year ago
The UI generally quite stable and well documented, which is awesome.
They also have things like `rpm` in ports that you can install. Why? Because you can enable linux binary compatibility[0] and run linux binaries on it (this implements the linux kernel interface, it's not a VM/emulator). It's also backward compatible with its own binaries back to FreeBSD 4 (circa 2000).
Though you may not need that as the ports/packages collection is pretty comprehensive.
It also comes with some nifty tools built-in for isolation (similar to but predating cgroups/containers) as "jails". It also has a hypervisor built in (bhyve) for virtualization if you do need to run any linux VMs or anything for any reason.
The way I usually sum up the difference to people is that FreeBSD is designed while Linux is grown. FreeBSD feels much more like a cohesive whole than Linux.
Really, the only reason I'm not running it everywhere is that the industry has kind of settled on linux-style containers for... absolutely everything, and the current solution for that on FreeBSD is basically "run linux in a VM".
ornornor
a year ago
> Really, the only reason I'm not running it everywhere is that the industry has kind of settled on linux-style containers for... absolutely everything, and the current solution for that on FreeBSD is basically "run linux in a VM".
That, and the wifi situation on laptops.
user
a year ago
graemep
a year ago
Thanks. I have been thinking about it for a while, but have never made the leap to using it. Mostly I am running pretty small and simple servers, and do not really need Linux style containers.
kev009
a year ago
That is the sweet spot for any of the BSDs. FreeBSD has the most of pretty much everything so it's my usual recommendation, but you could probably get along with Net and Open too which have their own charm.
barkingcat
a year ago
I've run the same freebsd system for the last 15 years just hosting a small site for some of my friends from back in university.
I've migrated it through system upgrades and security fixes, but nothing else needed to change. usual uptime is about 3 years between major release updates.
freebsd is an awesome server platform.
cientifico
a year ago
I completely agree! If you're looking to deeply understand how Linux works under the hood, I highly recommend trying out Linux From Scratch. It gave me invaluable insight into the system, especially when I first explored it 20 years ago. Building everything from the ground up—without relying on prepackaged distros or libc—was a game changer.
Check it out: https://www.linuxfromscratch.org/
hggigg
a year ago
I ran through that about 10 years ago. Not difficult for a reasonably seasoned Unixy person to run through but it quite frankly scared the shit out of me on the basis of how much stuff requires patching and hacking. Nothing fits together nicely. It gave me a whole new appreciation of macOS and FreeBSD.
sitkack
a year ago
I really really enjoyed using FreeBSD. It isn't a distro but a full OS that you can and easily fully rebuild from source. The people are great, the tech is good.
The CON is coming up, https://freebsdfoundation.org/news-and-events/event-calendar...
Fall 2024 FreeBSD Summit November 7-8, 2024 San Jose, CA
torstenvl
a year ago
Yeah, you know, a lot of us talk about FreeBSD being great because you aren't surprised by design choices—it mostly just makes sense.
But I don't think we talk enough about the joy of not being surprised by updates. I'm about to do an upgrade from 13.2 to 14.1 this weekend and I am very confident that I won't have to worry about configuring a new audio subsystem, changing all my startup scripts to work with a new service manager paradigm, or half my programs suddenly being slow because they're some new quasi-container package format.
ab71e5
a year ago
What sort of projects did you do to get into network stack and driver development on BSD?
kev009
a year ago
I worked at a large service provider and had to fix bugs and improve performance in TCP/IP and Intel Ethernet drivers. I ended up really enjoying it so it became a hobby and consulting gig as well.
ab71e5
a year ago
Awesome, you are kind of describing my dream job. Any particular hobby projects you are willing to share? I'm working on something myself trying to use eBPF/XDP offloading for a particular protocol
kev009
a year ago
Lately I have been enjoying NetBSD on a EdgeRouter-4 (Octeon MIPS). I am trying to port some of the OpenBSD Octeon improvements like the MMC driver and maybe SMP support. On FreeBSD I have been pushing some changes to the 1, 2.5, and 10gbit Intel drivers that will decrease driver overhead a few percent.
tcmart14
a year ago
Just commenting to express my interest also in the answer to this question.
v1ne
a year ago
I also still use FreeBSD on my NAS. But after many years, the desktop experience was pretty sad and made me switch to Windows + Linux for my hardware tinkering. On one side, the lack of manpower shows in many places, unfortunately. I'm talking modern WiFi, GPU support, or power-save mechanisms. On the other side, many Open Source projects only support Linux and getting their projects to compile + run on FreeBSD was a pain, too.
I mean, in addition to what kev009 mentioned, FreeBSD has so many great things to offer: For example, a full-featured "ifconfig" instead of ip + ethtool + iwconfig. Or consistent file-system snapshots since like forever on UFS (and ZFS, of course). I never understood how people in a commercial setup could run filesystem-level backups on a machine without that, like on Linux with ext4. It's just asking for trouble.
So, I'm happy to see this thread about FreeBSD here! Maybe we can make the Open Source scene a bit more diverse again with regards to operating systems…
knowitnone
a year ago
I see the reason for dual stack but I would rather focus my efforts into securing one OS. If you buy into that, why not 3 or 4 different OSes?
kev009
a year ago
It's an engineering tradeoff and market adaptation.
If you are a typical SaaS provider the complexity may be beyond your capabilities and budgets.. allegory to a local delivery business choosing to build a long term relationship with a single vehicle manufacturer and dealer.
If you are a high stakes service provider, you need to start thinking about how to get out from being controlled by a single vendor and market flux and plot your own destiny.. allegory to a national shipping carrier sourcing vehicles from multiple manufacturers and developing long term relationships with them to refine the platform.
hansvm
a year ago
3-4 would be great. What would you pick for the rest in this day and age though?
gspencley
a year ago
I'm still waiting for BeOS to make a come back
timeon
a year ago
What is the situation with Haiku now?
senorsmile
a year ago
They just released another "beta" not long ago. It seems like it's getting closer and closer to being daily driver ready.
eklavya
a year ago
Because tradeoffs and diminishing returns are a thing? For example having one backup is better than having no backups. Backups spread across earth, moon and mars would be better but probaboy not worth the cost.
MuffinFlavored
a year ago
> it will probably expand your knowledge
It really just fragments my knowledge to be honest.
Say "I gotta get things done".
Get me to a terminal. You've got Mac OS command line flags, GNU, BSD. Great.
Then it's some kind of asinine config to interact with some piece of software, all to achieve "generally the same thing", just a different way/flavor.
I really don't see the benefits.
cientifico
a year ago
It’s like driving a car. Most people can drive without needing to understand the internals, and it’ll still get them from point A to B. But just like some people enjoy diving deep into car mechanics, others enjoy understanding the intricacies of software.
For me, that deeper knowledge is an advantage. It helps me quickly evaluate tradeoffs between databases, debug at the OS level, or dismiss a library still relying on select if I expect heavy load. This insight saves time and increases efficiency.
kev009
a year ago
Yes, and if you are a powertrain engineer (allegory for system developer) you'd benefit from knowing a variety of technologies in the automotive industry to be able to adapt to market conditions. If you are a heavy equipment mechanic (allegory for operator), knowing Cummins, Cat, and Detroit engines would be expected. For some reason computing professionals tend to be a lot more tribal and gravitate toward monoculture.
MuffinFlavored
a year ago
I politely disagree. I love the driving a car analogy.
You've got 2 kinds of cars overall really. Automatic transmission or manual. Get into any of them and everything is the same. Gas pedal, brake pedal, etc.
Objective what you need to get done? Drive from A to B.
It is impossible to drive from A to B with FreeBSD if all you know is Linux commands/syntaxes. That's my whole argument. That it isn't as mild of a jump as driving car A or car B. You are blocked (and need to throw out what you know on Linux for BSD because it'll collide).
Are the differences mild? Sure, but enough to make you ineffective.
fragmede
a year ago
And in the car analogy, it's other a diesel engine vs gasoline. The fundamentals are the same but there are some core differences, and it's just nice to know more stuff about everything.