# Favorite FreeBSD Feature?



## ananm1 (Mar 10, 2013)

What is your favorite aspect or feature of FreeBSD? Is there anything you would change?


----------



## sossego (Mar 10, 2013)

There are many.

Kernel and userland are as one.
Base system has low resource requirements.
Initial setup of user accounts allows privileged and unprivileged users to be created.
With ports/packages, desktop environments can be setup not to run over with each other.
The community, developers, users, et al/cetera are good people.


----------



## jrm@ (Mar 10, 2013)

I can take some level of ownership of the operating system installed on my computer.  If something doesn't work, at least theoretically, but often in practice, I can get to the bottom of the problem.  This may involve (indirect) help from others in the community and I might not always find a simple solution, but at least I'm not handcuffed by a distributor who caters to a user with very different needs


----------



## bkouhi (Mar 10, 2013)

Excellent Documentation.
 Ports system.
 FreeBSD License.
 Easy to configure and maintain.
 Contribute to project is very easy.
 As @sossego said, FreeBSD has very good community. I'm very happy here.
 etc.


----------



## zspider (Mar 11, 2013)

Not having to go hunting around the internet for solutions to problems, due to excellent documentation, this forum and consistent way of doing things.


----------



## Crivens (Mar 11, 2013)

The ports system, giving *me* the power to make the system do what I want. After all, I am root, and if I do not want HAL around then so be it. I am not at the receiving end of some distributor-said-you-like-it pipeline, and that is worth a lot. For this I pay the time and efford to build things from ports, but I pay that gladly.

