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 in which 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. For example, B can be a branch keyed to a specific FPP feature or a specific alpha release number.

  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 B into fpp/main.

  7. Delete B.

If we follow this procedure, then all FPP developers 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.

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