They choose when they want to make the upgrade. Usually the problem is porting the crapware that they put on vanilla Android (which is in fact fine), nd doing QA that the new version doesn't have regressions over the last one. For some reason the process is slow, probably because they don't care and don't invest into it.