The (mostly) absence of the NIH syndrome, developers actually _think_ before they do something, and you have the power to say you do not want it even then. Best example for this would be journaled soft updates, where a lot of efford went in and as long as I do not trust it, I can disable it by tunefs if I want. This is old-school development, design and research. The argument where current research is done, and so on, can only be brought up by those who do not know about academic research then and now (moronix trolls, I'm looking at you). 

And : _If it ain't broken, leave it alone._


----------



## fonz (Mar 11, 2013)

ananm1 said:
			
		

> What is your favorite aspect or feature of FreeBSD?



Ports.
Documentation.
Logical structure (on Linux I have to waste a lot of time trying to locate config files and stuff, they are hardly ever where you'd expect).
GELI.
Community.



			
				ananm1 said:
			
		

> Is there anything you would change?


A few details, yes.


----------



## kpedersen (Mar 11, 2013)

My favourite feature is the ports system for many reasons, including...

- Not having to rely on a central software repo (i.e in Linux) or an App Store (i.e in "modern" consumer operating systems).

- Provided a harness for building (patching) from source because as you know, nowadays building from source is often impossible without good knowledge of the software allowing you to write your own patches (unfortunately because some devs only write code for Ubuntu).

- Not having to update the whole damn OS to get access to the latest version of some software. I can just grab the individual port from a latest ports snapshot and merge it with my existing ports tree and build it (with minimal fixes) and it will build against "my versions" of libraries and dependencies. This is a really powerful backport system (whereas something like Debian stops at a certain age).

*An improvement to the ports system*
Quite a hard one to explain, but if I build a port on two different machines, the foreign software's build system might create the same output binary (i.e .so) in a different way (such as linking against another library present on one of the systems when it was built). For this reason, I think the ports system needs to be stricter (perhaps md5 *every* file) in the plist.

Currently it is possible to have slightly different files on your hard disk depending on the order that ports are built. If my OCD was any worse, this would bother me greatly lol.


----------



## ananm1 (Mar 12, 2013)

FreeBSD makes me feel calm.


----------



## segfault (Mar 12, 2013)

ananm1 said:
			
		

> FreeBSD makes me feel calm.


I agree with this 100%.

Love the License.
Love how there is a man page for EVERYTHING.
Love the pkg tools (and ability to build from src if needed).
Love the "Full operating System" moto.
LOVE THE HARDWORKING DEVS!


----------



## HarryE (Mar 13, 2013)

ZFS, jails, community people!


----------



## kpa (Mar 13, 2013)

I'm the boss, not the vendor of the software.


----------



## mix_room (Mar 13, 2013)

kpedersen said:
			
		

> For this reason, I think the ports system needs to be stricter (perhaps md5 *every* file) in the plist.



How are you going to generate _a priori_ MD5 hash values for files which are generated on different OS versions, different processor architectures, using different versions of libraries, different compilers and different sets of configurations?


----------



## kpa (Mar 13, 2013)

As far as I know it's not possible to trust a precalculated MD5 or SHA256 value of an ELF binary, every compliation and linking produces a unique binary.


----------



## expl (Mar 13, 2013)

Pre-hashing binary output for a port would defeat the purpose of a port (having freedom of a custom compile time configuration). If you want to have identical binary configuration on several machines you should use official FreeBSD binary package mirror or build your own with 'Tinderbox'.

On FreeBSD binary packages, every file is pre-hashed.


----------



## weland (Mar 13, 2013)

Serious ZFS support. It's awesome. I never want to see mdadm and LLVM and all that funky stuff in my life again.
 Dtrace
 Ports. It really gives me the flexibility I need as a developer -- stable packages for some things, latest versions for others. I also used to get that from portage, but that would break every once in a while.


----------



## sk8harddiefast (Mar 13, 2013)

Community. Everything starts from there and ends there. Google and docs not always give the answers. Sometimes you need a friend to help you. To be patient and have the courage to explain.


----------



## nbittech (Mar 22, 2013)

The best feature of FreeBSD is the fact that it can be used for almost anything, and the BSD license allows this.

The documentation and the community are wonderful as well.


----------



## break19 (Mar 22, 2013)

The Handbook.  Arguably the single most useful piece of the whole FreeBSD puzzle.


----------



## nekoexmachina (Mar 22, 2013)

There is only 1 feature, not favorite, just one: It Just Works.


----------



## jasonJC (Mar 22, 2013)

*Reliabilty*

I needed a server and started from scratch without any server experience. I managed to set up the features I needed just with the documentation available on freebsd.org (or elsewhere on the web). When I was reading the documentation, I always had the feeling, that the developers spent a lot of time on the system's design.

So far, I the following "features" are currently running on my HP Proliant Microserver NL40 (including a remote access card):

- ZFS Raid-Z (with periodical scrubbing and e-mail report)
- ZFS external mirror (synchronized and scrubbed periodically)
- CUPS (using with HPLIP)
- Glassfish Application Server
- Media server (miniDLNA)
- RSYNC remote data backups
- SSHD with restricted key based authentication (chrooted)
- AFPD/netatalk file server
- Redirecting root mails to an external account
- Handbrake for media batch encoding
- Recurrent system dumps
- GIT Server
- ...

*My favorite FreeBSD features are:*
- Reliability
- Documentation and Community
- Upgrade procedure
- Huge ports collection and easy package management
- Small memory footprint


----------



## halplus (Mar 23, 2013)

Favorite:

Reliability, Jails, License, Binary upgrades (this helps a lot upgrading remote servers and survive a reboot), Community, Modular design, Linux emulator. Support for some windows network drivers.

Less crazy than Linux. In Linux you get a zillion unusable stuff that just adds noise. You can even get a web server in the kernel. Way too geek! BSDs are more serious, more for real life. BSD is more think before you do.

Dislike:

*Can't run a decent virtual machine on top of it.

*Can't use Wine.

*Not as used as Linux

*Old ports are dropped too fast. With FreeBSD is upgrade or die. Sometimes an upgrade is not convenient specially if you run a load of software. Try to run a FreeBSD 8.0 without compiling and you'll know what I mean. Yes I know vulnerabilities and problems are lurking around. But sometimes you just need it working.

*Other thing I dislike and that is unnecessary. There are a load of packages that take ages to download since when building it, the system tries to contact a zillion defunct links sometimes just ending in the one provided by FreeBSD.org ftp server.

 Maybe it would be better to get the build system download a file containing active links and have fetch download one using some randomly picked package.

 Or maybe just put a simple web redirection to the actual location. This is very easy to implement and will eat less resources than an outdated list that eventually causes everyone go to FreeBSD.org FTP servers. How about use bittorrent? I wouldn't mind donating some of my bandwidth to some BSD peers by seeding some torrents as long as I can add a quota (time limited and rate limited). Let's say give 100 Gb monthly to other BSD users at 20Kb/sec top. About security well there are hashes and digital signatures.

Binary updates are complex and require relatively complex procedure. I would love a fire and forget. Sort like. Go update all you can and do whatever you need to do, just let me know when you are done.

Would like:

Check this out:

https://lwn.net/Articles/475361/

Something like this would be great to increase security. Sort like an application runs with capabilities and kisses them good bye after some point. Let's say a server reads all its configuration and from there nothing can be read. Or just starts with reduced capabilities. If you are only going to talk to the network why on earth would you need to write to a file? If you only read configuration files why do you need to write? And if you need to log that should be different than write to a file. If you only process files why would you need to talk to the network? This way if some binary is vulnerable scalation of privileges is harder. I know you can achieve something like this with privileges, users, processes, chrooting, jails and some other things as Postfix does to some extent, but is so hard to achieve that almost nobody does.

Also would love a transacted filesystem. If your software starts writing to files and in the middle it crashes. Why leave things inconsistent? If the operating system knows all of this? If something started writing files and it crashed without closing the transaction, have the OS revert all of that as in databases. That is something where Windows kills everyone and it helps a lot with reliability.

I would like the kernel to be hotpatchable like Linux. That would decrease "server down due to not programmed maintenance".

And some weird idea for the future. How about a kernel upgrade without touching userland? Something like. I put all things in standby (running processes, all network transfers, open files, jails ...) upgrade the kernel and resume after reboot. Sort of hibernate userland for some seconds and resume from there with the upgraded kernel.


----------



## tiny (Mar 23, 2013)

My favorite feature is the base system. I found on my original install that having mount_smbfs as part of the base system really nice to have as well as having both ee and clang. The base system is just so rock solid it makes me feel better about building ports on it. The base system really is a complete OS all of its own. Kudos go out to the ports tree too.


----------



## fonz (Mar 23, 2013)

halplus said:
			
		

> Can't run a decent virtual machine on top of it.


What's wrong with emulators/virtualbox-ose then?



			
				halplus said:
			
		

> Can't use Wine.


Why not?


----------



## h3z (Mar 23, 2013)

halplus said:
			
		

> BSD is more think before you do.



Well, this is very true. That is the way the FreeBSD developers seem to think while developing.

There is something else I have noticed about FreeBSD, that few other available systems offer. FreeBSD provides installation memory stick images. While not a benefit to the system itself, it is quite handy. NetBSD offers this also, but OpenBSD does not. And, many Linux distributions require you to use unetbootin. Some machines will accept a disk image (iso) directly written to a memory stick. But, it can be problematic, even when successfully bootable.


----------



## X3RNAL9AN1C (Mar 24, 2013)

What *I* like?

Documentation - When *I* first decided to try FreeBSD it was out of my league (skill wise), the documentation pulled me through
Organized - FreeBSD = A userland + a kernel. It's a very good development model IMO. This creates a more well thought-out design that is under complete control of the developers.
Fast, stable, secure - enough said
Ports tree (and the option to use binary packages when *I* don*'*t want to compile)
ZFS
I feel like a badass when *I* use FreeBSD.
I like the li*c*ence, it*'*s true freedom.
*B*ut if *I* could change anything about FreeBSD it would be the state of X.org. *I* wish it performed a little better.


----------



## h3z (Mar 24, 2013)

X3RNAL9AN1C said:
			
		

> I feel like a bad ass when i use FreeBSD.



It*'*s sad. But, still very true.


----------



## TiberiusDuval (Mar 25, 2013)

Just one word, ports


----------



## nezumigeek (Mar 26, 2013)

With FreeBSD, if I do not like something I can figure out a way to change it. And the FreeBSD daemon.


----------



## Hawk (Mar 26, 2013)

sk8harddiefast said:
			
		

> Community. Everything starts from there and ends there. Google and docs not always give the answers. Sometimes you need a friend to help you. To be patient and have the courage to explain.



I'd have to agree. Maybe I'm just used to FreeBSD, but I hate troubleshooting problems on a Linux system because it's hard to find good help and documentation (besides being chaotic, IMHO).


----------



## sossego (Apr 7, 2013)

The design of the system and the available software. I am setting up an audio/dj/studio laptop for a friend and he is happy with the near finished project. He is very impressed over the amount of control offered by software and the straightforwardness of the system.

There will also be tutorials that will let him know the how's and why's of FreeBSD itself.

This took a month to do. I am so glad for documentation and the privilege to be part of the BSD and Open Source communities.


----------



## charray (Apr 8, 2013)

My favourite features...


Man page â€“ I always show my students FreeBSD's man page so they can understand system calls faster. (They use some other operating systems to do programming, and the man page there are, well, you know what I mean.)

Geom_mirror â€“ It's the best tool for people who don't want to handle a hardware RAID card. Now we have ZFS but I am not yet brave enough to try on computers with small amount of memory.

Fast installation â€“ It's great to install software fast when a server is down. But I never tried reinstalling FreeBSD in urge so I cannot say this feature saved my life anyhow.

My wishes...


I want mod_php (and similar things) be back. I still remember the good-old days I issued pkg_add -r mod_php4 as the first command and the system equipped itself to run PHP scripts within minutes.

I want no more trouble with Xorg, HAL, etc. I even thought of implementing my own window system. (By the way, anyone heard of the Y window system? I want to see the relevant master thesis but couldn't find it online.)

QUOTA option default in GENERIC kernel. (I heard it is already so in 10-CURRENT.)

Non-GPL code in kernel and world, and finally ports (e.g., by an environment variable). So I can learn and reuse the code without fear of breaching anything, as long as I don't remove the license files.


----------



## ShelLuser (May 3, 2013)

ananm1 said:
			
		

> What is your favorite aspect or feature of FreeBSD? Is there anything you would change?


Like many other posters I have several features which almost immediately drew me right in..

*Acts and feels like a Unix system*
The most important thing to know about Unix, in my opinion, isn't so much how everything works but the way you can find out about it. The hierarchy, the manual page structure (and their contents) and most importantly: they way all that is executed. That is in my opinion an excellent aspect.

Put differently: I could easily stop using FreeBSD for one or two years, thus totally forgetting about all the specific tricks. And easily find them again the very moment I'm back behind the console.

For example; I want to know about bootstrapping my system but I forgot all about gpart. Of course I do recall fdisk but that's more PC oriented. So when I use `$ apropos bootstrap` I get to see this:


```
smtp2:/home/peter $ apropos bootstrap
boot(8)                  - system bootstrapping procedures
bootptab(5)              - Internet Bootstrap Protocol server database
loader(8)                - kernel bootstrapping final stage
loader.conf(5)           - system bootstrap configuration information
ExtUtils::Mkbootstrap(3) - make a bootstrap file for use by DynaLoader
```
So if I then check out the boot(8) manualpage I get this important part at the end:


```
[B]SEE ALSO[/B]
     ddb(4), boot.config(5), make.conf(5), ttys(5), boot0cfg(8), [I]bsdlabel(8)[/I],
     btxld(8), config(8), halt(8), loader(8), nextboot(8), reboot(8),
     shutdown(8)
```

And based on my experience bsdlabel() would be more than enough to catch my attention. And its "SEE ALSO" block will then directly point me to both fdisk(8) and gpart(8). And this is but one example, there is so much more where this came from.

It's this consistency which also immediately made me embrace Solaris/x86 when it first got out, even though it didn't ran as smoothly as Linux did back then. If you knew your way around Solaris on a Sparcstation and were put behind a Solaris 10 console (without any prior knowledge on ZFS or Zones and such) you'd still have all the options at your disposal to learn about those.

*Strict separation between Ports and base system*
I'm sure its something most FreeBSD users take for granted, but with a very deep Linux history I can tell that from this perspective it's an invaluable feature. Sure; Linux also bootstraps the kernel though a bootloader, control then eventually gets transferred to init and then your system starts.

But here's the problem...


```
root@debian:~# dpkg-query `which getty`
util-linux: /sbin/getty
root@debian:~# dpkg -p util-linux | grep Depends
Depends: lsb-base (>=3.0-6), tzdata (>=2006c-2), initscripts, dpkg (>=1.15.4) | install-info, debconf (>= 0.5) | debconf-2.0
Pre-Depends: libblkid1 (>=2.17.2), libc (>= 2.11), libncurses5 (>= 5.7+20100313), libselinux1 (>= 1.32), libslang2 (>= 2.0.7-1), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4)
```
Do you see libc up there? Its a common library which is used by many programs on your system. So what would happen if a package would depend on another version of the libc6 package which can't co-exist with this one? Or for that matter any of the other dependencies listed above..

Then you'd risk getty not working any longer thus effectively making it impossible to logon to your system.

Now, obviously it's not something which happens all the time on Linux, nor should it be used as an argument as to why one OS (or package environment) would be better than the other. That's bollocks because although the risk is real, its something which hardly happens. But during upgrades this becomes a very potential issue which is more than often waved away with "_Then you're better of with a clean install_".

*Ports*
For years it always felt like a waste of time to me: compiling your own programs while you could easily grab a binary package and be done with it. Ever since I started doing it myself I had to re-adjust that opinion quite drastically (180 degree turn). 

Apart from the previous (related) reason there's more to Ports. It doesn't provide software, it provides a means to install and use software whereas a common Linux environment provides software, with several risks attached.

On Linux you're not putting trust in the distribution, but in the dozens of package maintainers. Most of those will change the way a software package works in order to make it "fit in" with the distribution. This is why configuring Apache on Debian will be a completely different experience than doing the same on SuSE.

But there's more..  Maintainers will also easily change the way the software works if they deem it required to be used on the distribution. And because you're using binary packages chances are high that you won't be (able to) seeing what has changed and why. Sure; sometimes you get a file explaining the build options, that's hardly enough.

Take for example the Debian OpenSSL disaster (link to Slashdot, not my favourite resource but its a good one for this due to the comment section). This disaster even went as far as big names like GoDaddy (which I hold in good esteem for certificates and domain registrations) revoking and re-issuing *all* certificates which had been created for use on a Linux / Apache environment.

And all because one package maintainer thought he knew better and changed the package to make it more "suitable".

Sure; on Ports there are also changes (patches) being applied, but I have full access to the patches up front. I can see _exactly_ what is or isn't being done. Most of all; because it grabs the original tarballs there's nothing stopping me from compiling and setting up the whole thing myself if I'd really insist on that (which is bad practice, but simply as an example..).

And that's my top 3


----------



## zokstar (Aug 4, 2013)

1. Documentation
2. Community
3. ZFS


----------



## Videodrome (Aug 10, 2013)

Well, I'm new here from using CruncBang Linux which I still like on my netbook.  

I feel very comfortable with the FreeBSD package installer feature. It reminds of doing Apt-Get Install only now I do `pkg_add -r`. 

The documentation is also there.  I like the FAQ section. 

I also like the Beasty daemon logo


----------



## qsecofr (Aug 10, 2013)

I thought the license would have rated higher more often.


```
# license++
```


----------



## noeyx (Aug 13, 2013)

The community. Period.

The FreeBSD Foundation is transparent and friendly. I can feel their dedication and friendliness in their newsletters and in Google+ pages.

The forum people, especially the admins and mods, are nice and helpful.


----------



## Savagedlight (Aug 16, 2013)

qsecofr said:
			
		

> I thought the license would have rated higher more often.
> 
> 
> ```
> ...


I like to think the license is taken for granted.


----------



## LVLouisCyphre (Jan 4, 2020)

Reliability, customizability and the community.  I started in the IT business supporting Suns when the SPARCstation 1 made it's debut in 1989 which ran SunOS 4.  I like the ability to remove everything out of a kernel I don't need or want.


----------



## kpedersen (Jan 5, 2020)

A feature for me is Consistency.

An example is Jails; how it works has largely remained the same. If you look at the equivalent in Linux; you have lxc, OpenVZ and Vserver. None of these are the same technologies that they were a year ago; everything has been replaced under the same name. I just don't have mental energy to invest in any of them. So instead you get stupid sloppy things like Docker to "abstract" over the mess (Ironically, Docker also deprecated LXC for its own Go written system).

I don't need to mention the consistent init system either 

Also network configuration. FreeBSD is lucky to not have (let me know if I have missed any)

nmcli
/etc/network/interfaces
systemd-networkingd
dhcpcd
/etc/sysconfig/network*
It was quite frustrating to see kids with the Raspberry Pi through the interfaces -> dhcpcd transition get utterly screwed over by the lack of consistency in Linux.

Now I am in no way against change. But change that gets deprecated the next year isn't change. It is breakage!


----------



## CraigHB (Jan 5, 2020)

Seems there's a lot of that breakage you speak of in other systems, changing things without solid reasoning only to move on the next change a short time later.  Post #2 in this thread actually nails it pretty good in terms of what I like about FreeBSD, but the fact that changes in FreeBSD are mostly well thought out and reasonable is definitely a big one to like.  Not that FreeBSD is perfect there, but they do a lot better than others.


----------

