Subject: Re: spiderweb copyright (last time??)

From: nr (Norman Ramsey)
Date: Tue, 11 Apr 89 14:12:49 EDT

> One last clarification.  The question is bound to come up, especially
> from the Japanese, who are very sensitive about this.  
> 
> 1.    Is it within your intentions in copyrighting this that a firm
>    might develop proprietary software which in no way incorporates
>    any part of spiderweb, but simply uses spiderweb as a development
>    tool for internal documentation.  
> 
> 2.    What about the proprietary publication of documented source
>    which was produced with one of the language versions of spiderweb?
>    (Again with the understanding that no part of spiderweb is included
>    in that documentation.)

I personally would be happy with either of these uses of spiderweb,
but the decision is not entirely up to me.  Spiderweb was developed
partly with government contract money, and is agreed to be released
``for research purposes only'' (whatever that means).  I will have to
look into this and get back to you.

> -------------------------------------------------------------------------
> Now for some first impressions.  
> 
> You have already supplied the explanation of how to get around `cputype`
> in the new version (which I picked up yesterday).

Yes, this was a late-breaking compromise to deal with the heterogenous
processor environment here at Princeton.  I hate it, but it seems to
get the job done.
> 
> In WebMakefile, the target boot: does not move the *.o files
> to the appropriate directory, they remain in the master directory.

Someone else found that too.  I have patched the Makefile and added
some comments.  I will send you patches.  In the process, I broke the
Makefile to remove some of the sources.  I think I have fixed that
now, but for about a day a bad version was on princeton.edu
> 
> The weave output from ceetangle comes out perfectly, but the
> weave output from weave runs into problems when it includes grammar.web
> 
>        @ Here is where we define |highestposoverall| and where we
>        check the productions.
>        @d highestposoverall = 6
>        @<Test for all of the productions@>=
>        if ((1) &&
> 		       (pp+1)->cat==SP_ignore_scrap) {
> 	       /* 1: {\tt ? ignore_scrap --> #1} */
> 
> This goes fine until it hits the comment line
> 
> 	       /* 1: {\tt ? ignore_scrap --> #1} */
> but then TeX is bothered by the _ and the #.
> 
> What is needed is some sort of \ttverbatim after the {, and possibly an
> \endttverbatim before the } (I seem to remember that it can be
> difficult to get \ttverbatim to turn itself off when it drops to
> a lower level out of {} braces, but perhaps, since you are only
> dealing with one-line comments and there are no embedded newlines
> to be formatted, the difficulty can be got around.)

Actually a \ttverbatim kind of solution won't work, because
\ttverbatim needs to be able to change the catcodes, and they can't be
changed at that late date because the whole affair is an argument to
another macro, and the characeters have already been gobbled up (or
whatever the appropriate parts of TeX's anatomy that sets catcodes).
I have changed spider.web so the offending characters are escaped with
backslashes:  {\tt ? ignore\_scrap --> \#1} and so on.

> The tangle for C seems to run with very satisfactory speed.  

We have Don Knuth to thank for this.  The lexer sees the code just
once, and then converts everything to either eight or sixteen bit
tokens.  Output is very fast.

I would like to speed up WEAVE some day, by making it run from a table
(decision tree).  Doing that and abandoning the internal conversion to
ASCII would probably gain a factor of three.

> Query?  How does the Make variable $(SPIDER) with the equivalent
> any.spider get changed into the appropriate *.spider.  It works, but
> I can't figure out how it works.  Does "any" have some esoteric meaning
> to make?

This was a horrendous hack to be able to make many different WEBs
while keeping only one Makefile around.  The three magic names
$(THETANGLE), $(THEWEAVE), and $(SPIDER) are all expected to be set on
the command line.  (Perhaps I shouldn't set them at all inside
WebMakefile.)  Look at ./c/make and you'll see how it works.

I am sending you a list of bugs so far and patches for them, under
separate cover, via tarmail.

Norman