Skip to content

F Prime and FPP Tandem Development

Rob Bocchino edited this page May 20, 2025 · 8 revisions

In some cases a change to FPP requires a change to F Prime, or vice versa. For example:

  • Some code generation may be added to FPP, and it may rely on a new header file in F Prime.

  • Some framework interface may change in F Prime, and this may require changes to the FPP code generation.

Hereafter we will call this situation F Prime and FPP tandem development.

Procedure

In the past, we have sometimes handled F Prime and FPP tandem development by allowing fpp/main to get out of sync with fprime/devel and using a different branch (usually a development branch on some developer’s fork of nasa/fprime) to run the code generation tests in FPP. As more developers work on FPP, we should avoid this situation. We should try to keep fpp/main in sync with fprime/devel at all times except during brief periods where we are merging approved pull requests.

Here is the procedure we will use going forward for F Prime and FPP tandem development:

  1. In nasa/fpp, create a branch B off of fpp/main.

  2. Review and approve pull requests to B with the FPP changes.

  3. Merge the head of fpp/main into B, but do not merge B into fpp/main.

  4. When the changes to B are ready for delivery

    1. Create an alpha release R against B

    2. Make a pull request to nasa/fprime/devel that updates requirements.txt to point to R and that makes the corresponding changes to F Prime.

  5. Review and merge the pull request to F Prime

  6. Merge R into fpp/main.

  7. Delete R.

If we follow this procedure, then every FPP developer will have a guarantee that merging fpp/main into a development branch will not break any testing they do against fprime/devel, except perhaps during a brief period between steps 5 and 6 above.

Note: This is the same procedure that we have been using for integrating FPP features developed on feature branches, e.g., FPP state machines and external parameters. The new part is to use this procedure for all FPP and F Prime tandem development.

Initiating Pull Requests to FPP

Under this procedure, if you are starting on F Prime and FPP tandem development, you should not make a pull request to fpp/main. Instead, you should work with the FPP maintainers to create the branch B before you start development, and you should make pull requests to B. In some cases, you can use an existing branch B; for example, you may want to contribute changes to an existing feature branch.

Clone this wiki locally