Is FreeBSD difficult to "learn"?

Hi!

There's a famous comparision on the web of the differences between BSD and Linux: http://www.over-yonder.net/~fullermd/rants/bsd4linux/09

I wonder if the differences pointed out in the article are still valid. Especially if it is harder to master a BSD system than a Linux system. To me FreeBSD has a far steeper learning curve than say Slackware Linux. But maybe that's not due to inherent complexities but due to the fact that I already know Linux a bit and thus forgot about my learning experience.

So, my question is: Is FreeBSD still more elitist than Linux? Even when compared to Debian, Gentoo, Arch, Slackware. And do you have to learn MORE in order to master BSD than Linux? Or put this way: For a user who is completely new to UNIX, would it be harder for him to learn Linux or FreeBSD?

I would be glad to hear about your experiences and opinions!

GP
 
I wouldn't use the word "elitist" because that would mean that the users of it think themselves as a select few who have knowledge that only they know and are not willing to share it. If you look around on these forums that is very rarely the case, most FreeBSD users are rather generous with sharing their knowledge.

I would say that FreeBSD is like toolkit that you have to know well to make the most out of it, it doesn't hold your hand and can be quite unforgiving when you make a mistake.
 
In 1998 I started with Linux and used it for about one and a half year. When I found out about FreeBSD I tried it and switched to FreeBSD. Main reason was the excellent and well organized documentation in the FreeBSD handbook and and the helpful friendly FreeBSD questions and stable mailing lists.
 
germanopratin said:
There's a famous comparision on the web of the differences between BSD and Linux: http://www.over-yonder.net/~fullermd/rants/bsd4linux/09
Apparently not famous enough since this is the first time I read it ;)

From what I can tell all his points are still valid. Maybe apart from popularity; although he is right that Windows is a well known and popular operating system it's also safe to say that this popularity took quite the dive with Windows 8.

germanopratin said:
I wonder if the differences pointed out in the article are still valid. Especially if it is harder to master a BSD system than a linux system. To me FreeBSD has a far steeper learning curve than say Slackware Linux. But maybe that's not due to inherent complexities but due to the fact that I already know Linux a bit and thus forgot about my learning experience.
Well, I tend to agree with you.

When looking at your average Linux distribution you'll notice that it provides a lot more "hand holding" in comparison to FreeBSD. Take for example software installation on Debian; it uses the APT package manager to handle the setup. The main tool for installing / removing packages is dpkg. But in order to make it a little easier on the end user they provided a front end for it called apt-get. That can be used to easily retrieve and install, update or delete your packages.

