I'm going to take that as a vote to implement a continuation restart for version mismatch errors. [Yes, I'm grasping at straws! ;-)]
I vote NO to that. If the client system specifies a minimum version, it means it, and any older version is an error that better occur early than late. If he specified a maximum version — he shouldn't, and ASDF *must not* provide a means to do that (and so after all I vote lp#1183179 be resolved as "Invalid"). Backward compatibility if specified must be specified by the provider system, not the client system, (and then defsystem should have a :backward-compatible-to keyword argument). And if the provider system declares that it doesn't support compatibility with the old API — it means it, too. If somehow things are actually compatible, then either system has to be modified indeed, and/or you should be pulling newer more compatible versions, anyway. If what you really want is a fork of an old system, then use a fork of an old system, with its own name, e.g. "hunchentoot-0.13". If you're using extreme ways of being compatible with a wider range of versions of a system than expressible through ASDF version constraints, then don't use ASDF version constraints and stick to your extreme ways. I also vote against "semantic versioning" as a meaningful thing for Common Lisp code. It's a great notion for the binary release of C dynamic libraries that just doesn't mean anything for Lisp source (or even fasl) releases. Clients should be able to specify an open-ended range with a minimal version, and only that. Providers should be able to specify also a range with a minimum API compatibility version, and only that — with the current version always being the maximum supported version. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org A tautology is a thing which is tautological.