Hermes/DESIGN.md

2.1 KiB

Design Docs

Features

  • Full modern protocol support
  • Native Linux application
  • Lightweight, fast, small footprint
  • Easy to use & accesible
  • Dark crystal profile backup
  • Tor & proxy support
  • Drafts & Bookmarks functionality
  • Powerful filters & muting
  • Basic social functionality (posts, reactions, profiles, CWs, private messages, pictures, etc.)
  • Full markdown support (Discord-like)
  • Well documented, easy to contribute to
  • Welcoming & accepting community :3

Frontend

Make sure to follow the GNOME Human Interface Guidelines.

  1. Accessibility: Software should be useable by everyone, this includes translations, screen reader support, streamlined UX, good contrast, and keyboard shortcuts, among other things.
  2. User Friendly: Software should be simple for users to understand and navigate, even for non-technical users. It should never do anything without being explicitely specified by the user.
  3. Plurality Friendly: All UI should work well with multiple users, always having a way to change & view the active user.

Backend

  1. Document: Comment your code! Don't be overly descriptive with comments everywhere, but have verbose comments in necessary positions. Also, it would be nice to make blog posts or something about the process, any problems you encounter, etc.
  2. Format: Use cargo fmt before you commit in order to keep a consistent code style.
  3. Organize: Keep similar functions in different files, similar files in folders, etc. Separate functions to allow reuse.
  4. Simplify: Keep it as simple and easy to understand as possible. Don't introduce new dependencies unless necessary, and try to pick more lightweight options. It should be able to run fine on even low end machines.
  5. Conventions: Use proper Linux & SSB conventions. Store configs in ~/.config, data in ~/.local/share, etc. Don't use ~/.ssb, as reccomended by Manyverse devs.

Licensing

All original code and assets will be licensed under the CNPLv7+ copyfar-left license