And because apt-get could be a bit tricky they also started with a front-end for that program, the original being dselect (which is what I'm still using myself whenever I find myself on Debian Linux). But this was no good according to some people; dselect was old and rusty (even though it still got the job done quite well). As such aptitude was born, another front-end for the apt-get program which in its turn is somewhat of a front-end for dpkg.

As such one can argue that you got a lot more choice when it comes to package maintenance.

On FreeBSD we basically have portmaster and portupgrade, where the first is the one most commonly used. So if you really want to have some efficiency in maintaining your ports then your best bet is to become familiar with portmaster.

And when looking at packages; on Debian you could issue # apt-get upgrade and be done with it, on FreeBSD it is quite important that you keep track of /usr/ports/UPDATING too.

germanopratin said:
So, my question is: Is FreeBSD still more elitist than Linux? Even when compared to Debian, Gentoo, Arch, Slackware. And do you have to learn MORE in order to master BSD than Linux? Or put this way: For a user who is completely new to UNIX, would it be harder for him to learn Linux or FreeBSD?
First of all I don't think FreeBSD has ever been more elitist. In my opinion it's quite the other way around, to some extend all those different Linux distributions end up in one huge "turf war".

Which brings me to my answer; I think it's much harder to learn Linux. Because the problem is you don't really learn 'Linux' any more these days, you'll learn how to use a specific distribution. And unfortunately many distributions do not quite hold the general Unix approach in mind.

It gets worse; many distributions will also easily change the way a program works or behaves to "fit in" with the distribution it's used on. So configuring something like Dovecot can be a completely different experience on Debian than it is on CentOS. Heck; even installing it is different!

On CentOS I have /etc/dovecot.conf, part of dovecot.x86_64, which you can edit to configure the program. One package, one program.

On Debian I have dovecot-common, dovecot-pop3d and dovecot-imapd. 3 packages while the original is one single program. The configuration here is quite similar; /etc/dovecot/dovecot.conf.

I hope you can see where I'm getting at.. If you were to ask on a CentOS forum why you can't get IMAP working with Dovecot the first question would be something like "have you enabled it in your configuration?" whereas on Debian it would most likely be "have you installed dovecot-imapd?".

And there's a lot more than that. Configuring Apache on CentOS: Edit /etc/httpd/conf/httpd.conf where you should also pay attention to the /etc/httpd/conf.d/ directory. But all website entries go into this single file.

On Debian: /etc/apache2/apache2.conf for the global configuration settings, and the /etc/apache2/sites-available/ directory where you configure the websites on a per-website basis. Basically every config file will set up one specific website.

And to enable such a website you'll then need to create a symbolic link in /etc/apache2/sites-enabled/, which is another directory.

So the same software on two different Linux distributions and still a completely different approach as to setting it all up. What's worse, in my opinion, is that it more than often goes straight against the official documentation. Take the Apache documentation for example: "Apache is configured by placing directives in plain text configuration files. The main configuration file is usually called httpd.conf.", which is most certainly not the situation on Debian.

Setting up Apache on FreeBSD on the other hand is done in the exact way the Apache project described it above; here I do have /usr/local/etc/apache22/httpd.conf. As a result I can turn to the Apache documentation and follow it to the letter.

In the end FreeBSD is a lot more consistent I think. Looking for information? Use the man command. Looking for information on Linux you'd better use both the man and the info commands (manual pages are old; so they devised another system which works in parallel, so now you have 2 sources to look through).

Which is why I think that although learning FreeBSD might be a little harder at first, once you have become familiar with it you'll also be able to use that expertise on other environments as well, including Linux.
 
I wouldn't say difficult to learn, but it does require more time reading the handbook and manuals. If you don't take the time to read you will never feel comfortable with FreeBSD. After investing some time in reading you will develop an intuition of how the system works. When you get to that point you will appreciate its clarity and Linux will start to look chaotic.

At least this is my experience. I tried FreeBSD few years ago but never spent anytime reading, so I gave up feeling frustrated. Then few months ago moved back to FreeBSD, mostly because I wanted to set up a home server using zfs and jails. This time I made more of an effort to read the handbook. I am still learning, but I don't think will be going back to Linux. There is something "magical" about FreeBSD when you take the time to learn.

Also it is very rare finding another forum that could compare with the quality of this one. I have learnt a lot by just reading what's here. Again, nothing difficult, just taking the time to read.
 
Nothing worthwhile is easy, but in fact I am not so sure that BSD is 'difficult' in the sense that you mean. Linux can be difficult to master - even Arch, the most methodical distro going - because of the diversity and pace of change; the fundamentals themselves can be altered. Linux in this sense is actually very difficult to learn, especially on the desktop side. You could say, for instance, that I do not really know Linux, but I do know Redhat and Arch. Other distros completely baffle me, because they all do things slightly differently - service management, package management, even folder structure. And even that changes quickly.

For instance, running Arch over the last year I have had to cope with updates rendering my desktop unbootable, along with a major change in the init system (to Systemd); none of this stuff you can really 'learn', you just have to google your way through the problems.

Now, part of that is due to running a leading-edge distribution, but the other part of it is that I could not solve these problems myself; I feel more like a passive user.

Now, BSD is tricky, but the structured development and standardisation means that one can learn the pitfalls, and it really is very elegant once you get used to it.

You will come to love the organisation and tidyness of it all.
 
I recently installed FreeBSD (few months ago). I took me a solid two weeks to get my head around things and to get everything up and running the way I wanted it. At one stage I gave up and went back to CentOS. Once I was using it I thought to myself "this is way too easy, I need something different and challenging". I went back to FreeBSD, got used to it and haven't looked back since.

Now I am no Linux/Unix expert. I'd still consider myself a beginner to it all and still learning. In the passed I did play around with a few Linux distributions, so I sort of knew my way around things.

As the other members above me have stated, read the handbook and give the OS time. If you get stuck on anything search the net and/or ask on the forums! There hasn't been anything that the forum members haven't been able to help with! :)

