The Pain Points of Submodules

Submodules are precise, but every clone has to cooperate. The fresh clone pulls the update:

A pull that does not update the submoduleShell
cd ../fresh
git pull -q
git status -s
git -C public/vendor/ui status | head -1
git submodule update
cd ../booknest
Output
 M public/vendor/ui
HEAD detached at 25b55ab
Submodule path 'public/vendor/ui': checked out '0e31a26e08045bd816e8008085e067de22594024'

The pull moved the recorded commit but not the folder, which still held 1.0.0, so a careless git commit -a now would downgrade the library for everyone. The common complaints follow from that design: