Skip to content

Latest commit

 

History

History
48 lines (34 loc) · 2.28 KB

CONTRIBUTING.md

File metadata and controls

48 lines (34 loc) · 2.28 KB

Contributing to Omnisearch

This document is a Work In Progress.

Thank you for wanting to make Omnisearch an even better plugin :)

Please read this document before beginning work on a Pull Request.

Preface

  • Omnisearch is a personal hobby project. I'm happy to discuss about your ideas and additions, but ultimately it is my code to grow and maintain.
  • Always file an issue/feature request before working on a PR, to make sure we're aligned and no-one is making useless work.
  • Omnisearch is still in its infancy: some important features are missing, and there will be architectural changes.
    • As such, I may refuse your PR simply because it will have to be refactored in a short-ish term

"Good First Issue"

Are you a beginner, looking for a small open source contribution? Look at the "good first issues". Those issues have a limited scope, don't require intricate knowledge of the code, and are easy enough to locate, fix, and test.

If you wish to work on one of these issues, leave a comment and I'll assign it to you and give you some pointers.

Code guidelines

  • Respect the existing style
  • Don't add npm dependencies if you can avoid it. If a new dependency is unavoidable, be mindful of its size, freshness and added value.
  • Use Svelte for all UI needs.
  • Try to not shoehorn your code into existing functions or components.
  • Simple is better. OOP is not inevitable. Simple functions often work as well, if not better.
  • If you must use OOP, avoid inheritance as much as possible, no one likes digging several layers of abstraction.
  • Comment the code. What, why, how, just make your intent clear.

Philosphy

Always respect those UI & UX points:

  • The core feature of Omnisearch is its "smartness".
    • The simplest queries must bring relevant results.
  • The search interface is a means to an end.
    • The less user interactions, the better.
    • All settings must have sane defaults.
  • The UI must not block / show visible lag.
  • Keyboard navigation first
  • If you're adding a feature, make it toggleable (if desirable).
  • The results must always come fast by default.

Style guidelines

  • .ts files must be formatted with "Prettier ESLint"
  • .svelte files must be formatted with "Svelte for VS Code"