Its well worth it!
 
blazingice said:
I wouldn't say difficult to learn, but it does require more time reading the handbook and manuals. If you don't take the time to read you will never feel comfortable with FreeBSD.
It's sometimes said that learning UNIX means learning to read. More to the point: to master any UNIX system (including FreeBSD, Linux and others) one needs to recognise that one can't know everything off the top of one's head but one should know where to look for further information. When it comes to that, I'm inclined to say that FreeBSD is arguably the best-documented OS I know. Read the Handbook, read the man pages, read the READMEs, they keyword is read. Most of the information is out there (especially in the case of FreeBSD), you just have to find it and read it.
 
I would have to say that it really depends on the type of person that you are. I believe all Unix/Linux systems require more attention and dedication then most average people are willing to give. I use both systems to this day for different things, and basically started out learning with precompiled installs like FreeNAS, NAS4Free, endian firewall, etc. Though to this day I have definitely taken a stronger liking to the Unix systems. I am still very much new to the FreeBSD operating system in general, and have struggled my way through the learning curves, I'd say, fairly gracefully. But I have noticed that despite precompiled installs or fresh server installs, things just seem to be more familiar and the same with BSD. It's been said before, and even with my limited knowledge of both systems, I do feel like Linux tends to feel sloppy at times.

The best advice that I can give, to anybody attempting to learn either system, is to use a VM client. This has helped me a lot, and has actually saved me in the past. I've saved and copied the flat image files before experimenting with the unknown, and in the event that I had placed the machine in the point of "My No Return", I'd just pickup where I left off and try again. On the same note though, do yourself a favor and at the first sign of trouble don't just use a saved image, you have to give it some time and thought or you wont further yourself.

You will find that whichever platform you choose to learn, or both, ... if you are willing to put in the effort, the community will chime in and point you in the right direction.
 
All this has been mentioned previously, and it has been repeated ad nauseam, but all the documentation available makes FreeBSD very friendly. The FreeBSD Handbook, which helps people who are new to systems administration, new to FreeBSD, or even new to UNIX get started. Also the man(1)() pages, which lie midway between the brevity and vagueness that typifies Linux documentation, and the overtechnical detail of Solaris manpages. The Forum's people, after all this you can get a good idea about their well known reputation ;)
 
For a user who is completely new to UNIX, would it be harder for him to learn Linux or FreeBSD?
FreeBSD would be easier to learn, from my experience. It is well documented and you will not find four different (wrong) ways to fix something from online forum posts because your problem was solved by someone using Distro A but you're actually using Distro B which has a slightly different way of doing things.

I learned Linux by using Slackware first, years ago. It was a slow process in my spare time. I later switched to FreeBSD and started learning it in the same manner. I found the documentation much better for FreeBSD and the system much more coherent which I found made it easier to figure things out on my own. Now you might think that I found FreeBSD easier to learn because I had already learned "similar" things with Linux. But I have recently started using Slackware again at work and find myself getting confused and hung up on simple tasks which FreeBSD makes simple (rc.conf settings, vidcontrol, pkg, system updates, etc.). It makes me wish I was using FreeBSD because it feels more like an operating system rather then a bunch of random utilities bundled together.
 
@ShelLuser kind of touched on this when talking about the Linuxes. Linux is a kernel, FreeBSD is a complete operating system. Which means if you "learn" Linux, you're going to be learning Ubuntu Linux or Debian Linux or Arch Linux etc, and the skills you learn in one may not apply to the others. If you learn FreeBSD, you're learning FreeBSD. About how hard it is to "learn" BSD/UNIX, Dennis Ritchie said this:
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.
Also about the elitism, look at BSD licensing and look at Linux' licensing, that should tell you who's an elitist.
 
Last edited by a moderator:
Thanks a lot for your replies, all of them were helpful and put some light on a different aspect!

This sentence really astonished me:
It's sometimes said that learning UNIX means learning to read.

It surprised me a bit, that some of you claimed that Linux is harder to learn because of the difference between distributions, bad documentation and casual modifications to the original software. Nevertheless, I guess you are right. And yes, the pace at which distributions are modified is really fast.

There is this saying "When you know Slackware, you know Linux." It sounded good once. But it is not true anymore. Maybe as a Slackware user you know the CLI better, but you don't know where a different distribution puts its (possibly altered) configuration files. So, you will still only know the Slackware system you are familiar with.

