B, по соображениям безопасности.
Однако, насколько вы должны заботиться о том, чтобы ломать вещи в вашем приложении, во многом зависит от типа разработки, которую вы делаете. Обычный случай почти похож на кросс-компиляцию для другой цели, так как вряд ли какие-либо пользовательские машины настроены так, как dev-машины.
Если это веб-приложение, ваша «платформа» - это браузер (ы) и все, что вы используете на стороне сервера. Для меня это ruby, rails и plugins плюс apache / mysql и т. Д. На стороне клиента я не могу контролировать. На стороне сервера, я хочу применить как минимум исправления безопасности (кроме: просьба к разработчикам на стороне сервера, пожалуйста, выпускайте исправления безопасности в другом цикле к изменениям функциональности!). . Но обновления ОС обычно мало влияют на используемый мной стек dev-сервера, и в любом случае моя среда развертывания использует другую ОС (я разрабатываю для OSX и Ubuntu и развертываю в Debian и Solaris).
Если это настольное приложение, то это зависит от того, насколько тесно вы интегрированы со своей платформой и имеете ли вы контроль над ней в целевой среде. Поскольку я обычно использую Java, я вижу, что это платформа, а не ОС, хотя она требует тестирования на разных версиях ОС и версиях Java. Если какой-то патч для ОС ломает Java, то это отдельная проблема.
Если вы очень тесно связаны с ОС, тогда очень сложно проверить зависимости обновлений и почти невозможно без какого-либо интенсивного использования виртуальных машин, снимков и т. Д. Также, если вы настолько хрупки по отношению к ОС, изменения вашего приложение, скорее всего, выйдет из строя, если ваша целевая машина в любом случае будет иметь другую загрузку программного обеспечения или другую конфигурацию - снова очень сложно проверить.