+++ title = "FreeBSD: Early thoughts" author = ["MichaƂ Sapka"] date = 2023-02-15T21:12:00+01:00 categories = ["blog"] draft = false weight = 2039 abstract = "I've been using FreeBSD on my server for the last few weeks and I like it!" aliases = ["/bsd/early-freebsd-thoughts/", "/bsd/early-freebsd-thoughts"] +++ I'm leaning more and more towards joining the [FreeBSD](https://www.freebsd.org/) crowd. The community is small and welcoming, and I'm driven towards more minor groups. But I was surprised to find out hoh welcoming it was. People seem to be actually happy to help a noob - something the Linux crowd forgot how to do. {{< img-r "freebsd-beastie.png" >}} FreeBSD Beastie {{< /img-r >}} Another aspect is the documentation. People say it's excellent, and I consider it to be selling short. I'm reading [The Official Handbook](https://docs.freebsd.org/en/books/handbook/) It starts with the assumption that the reader has close to 0 knowledge but never treats him as a moron. And chapter by chapter explains how and why things work this way. It may not be for everyone, as you are expected to want to learn - but it is invaluable if you are in the target group. It's worth reading even if you don't want to move to BSD, as a lot applies to other NIXs, like Linux. And, of course, the system itself. I've been using unix-inspired OSs exclusively for over a decade (and quite often before that). FreeBSD is so close, that from day 0, I am able to navigate it. And what I see is a very well-thought system without many pitfalls Linux fell into. Just two examples that strike me the most. In Linux, the root partition is a mess. System and userland are intertwined, and I wonder if anyone understands where things should go. Just look at how many explanations of the structure there are! Should this particular config be in _var_ or maybe in _etc_? AFAIK there are no generic guidelines, just tribal knowledge. If FreeBSD, there's a [dedicated chapter](https://docs.freebsd.org/en/books/handbook/basics/#dirstructure) in the documentation! There's also a strict rule where userland should live - in /usr. Everything you install goes to /usr - the executables, the configs, etc. Finally, a new user can experiment without fearing breaking the system! The other one is the \`rc\` subsystem. The Linux world has a neverending war between Systemd and, well, everything else. Here? The system itself dictates how to manage the cattle - elegantly and logically. {{< img-c "freebsd13-bootloader.png" >}} How the OS greats us. {{< /img-c >}} FreeBSD comes with two package managers: pkg and ports. Pkg is a standard replacement for brew/apt/pacman or whatever else is there. What is nice is that the user can configure to use packages updated quarterly or the latest. Want to have a stable infrastructure? Go with quarterly - bug fixes will be included in between updates. Want modern thingies? Go with the latest. My biggest issue with Ubuntu and its derivatives is how far behind the packages in apt are, as they are tied to the yearly distro update circle. You can mitigate this by using personal repositories, but those are a nuance to set up. FreeBSD comes prepared for servers and workstations at the same time. And then there are ports for the demanding crowd. Since BSD is semi-compatible with Linux, you can compile most of its software. But there are some differences, so it requires some manual configuration or looking for dependencies. Or rather, it would, as FreeBSD has you covered. Ports is a single repository with makefiles for different projects tailored for the system. You can either compile anything with default settings or adjust the parameters easily. Want Firefox without JS support? Why not! I have yet to use ports, as they seem excessive for my humble VPS, but I love the idea. So, you have the best features from Ubuntu (stable versions), Arch (cutting edge), and from Gentoo (compile from source code) right at your disposal. I am ****this**** close to installing FreeBSD on my personal computer. My work-issued Macbook is [already running a BSD derivative](https://en.wikipedia.org/wiki/Darwin_(operating_system)#Kernel)... for better or worse.