How to contribute to Komiser

Introducing Komiser

Komiser is an open-source cloud-agnostic resource manager. It integrates with multiple cloud providers (including AWS, OCI, DigitalOcean, and CIVO), builds a cloud asset inventory, and helps you break down your cost at the resource level.

The project has been revitalized with a vibrant community of contributors and maintainers that you can be a part of. In this practical guide, we will outline how to become a part of the expanding project community.

How to get involved

Contribution to Komiser is open to anyone with a bit of git knowledge and a desire to get their hands dirty. The best place to connect with other contributors is on the Tailwarden Discord server, where you can share progress, ask questions, and request features. For beginners, we recommend starting with issues tagged as "good first issue" as they are more straightforward and accessible.

Example of good first issues

To make contributions, you will need to fork the Komiser repository on GitHub and submit pull requests. If you need a refresher on Git, check out this guide. Contributions can range from small things like correcting spelling mistakes in our documentation to developing new feature integrations. Here are some things you can do today to get started contributing:

When you've found an issue to work on, read our contribution guidelines for best practices to follow.

Contribution guidelines

We recommend discussing your plans on our Discord (join our community server) and heading on over to the contributors' section before starting to code - especially for more ambitious contributions. This gives other contributors a chance to point you in the right direction, give feedback on your design, and maybe point out if someone else is working on the same thing.

Any significant improvements should be documented as a GitHub issue before anybody starts working on it. Please take a moment to check that an issue doesn’t already exist documenting your bug report or improvement proposal. If it does, it never hurts to add a quick “+1” or “I have this problem too”. This will help prioritize the most common problems and requests

Feel free to communicate through the #feedback and #feature-request Discord channels. If we identify you as a contributor, we will add you to a private #contributors channel, to expedite internal communication (Hope to see you there!).

GitHub Workflow

If you've decided to contribute to the Komiser codebase, you need to fork the GitHub repository. From there, clone the fork to local storage and place the Komiser code on your GOPATH.

Get your local master up to date. Note that depending on which repository you are working from, the default branch may be called “main” instead of “master”.

How to fetch the latest changes from Komiser repository

Create your new branch. If it’s a bugfix branch, name it fix/XXX-something where XXX is the number of the issue. If it’s a feature branch, create an enhancement issue to announce your intentions, and name it feature/XXX-something where XXX is the number of the issue.

You may now edit files on the new branch.

Contributing to Komiser Engine

Komiser engine is written in Golang. You can contribute by adding a new cloud resource or integrating a new cloud provider. Currently, Komiser supports the following cloud providers:

  • AWS
  • Oracle Cloud Infrastructure
  • DigitalOcean
  • Civo

Here is a video demonstration of how to incorporate a new cloud resource or service into Komiser:

Write clean code. Universally formatted code promotes ease of writing, reading, and maintenance. Always run go fmt before committing your changes. Most editors have plugins that do this automatically.

Contributing to Komiser Dashboard

Komiser dashboard is written in React and Next.js. You can contribute to the frontend part by switching to the dashboard folder. From there, you can install the NPM dependencies and run the local server.

How to run the live server
You will need to periodically fetch changes from the upstream repository to keep your working branch in sync

Once, you’ve implemented the frontend changes, make sure to build the project and embed the out folder as a Go asset with the following commands:

How to build the dashboard and embed as Go asset

Pull Request Process

When your changes are ready for review, push your working branch to your fork on GitHub:

Command to push the feature branch

Once your pull request has been opened it will be assigned to one or more reviewers. Those reviewers will do a thorough code review, looking for correctness, bugs, opportunities for improvement, documentation, comments, and style

Make sure you include relevant updates or additions to documentation when creating or modifying features.

Once you’ve received review and approval, your commits are squashed, and your PR is ready for merging.

Congrats you’re officially a Komiser contributor 🎊

Thanks!
Regardless if you are a Developer, DevOps, or Cloud engineer. Dealing with the cloud can be tough at times, especially on your own. If you are using Tailwarden or Komiser and want to share your thoughts doubts and insights with other cloud practitioners feel free to join our Tailwarden Discord server. Where you will find tips, community calls, and much more.