Is someone here familiar with the differences between SLIME ...

I was using SLIME a lot when working with CL, but didn't look deeply into the implementation. SLIME's architecture is basically the option 3 I listed before (local (socket-) server, in SLIME that's SWANK). And there is already SLIME support (at least) for Kawa and MIT-Scheme, where I didn't get the Kawa-part running. Even then I think that CL has much more focus on the idea of image-based development in a long running session and it has deep technical support for that (whereas Scheme with it's focus on simplicity does not have this focus; e.g. Per Bothner explicitly mentions somewhere for Kawa that one cannot expected that re-evaluating the same defines will always work within the same Kawa REPL session). So as much as I admire SLIME, I'm not sure whether the effort to use it for integration for many Scheme's will be worth the effort - but again this depends from the total scope we plan to support. Still SLIME would be a perfect place to check for interesting features and maybe it's possible to re-use parts of the Emacs-side of SLIME. My idea for next steps would be:

  1. Check LSP features and pick what we want to support from there.
  2. Check SLIME/SWANK features and pick what we want to support from there; check whether/which Emacs-lisp can be re-used.
  3. Decide how to split functionality between client and server.
  4. Derive server-side features from that, implement (one Scheme).
  5. Derive client-side features from that, implement (n Schemes, m editors).

... and Geiser?

I also checked Geiser, but since I'm using some Schemes which are not supported by Geiser and since it quite heavily impacts your Emacs setup, I'm not using it. I recently had a post with some simply Scheme-helpers I'm using for different Schemes - mostly documentation access and minimal REPL integration.