Don't be too hard on these guys. In a former life, I did appliance-type hacking on Solaris, and one of the first things you learn is that everything is a hundred times harder than you think it ought to be. Back then, even Sun engineering looked at what we were doing and I'm pretty sure they thought we were crazy. Back then, the goal was to get a SPARCstation 5 clone, with some special additions for appliance use in hospital operating rooms, to boot, reliably, from power-on to having a complex medical monitoring package up and running in less than one minute. That implies a lot of things. Like: You can never block on fsck. For that matter, you can't afford the time for fsck. So you do all sorts of dirty little things like keep all your key filesystems mounted read-only. You also ditch the system's init(8), and code it in C instead, leaving out all the tediously meandering /bin/sh shell scripts, superfluous fluff, and all the other bloat that made a typical SS5 boot to a text login: prompt in like 4 MINUTES. You get to do all the fun stuff like mounting filesystems and configuring network interfaces in your init's C code. We had X11 on-screen something like 32 seconds after power-on, followed by application launch at 40 seconds. Reliably. With many bells and whistles that might remind you of FreeNAS, like alternate boot partitions for upgrades.
If you remember the early FreeBSD variant "PicoBSD"... I took a bunch of the experience and some of the strategies from that Solaris project and made a FreeBSD-on-a-floppy called XKERNEL that booted into X11, a mostly-diskless Xterminal affair. That was actually the basis and inspiration for PicoBSD, or so I'm told. NanoBSD came around and replaced it, perhaps thankfully, since a NanoBSD system is a lot more functional and a lot less stripped down.
But there's one thing that I am *very* confident saying, and it is this:
As the complexity of a system and its services increases, the difficulty of making it work in all likely configurations increases, probably exponentially. We were blessed on Solaris by needing a very straightforward system on hardware that we were manufacturing a mile away. That meant that we didn't have to deal with things like probing around to determine what kind of network interfaces were in the system - we KNEW. We didn't have to worry about different disk controllers or too much abstraction in /etc/fstab; everything was pretty nailed down. That makes building an appliance operating system easy.
But when you have a complex system, like FreeBSD, *decades* of experience are encoded in the system rc scripts. People have run these things in every bizarre configuration you can imagine, and then dozens more that you cannot. And along comes FreeNAS, which discards much of that, in search of rebuilding the OS as an appliance platform. These guys, well, they're not starting from scratch, but it is INSANELY complex to figure out how to make these things do their tricks and do them reliably. Just booting up and making things run in an acceptable order, so that you don't get errors and deadlocks, that's a really big challenge.
I'm hesitant to be overly critical of someone else's design and implementation of an exceedingly complex software system because I know from my own experience that it's *hard* to do. The way I usually tackled it was to build frameworks that would start out with proof-of-concept implementations, then I'd learn what I didn't know and didn't predict, rework things, test again, and then fill out the implementation. Sometimes it'd break again in an unexpected way after something else got built. It's not fun and it's not easy. The workable solutions are sometimes completely counter-intuitive. They're blessed to be working in a script language, which makes development a ton easier, but they're also implementing something that's hideously complex.
I can understand that as a FreeBSD user, it's kind of hard to see that perspective, because the perception of FreeBSD is "it just works." So of course why is it hard to make FreeNAS work too? But I think that's kind of the wrong way to look at it.