My FreeBSD experience so far:

I tried two times to switch completely to FreeBSD, and always fell back to Slackware. Maybe I had just been too lazy. What frustrated me the most was package management. Even though the ports system is a masterpiece, I managed to cause chaos with it, maybe because I was not patient enough and tried things without knowing how they work.

Now it is the third time. The reason for this third attempt: a couple of days ago, I watched a lecture by Lennart Poettering (the guy behind systemd, which is going to change Linux COMPLETELY) where he dismissed Unix as "old ideas of the '70s". I guess it was this video: http://www.youtube.com/watch?v=vvxpt233BYo

This statement (and all the other fast-paced developments in the Linux world) caused me to re-think Linux. Is it going into the wrong direction? Is it losing its Unix heritage? So I decided to give FreeBSD another try. It really nags me that I gave up twice...
 
germanopratin said:
What frustrated me the most was package management. Even though the ports system is a masterpiece, I managed to cause chaos with it, maybe because I was not patient enough and tried things without knowing how they work.

I know what you mean. Part of my frustration with FreeBSD mentioned earlier was exactly that. I used to get in a real mess with ports. It took hours building them, only to find out that I had chosen the wrong options. I would get in such a mess when trying to solve problems with ports that I would re install FreeBSD only to get a fresh start.

Now, I feel more in control and to be honest I really like the fact that you can tweak the options according to your needs. I am still trying to learn what some of the options do. In order to minimize frustration I would suggest doing any of these:

  • Use the default options, until you get confident with setting different options.
  • Take snapshots before doing anything with ports. This is not that necessary with FreeBSD, because of its separation of base system from the user. However it is a lifesaver if you get to the point that only a re install will solve the problem.
  • Use a PKGNG repository to save time in building ports. This would give you a similar functionality to that of apt-get. PC-BSD provides such a repository, which can also be used in a FreeBSD installation.
  • My favorite, build your own ports with ports-mgmt/poudriere. This gives the best of both worlds; the ability to tweak options and the speed of PKGNG.

From a source of frustration, ports are now a pleasure to work with.
 
blazingice said:
I know what you mean. Part of my frustration with FreeBSD mentioned earlier was exactly that. I used to get in a real mess with ports. It took hours building them, only to find out that I had chosen the wrong options. I would get in such a mess when trying to solve problems with ports that I would re install FreeBSD only to get a fresh start.

Remember, UNIX is not designed to keep you from doing something stupid, as that would also keep you from doing something brilliant.
 
I don't think FreeBSD is difficult to learn. As you can see from my post count and join date, I'm very much a newbie. In the past, I've dabbled with some Linux, but never really got into it. Recently, I tried FreeNAS for my home network and I was very impressed with its performance. This prompted me to want to learn more about FreeBSD so that I can install/customize the system with other software to just the way I like it. That's how I've learned so much from experimenting on all kinds of things in the jails system (which I treat as a FreeBSD system).

Just like you though, I did manage to nuke my ports tree to the point that I could no longer install anything, I mean not even a single thing on the ports tree. Of course, then I read an article somewhere that helped me understand the reason why (NEVER mix pkg_ and make installations). Since then, I've been able to run all sorts of things with zero issues (tmux + IRSSI + BitlBee = AWESOME!).

I'm now considering of fully switching into FreeBSD when I get my new laptop. The only thing stopping me from using it for my desktop system really is mostly because of games.

Prior to now, I've mostly been only posting in the FreeNAS forums and have proudly helped other fellow newbies to solve several problems that I encountered myself (Yay me!). Then, I figured that it would probably be a good idea to also register in the FreeBSD forums. It would greatly help me in my learning experience and possibly give some back to the community.

Anyways, since this is my first post since registering. Hello FreeBSD community, thanks for such a wonderful OS, and please take care of me from now on. :)
 
Comparing how difficult it is to learn FreeBSD, as opposed to Linux, depends on (among other things) with which Linux distribution you're making the comparison. Based on my limited experience (which is just installing them as laptop/desktop operating systems), I'd rank them as follows (where 1. is easiest to learn).
  1. Ubuntu, Xubuntu, Kubuntu, Linux Mint, Bodhi
  2. PC-BSD, Suse, Debian
  3. FreeBSD, ArchLinux
  4. Slackware, NetBSD
  5. Linux from Scratch (LFS)
