Thanks for taking the time to read this document and for your interest in contributing! There are lots of ways to contribute, whether it's reporting a bug, writing code, or helping someone solve a problem. Please read the relevant section of this document before posting in the discussions, opening an issue, or submitting a pull request.
Good news, you don't have to be a programmer to contribute!
- If you've found a bug or something isn't working as expected, you can open an issue
- If you have ideas for improvements or new features, you can post in the Discussions area
- If you want to help others use Camus, or need help yourself, you can answer or ask questions in the Discussions area
- You can show people how you're using Camus by writing a blog post, making a video, or telling your friends
The frontend could use improvements, including:
- Better accessibility
- Support for internationalization & localization
- Styling improvements
- New user-facing features
The backend needs work, for example:
- Support horizontal scaling to multiple instances
- New features, like user accounts and integration with other services
Why not help make it easy for anyone to deploy their own Camus server?
- Add packaging for a new platform (Arch, Homebrew, Flatpak, etc.)
- Write deployment tooling (e.g. Terraform Camus)
- Write a tutorial
Discussions is a space where users and contributors are welcome to interact, including things like asking/answering questions, discussing ideas for improvements or new features, providing feedback about the project, telling us how you're using Camus, etc. Feel free to post about anything related to Camus here, but please keep the following in mind:
- Be respectful in your interactions with others, and treat everyone as a human first.
- It's OK to disagree, but be constructive if offering criticism. Don't simply point out a problem with someone's idea without offering your own ideas for a solution.
- Harassment and personal attacks cannot be tolerated and should be reported to the project maintainer. Everyone is welcome to contribute regardless of race, gender, ethnicity, religion, disability, sexual orientation, personal appearance, or skill level.
If you have a bug to report or something is not working as expected, please open an issue. General discussion and questions are better suited to the Discussions area.
Before opening a new issue, search the existing issues and Discussions to see if someone else has run into a similar problem. If an issue or discussion thread already exists that addresses your problem, post there rather than opening a new issue.
When opening an issue, please be as specific as possible. For bug reports, include all relevant information such as your operating system, browser vendor and version, how to reproduce the problem, and (if possible) error messages or logs.
If you wish to submit a pull request, please open an issue first to discuss the changes you want to make.
Next, read the documentation on architecture and development.
When implementing your changes:
- Ensure that the style and formatting of your code conforms to the existing code. Use a linter (ESLint for TypeScript or Pylint for Python) to catch common issues and use Prettier to format TypeScript code.
- Add or update tests as needed
- Run the tests and make sure that they pass
- Add or update documentation as needed
When opening your pull request:
- Write a description of your changes
- Rebase your branch on
master
and squash your commits to a minimal number - Ensure that the automated checks pass and make updates to your PR as needed
- Wait for a review from the project maintainer and make further changes as requested
Software is a perpetual work-in-progress, and we're all constantly learning new things as tools, languages, and code evolve. So long as we treat one another with respect, together we can make progress and build something useful.