Contributing to Starflaker

Thank you for your interest in contributing to Starflaker! This document provides guidance on how to contribute changes and new features to the Starflaker project. We appreciate your contribution and aim to make the process as smooth as possible.

Quickstart

The easiest way to contribute to Starflaker is with Clovyr Code:

Simply open the Clovyr Code environment, develop and test your changes, push them back to your Starflaker fork, and open a pull request! For more detailed steps, see getting started below.

Codebase Overview

Starflaker is primarily focused on its core functionality, including the command line interface and the main processing engine. Additional functionalities, such as plugins and integrations, may be implemented as separate components. Please refer to the relevant documentation or README files for specific development instructions.

Community Guidelines

All communication and contributions within the Starflaker project, including GitHub, the community forum, and other official communication channels, are subject to our community guidelines. We encourage respectful and constructive interactions among community members.

Bug Reports and Feedback

To report a bug, propose an enhancement, or provide any other feedback about the product, please open a GitHub issue using the appropriate template. It is essential to provide all the requested information in the issue template to maximize the chances of addressing your feedback effectively.

Contributing Fixes

Starflaker is a complex tool, and even seemingly simple changes can have far-reaching effects on the codebase. It may take time to become familiar with the impact of modifications. To get started with contributing, we recommend selecting an existing bug or issue and working on it.

For new contributors, we have labeled specific issues as "Good First Issue." These issues are suitable for familiarizing yourself with Starflaker's development process and codebase.

Before making significant changes, it is highly recommended to discuss your proposal in a GitHub issue. This allows the Starflaker team to provide feedback, discuss the scope of the change, and ensure alignment with ongoing work.

For substantial proposals that involve a significant design phase, it is important to understand that immediate feedback may not be feasible. However, we appreciate hearing about your use cases to consider them as part of future projects.

Most changes will require updates to the test suite and documentation. The Starflaker team can provide guidance on testing strategies for specific scenarios and help ensure the proposed documentation aligns with the standard conventions.

Please note that Starflaker is primarily maintained by a small team, and response times to pull requests may vary. Priority is given to requests related to existing GitHub issues where the team has already indicated involvement or acceptance of pull requests. Nevertheless, we value all contributions and will provide feedback as soon as possible.

Areas of Special Concern

There are certain areas in Starflaker that require special attention from the development team:

State Storage Backends

The team is currently not accepting pull requests for new state storage backends. The focus is on finding maintainers for existing backends and removing those without maintainers. Please refer to the CODEOWNERS file for the status of a specific backend. Community members interested in a particular standard backend are welcome to contribute to its maintenance.

Provisioners

Provisioners in Starflaker, such as configuration management tools or custom providers, have complexities and uncertainties associated with them. While provisioners are available as a last resort, we encourage exploring alternative techniques first. Consequently, pull requests and issues related to provisioners may not receive immediate attention.

Maintainers

Maintainers play a crucial role in the Starflaker project. For code sections with listed maintainers in the CODEOWNERS file, the expectation is that maintainers will review and collaborate on pull requests related to their areas of expertise. Please be mindful of maintainers' time and provide ample opportunity for them to review your contributions.

If you are interested in becoming a maintainer for an unmaintained area of code, you can submit a pull request against the CODEOWNERS file, attaching your GitHub handle to the relevant area. Coordinate with existing maintainers, if any, to ensure a smooth transition.

Getting Started

To contribute to Starflaker, follow these general steps:

  1. Fork the Starflaker repository to your GitHub account.

  2. Clone your forked repository to your local development environment.

  3. Create a new branch for your changes based on the latest main branch.

  4. Make your changes, ensuring they align with the existing code style and conventions.

  5. Write tests for your changes to maintain code quality and functionality.

  6. Update the documentation, if applicable, to reflect your changes.

  7. Commit your changes with clear and descriptive commit messages.

  8. Push your branch to your forked repository.

  9. Open a pull request against the main Starflaker repository, following the pull request template and guidelines.

  10. Engage in the review process, addressing any feedback provided by the maintainers.

  11. Once approved, your changes will be merged into the main branch.

Conclusion

Contributions from the community are highly appreciated and help improve Starflaker for everyone. We value your time and effort, and we will work collaboratively to ensure the success of your contributions. Thank you for your interest in making Starflaker better!