Skip to content

Instantly share code, notes, and snippets.

@folex
Last active December 20, 2019 10:21
Show Gist options
  • Save folex/9e5145f23e7f4943b2b02f7613164a68 to your computer and use it in GitHub Desktop.
Save folex/9e5145f23e7f4943b2b02f7613164a68 to your computer and use it in GitHub Desktop.
How I understand local-first software (https://www.inkandswitch.com/local-first.html)

Вот как я понимаю каждый из пунктов:

1. No spinners: your work at your fingertips.

  • Работа приложения асинхронна относительно сети. Другими словами, если ты нажал кнопку, то результат (по возможности*) отображается сразу же, не ожидая ответа по сети. Добавил заметку – визуально она сразу добавилась, сервера ждать не нужно. *Про "по возможности": стоит проектировать UI/UX приложения так, чтобы основные пользовательские флоу не были завязаны на ожидание сети.

2. Your work is not trapped on one device.

  • Возможность синхронизировать данные с другими девайсами, другими платформами. Есть релевантный термин – continuity.

3. The network is optional.

  • По сути и есть offline-first – приложение хорошо (gracefully) работает без наличия сети, функционал может беднеть очевидным образом, но возможность использовать (ключевые?) функции остается. Упрощенно: пользователь успешно пользуется приложением как на супер быстром WiFi, так и в самолете без сети. Also: local-first apps keep their data in local storage on each device.

4. Seamless collaboration with your colleagues.

  1. Возможность шарить данные для коллаборации с другими людьми;
  2. Коллаборация не должна конфликтовать с offline-first (пункт 3): проблема мерджинга данных должна быть решена в UI/UX приложения, предположительно чз CRDT
  3. Предпочтительна real-time коллаборация
  4. Плюсом будет иметь возможность "to propose changes", как suggestions в Google Docs

5. The Long Now.

  1. Приложение должно продолжать работать* даже если разработчик перестал его поддерживать. * (на текущих версии ОС и девайсе, от обновления ОС/девайса всё может сломаться).
  2. Если разработчик случайно похерил все пользовательские данные, это локальная копия данных должна остаться в сохранности (так в git, например) c. Предпочтительно использовать распространенные не пропиетарные форматы файлов/данных, чтобы другой софт мог и сейчас, и через 10 лет их понять и распарсить

6. Security and privacy by default.

  1. Avoid the centralized cloud database holding everybody’s data
  2. End-to-end encryption is desirable

7. You retain ultimate ownership and control.

  • Разработчик/дистрибьютор приложения не должен иметь возможности лишить пользователя доступа к его данным (и видимо к купленному приложению)
  • У клауд приложений эта проблема не решена, тк приложение сильно завязано на cloud APIs
  • Продажей софта по подписке – плохо
  • Проблема: пользователь отвечает за бэкапы своих данных
  • Вообще это самый мутный пункт для меня, тк плохо понятно чего именно тут Клеппманн хочет, и как это должно быть отражено в моделях покупки софта
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment