A further perk of the doggo approach that hasn’t been mentioned is that it makes it much easier to keep the demo in sync with the tag/ref/release of the library. It also encourages maintaining the demo. Almost every demo not included directly inside the library that I’ve tried ended up being broken after a surprisingly short period of time, as the maintenance of the demos tends to get deprioritized when in a separate repo.
Also, it’s totally possible to have multiple demos with the doggo approach. Just nest them or namespace them.