Favorite FreeBSD Feature?

There are many.
  1. Kernel and userland are as one.
  2. Base system has low resource requirements.
  3. Initial setup of user accounts allows privileged and unprivileged users to be created.
  4. With ports/packages, desktop environments can be setup not to run over with each other.
  5. The community, developers, users, et al/cetera are good people.
 
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
 
Not having to go hunting around the internet for solutions to problems, due to excellent documentation, this forum and consistent way of doing things.
 
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.
 
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.
 
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.
 
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?
 
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.
 
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.
 
  • 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.
 
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.
 
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
 
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.
 
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.
 
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.
 
Back
Top