Ian Bicking: the old part of his blog


Glyph: But there's no way to apply package naming to the standard library, which has no packages (mostly), only modules. I think the standard library needs versioning just as much as other packages... well, it doesn't need it now, but if the standard library is ever going to grow in a way that isn't strictly backward compatible then it will.

Using comparison operators is a little fishy, though I think there's a case for at least an operator for "provides a version", and one for "is a version". Code that is tightly coupled to an implementation (not an interface) is, IMHO, sometimes justified. It's just what happens when you are trying to get stuff done, not necessarily get stuff done the right way. So version requirements don't belong entirely to either the importer or the importee -- it's an agreement, where either side can be more or less strict about it. E.g., a critical bug or security fix should probably be possible to install even when the module is tightly coupled to another module. Or, the importer might determine that one of several versions of the imported package will work, but doesn't respect the imported package's assertion that it provides a certain interface.

So I guess I don't trust simply using conventions, I'd like more than that. Formal interfaces are a good way to think about this, but the reality is that versioning needs to apply to all packages, not just the ones that think about this situation formally. It needs to apply to packages and modules we have right now -- because practically, we will continue to have modules produced in the current style for several years, despite any new conventions that are added. I think we need tools, not just conventions -- a good tool can get stuff done even when other parts of the system aren't assisting it.

TE Whalen: Hopefully we could use the metadata in the directory to get the import right on the first try, most times. A clearer kind of metadata might also be called for -- right now filenames are the only metadata we have short of importing the module and looking for magic variables. This can be problematic; maybe we need a real index of what packages and what versions are installed, and where they are installed. Right now distutils setups are pretty much write-only, they don't seem to keep track of what they've done. I think there would be a number of things to be gained from changing that.
Comment on Versioned Imports
by Ian Bicking