Files
plans/kmp/2026-04-23_Вопросы-КМП2.md
Михаил Капелько a344ef773c 24.04
2026-04-24 10:28:10 +03:00

65 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Google Doc URL: https://docs.google.com/document/d/1DfJsbyVZ98udo_hvU1DUagGYkTHabW0wMH5T5DvmCYI/edit?usp=sharing
WARNING: НЕ РЕДАКТИРОВАТЬ ТУТ, ЭТО ЧЕРНОВИК
Привет, коллеги,
на созвоне в четверг 16.04 команда Android представила команде КМП пример с авторизацией для обсуждения потенциального подхода КМП-2.
По итогу созвона у команды КМП возникли следующие вопросы к КМП-2:
===
Вопрос №1
===
Риск нарушения принципов Single source of truth (SSOT, Единственный источник истины) и Single Responsibility Principle (SRP, Единственная ответственность)
В КМП-1 следование SSOT и SRP достигается шудами/редьюсерами: один шуд отвечает за что-либо конкретное. Например, в реализации контактов на КМП-1 шуд/редьюсер contShouldResetContactsVisibility отвечает за видимость списка контактов на экране, поэтому всегда можно найти концы (кто меняет видимость и по каким условиям она меняется).
===
Вопрос №2
===
Риск конфликта разных механизмов диспетчеризации (многопоточности)
В КМП-2 предполагается использование Flow, Coroutines и подобных технологий, которые имеют свой жизненный цикл, отличающийся от жизненного цикла на платформах Apple.
В КМП-1 многопоточность находится вне общего кода КМП, т.е. находится в эффектах,
на стороне конкретной платформы, используя те инструменты, которые принято использовать
на конкретной платформе.
===
Вопрос №3
===
Риск падения производительности
Как следствие из предыдущего пункта, использование нестандартного для конкретной платформы
механизма диспетчеризации может приводить к гонке данных и трудновоспроизводимым просадкам производительности.
===
Вопрос №4
===
Заявленный отказ от нативной поддержки Desktop
КМП-2 предполагает отказ от нативных приложений Linux, macOS, Windows. Это приведёт
к потере компанией компетенций команды Desktop, собравшей огромное количество
граблей при поддержки трёх систем: Linux, macOS, Windows. Все эти компетенции и грабли
придётся собирать с нуля при использовании подхода аля Electron. На поиск и исправление
заново найденных граблей уйдёт огромное количество сил и времени.
КМП-1, со своей стороны, интегрируется (нативно, через Kotlin Native) в Desktop
ровно на тех же правах логики,
как это происходит с Android и iOS: оставляя диспетчеризацию (многопоточность),
работу с оборудованием, сетью и т.п. на усмотрение конкретной платформы. Таким образом,
КМП-1 сохраняет компетенции, иcключает просадку по платформе Desktop, исключает
повторный поиск и исправления уже собранных граблей.
Есть ещё несколько вопросов, которые будет уместно задать лишь при наличии
КМП-2 на руках, т.к. пока КМП-2 существует лишь на бумаге. КМП-1, со своей стороны,
в рамках контактов уже прошёл первичное проверку командой тестирования и готов к повторной.
С уважением,
Михаил.