From time to time, on the Fedora forums someone will ask about BSD. This article is a rather superficial overview, attempting to focus upon the main differences a Fedora user might find.
If you are coming here from the Fedora forums, I will point out that there are a couple of people who strongly dislike the BSDs there, and you are probably far better off going to the Arch, Ubuntu, Linuxquestions, or indeed, just about any other forum to ask your questions. I used to enjoy the arguing, but these days, I have less time and energy. Said arguments have also, in my subjective opinion, gotten nastier, so these days I just post this link and stay out of the thread. Then, those folks can say all the bad things they wish to say about BSD, or me, and I don't see it, so everyone is satisfied. If you wish to take their word that it's not worth the time and has a bad license, then that's up to you. Or, you can read on.
To be fair, the FreeBSD forums, at least, have also gotten nastier about Linux. To me, it's sad, because both have relatively small market shares and if there was more combining of forces, it could be beneficial. My feeling (or perhaps only my hope) is that it's generally a small minority who have to virulently criticize other systems, and the vast majority have no problem. Dru Lavigne has an excellent article on FreeBSD for Linux users. There is another detailed article at over-yonder.net detailing much of the underlying difference between the two. However, as an article from the FreeBSD website comments, the differences to the average user can be surprisingly small. While there are many who trumpet the superiority of BSD over Linux, the official FreeBSD stance can be seen on their myths pages. It states
*BSD is better than (insert other system)
This is user opinion only.
(insert some other system) is better than *BSD
This is user opinion only.
The differences in the source code and licensing probably affect developers more than normal users. Much of this is covered in the links above by people far more knowledegable than I am. Therefore, this page will be aimed specifically at those who use Fedora, and what might surprise them. To cover it in a few sentences, userland and kernel are all produced by one group, whereas in Linux, Linux is really only the kernel. Everything else, such as the shell and various commands, are made by someone else.
As for the license, to completely oversimplify, the usual BSD license says that you can do whatever you want with the code, including using it for closed source programs. Some programmers feel this gives them more freedom. The typical Linux program is licensed under the GPL which says, if you use the code, it has to be kept available to anyone who wants it. Supporters say that this means whoever uses their code will give back to the community. Detractors says that it actually limits the freedom the programmer has to distribute their code. Again, if you're not a programmer, it's not really going to affect you.
FreeBSD only provides the opensource chromium. There isn't a google-chrome package for it, meaning Netflix and Amazon may not work. Youtube in firefox works.
Addionally, the latest bsdinstall that I've seen didn't provide a bootloader, so unlike the poster, who booted into FreeBSD, I went back to my usual grub prompt.
At that point, I was able to boot by creating a small /boot/grub2/custom.cfg file as explained in my grub2 article.
menuentry "FreeBSD" setroot='(hd0,3)' chainloader +1
One thing that many BSD users like, however, is the fact that the basic install is rather minimal. Unlike Fedora, where a base install can require gigabytes, a base FreeBSD installation is very small. Fedora's approach is to try and anticipate what you need during a default installation, and give you quite a bit. FreeBSD tends to start small, and let you customize after installation. I can say that Fedora is bloated by default, while someone else might say, No, FreeBSD is too minimal by default. (See the FreeBSD myth above.)
During installation, you are given the option to add many packages, but many users prefer to just get the system up and running, update the base system, then begin adding packages.
A minimal FreeBSD install will have your basic tools (but not X), with very little started by default. In contrast, a default Fedora installation will have 20 or more optional daemons running at first boot. This can sometimes surprise the newcomer to FreeBSD. "I booted up and and I can't ssh to the machine." During installation, you're asked if you want to run the ssh daemon at boot, but people miss that screen. If you don't explicitly decide to run it, it won't run at boot.
Interfaces are also configured there. Rather than eth0, eth1 and such, their name will vary, depending upon the manufacturer. For example, an Intel EtherExpress will be fxp0. The 3Com 3c90x will be xl0. (The system should figure this out for you.)
The IP address and any aliases will also be in rc.conf, rather than a completely separate file.
Those who are used to Fedora's GUI tools might find it confusing at first. Those who prefer to directly edit the various files will find it simpler. Rather than several different files for hostname, interfaces and the like, it's all in /etc/rc.conf.
This can sometimes cause confusion to Linux users. A Linux shell script will often start with #!/bin/bash. This won't work on a BSD. Bash is a third party program, and if the user chooses to install it, will live in /usr/local. While /bin/sh is usually a link to bash in Linux, the BSD sh is a simpler version of the Bourne shell. Some bash syntax, such as the select loop, or using $UID to get the user ID, won't work in sh.
Many people choose to install bash or zsh. However, if you choose to do that, DO NOT CHANGE ROOT'S DEFAULT SHELL! As it is in /usr/local, if you have to boot up in single user mode, it won't be available at boot. For more details on this, there is an article on daemonforums.
Usually, if upgrades have a particular issue, it should be documented in /usr/ports/UPDATING but things do get missed. All ports go into /usr/local. (In FreeBSD--NetBSD for example, uses /usr/pkg.) Where Fedora's postfix, cups, or apache configuration files will be in /etc, FreeBSD will have them in /usr/local/etc. There will also, for those programs which can run as daemons at startup, be a script put into /usr/local/etc/rc.d. Whether or not this script will be run can be controlled by adding an entry to /etc/rc.conf. In practice, this isn't so different than deciding whether to enable a server in systemd. However, in general, Fedora seems to automatically enable a new program .d by default, whereas in FreeBSD, you will have to deliberately choose to let it run at startup.
Upgrading the system is a bit more complex. The handbook's chapter, "The Cutting Edge," explains it rather well, though the handbook is sometimes out of date. A great short guide to updating can be found here.
If one runs RELEASE with the GENERIC kernel, and only needs security updates, Colin Percival's freebsd-update is an excellent alternative. Otherwise, one basically downloads the source code, compiles it, recompiles the kernel, then installs it. This can be time consuming. On a PIII 500 with a gig of RAM, it can take hours. On an i7 with 8 virtual cores, it will usually run 20-30 minutes.
Upgrading the system is separate from upgrading ports. Though there are various programs to examine installed ports and see what needs updating, The synth program is one of the safest ones to use. It does require more work than keeping a binary system, such as Fedora or Debian, up to date.
VirtualBox is now in ports and works quite well.
Both are used in mission critical, high load environments. For that matter, so are Windows and Mac servers.
One thing that might confuse a newcomer is that FreeBSD believes unused memory is wasted memory. Therefore, even if your machine is under light load, running the top command may show all memory being used. As long as swap isn't being used, there is no need to worry.
There will be more work to configure it the way you want, but in most cases, it's not that difficult. There are various forums, mailing lists and the excellent documentation to help you.
There was a mailing list discussion, years ago, about the relative merits of mutt and pine. One of the participants commented that people were grabbing at all sorts of tehcnical reasons to justify what is, in the end, an emotional decision. Try FreeBSD. You'll like it or you won't. Both are fine.
One last note for any BSD-ers who see this. If you join a Linux forum and get into a discussion on BSD's merits vs. Linux, don't just join a forum to tell its users how horrible Linux is in comparision. All it does is annoy people. Would you like it if a Linux user joined a BSD forum and for their first post started with not only how much they liked Linux but how lacking BSD was in comparison?
There's nothing wrong with first stating that your preference is for BSD and then saying why you do. However, just because you feel that way doesn't mean that you're right. :). They both have good and bad points. Saying, "I prefer BSD because," is much different than saying, "BSD is much better than Linux because." Remember, as soon as you insult someone, you've gone a long way towards closing their mind.
There was a BSD thread on a Linux forum. I gave what I felt were the advantages of BSD, acknowledging that these were my opinions. I was a long time member of that forum.
Later in the thread, someone in their first few posts, basically restated most of my points, adding how terrible Linux was in comparison and was called a troll. The difference, even more than the fact that they were new to the forums, was that they had to add how horrible Linux is in comparison.
If you feel like doing that, go back to the beginning of this article and reread the official BSD opinion. It's user opinion only.