Someone correct me if I'm wrong, but my understanding is that, in the
context of Racket at least, "deprecated" implies that we will be
removing that code in the near-ish future. As we recently did for, e.g.,
class100.
My understanding is also that we don't want to remove things like
mzscheme, mzlib, planet, or compatibility. So using the above definition
of deprecated, we don't want to deprecate those.
With that said, though, I very much agree with your sentiment: we should
have a clear way of signaling that people shouldn't use those. As we've
learned from the "unstable" collection, even large warnings are not
enough for that if there's valuable stuff in there.
With the package system, however, it's possible to remove code from the
main distribution without breaking code that depends on it (it just
needs the right dependencies). So it should be possible to essentially
do the same for the compatibility-lib package (which contains most of
the things I suspect you'd want to deprecate) as we did for the
unstable family of packages, and move it out of the main distribution.
In the process, we can move the last few bits of useful functionality
that exists in these collections, but not in more modern Racket
equivalents.
If we do that, then most people won't have that package installed, it
won't show up when they search the docs, and we win. And we can do that
without breaking anyone's code (assuming they have the proper
dependencies already).
(That may be trickier to do with planet, though, as I think it may be
embedded pretty deeply into our toolchain.)
Doing that for compatibility-lib and other non-recommended libraries
(like srfis) is on my to-do list, but not currently on the top.
Vincent