Subfolders of this folder are git submodules, that is, code pulled in from
different git repositories. Because of the way git submodules work, stick to a
few rules when working with the code.

* When you clone the repo, use the --recursive option to get all submodules.
  You should have done this already—if you forgot, you can still get the
  submodules by running:
  git submodule update --init --recursive

* After a pull, merge, checkout or anything else that changes HEAD, be sure to
  run git submodule update to make sure you get the correct revision of all
  submodules. Not doing so may cause the code to misbehave in odd ways.

* Before you commit, review your staged changes and look if they contain a
  submodule. If you don’t remember updating a submodule, you shouldn’t be seeing
  any changes to submodules here. Else, it’s a possible indication that you
  forgot to update your submodules (and are about to revert to an old version of
  a submodule)—re-run git submodule update and test your changes again to make
  sure they still work correctly.

* Don’t make any changes in a submodule here—they will not be propagated
  upstream and will eventually be lost. Instead, clone the upstream repository
  for the submodule you wish to change, make the changes there and push them
  upstream (or open a merge request). Once your changes are accepted upstream,
  update the submodule and check out the revision you want to use.
