What's better about the FreeBSD userland? Are you talking about the shell tools like coreutils/diffutils/etc., or more about daemons like DNS/mail/etc.?
I am actually thinking of doing the opposite: using GNU user land tools (coreutils etc.) with the FreeBSD kernel. I know there are some projects already in this direction -- Debian/BSD, Arch/BSD, and I think Gentoo has some relation to BSD.
Reason: I want some BSD kernel features but don't want to waste time porting shell scripts and so forth.
Most of your list is just the fact that FreeBSD has a giant ifconfig binary instead of separate tools for different features. That's mostly a taste issue. Certainly dumping everything in the same tool is no less "confusing". I just googled the FreeBSD man page for ifconfig -- yikes!
The last bit is unfair. Yes, Linux distros have recently diverged on network device naming. But that's for a good reason: the old scheme wasn't robust against probe order, the new systemd one is, and FreeBSD's isn't either. The systemd naming (while ugly) is better, period. That's a feature for Linux, not a confusing problem with its userland.
> Most of your list is just the fact that FreeBSD has a giant ifconfig binary instead of separate tools for different features. That's mostly a taste issue.
No, its not that.
It clearly shows how fragmented Linux ecosystem is..
On Freebsd, on the other side, if a new kernel/OS feature
is created, the enginner/designer of that feature can count on, create (or modify) existing tools in the userland, cause he knows the userland will ship together
with the modified version of the kernel(or dinamic module)
It gives the whole system, a consistency; not easilly found anywhere else,
much less in Linux.. if you start to use Freebsd for some time,
you will just note this..
It gives you a better, and consistent experience,
and i think is this what Unix should look like..
> the old scheme wasn't robust against probe order
Very true.
> and FreeBSD's isn't either
Very untrue. FreeBSD does serial enumeration which results in static devices each time. There is no equivalent tool in FreeBSD to udev or systemd because it isn't needed(although devd does a certain subset of some of their functionality). About the only place out of order probing can occur is with external disk expander where FBSD isn't doing the actual probing. In this case, labeling disks or using the cam wire down method. man 4 cam
I bet you it doesn't. The BSD name a driver name and a number, and that's not enough state. If you swap two identical cards between PCIe slots, does it still work? If you pull em1 and add a new card in its place does it come up as em1 (incorrect) or em2? If you have a fixed external network with its own routing rules on a USB ethernet adapter, does it work correctly if you happen to boot with another such device connected?
I admit I'm chuckling a little about the idea of udev not being "needed". :)
> If you swap two identical cards between PCIe slots
It's probed by slot so in the case you present no config would generally be needed unless you have something dependant on layer 2 in the setup.
> If you pull em1 and add a new card in its place does it come up as em1 (incorrect)
Yes it does and actually that is correct. I don't want to have to muck with configs simply because I swapped a nic. If you like doing it that way have at it.
> If you have a fixed external network with its own routing rules on a USB ethernet adapter, does it work correctly if you happen to boot with another such device connected?
Depends on the setup, you can have it pretty much do anything but by default it would work if you swapped it out with something that used the same driver.
> I admit I'm chuckling a little about the idea of udev not being "needed".
As someone who has ripped udev out of a distribution and replaced it with something easier(auto provisioning) for a specific large SaaS stack, I can assure you udev is not needed.
If you pull em1 and add a new card in its place does it come up as em1 (incorrect) or em2?
Am I misreading, or do you mean to say that if you replace a failed part, the ‘correct’ thing is for the replacement to come up with a different name so that the box stays out of production until someone can manually reconfigure it?
I have to use linux for work, but he's right, keeping everything in ifconfig is much more close to the old school "unix" way than "lets play 20 commands" that seems to be present in most linux mindsets.
I am actually thinking of doing the opposite: using GNU user land tools (coreutils etc.) with the FreeBSD kernel. I know there are some projects already in this direction -- Debian/BSD, Arch/BSD, and I think Gentoo has some relation to BSD.
Reason: I want some BSD kernel features but don't want to waste time porting shell scripts and so forth.