For the most part, Compat.jl allows you to simply write the newer APIs and syntaxes exactly as you would were you only supporting 0.7. In the cases where that’s not true, there’s the @compat
macro or explicit version checks. While that adds a bit of visual cruft, bots like Femtocleaner can automatically remove them as you update your version bounds.
Using Compat.jl doesn’t really do anything when run on the latest version — it’s basically just a no-op. IMO: do as you see fit based upon your own projects, your own bandwidth, and your users.
Stefan has a great post talking about the pitfalls of the chicken-and-egg problem of trying to get everyone to jump to 1.0 simultaneously, looking to Python’s pain points as inspiration.