Some thoughts:
* Support for things like Wifi and suspend isn't a given at all (I never had reliable wifi on linux either, but I think I'm an outlier in that).
* Nvidia release official drivers for FreeBSD, which tend to work fine. For the rest, you're on your own. I'm not sure of the state of Intel drivers, haven't tested for some time.
* Audio tends to just work. The lack of pulseaudio actually makes things simpler than linux.
You know, you don't actually have to use pulseaudio on Linux. Both Alsa and OSSv4 work fine.
Honest question: why?
Originally, the biggest was legal: When OSSv4 first came out (2002), it was not free software, so it could not be included in Linux. In 2007, it was released under the GPL, so that went away. However, this created animosity towards it from the kernel devs.
That explains OSSv4, but what about v3? OSSv3 was the only sound system in Linux 2.4 and earlier; why didn't they continue developing that? There are various criticisms of it; that it doesn't map well to modern audio devices. I am under the impression that a lot of the design criticisms of OSSv4 are actually against OSSv3, and they haven't bothered to learn OSSv4; but I have no real citation for this.
The OSS people don't really work with the Linux people, so the Linux devs don't want to invest a lot of time in someone else' code. This makes even more sense when we consider that Lennart Poettering claims there are only about 3.5 paid people working on sound in Linux--they would of course be fairly heavily invested in ALSA.
Part of it was because OSSv4 was briefly not open source, and this pissed off lots of people, when it became open again, there was some political fights (that I don't remember the reasons), and there is some technical details of OSSv4 that irritate the kernel people (like the fact that instead of being entirely on userland it rely on Kernel space to reduce latency, specially for games, and the kernel people say they believe it should be userland only).
Another big issue is that OSS doesn't support MIDI or USB sound card input, which is a pretty huge functionality gap for people who are using those features.
Graphics: intel and nvidia will work fine (well, except you can't switch back to text mode once you load intel module - will be fixed, just not a priority).
Wifi: works flawlessly.
Multimedia: I use mplayer/emacs. No difference from linux.
Flash: Works, sometimes hangs (once a week? I'm use youtube a lot). You will have to remember to manually update your plugins (running nspluginwrapper), if you don't - expect pain.
Wine: same as linux, depends on your graphics card support (if playing games).
User friendliness: If you can get around in archlinux, you will manage just fine with FreeBSD. Not a technical person/don't like to play with your system? I highly recommend giving PC-BSD a look - imho it is comparable (slightly worse) to openSUSE - you can configure almost everything with a mouse. And the system is fast.
Suspend/hibernation: never managed to make it work (thinkpad e320).
Other: First of all, I love to tweak. FreeBSD is only *nix I tried that worked well no matter what I changed and worked AS I EXPECTED IT WOULD! Once you configure your system you are done. Expect it to behave properly and not require any fixes because you updated at a wrong time etc. (I hated ubuntu for it - I had to roll back packages manually THREE TIMES! - yes I am spoiled by FreeBSD :D ).
You can use ZFS as your root partition.
There is almost no documentation and tutorials in the web (compared to linux), the reason for that is EVERYTHING IS DOCUMENTED. Just RTFMan/Handbook. It takes a while to get used to it if you used linux before.
I don't know how good the laptop hardware support is - my impression is more people use it on the server. My wifi works fine, but you should probably check yours is supported.
I don't think you should use it on your laptop. See, the thing is:
>Does it JustWork on the majority of average-user things
Not on most hardware. The problem is basically drivers, it's always been drivers, I doubt it'll ever stop being drivers. When it comes to off-the-beaten-path OS's like BSD, Haiku, etc (maybe even Linux), it really makes sense to buy a machine with it in mind. That way you can look at specs and make sure all of the hardware is fully supported. Unfortunately it's not rare that even one unsupported thing can become a huge pain in the ass.
So you can put it on a* laptop, but I wouldn't put it on your current laptop unless you've done plenty of research and you're sure everything is supported.
And it's become my opinion that new and unpopular OS's can provide a better user experience by recommending or even targeting a two or three series of hardware (e.g. Samsung Chromebooks) where everything should work out of the box. Which isn't to say a user couldn't install the OS on something else, but a set of preferred hardware never hurt OS X, and even hackers prefer to have something available that "just works". Especially when developer resources are limited, it could be an advantage to prioritize in a way that manages to deliver a very good user experience to the people who are willing to make a little investment to use the OS. As the project grows, the list can get larger, it's not like you're limiting yourself forever.
ps: FreeBSD actually has in my experience (~2 years ago) a very nice audio system (OSS4), so playing mp4s should be no issue.
That said, things I don't do on my computer include playing games, watching videos and listening to music, so my definition of "just works" may not be the same as yours.
I don't really see this as a failing of FreeBSD at all- it has a very specific scope and the developers are focused on fulfilling the requirements of that scope with the highest degree of quality and architectural coherence that they can muster. However, people looking for an Ubuntu replacement that don't want to mess around on the command line or edit text files for system configuration are going to be disappointed.
This isn't to say that it can't do all of the things that desktop-focused Linux distros can do. It has a really nice system for building third-party open source software (the ports system), or you can just install prebuilt binary packages with its package manager. So, you can pretty easily get X and your preferred desktop or window manager and your favorite apps on there, but it requires learning how to use ports (and therefore, building everything) or figuring out how to install the binaries from the command line with the package manager.
Having said that, you might want to try out PC-BSD. PC-BSD is a desktop-oriented system that uses FreeBSD as its core. My understanding is that every PC-BSD release is tied to a corresponding FreeBSD release, and what you are doing when you install PC-BSD is installing a stock FreeBSD system plus a graphical interface (including an X server, the desktop of your choice, and a graphical package manager), using a nice, simple GUI installer that attempts to "just work" and do the right thing with minimal input from the user.
You can think of the relationship between PC-BSD and FreeBSD as analagous to the relationship between Ubuntu and the Linux kernel, in the sense that PC-BSD builds a complete desktop system by shipping a bunch of integrated higher-level components layered on top of an upstream core system. FreeBSD is a standalone project focused on providing that core system, and PC-BSD is more of a distro that brings together a bunch of other pieces to build a complete desktop system around that core.
I also get the impression (someone please correct me if I'm wrong, or go into more detail if I'm right) that there's a high degree of commonality between people working on the two projects, and that there is a pseudo-official relationship whereby PC-BSD is considered by many people to be the blessed desktop version of FreeBSD.
- Wifi worked out of the box.
- The people from #freebsd chan on irc were very helpful
- The handbook is very useful
The problems that I couldn't fix:
- Somehow I can't go back to terminal if I start x environment, afaik this is a problem of Intel HD Graphic cards (onboard on my notebook).
- No acpi support to adjust the brightness level, I have to rely on an app but it isn't the same.
- Touchpad support.. In ubuntu it works out of the box, two-finger scrolling and all, in freebsd I have to struggle a little with xorg and the end result is a little worse than ubuntu.
- I can't suspend my computer. It never wakes up :(
I still have to configure a lot of things (keyboard shortcuts, install better fonts, network manager).
It's not that I jumped from ubuntu to freeBSD, I've used archlinux for a few years before I got tired of it breaking my apps with the updates :P
I regret installing it on my notebook before trying it on my desktop or on a virtual machine.
But on a server or even a desktop computer, it's really great
Ubuntu include anything from proprietary freeware blobs, to GPL, to permissive licensed software. So long the inclusion improves the practical use, it is included. The more ideological free software operative systems excludes the proprietary freeware blobs, but keeps the GPL licensed and permissive licensed software. FreeBSD excluded both proprietary freeware blobs and GPL licensed software, and only uses software that is permissive licensed accordantly to the OSI standard. This methodology also cover driver support for hardware, as they won't port a linux driver to BSD if the linux driver is GPL.
However, most commonly used GPL software has an permissive alternative, so if you are lucky, using those alternative won't impact you too much. On the server side, I would think that is more true than for the laptop.
The base system consists of the kernel, toolchain, shell, and standard daemons. For the base system it is true that we prefer permissively licensed components. Today there are a few components that are not permissively licensed, and there is a plan with credible replacements for them.
However, I don't think it will help the parent post. Doing a base install, and wading through all the contrib packages and build a custom operative system is not the most practical thing to do. There are a reason why Debian has so many derivatives that picks and chose between the 40,000 applications laying around in debian repository. This is (in my view) the primary reason why Ubuntu has more installs than Debian, even if debian has more total available packages.
(As a side note: Thanks to your post I went and looked at ports collection and noticed that freeBSD do include many ported linux drivers through ports collection. The statement that I read earlier about porting was thus wrong, as BSD developers will port linux drivers to freeBSD - just not for the freeBSD base install. They also include a linux emulator which makes a linxu vs bsd comparison a bit more muddy.)
In the FreeBSD world the PC-BSD project (http://www.pcbsd.org) provides an operating system focused on the end-user experience, with a convenient "out-of-the-box" configuration. They track FreeBSD development closely and in general use exactly the same source - primarily changing configuration and tuning options.
From their website: PC-BSD is a desktop operating system based on FreeBSD. Rather than having the user build their own environment from the base operating system, PC-BSD aims to make the FreeBSD experience easy and achievable for the average "casual" computer user.
It's more a "can't" than a "won't". They can't incorporate GPL code into the BSD kernel without violating the GPL.
LGPL-licensed code might be something they could port as a pluggable driver, though don't quote me on the details there.
[1] https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_...
Assuming that FreeBSD's maintainers want to keep their code under the BSD license, they'll be wanting something more permissive than the FSF's "heads I win tails you lose" version of compatibility.
Am I missing something about the BSD kernel licensing social dynamic?
Now if you changed your hypothetical so that it's not a patch but a separate module that compiles to its own distinct binary, and your hypothetical license were expanded to include a second clause, "Anything that links to binaries built from this code must inherit this license," then we'd be talking about a situation that replicates the issues with making use of GPL code in projects that use more permissive licenses.
(The CDDL is decidedly not permissive, of course, but its a far cry from being more restrictive than the GPL.)
Complaining that FreeBSD has strict licensing requirements is like complaining that the Linux kernel has strict licensing requirements- they don't, they just have project-wide standards for licensing. Ubuntu (or Linux distros in general, or PC-BSD for that matter) is less of a project and more of a collection of components from different sources, so by definition it's not going to attempt to impose its own licensing requirements on those third parties.
Think of it like this: if the Linux kernel project evolved in a different way, such that the project as managed by Linus wasn't just the kernel but also the required low-level userland (libc, /bin/ls, etc.), then you'd end up with something that closely resembles FreeBSD. No one would use this hypothetical "Linux kernel plus low-level userland" project by itself, they would install it and then install whatever else they wanted from other sources on top of it. There would still be all sorts of distros that made it easy to do this. Ubuntu would still exist, except structurally it would more closely resemble the relationship between PC-BSD and FreeBSD.
One of the good reasons to like BSD´s is because of its licence, not the opposite
Does it JustWork on the majority of average-user things, like connecting to your Wi-Fi access point, displaying your desktop at its maximum resolution without crying, playing your multimedia files, etc? Ubuntu gets this just right, providing a perfect balance between core technologies for developers, and ease of software installation for common activities like, say, watching a Youtube video.
Support for 500 virtualisation technologies and no easy support for, say, playing mp4 files is going to make me not want to use it on my laptop. Then again, the average user might not exactly be who FreeBSD is targeting for their software.