Pull Request Guidelines - Longus/FluidNC GitHub Wiki

Guidelines for creating pull requests.

Issue

Please create an issue for general discuss regarding the changes in the pull request. Ideally this is done before the pull request is submitted. Pull requests are always welcome and encouraged, but coordinating efforts saves time for everyone. Discussion via Discord is also acceptable. Put a link to the discussion in the PR description.

Branches

Please target the latest version of the Devt branch with your pull requests. All new changes and features are staged in the devt branch before merging to the mainbranch.

Before you submit your PR, be sure to pull all the latest Devt changes into your working tree, otherwise a mess will result, possibly undoing work that is already committed. The git command git pull --rebase upstream Devt - or the equivalent operation from one of the Git UIs, is the best way to do it. "Rebase" is the key. If rebasing causes problems, another git workflow is to create a fresh branch based on the latest Devt, then "cherry pick" your commits from your working branch onto the fresh branch.

For experimental features, it is also acceptable to target other, non main, branches.

Versioning

Versioning is applied when we do a release

Code Style

See this doc for our coding style

Important Code Guidelines.

  • ISRs: The ISRs have to be very fast. They block all processing, including RTOS tasks. The ESP32 has a floating point bug related to ISRs and the FPU. Do not use floats in ISRs or anything that could be called by an ISR. Doubles can be used. They bypass the FPU, but require a lot of time to process.

Review and approval process.

We are typically working on several things at the same time. These are typically on branches or PRs targeting devt. We determine what we want included in the next release. Only the items we plan on releasing next will be merged with devt. This keeps the main branch current with the release and devt is the staging area for the next release. Feel free to try to convince us to add it to the next release via Discord, but be respectful of our decision.

If your PR is not targeted at our next release, it will have to wait. When it is time for your PR to be approved you must make sure it is rebased to devt first.

Discord

The devs do all their discussion on Discord. We have some dev only channels where only devs can post. We restrict it to keep the chatter down. If you need access to post, please request it on a public channel of Discord.

Trello Board

We use a Trello board to track features, bugs. This allows us to put them into stages and track the progress. Only approved developers have access to Trello. If you have successfully implemented a few changes to FluidNC, request access.

The Wiki

There is no good way to issue pull requests against the wiki. If you have a suggested change to the wiki, please create a new issue. Issues are formatted with markdown, just like the wiki. Put your changes and any images in that issue. We will edit the wiki with those changes.