Arguably, if camlp4 had been part of OCaml, there would have been no need to swap it out. It would have worked well with every new release and been part of merlin.
The problem with ppx is precisely that it’s tighly coupled to OCaml versions, unlike normal libraries. It’s probably going to be eventually fixed, but a deriving mechanism would by definition work on new versions without hassle.