Вот как я понимаю каждый из пунктов:
- Работа приложения асинхронна относительно сети. Другими словами, если ты нажал кнопку, то результат (по возможности*) отображается сразу же, не ожидая ответа по сети. Добавил заметку – визуально она сразу добавилась, сервера ждать не нужно. *Про "по возможности": стоит проектировать UI/UX приложения так, чтобы основные пользовательские флоу не были завязаны на ожидание сети.
- Возможность синхронизировать данные с другими девайсами, другими платформами. Есть релевантный термин – continuity.
- По сути и есть offline-first – приложение хорошо (gracefully) работает без наличия сети, функционал может беднеть очевидным образом, но возможность использовать (ключевые?) функции остается. Упрощенно: пользователь успешно пользуется приложением как на супер быстром WiFi, так и в самолете без сети. Also: local-first apps keep their data in local storage on each device.
- Возможность шарить данные для коллаборации с другими людьми;
- Коллаборация не должна конфликтовать с offline-first (пункт 3): проблема мерджинга данных должна быть решена в UI/UX приложения, предположительно чз CRDT
- Предпочтительна real-time коллаборация
- Плюсом будет иметь возможность "to propose changes", как suggestions в Google Docs
- Приложение должно продолжать работать* даже если разработчик перестал его поддерживать. * (на текущих версии ОС и девайсе, от обновления ОС/девайса всё может сломаться).
- Если разработчик случайно похерил все пользовательские данные, это локальная копия данных должна остаться в сохранности (так в git, например) c. Предпочтительно использовать распространенные не пропиетарные форматы файлов/данных, чтобы другой софт мог и сейчас, и через 10 лет их понять и распарсить
- Avoid the centralized cloud database holding everybody’s data
- End-to-end encryption is desirable
- Разработчик/дистрибьютор приложения не должен иметь возможности лишить пользователя доступа к его данным (и видимо к купленному приложению)
- У клауд приложений эта проблема не решена, тк приложение сильно завязано на cloud APIs
- Продажей софта по подписке – плохо
- Проблема: пользователь отвечает за бэкапы своих данных
- Вообще это самый мутный пункт для меня, тк плохо понятно чего именно тут Клеппманн хочет, и как это должно быть отражено в моделях покупки софта