<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
good morning;<div><br></div><div>as is evident from the message attached below, for the past several days i have thought about things related to bug-502946, and asdf in general.</div><div>my state-of-mind as of last week was, for the reasons alluded to below, that it is not productive to try to reason about system construction issues in the concrete context of asdf, -1.502, as it was at the time. i do not refer to with matters of configuration, or pathname mapping, or even 'elegant' bootstrapping, but rather to the need for a platform on which to think about and implement tools to</div><div>- manage systems with articulated interfaces</div><div>- manipulate system definitions programmatically</div><div>- automate system definition construction and maintenance</div><div>the larger concerns for integration with production, build, and deployment systems do all matter, just not right now. if one would set out the tasks in more detail, one could think about how to approach the issues, but at present, it is difficult to think even just about how asdf works.</div><div><br></div><div>the only reasonable approach was to take asdf apart, isolate the functional components and reassemble them in a manner which allows to think about how a tool to manage program components works and how it might work. the current state is captured in de.setf.asdf.x[1]. there is a readme[2], which describes the intent, and the asdf-x.lisp[3] file, which reimplements asdf.lisp. there is also a unit test[4] which captures one interpretation of the 'strongly-dependent' requirement relation.</div><div><br></div><div>on one hand, as a radical rational reconstruction of the original, it does not contribute to the main stream. on the other, the result provides the terms to think about what "intra-system" dependency is and a concrete context in which to implement projective proposals. cf. the commit[5] to support strong dependency by adding a state variable to the constraint machinery and adding the declaration to control it to the system definition language. most of which took the form of additional methods.</div><div><br></div><div><br></div><div>---</div><div>[1]: <a href="http://github.com/lisp/de.setf.asdf.x">http://github.com/lisp/de.setf.asdf.x</a></div><div>[2]: <a href="http://github.com/lisp/de.setf.asdf.x/blob/master/README.md">http://github.com/lisp/de.setf.asdf.x/blob/master/README.md</a></div>[3]: <a href="http://github.com/lisp/de.setf.asdf.x/blob/master/asdf-x.lisp">http://github.com/lisp/de.setf.asdf.x/blob/master/asdf-x.lisp</a><div>[4]: <a href="http://github.com/lisp/de.setf.asdf.x/blob/master/test/launchpad/bug-502946.lisp">http://github.com/lisp/de.setf.asdf.x/blob/master/test/launchpad/bug-502946.lisp</a></div><div><div>[5]: <a href="http://github.com/lisp/de.setf.asdf.x/commit/285a38e4ee18e10b5ce887d8ab2dd5e2d352aa0a">http://github.com/lisp/de.setf.asdf.x/commit/285a38e4ee18e10b5ce887d8ab2dd5e2d352aa0a</a></div><div><br></div><div><br><div>Begin forwarded message:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="2" color="#000000" style="font: 10.0px Helvetica; color: #000000"><b>From: </b></font><font face="Helvetica" size="2" style="font: 10.0px Helvetica">james anderson <<a href="mailto:james.anderson@setf.de">james.anderson@setf.de</a>></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="2" color="#000000" style="font: 10.0px Helvetica; color: #000000"><b>Date: </b></font><font face="Helvetica" size="2" style="font: 10.0px Helvetica">2010-02-07 23:45:56GMT+01:00</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="2" color="#000000" style="font: 10.0px Helvetica; color: #000000"><b>To: </b></font><font face="Helvetica" size="2" style="font: 10.0px Helvetica"><a href="mailto:rpgoldman@sift.info">rpgoldman@sift.info</a></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="2" color="#000000" style="font: 10.0px Helvetica; color: #000000"><b>Subject: </b></font><font face="Helvetica" size="2" style="font: 10.0px Helvetica"><b>Re: [asdf-devel] Launchpad bug 502946</b></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> <div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">good evening;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">you may, or may not be expecting this, but i got tired of trying to understand traverse.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">and tired of trying to understand parse-component, and defsystem, and pathname resolution, and ...</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">i am now about 3/4 through rewriting asdf with clear protocols for</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- definition operators (at all three levels - system, module, element)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- perform - with distinct qualifiers for requirement (dependency, constituency) traversal, restart</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- requirement and constituency specification canonicalization</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- status evaluation for completion, features, other arbitrary predicates</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- settings/environment assertions per component</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">- pathname resolution which does not depend on the quirks of *default-pathname-defaults*</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">it's about the same amount of code - even though many of the internal operators are decomposed to make the mechanism explicit.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the most unsettling part is to ensure that - between the bnf in the docs and the logic of the code, i've gotten the dependency definitions right, but it won't be long. i've been chewing through this since friday, so maybe by the time you're up tomorrow, there will be some code up in github which passes the tests. the intent is plug-compatible for the things i can understand, and i'm putting it in a new package, so with a couple package-name swaps, one can try things side-by-side. i will let you know.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On 2010-02-07, at 22:40 , Robert Goldman wrote:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Wrt <a href="https://bugs.launchpad.net/asdf/+bug/502946">https://bugs.launchpad.net/asdf/+bug/502946</a>,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">module is not recompiled if _intra_-system dependency changes, I have</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">spent quite some time groveling over the source code to TRAVERSE, and I</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">believe that this is going to be quite difficult to fix.<span class="Apple-converted-space">  </span>There are a</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">number of assumptions baked into TRAVERSE, and some complicated uses of</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">a variable scoped over the body of TRAVERSE, together with a number of</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">local functions and a soupcon of unstated assumptions.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I'm pretty sure that modules are substantially broken and, in the short</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">term, I would discourage ASDF system designers from using them at all.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I have been banging my head on this for at least a working day's worth</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">of hours, and I need someone with whom to discuss the code, either by</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">voice, IM or IRC.<span class="Apple-converted-space">  </span>Email is not going to be high enough bandwidth.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">If anyone is interested in this enough to share the pain with me, please</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">drop me a line and we can coordinate.</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Thanks,</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">r</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">_______________________________________________</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">asdf-devel mailing list</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:asdf-devel@common-lisp.net">asdf-devel@common-lisp.net</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel">http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel</a></div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div> </blockquote></div><br></div></body></html>