Skip to content

Latest commit

 

History

History
34 lines (22 loc) · 2.06 KB

principles.md

File metadata and controls

34 lines (22 loc) · 2.06 KB

h+h lab principles

Protect users from ourselves

For every project, we need to create a document with all security risks and how we reduce these risks. This document should cover attacks from:

  • Ourselves. What if we start to be an evil company? The document should especially cover preventing ourselves from being an uncontrollable monopoly.
  • Government and big companies. Who has access to user data? How we can prevent data leaks.
  • Trolls. How can people use community rules in a destructive form?

Users-first

  • Users own their data. They should understand if we use their data for anything. Our architecture should allow them to remove their data or download it.
  • We should prefer local-first architecture.
  • User should be able to change client or move to another vendor.
  • UI should explain to users how everything works. No magic or black boxes.
  • We do not make decisions for users. We should explain the consequences to them and help them decide. Users should feel that they control the system.

Support diversity over mainstream

  • We should focus on specific cases instead of creating a universal system for everything.
  • In every app we should care about i18n, cross-platform support, and a11y.
  • There is no single truth. Freedom is right to be wrong.

Open by default

  • Monetization model or plans for it in early stages should be open and documented. The security risks document from “Protect users from ourselves” is a good place for it.
  • We should keep discussions about the project open. If it is impossible, we should explain the reasons behind our discussions.
  • All code should be open-source by default. We should have good reasons if we need to close any component.
  • We should document all protocols used in an application.
  • We are making mistakes. We should not fear uncomfortable questions and even promote discussions about our problems. On the other hand, we should not blame anyone from the team for mistakes.