The jails vs docker argument is a good example: while technically better, Docker (or rather, cgroups and image distribution) have been standardised and have tremendous community adoption. FreeBSD cannot tap into any of this at all. Yes, jails might be better, but because they lack widespread adoption, they’re far less useful.
It’s a sad state of affairs, I wish things went otherwise, but I feel Linux is sometimes a good example of the “worse is better” approach at work.
I think keeping this layer in development, maybe having a similar setup to SmartOS, letting you set up "Linux jails" or something like that, would significantly help adoption in the desktop/workstation space. This would of course lead to recruiting more developers, and so on.
Drivers are trickier, but I actually never had driver issues the last time I used FreeBSD as a daily driver(for about 6 months a few years ago, until I ran back to Linux with my tail between my legs).
It would be nice if at some point many decades ago, the Unix world had agreed on a standardised kernel API for modular drivers, so that drivers could more easily be ported between kernels, but it's way too late for that at this point I guess.
And maybe not even technically feasible, but I'm not qualified to comment on that.
What an understatement. The modern Linux syscalls are tightly coupled to the implementation of Linux. Special fds, io_uring, robust lists, etc etc …
There’s a reason why Microsoft said fuck it and run Linux in a VM for WSL2.
If you want Linux, just run Linux.
Edit: It's come to my attention that this particular instance of gatekeeping came from the Linux camp, not FreeBSD. Though you can find it in the FreeBSD community too, to be sure.
I'm not sure how relevant Microsoft is here given how much more different from Linux NT should be compared to FreeBSD. It's also kind of a different calculus for Microsoft in terms of it being worth the effort for what they wanted to do with it. Microsoft already has its own thriving ecosystem, the Linux support is just a bonus to attract people from a niche market. For FreeBSD the situation is more or less the exact opposite. The SmartOS people did it too, and even ported over KVM. But Joyent was acquired by Samsung and I'm not sure what happened to SmartOS after that.
Assuming you mean linux(4), http://man.freebsd.org/linux, it's absolutely not abandoned: https://wiki.freebsd.org/Linuxulator; it recently got a proper ARM64 support for example.
>"Linux jails" or something like that
Note that the reported kernel version doesn’t mean much, and we could probably bump it to 5. What matters is individual syscalls, and a nice thing about the state of Linux is that because it’s so fragmented, almost every non-portable syscall has a portable fallback.
Drivers for niche stuff seem like they would be an issue as well.
Unfortunately the FreeBSD NVIDIA driver does not include CUDA.
It might be possible to use CUDA in a Linux VM with GPU pass-through, but I have not tried this.
FreeBSD has good driver support for many server-oriented devices, e.g. for many network cards, especially for those from Intel, and for many SCSI controllers. The support for magnetic tapes is also better than in Linux.
There are various random devices that may have good support, e.g. recording from a Logitech video camera worked much better for me on FreeBSD than on Linux, but in general the chances of not finding a device driver for some piece of hardware are much greater than on Linux, especially when that hardware is new.
Recent news coming out of Intel the last week or so haven't been encouraging though. But I will remain a dreamer.
It takes true nerds (or "geek" in the sense it had around 2000, when it was still a bit derogatory and not yet a fashionable identity marker) to go off the beaten path.
Adj. 1. mediocre - moderate to inferior in quality; "they improved the quality from mediocre to above average"
Cgroups, namespaces have been implemented once, in Linux, by Google for their own needs. Not standardized in any meaningful interpretation of that word, just like "web standards" aren't. With now a generation of developers raised by big media and fake grassroots and staged march of progress stories, I'm wondering if that generation will be able to tell the difference, or are invested too much already.
But all that would be a distraction from the point I was trying to make, so I simplified it a bit.
In reality, Betamax was nearly indistinguishable from VHS.
Linux userspace is considered unstable. It's not a cohesive system like the BSDs but lots of independent projects all doing their own thing.
The Linux kernel is capable of running binaries compiled in the 90s. Breaking changes in the kernel-userspace binary interface makes Linus Torvalds scream at people on the mailing list.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
People were getting used to the old reliable Gnome2 and the Windows-esque KDE desktop.
But there's always some team of developers thinking they are Apple and completely throw years of progress out the window by breaking compatibility because of some usability "feature" their own selfish conception of usability thinks is a good decision. Some of then even go to the point of rejecting Merge requests to their supposed open source software because of that kind of Whim
There are only so many people willing (and able) to do the often difficult and unglamorous programming work that goes into maintaining something like Gnome.
If you're working on a major distro you have a certain level of trust in Gnome 3 because the same people delivered and supported Gnome 2. I'm sure when Gnome 3's direction became clear dozens or hundreds said "no way! I'm going to start my own fork which will never change!"
But how do you know which one to pick?
This means all DBus interfaces need to use the new name, a nautilus plugin must now call caja functions instead and so on.
Chicken and egg problem: Popular distros will follow popular DE's, because they have the most people making their way out of bugs and problems.
MATE, on the other hand, is kinda barren compared to more popular options. Even if it's the same old Gnome2 desktop of yore
Oh, so it did happen, I’m not currently a Linux user and had no idea!
Especially as with some evolution it seems it's always a mix of people complaining new change means some X program made in the 70s will break and people who wants to redo something made in the last 6mo because it is "old" already and meet the newfangled thing which is 50% breaking changes 50% barely new things
...except?
Meh. People who want to engage in this argument are generally trying to argue about jails vs. the collection of linux container technologies. That's not Docker. Docker won because of Dockerfiles. Docker isn't, at its core, an interesting container technology. Docker is a simple metaphor and programming environment to leverage container technology to solve practical[1] problems.
And as it happened, it was done on Linux and not jails, owing in large part to the more configurable/toolkit-style/policy-free tools available there. Jails were indeed more mature, but they were solving the wrong problem.
[1] Also thorny, boring problems like configuration management of large apps developed piecewise from components and by large teams. The kind of thing that is historically not well served by the operating system, BSD included.
Dockerfiles make it super simple. There is similar stuff for jails but you need a jails frontend that use it.
A few years ago i wanted to build the Jailfile equivalent, call it Warden, and have Warden manage the jails.
But honestly i doubt it would get traction outside a small community.
But docker is just a frontend for linux containers :) You're not comparing the right things here: Linux containers with a popular frontend and all the trimmings, to barebones FreeBSD jails.
Have you ever looked at what Docker puts in your iptables? I challenge you to understand what's happening with your networking after that.
If you want containers, lxc command line and a bit of configuration for a bridge interface is all you really need.
And that is the attitude embraced by jails (to be clear: rather more cleanly and attractively than the expression of the same ideas in linux), and precisely why it lost.
No one wants "containers". They want docker. They want to be handed something that looks no more threatening than a mid-80's build script and have it magically be it's own little world with all its own software and versions and stuff, but still talk to the rest of the world on the same networks from the same piece of hardware (yes, via some weird voodoo to glue all that together).
It's like arguing that no one needs word processing because nroff or LaTeX is all you need. It's not wrong. It's just a failure in the market.
Why are you wasting time with ipfw?
Some forwarding rules.
> I challenge you to understand what's happening with your networking after that.
They're incredibly simple forwarding rules, to make sure that only the containers that you specify can connect to the Internet, and all the others in a particular group can only connect to each other.
> If you want containers, lxc command line and a bit of configuration for a bridge interface is all you really need.
Yes, assuming you never need to maintain it, or run more than one project per server.
https://www.diva-portal.org/smash/get/diva2:1453017/FULLTEXT...
My theory at the time was this: GNOME won on developers' desktops, so most software was developed on Linux natively, with BSD compatibility (and performance) as an afterthought. IIRC Linus made a similar point on the mailing list that developers love servers that resemble their programming environments. TDLR: BSDs got stuck in CLI-only mode for too long.
The more common explanation was that Linux got a head start by a few years by being a clean-sheet implementation, while the BSD had to spend its early years purging itself off the AT&T copyrighted code, so it was untouchable from a commercial use perspective.
Hardware compatibility. I could install Linux on my shabby work desktop, and it just worked. Actually it worked more stably than NT 4.
Binary distros. I could apt-get install stuff onto my box in minutes. I rarely had to build things from source.
Speed of change. Linux was acquiring features at a breakneck speed. Large companies started contributing. SMP, interesting networking stuff, better disk I/O, new filesystems, stuff like that. Hell, Windows emulation good enough to run StarCraft! It felt alive and cared for. It was apparent that many serious businesses want to bet big on Linux. Some say marketing; I say GPL and project guidance.
I also had a lovely server box with FreeBSD. It had select compatible hardware. It had really nice documentation. It ran Apache and Squid pretty well. I had to build the latter from source IIRC. I had to build a lot from source (slow in 1998). If that was not available as a buildable package, I often had to tweak header files to make it build. For many amenities which I took for granted on my linux box, I decided that it's too much hassle to make them built on BSD.
Features like SMP or journaling file systems were a bit late in FreeBSD. Maybe they were more solid, and achieved performance parity with Linux with time. Sadly, the industry largely made the choice.
I also find modern Linux a mess, and run a minimalist distro (Void) on my laptop. I could consider running BSD on a server, but most servers now have to run VMs and containers within them, most tooling just assumes Linux.
Yep, it was timing for me - the Asus BP6 allowed dual Celerons but only Windows 2000 and Linux 2.6 supported SMP. I was using FreeBSD at the time, but had to move because of hardware support.
But I wouldn't say it was hardware support alone - I think GNU/Linux won because of the licensing - FreeBSD not having a viral license would have turned people off contributing only to have their code distributed closed source by companies... that's my take anyway.
I think it was too easy.
My favorite theory for why Linux got a head start is in this (long) comment I found some time ago here: https://news.ycombinator.com/item?id=21420338
Some excerpts:
"With Linux, I just booted from a Linux boot floppy with my Linux install CD in the CD-ROM drive, and ran the installation. With BSD...it could not find the drive because I had an IDE CD-ROM and it only supported SCSI."
"It insisted on being given a disk upon which it could completely repartition. [...] Linux, on the other hand, was happy to come second after my existing DOS/Windows."
"By the time the BSD people realized they really should be supporting IDE CD-ROM and get along with prior DOS/Windows on the same disk, Linux was way ahead."
On the other side, the Linux community fought hard to get everything to work, creating positive loops: the more hardware it supported, the more people could get it to work on their hobby hardware, the more they'd become familiar with it and push for adoption at work.
OpenBSD supported Bluetooth but they threw out the whole stack because of security concerns. I think it's the right decision for OpenBSD.
Quel sacrilege!!
Terrible to hear that!
>and I say that as an OpenBSD user.
My condolence that you have to use that terrible anti-consumer system.
I have to say though, my insistent trolling of the project on forums like these occasionally contributes to the push to progress - like the long-requested syspatch. I'm not sure what yours achieves.
You really believe that right?
These systems aren’t busy trumpeting their presence. Maybe the originators just don’t have fragile egos.
when i tried FreeBSD a couple years ago i was actually surprised that gnome worked OOTB. i remember some of the settings were gated off (Bluetooth? can’t remember the specifics), but the base desktop worked exactly as before.
maybe different in the early days though: dunno, wasn’t there.
Docker has Dockerfiles, layers, and trivial push/pull of images. Compared to those workflow improvements, nobody cares if the guts suck.
Some people care, this is why FreeBSD is still around :)
And it's not really relevant if you build your own images anyway. And in fact within the scope of FreeBSD jails offer very similar features, one of the things that's very common to do is make a base image with ZFS and then base all your jails off it. This means you just have to update your base and all your jails are updated. It's similar to pulling the latest alpine with docker. If you embrace the full ecosystem with Bastille you will have very similar capabilities.
The big missing point is that you can't use images from docker hub. This is a big negative but if you already don't plan on using those it's not really a bad thing. And there is increasing resistance to pulling things made by unknown people into production (I'm sure many vulnerabilities will happen in the future as attackers start to take advantage of this).
But anyway it doesn't have to be for everyone. It doesn't have to be the biggest thing around.
I have never seen anyone build jail-images from CI and deploying them to fleets of FreeBSD hosts. This may be technically feasible with zfs send/recieve but in practice people I know distributed packages (not images) to 10s of FreeBSD jails/hosts.
I want to deploy container images to a cluster - not install a package in a zone/jail. Is anyone doing this with FreeBSD/Solaris? (Outside of Joyent)
Here you go:
- I can see the Dockerfile equivalent (Bastillefile). - Not sure about the image distribution (Docker repositories) and Cluster management parts (Mesos, K8S)
But it seems like a very solvable problem.
FreeBSD lacks the network effect.
AUR may not be perfect but there is very little software out there that someone hasn’t already packaged in it and it’s a great deal more convenient to use than faffing with custom repos.
The Arch Wiki is second to none too. I’ve even occasionally found myself using it when debugging other Linuxes.
I definitely wouldn’t use Arch on a server though. I mean, I have done, multiple times in fact, but they’ve always been personal systems. I much prefer FreeBSD for servers. Professionally it has usually been Debian, CentOS, or, much more recently, Ubuntu Server (but I really don’t like Ubuntu Server. Or Desktop for that matter).
Disclaimer: this is all my own opinion and I’m not trying to pass any of it off as fact.
More like the reverse, the Arch Wiki is the best so everyone uses it. Although for some topics it makes sense to take a look at Debian or Gentoo wikis, too.
Not sure what other kind of 'Debian resources'/assets you had in mind.
What do you mean by "programs usually tailored for Debian", in general Linux programs for sure won't be tailored for Debian, except for Debian-internal developer tools perhaps.
But I came back to it in the last few years and it's matured a lot.
FreeBSD 7 was the first release to support ZFS and even in that it was marked as experimental support.
So if you were using ZFS before FreeBSD 8, and especially somehow on 6 and below, then you’re very much using ZFS at your own risk and can’t really complain if things go sideways.
What a completely bizarre claim. I have commercial linux/x86 binaries from the 90s that work perfectly well on my current PC running Linux 5.15.
I am not sure about other BSDs, but at least OpenBSDs is all but abi-stable; when they wanted to introduce 64-bit time_t to fix Y2038, they just changed the typedef and declared a flag day.
I think if you do anything GUI-ish over the last 20 years there's been many shared library breaking changes. But that'd be true of FreeBSD too since those dependencies are just the same when they live in ports.
Docker, kubernetes et all was the nail in the coffin.
BSDs are amazing for universities, OS classes and some outliers in the industry here and there.
The one thing FreeBSD had was network stack performance. Linux supports higher throughput for a while now.. so even that ship sailed.
Really that's new...because netflix thinks otherwise.
That is true[^1]. Doesn't say much the two TCP stacks in 2022 though.
Netflix has built expertise around FreeBSD for years. Not just TCP stack optimisations. There's deployment, management, maintenance, etc. I don't expect them to jump ship easily, especially if the tool is good for the job - which obviously is.
However, even they reckon that FreeBSD _might_ be faster for _a specific_ workflow. Fifteen years ago there would be no comparison between the two in terms of top speed achieved on same hardware or latency, FreeBSD was far superior.
The trend is what's important here. Netflix choose FreeBSD in 2012, in 2022 it is certain that they would have gone with Linux and by 2032 my guess is that they'll be serving using Linux. I hope I'm wrong, the more the merrier.
i.e this year Lamborghini might be faster than a Ferrari... Next year they might swap. But no one will say Lamborghini or Ferrari are slow.
My humble point,unless absolute throughput (Then you looking at userland tcp-stack anyway) is your absolute goal. Things like tools,skillset, environment, community might play a bigger role. Yea i still love Freebsd but uses Linux on Desktop daily. Freebsd just kinda 'fits-in-your-head'
Linux: I miss the simple days when you could edit files like /etc/resolv.conf for nameservers :)
These days i see quite a few "don't edit this file manually it is auto-generated messages" :/
> ... /etc/resolv.conf ... ...
> ...don't edit this file manually it is auto-generated ...
I have been trying not to comment on any of this discussion, but You just hit a nerve for me (in a good way!).
resolv.conf: near and dear to my heart
Don't edit manually...: if it is cattle (most servers and IoT) - ok, I move on. If it is a pet (any of my main laptops), whoa. Stop what I'm doing and track down the software that did this. Purge it or re-write the offending code to not mess with stuff. Track down what was relying on this behaviour and purge. Rinse, repeat.
FWIW, I am running Slackware, OpenBSD, and sometimes FreeBSD on my pets (they are all installed it's just that I mostly live in the first two). Also, I find it hard to not have all the different man pages always available (no, I don't have a constant Internet connection - Security policies).
This "complete software stack" deliverables is what makes the difference today. You deliver software with greater ease. Jails isn't meant for that. Ignoring this point and claiming the same existed for 15 years is wrong.
That claim seems crazy and doesn't match my experience at all. Please name a widely used program that changed its switches completely in a sub-version.
Tho, switching between BSD and gnu versions of some tools, there is a mismatch of command line arguments.
IIRC I had to look up docs using tar and sed on BSD.
How did you have ZFS change how it allocates memory?
In FreeBSD 12.x and older, you could opt out of using UMA with: vfs.zfs.zio.use_uma=0, but that is not necessary
I’m on 13-RELEASE.
Laptop processors are usually slower, due to lower thermal and power limits, so that's not surprising at all.
What benchmark and what processors exactly?
Most software that run on Linux may or may not run on FreeBSD. And when it doesn’t, it’s typically hard or impossible to get instructions or community support.
Looking at the download page, Firefox doesn’t even seem to have a FreeBSD version or instructions.
I can understand for servers although you lose community support for most software and can’t use ready to deploy docker images, as much as I loathe docker.
FreeBSD is vastly superior to Linux IMHO (the handbook is a great read), but it’s unfortunately not practical for most usages.
Erm, what? It's not Windows, that's what packages are for. Just "pkg install firefox".
Glad to hear Firefox has up to date packages in FreeBSD though!
It's a Browser, you don't need "specific" instructions for the base-os.
Aside: the thing that annoys me the most about FreeBSD is how bitter its proponents are that Linux "won". The tone of your comment a great example. It seriously turns me off. Some humility in finding out the shortcomings of BSD and ironing them out would be more beneficial in creating more competition in the OS space than complaining that all Linux users are idiots that haven't seen the light.
System upgrades are cleaner in Linux. Debian has had pkgbase ever since I can remember and it’s still underway in the BSDs. Live kernel patching is nice, too. Just two examples.
Some more points:
- bhyve, developed by netapp, they ditched all old technologies support and it works faster on my i5 server than kvm on my i7 laptop. Snapshoting using ZFS is not a feature to discard either.
- FIBs, absolute miracle routing tables that you can apply to whatever software, define the routes as fib 1 (lets say it is openvpn) and then use them as simply as `setfib 1 bash` to use them in all child processes
- backward compatibility, this is where linux is really horrible, there was an article about compiling binary on freebsd 2 and running it on freebsd 10. Try this on linux, binaries are not compatible even on minor versions.
- jails... docker? Really? Jails are 15+ years old implementation, kernel supported, that stood test of time, actually being a security feature. It runs circles around the docker in everything except how much it was adapted by community. I never understood why people rather used an inferior solution like docker.
- not to mention all the chaos in linux ecosystem, in next sub-version, the commands can have completely different switches,...
I will never understand on what technical merits people are using linux for servers except the support-ability of hardware. Due to the whole show that linux is getting we would prosper as a humanity by ditching the linux. Unfortunately, marketing is worth more than anything.
(I do understand that people will not agree due to their preference, but try to use it. I doubt you will prefer linux ever again.)