

my long answer to a short question.. Every Lisp program attempts to expand until it can run on all Lisp implementations. Those programs which cannot so expand are replaced by those which can. I don't believe it's possible to write a non-portable Common Lisp program that's relevant to the free software community. You can try, but you will fail. Your program will either become portable or be replaced by one that is. People have tried to write non-portable code. SLIME was announced as "a CMUCL-specific clone of ILISP" but was ported in no time at all. Ironically it has become one of the most portable Lisp programs around. And now I think that this was inevitable. SLIME became portable because people with other Lisps wanted to use it. They ported it themselves, added new features, found bugs, made suggestions, wrote web pages, did lots of good stuff. This was an intensely fun period of thriving joyous hackery. How could we refuse to cooperate with all these hackers who would later become friends? If we'd seriously tried to reject non-CMUCL code then the other guys would have made a superior fork and had the fun all to themselves. Portability was inevitable. But it's not all roses. We've invested a lot of time in adding features and fine details for our Lisp of choice that most of our friends won't ever appreciate. In some cases we've felt moved to port these features to other Lisps that we don't use, and I have mixed feelings about that. I spent a few weekends working on the SBCL backend out of sheer horror at the way so many people were experiencing SLIME. I wish instead that somehow we'd all experienced it in the same way automatically. So I believe that the social reality is that important Common Lisp free software will always become portable, for better and for worse. This begs a lot of questions: how can we exploit this fact of nature? is it a good thing or is it a bad thing? should we change it and if so then how? I don't have ready answers to all of them but they're very interesting to consider.