> * building everything from source got old

No need nowadays.

pkg(1) works out of the box now. It's faster and way simpler than apt-get/yum.

> * lack of support for hardware (Linux has gotten really good at having drivers for hardware)

I recommend sticking with commodity hardware and making sure your chipset is supported before hand.

> * ports of desktop applications were not always available, and the POSIX shim to use Linux applications didnt always work without some hacking

Also happens. If only more applications made themselves POSIX compliant.

Normally though, just patching a few things in /files in the port is enough. Sometimes all it takes to port an app from Linux to FreeBSD is just fixes to makefile/automake/cmake files.

> * On the server side, Linux pretty much caught up on performance

Can you elaborate more on what you mean?

> * As the Linux community has grown, the resources available to Linux users are amazing. FreeBSD feels like Linux used to - always having to hack around and try to research how to make it work and nothing quite working smoothly (on the desktop - less of an issue for servers, where FreeBSD has always shined). Linux has reached a point where I use Linux as my primary desktop OS, and it works great. FreeBSD for the desktop feels like a step backwards.

Some things in FreeBSD are painful. I can use both FreeBSD and linux pretty efficiently and get done what I want.

That said, I have the opposite impression you have. To me, Linux seems like a hack and a step backwards.

For one, since linux as a kernel only covers so much area, distributions are left to curate how many of the design decisions go down.

Put yourself in the shoes of a developer who goes out of his or her way to learn upstart, for instance. You invest a good part of your time into the codebase, with a sense of confidence you're going to be able to utilize this onward in your career and future projects.

Then you find, this system you spent time learning is now obsolete and you have to relearn everything, There's systemd.

Imagine if this were to happen every few years with a new piece of software. You want to know why it feels useless to learn Xorg? Because they're trying to phase it out for mir. Well, mir isn't "done" yet, and even if it was ready, other software has to integrate with it. There is a huge collaboration that has to take place between developers learning how mir works, and keep in mind, they're getting exacerbated having a new system replace the old every couple of years. Then you have to manage the snafu of packaging it and how you engineer a switch like mir into the release.

Linux may seem more bleeding edge than BSD, but this is only a veneer. To developers, it's hell having your investment in learning something dashed away and having your time put into some venture you may or may not agree with.

BSD drastically simplifies these pains for devs. There is something called the "principle of least surprise". As well, freebsd's base system includes tools like rc(8), package management, etc. which in turns gives a vastly more cohesive experience.

I appreciate the work of both systems greatly - but few give a really care to the real reason you see drama over things like systemd. From my view in using BSD, it's like Linux's universe doesn't even care for its' developers time and sacrifice.