james anderson wrote:
On 2009-07-14, at 18:56 , Robert Goldman wrote:
james anderson wrote:
hello;
[...]
This is a good description of the general problem, but it overstates the problem here. Nobody should be setting these slots after they are set (or not) in the defsystem form, so a slot-unbound error will not be difficult to resolve. However, it /might/ create a cumbersome nuisance for code that wishes to process asdf components.
my experience is that you can change "might" to "did".
[...]
- if one would like to see the code at the version which constitutes
the current approach to this issue, which revision should one pull?
I don't have a good answer for this, sorry.
I think that James clearly states the issues. I propose we just try to come to consensus on something like the following:
- We specify which of the system string initargs are actually optional.
then either
2a. We specify these as being of type string and specify that they take "" as a default. Supplying NIL would be a type error. For the benefit of non-type-checking lisps, we could add :after methods on initialize-instance to reject non-string values.
2b. We specify that the type is (or null string) because we want to be able to distinguish unsupplied from explicitly empty.
These both seem reasonable alternatives, as long as we state one of them clearly.
If someone will express a clear preference that isn't shouted down, I'd be happy to provide help either documenting or coding up support.
i propose, 2b iff some operator depends on the distinction. otherwise 2a.
Here are the initargs from which we have to choose:
:licence :license :maintainer :author :long-description :description :default-component-class :if-component-dep-fails :components :properties :pathname :parent :do-first :in-order-to :name :version
Of these, I believe our discussion pertains primarily to
:license/:licence :maintainer :author :description and :long-description :version
Are these all truly optional? Personally, I wish that :version wasn't, and/or that we enforced some standard on values supplied there, since it's easy to put in something that will cause version-satisfies to choke.
How about we confine our attention to all of these EXCEPT :version, which is worthy of a discussion of its own.
These are all going to be used primarily by software which simply displays information about the systems, and all of that software (unless there's a 'describe' method) is going to be external to ASDF proper, which means it's hard for me to answer James' "some operator depends on the distinction" question.
Best, r