Ascend <> IFT Code Review / Sending Process

The review process that we follow is pretty simple, because we do not want it to be a burden on work.

1. Internal Review

Whenever you finish a ticket, someone in the office (likely Aaron or Andrew) will review your changes to ensure it looks good, and possibly test with hardware we have if there is hardware that needs testing. If either of them have comments or run into problems, ticket moves back to in progress.

2. Inform IFT of progress

Either someone internally or you should inform IFT of the progress we have made after we complete a ticket.

If we want to send IFT a build for them to use, follow step 3 and onwards

If they just need something to test quickly, you could just send them your debug android apk. Skip to step 5 if so.

3. Create a git release tag

IFT CI/CD builds use versioning in them based on their git tag. View the existing tags here: https://github.com/Inspired-Flight-Technologies/qgroundcontrol-ift/tags Create one that is a version higher than these tags. As an example, let's create a tag called v1.1.8

git tag -a v1.1.8 -m "This is a description"
git push origin v1.1.8

4. Run the CI/CD for that tag

Now that you made the tag, you should run the github workflow for the tag. Go to actions android here: https://github.com/Inspired-Flight-Technologies/qgroundcontrol-ift/actions/workflows/android_release.yml Click "Run Workflow" and select your git tag

Now the workflow will run.

5. Upload build to google drive

All builds can be found here: https://drive.google.com/drive/folders/1BVsK11dVs40R6IReBLTlUq0aOpoRkNYW Create a new folder in the same format that other folders are. Upload the file there. If it's a release file (you ran the CI/CD for it), make sure to include the version.


IFT Production Feature Switches

IFT has a way of controlling what clients get what features through a backend API they use. Justin requested for us to make all new features abide by this. Essentially, we want all new features to be controlled by this "switching" mechanism. Ideally, you do this before you send the final build because it is annoying to deal with when developing.

Steps to lock a feature behind IFT's feature switching

  1. Ask Blake from IFT to add a new value to the feature switcher. As an example, for the doodle stuff, we can call it "doodleAdditions"

  2. After Blake adds it, you can add areas in your code that disable the doodle functionality if the feature is turned off on IFT's backend.

QML Example:

or

I haven't done it in C++, but it is probably similar. Probably something like this

Last updated