Компания Mozilla решила приостановить работы над проектом Electrolysis. Напомним, что в рамках этого проекта велись работы по переводу браузера на многопроцессную модель, которая позволила бы обрабатывать контент и пользовательский интерфейс разными процессами.
Причиной прекращения развития проекта в самом ближайшем будущем стала необходимость вносить слишком значительные изменения в Firefox на уровне архитектуры.
Чтобы перевести уже сложившийся и изначально построенный на базе однопроцессной модели продукт на абсолютно новую архитектуру, потребуются значительные вложения ресурсов и привлечение различных команд разработчиков. Начиная с тех, которые занимаются дополнениями и интерфейсом и заканчивая командами, развивающими фронтэнд и ответственными за выпуск новых релизов.
Но главной причиной стало то, что даже после перехода на многопоцессную модель нет никаких гарантий того, что будет обеспечена полная работоспособность всех существующих дополнений, без необходимости вносить в них изменения.
Вместе с тем, есть другие пути повышения отзывчивости интерфейса. Их реализация потребует значительно меньше средств и времени. Именно на такие проекты разработчики планируют обратить свое снимание в первую очередь.
Среди них отмечается вынос выполнения плагинов в отдельные процессы, оптимизация работы сборщика мусора и переработка кода обслуживания внутренних баз данных.
Разработчики полагают, что подобные небольшие инициативы позволят в течение более короткого времени достигнуть впечатляющих результатов в повышении отзывчивости работы веб-браузера.
Однако, помимо решения проблем с отзывчивостью интерфейса, многопроцессная архитектура имеет ряд дополнительных преимуществ, которые невозможно будет реализовать в рамках однопроцессной модели.
К примеру, сюда относится повышение производительности во время работы на многоядерных процессорах; решение текущих проблем с фрагментацией и отдачей освобождённой памяти обратно операционной системе; защита от сбоев (чтобы после сбоя закрывалась только одна вкладка, а не весь браузер); повышение безопасности (чтобы код, связанный с текущей вкладкой выполнялся в своей "песочнице", и не зависел от обработчиков других ресурсов; а для эксплуатации уязвимостей необходимо преодоление сразу нескольких уровней изоляции).