2009/1/26 Michael G Schwern <[email protected]>: > Adam Kennedy wrote: >> Of course, the "recommends" keyword also doesn't mean what you think >> it means and is largely pointless. > > Near as I can figure what Adam's complaining about, since apparently we're > mind readers now and so is he, is that, AFAIK, no CPAN client currently does > anything with recommends. This is a SMOP to fix, and I note that Adam is a > programmer. > > That or Adam's on another "never ask the user anything" tear. > > The intent of requires vs recommends is to implement something like the Debian > Binary Dependency structure where "requires" == "Depends". Debian's > "Recommends" suggests a stronger dependency than we do, since we lack > "Suggests", and our "recommends" simply means "optional dependency". > http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps
We wanted something like what Debian had, but failed. Debian has a nice set of keys that split intent out into different keys with different meanings, it is made quite clear that recommends means "always except in extreme cases" and so on. We, on the other hand, kind of force everyone to overload the same key, and we don't actually explain what it means. We say "recommends means the things you recommend". It has a circular definition which leaves it to the vagueness of individual knowledge of English to try to work out what it means. The other part of the problem is that we simply aren't a binary package repository, we're a source repository, which is an entirely different beast with different needs. We don't just have individuals using us, we have source-repository to binary-repository converters. And because things like ExtUtils::MakeMaker don't understand anything more complicated than "depends", all other recommends stuff gets folded down into a regular dependency, based on the answer of one person. Now that configure_requires is almost finished, perhaps it's time to look at the whole METALOCAL.yml or MYMETA.yml or whatever feature that was discussed at the last QA hackathon... Adam K
