They are/were not all incompatible. Once there was a lot of compatibility, backwards and by layers/libraries/translators.
maclisp -> Common Lisp
-> Eulisp (Eulisp took a lot of inspiration from Common Lisp)
BBN Lisp -> Interlisp
-> Common Lisp
Common Lisp ran inside Interlisp and Common Lisps had Interlisp compatibility packages. If you bought Xerox' Interlisp-D, it came with Common Lisp. The Xerox Interlisp community later contributed to Common Lisp. For example Interlisp LOOPS was developed into Common LOOPS (LOOPS in Common Lisp) and this was then developed into CLOS, the Common Lisp Object System. The Portable Common LOOPS implementation was even the reference implementation for CLOS.
Scheme -> Racket
-> Common Lisp
Scheme had some minor influence on Common Lisp, and Common Lisp had some influence on Scheme (numerics, CLOS, ...). Years ago there were Scheme implementations in Common Lisp, compatibility languages, and even a Common Lisp implementation in Scheme. Nowadays almost nobody cares any more to make applications or libraries able to run in Scheme and Common Lisp from one code base. Take Common Music. Version 2 ran in CL and Scheme. Version 3 is Scheme specific. Actually it is specific to its own Scheme version S7 and a new surface language: SAL.
This compatibility does not exist anymore. Interlisp is gone. Scheme is now its own language universe. PLT Scheme was renamed to Racket to prevent users from thinking Racket cares about compatibility with Scheme.
What was once a language group with dialects of a core language, is now not more than a bunch of ideas, where independent language camps pick/mix freely whatever they find important. For all practical work (!) they are now fully incompatible. Some languages still have a common core (Common Lisp, Emacs Lisp, ISLisp, Visual Lisp), while others have new cores: Scheme and Clojure are cores of new languages, with their own syntax, semantics and pragmatics. Neither of those cares about any form of compatibility or code sharing anymore.
> PLT Scheme was renamed to Racket to prevent users from thinking Racket cares about compatibility with Scheme.
No, PLT Scheme was renamed to Racket to reflect the fact that the base language does not (and had not even prior to the rename) really target compatibility with any of the scheme standards, though using its module language approach, Racket includes both R5RS and R6RS Scheme implementations, so its not at all the case that Racket doesn't care about Scheme compatibility, its just bigger than just that.
That's slightly misleading: there are two things: the environment and a base language.
Racket, as an environment, has compatibility due to its module/language approach to a bunch of languages. The older Scheme R5RS / R6RS are amongst those.
> Racket is a full-spectrum programming language. It goes beyond Lisp and Scheme with dialects that support objects, types, laziness, and more. Racket enables programmers to link components written in different dialects, and it empowers programmers to create new, project-specific dialects. Racket's libraries support applications from web servers and databases to GUIs and charts.
The main language under development aren't those, it's Racket:
> They draw you in with the promise of a simple and polite little Scheme, but soon you'll find yourself using modules, contracts, keyword arguments, classes, static types, and even curly braces.
> programmers can now simply say “Racket” to refer to the specific descendant of Scheme that powers PLT's languages and libraries.
There is a specific new language, a descendant of Scheme, in which this stuff is written, and that is called Racket.
This Racket language and its main libraries is documented here:
> I'm not quite sure what "Lisp family" really means, given that even Common Lispers and Schemers seem to argue more than agree (maybe because they're close family members?). Given that Sussman argues that Scheme is also a descendent of Algol, doesn't that put Racket in the Algol family as well? So Racket is both an Algol and a Lisp; would you change your posting to say “picks Algol to teach son programming”? In short, do these labels tell us anything useful at all?
Scheme is the bastard child of ALGOL and maclisp, with neither the historical significance of the former, nor the PR of the latter. But I find it more elegant than either of them.
maclisp -> Common Lisp
BBN Lisp -> Interlisp Common Lisp ran inside Interlisp and Common Lisps had Interlisp compatibility packages. If you bought Xerox' Interlisp-D, it came with Common Lisp. The Xerox Interlisp community later contributed to Common Lisp. For example Interlisp LOOPS was developed into Common LOOPS (LOOPS in Common Lisp) and this was then developed into CLOS, the Common Lisp Object System. The Portable Common LOOPS implementation was even the reference implementation for CLOS.Scheme -> Racket
Scheme had some minor influence on Common Lisp, and Common Lisp had some influence on Scheme (numerics, CLOS, ...). Years ago there were Scheme implementations in Common Lisp, compatibility languages, and even a Common Lisp implementation in Scheme. Nowadays almost nobody cares any more to make applications or libraries able to run in Scheme and Common Lisp from one code base. Take Common Music. Version 2 ran in CL and Scheme. Version 3 is Scheme specific. Actually it is specific to its own Scheme version S7 and a new surface language: SAL.This compatibility does not exist anymore. Interlisp is gone. Scheme is now its own language universe. PLT Scheme was renamed to Racket to prevent users from thinking Racket cares about compatibility with Scheme.
What was once a language group with dialects of a core language, is now not more than a bunch of ideas, where independent language camps pick/mix freely whatever they find important. For all practical work (!) they are now fully incompatible. Some languages still have a common core (Common Lisp, Emacs Lisp, ISLisp, Visual Lisp), while others have new cores: Scheme and Clojure are cores of new languages, with their own syntax, semantics and pragmatics. Neither of those cares about any form of compatibility or code sharing anymore.