You....don't have to. You haven't had to for years. Just use pkg instead of ports.
> * lack of support for hardware (Linux has gotten really good at having drivers for hardware)
Other than wireless, FreeBSD's driver support is pretty solid. I have a cutting edge machine (haswell-e, nvidia, ddr4, etc) and not one device is unsupported. In fact, FreeBSD has much less hassle with the audio driver than any Linux distro I've tried.
> * ports of desktop applications were not always available, and the POSIX shim to use Linux applications didnt always work without some hacking
Well yeah, it's still a different OS. If you need some specific commercial software (source unavailable), you'll probably have to jump through some hoops to get it working.
> * On the server side, Linux pretty much caught up on performance
Sure. But when performance is on par, it's not really a factor anymore. At that point, it's just what is easiest/most enjoyable to manage.
> * 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
I've never run into this issue. As long as you aren't just trying to run commands from stackoverflow, you should be able to adapt things for the few nuances pretty easily. It's really just about knowing your OS. Again, not necessarily true for commercial software...but the case for most FOSS.
Now I went back to Ubuntu because I'm to lazy to set up Arch. I'm not even using a tiling VM anymore.
While I see great value in BSD as a server OS, Linux is just much more convenient on the desktop, and this leads to a circle where I use what I know, what I use what I know. So I tend to also run Ubuntu on servers because it's one system less to know.
Though still, if I needed to build a file server, or an environment where security is important, I would take a closer look at BSD.
As for your other problems, FreeBSD is targeted toward servers so that's where your problems come from. I like FreeBSD a lot and have been using it since version 4.7, but I still prefer to use OpenSuSE for my desktop/laptop.
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.
From my view in using BSD, it's like Linux's universe doesn't even care for its' developers time and sacrifice. Distributions lax on standards, throw out the baby with the bath water whenever a new system comes on the block and leaves upstream and vendors to clean up the mess.
Keep in mind - no one can read every developer mailing list for every project, let alone participate when these things turn into politics. You may see things that are critical of the architecture of a new technology, and then opposing criticism that the legacy systems are outdated and hard for new engineers to understand. Both may be valid, but they conceal something deeper, an outsider comes out of nowhere calling the shots and want to rip up a lot of stuff that works.
All I know is that developers who invest their time maintaining these systems get a raw deal. Maybe the new system, be it mir, systemd, etc. really improves the experience and will work out "long term". But developers are already jaded and heard this too many times.
* building everything from source got old
* lack of support for hardware (Linux has gotten really good at having drivers for hardware)
* ports of desktop applications were not always available, and the POSIX shim to use Linux applications didnt always work without some hacking
* On the server side, Linux pretty much caught up on performance
* 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.