Installing a few LFS systems will make you feel like you've really learned Linux well, and as you begin learning FreeBSD, it will also provide a nice comparison for how well organized and structured FreeBSD is.
 
FreeBSD is maybe a little harder to learn the first time.

However - when you learn FreeBSD, you will find that many things are done in a consistent manner. So you spend less time re-learning new things. Also, there is less change for change's sake. So you don't spend time re-learning how to do the same thing you did six months ago with the previous version.
 
ziyanm said:
A lot of the differences between Linux distributions and FreeBSD can be neatly summarised by this principle: http://www.freebsd.org/doc/handbook/freebsd-glossary.html#pola-glossary.

Yes, that's exactly why I am not as satisfied with Linux as I used to be. FreeBSD is still more or less UNIX, and that's a very good thing. Linux changes too much too fast, it's breaking stuff big time, and the guys pushing these major changes don't care a lot about POSIX. But it is vital that we keep caring about "sister OSes", in order to always have a safe fallback, if something goes wrong with our primary OS. It's good to know that there's an alternative around. Sadly, Linux is becoming less an alternative for UNIX user.

blazingice said:
I know what you mean. Part of my frustration with FreeBSD mentioned earlier was exactly that. I used to get in a real mess with ports. It took hours building them, only to find out that I had chosen the wrong options. I would get in such a mess when trying to solve problems with ports that I would re install FreeBSD only to get a fresh start.

Now, I feel more in control and to be honest I really like the fact that you can tweak the options according to your needs. I am still trying to learn what some of the options do. In order to minimize frustration I would suggest doing any of these:

Use the default options, until you get confident with setting different options.
Take snapshots before doing anything with ports. This is not that necessary with FreeBSD, because of its separation of base system from the user. However it is a lifesaver if you get to the point that only a re install will solve the problem.
Use a PKGNG repository to save time in building ports. This would give you a similar functionality to that of apt-get. PC-BSD provides such a repository, which can also be used in a FreeBSD installation.
My favorite, build your own ports with ports-mgmt/poudriere. This gives the best of both worlds]

Thanks for your recommendations!

Whattteva said:
(NEVER mix pkg_ and make installations).

Yep, that's exactly what I did. :\

GP
 
Learn *NIX first

