Simple: the very moment you run into a bug (which wouldn't be the first time) you risk the whole system to come crashing down.
And that's just stating the obvious; /usr/src/UPDATING was put in place for a good reason; same applies to /usr/ports/UPDATING.
This is the classic issue of: usually things will probably go right (or did they?) but when things do go wrong then you got one heck of a job to repair the damages.
Basically this is no different to me than turning on automated updates on a Windows server. In general all goes right, until that one time when....
If you can afford downtime then by all means, but in general a server is just that. Which means that automatic updates are the worst thing you can apply to it.
The big question is how does one keep up with security updates if you don't have
freebsd-update(8) and a relatively small maintenance window of around 24 hours per month that is pre-scheduled? I agree fully with running into bugs and it should be avoided at all costs. But the difference here is that I'm not trying to install the updates automatically, but rather only compile them automatically.
Lets say this window is on the second Sunday of every month. At 12AM on this day the script will pull the latest SVN stable branch, compile both the kernel and world, and install them on a empty zvol.
For example, you normally boot from the zvol
zroot/ROOT/default after the CD installation. This script will install the newly compiled system to
zroot/ROOT/(SVN Revision). At this point when an admin comes in around 9AM to do maintenance, they can check current bugs, the UPDATING files, build logs, etc... to make sure everything went as planned. If everything checks out the admin can copy over configuration and execute
zpool set bootfs=zroot/ROOT/(SVN Revision) zroot and reboot the system. After it's verified that everything came up correctly the job is done. If the system doesn't boot up correctly or experiences some unexpected behavior they can just set the zpool bootfs entry back to the old root which will undo any updates as the build scripts never touched the old zvol.
So in reality i suppose it's not automatically updating, but rather automatically installing a second copy of FreeBSD into a separate volume and having an admin choose whether its safe to boot that new volume or not. If not, they can just
zfs destroy it. The Windows update analogy can't really apply to this process, because nothing is being overwritten or replaced. This would be more along the lines of having Windows automatically download the updates and letting an admin choose whether to install them or not.
The point of this is to avoid the amount of time
make buildworld and
make buildkernel takes when doing this manually, which on the machine in question (a low powered embedded server acting as an internet gateway) takes around 8 hours.
I'm not trying to be argumentative here, but I'm rather trying to think of any ways this could fail and cause the system to crash to a point to where we would have to restore from a backup. The only thing that comes to mind would be a bug in which the newly booted system corrupts the entire zpool. But with how I'm handling this, the admin should catch that before booting into the new system. Manually doing this update could have the same result if the admin where to overlook the bug. I would also surely hope that a bug like that could never make it's way into a stable branch.