You should learn how to be a *nix power user first. Learn a shell, learn the basic utilities (cp, mv, etc). Learn about file permissions and groups. Chaining commands together with pipes. Learn to use vi, write and compile a basic hello world program in C. Write a script that backs up your home directory with tar. Read the man pages for everything in /bin/ on the file system. Download the sources to a small program. Compile and install it to your home directory. Once you understand *nixisms, you will feel more at home whether you are in Linux, FreeBSD, AIX, solaris, etc. Much of being a *nix power user is completely portable. If you learn bash for example, you can install bash on freebsd FreeBSD and use it as your login shell (Just don't change /bin/sh to point to /bin/bash). If you don't understand the basics of Unix, you are never really going to 'know' Linux or freebsd FreeBSD. You are going to know how to accomplish specific tasks with no understanding of what you are doing. Package management is a concept. Ports, apt/dpkg, yum/rpm are implementations of the concept of package management.

So pick a *nix and learn the basics that are shared between all *nix systems. Then when you run into a problem, you will have a much better idea of where and how to start troubleshooting, or what specifically to google. Just my take anyways. If you have trouble getting FreeBSD to a point where you can use it, just start with Ubuntu. But for god's sake open a shell and start learning.
 
germanopratin said:
Yes, that's exactly why I am not as satisfied with Linux as I used to be. FreeBSD is still more or less UNIX, and that's a very good thing. Linux changes too much too fast, it's breaking stuff big time, and the guys pushing these major changes don't care a lot about POSIX.
GP

Well, Poettering has stated that moving away from POSIX has become his agenda, and he is highly influential, so I expect it will only continue.

I think as well as not caring for POSIX, there is a curious attitude from some developers towards users. I feel that the Linux luminaries see them as a nuisance.

The systemd question isn't easy to answer as that story is nowhere near complete yet. I've been using it since last autumn on a couple of Linux boxes and as far as I can see, the main advantage is speed. I don't like journalctl, it has broken for me twice (on different hosts, too) but I honestly haven't had much time to think about it.

To get on topic, something FreeBSD is wonderful for is the attitude, the mentality. What you learn with the system you can use anywhere. Learn to read. Learn to troubleshoot. Write good documentation (you will be in a minority if you do, I guarantee it :( ) These are priceless skills, professionally and personally.
 
keyvin said:
You should learn how to be a *nix power user first. Learn a shell, learn the basic utilities (cp, mv, etc). Learn about file permissions and groups. Chaining commands together with pipes. Learn to use vi, write and compile a basic hello world program in C. Write a script that backs up your home directory with tar. Read the man pages for everything in /bin/ on the file system. Download the sources to a small program. Compile and install it to your home directory. Once you understand *nixisms, you will feel more at home whether you are in Linux, FreeBSD, AIX, solaris, etc. Much of being a *nix power user is completely portable. If you learn bash for example, you can install bash on freebsd FreeBSD and use it as your login shell (Just don't change /bin/sh to point to /bin/bash). If you don't understand the basics of Unix, you are never really going to 'know' Linux or freebsd FreeBSD. You are going to know how to accomplish specific tasks with no understanding of what you are doing. Package management is a concept. Ports, apt/dpkg, yum/rpm are implementations of the concept of package management.

So pick a *nix and learn the basics that are shared between all *nix systems. Then when you run into a problem, you will have a much better idea of where and how to start troubleshooting, or what specifically to google. Just my take anyways. If you have trouble getting FreeBSD to a point where you can use it, just start with Ubuntu. But for god's sake open a shell and start learning.

Thanks for your suggestions. I actually do use the shell quite a lot, though I am no expert, even after years of experience. For instance, I never use a display manager, always use the CLI as default and then go to X with startx (which is aliased to startx -- -nolisten tcp).

Well, you are right in saying that one should learn UNIX in order to get along with FreeBSD and Linux etc. But sadly this is only half of the truth. There is a host of differences between Linux and [size=-1][Free?][/size]BSD. And they will be ever bigger in the future with Linux having systemd (as the "CoreOS") and other nice features. So, I do not feel home yet in [size=-1][Free?][/size]BSD, although I know that cp or sed will work in both more or less identically. There's so much more to a system that goes beyond the common UNIX denominator.

I won't start with Ubuntu. For god's sake I know my Slackware to the point that I can use it sufficiently. I hate Ubuntu. Maybe they changed this, but when I tried it out some years ago and found that they took away the root account, I was fed up. That's not the UNIX way, shielding you from root power and root hazard. This might be a matter of style and an over-reaction, but it shows their spirit and philosophy. So, don't use Ubuntu! It corrupts your precious bodily fluids. :p

Nevertheless, I like your statement because it reflects the [size=-1][Free?][/size]BSD attitude, which appears to be more or less the old UNIX thinking. Without knowing at least a bit of C you cannot dig deep into UNIX.

sulman said:
Well, Poettering has stated that moving away from POSIX has become his agenda, and he is highly influential, so I expect it will only continue.

I think as well as not caring for POSIX, there is a curious attitude from some developers towards users. I feel that the Linux luminaries see them as a nuisance.

The systemd question isn't easy to answer as that story is nowhere near complete yet. I've been using it since last autumn on a couple of Linux boxes and as far as I can see, the main advantage is speed. I don't like journalctl, it has broken for me twice (on different hosts, too) but I honestly haven't had much time to think about it.

To get on topic, something FreeBSD is wonderful for is the attitude, the mentality. What you learn with the system you can use anywhere. Learn to read. Learn to troubleshoot. Write good documentation (you will be in a minority if you do, I guarantee it ) These are priceless skills, professionally and personally.
Yesterday 01:05

Thanks for your advice.

I know it's off topic, but just one more comment on systemd. I am suspicious of it. Well, it is faster, but that's all. They plan to make it a second OS layer, which will change the game fundamentally. They made it also clear that it shall work as a means of Linux standardisation. That's not the right way to accomplish unification - by force.

And, yes, back to [size=-1][Free?][/size]BSD. It seems that this is a place where one can learn more than with Linux. Partly because of the system's philosophy, partly because of the community. Both because FreeBSD really still is UNIX.

GP
 
Back
Top