Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

State of Lisp Documentation, mostly the Common Lisp Cookbook

267 views
Skip to first unread message

Bigos

unread,
Sep 14, 2012, 6:47:13 PM9/14/12
to
Hi,

I am wondering why new Lisp documentation is not being created.The Lisp
Cookbook seems to be half finished project that was abandoned years ago.

I have managed to improve readability of the CLTL by writing a
Greasmonkey script, but in general it seems like lots of online
resources were created before CSS was invented.

I can understand that the standard was set in stone years ago so the
documentation is not out of date. But I wonder why nothing seems to be
done to make the documentation more friendly to newbies like me.

Documentation written for other languages seems to follow certain
principles which make it easier to scan the text looking for required
information. Just styling <TT> and <PRE> tags in CLTL made huge
readability improvement for me.

I started wondering about it when I was struggling for whole day trying
to find how to write in Lisp something that would take a minute in
another language.

I guess I can live with Hyperspec looking as it does, but I wonder why
the Common Lisp Cookbook was abandoned. I guess it could be easily
improved visually with Greasemonkey, but why it was abandoned.

While I was writing this post, I have noticed something weird. On this
computer I have mirrored the Common Lisp Cookbook. To my surprise
mirrored version has recipe that the online version doesn't. If I was on
this computer I'd probably would find the solution in 5 minutes.

So I wonder why no new documentation is being created and why local
mirror is more up to date than online version.

Bigos

unread,
Sep 15, 2012, 9:26:16 AM9/15/12
to
I have compared few chapters of the Common Lisp Cook Book. The
difference I have mentioned in my last post is the only one I have found.

Local version of the book version contains following code:

(with-output-to-string (out)
(with-open-file (in "/path/to/big/file")
(loop with buffer = (make-array 8192 :element-type 'character)
for n-characters = (read-sequence buffer in)
while (< 0 n-characters)
do (write-sequence buffer out :start 0 :end n-characters)))))

After much effort I came up with something like this:

(defun load-file (path)
(with-open-file (stream path)
(with-output-to-string (s)
(dotimes (x (file-length stream))
(format s "~c" (read-char stream) x)))))

(format T "~A" (load-file "./assoc1.txt"))

Lisp has lots of documentation for dealing with cool advanced stuff.
But what about simple examples? At the moment I try to write Lisp
versions of my Ruby scripts and they try to redactor them. I try to
remove code duplications and generally improve the scripts. I am amazed
at flexibility of Lisp, but I keep stumbling over simple problems like
the one described above.

What I'm doing wrong? Am I trying to copy Ruby too much?

Pascal J. Bourguignon

unread,
Sep 15, 2012, 9:52:01 AM9/15/12
to
Bigos <ruby....@googlemail.com> writes:

> Local version of the book version contains following code:
>
> (with-output-to-string (out)
> (with-open-file (in "/path/to/big/file")
> (loop with buffer = (make-array 8192 :element-type 'character)
> for n-characters = (read-sequence buffer in)
> while (< 0 n-characters)
> do (write-sequence buffer out :start 0 :end n-characters)))))
>
> After much effort I came up with something like this:
>
> (defun load-file (path)
> (with-open-file (stream path)
> (with-output-to-string (s)
> (dotimes (x (file-length stream))
> (format s "~c" (read-char stream) x)))))
>
> (format T "~A" (load-file "./assoc1.txt"))

The local version above is much more efficient than your version.

Have you ever heard of buffering?


> Lisp has lots of documentation for dealing with cool advanced stuff.
> But what about simple examples? At the moment I try to write Lisp
> versions of my Ruby scripts and they try to redactor them. I try to
> remove code duplications and generally improve the scripts. I am
> amazed at flexibility of Lisp, but I keep stumbling over simple
> problems like the one described above.
>
> What I'm doing wrong? Am I trying to copy Ruby too much?

You may also fetch libraries and see how they do it. (and wonder why
they're doing it that way).

See for example:

com.informatimago.common-lisp.cesarum.file:text-file-contents
alexandria:read-file-into-string

Get them with:

(ql:quickload :com.informatimago.common-lisp)
(ql:quickload :alexandria)

and jump to the source with M-.


--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.

Bigos

unread,
Sep 15, 2012, 10:42:32 AM9/15/12
to
On 15/09/12 14:52, Pascal J. Bourguignon wrote:
> Bigos <ruby....@googlemail.com> writes:
>
>> Local version of the book version contains following code:
>>
>> (with-output-to-string (out)
>> (with-open-file (in "/path/to/big/file")
>> (loop with buffer = (make-array 8192 :element-type 'character)
>> for n-characters = (read-sequence buffer in)
>> while (< 0 n-characters)
>> do (write-sequence buffer out :start 0 :end n-characters)))))
>>
>> After much effort I came up with something like this:
>>
>> (defun load-file (path)
>> (with-open-file (stream path)
>> (with-output-to-string (s)
>> (dotimes (x (file-length stream))
>> (format s "~c" (read-char stream) x)))))
>>
>> (format T "~A" (load-file "./assoc1.txt"))
>
> The local version above is much more efficient than your version.
>
> Have you ever heard of buffering?

Yes, I have heard about buffering and understand why this example is
better than mine. It shows you how little I can do on my own.

>
>
>> Lisp has lots of documentation for dealing with cool advanced stuff.
>> But what about simple examples? At the moment I try to write Lisp
>> versions of my Ruby scripts and they try to redactor them. I try to
>> remove code duplications and generally improve the scripts. I am
>> amazed at flexibility of Lisp, but I keep stumbling over simple
>> problems like the one described above.
>>
>> What I'm doing wrong? Am I trying to copy Ruby too much?
>
> You may also fetch libraries and see how they do it. (and wonder why
> they're doing it that way).
>
> See for example:
>
> com.informatimago.common-lisp.cesarum.file:text-file-contents
> alexandria:read-file-into-string
>
> Get them with:
>
> (ql:quickload :com.informatimago.common-lisp)
> (ql:quickload :alexandria)
>
> and jump to the source with M-.
>
>
I will definitely have a look. If I have any further questions I will
post them on this thread.

Thank you very much.

Pascal J. Bourguignon

unread,
Sep 15, 2012, 10:52:13 AM9/15/12
to
Bigos <ruby....@googlemail.com> writes:

> Yes, I have heard about buffering and understand why this example is
> better than mine. It shows you how little I can do on my own.

Well, if you know the concept, then it's just a matter of finding the
building blocks you need in CLHS dictionaries.
http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm

The dictionary of the Stream chapter sounds promising:
http://www.lispworks.com/documentation/HyperSpec/Body/c_stream.htm

Bigos

unread,
Sep 15, 2012, 11:09:31 AM9/15/12
to
On 15/09/12 15:52, Pascal J. Bourguignon wrote:
> Bigos <ruby....@googlemail.com> writes:
>
>> Yes, I have heard about buffering and understand why this example is
>> better than mine. It shows you how little I can do on my own.
>
> Well, if you know the concept, then it's just a matter of finding the
> building blocks you need in CLHS dictionaries.
> http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm
>
> The dictionary of the Stream chapter sounds promising:
> http://www.lispworks.com/documentation/HyperSpec/Body/c_stream.htm
>
>
>
>

I have seen it before but didn't know how to connect the dots.

By the way I am looking at you git repository and I am impressed how
much interesting code is there. Exploring it should keep me busy for the
rest of the evening. :-D

Bigos

unread,
Sep 15, 2012, 11:34:51 AM9/15/12
to
On 15/09/12 14:52, Pascal J. Bourguignon wrote:
>
> You may also fetch libraries and see how they do it. (and wonder why
> they're doing it that way).
>
> See for example:
>
> com.informatimago.common-lisp.cesarum.file:text-file-contents
> alexandria:read-file-into-string
>
> Get them with:
>
> (ql:quickload :com.informatimago.common-lisp)
> (ql:quickload :alexandria)
>
> and jump to the source with M-.
>
>

Well, this is exactly what I was looking for. I was hoping to find
documentation that looks a bit like the content of Cesarum folder.
https://gitorious.org/com-informatimago/com-informatimago/trees/master/common-lisp/cesarum


This is the missing Common Lisp Cookbook content.

kent...@gmail.com

unread,
Sep 23, 2012, 2:25:10 AM9/23/12
to
Sorry, your problem is the Hyperspec's CSS? You apparently have no code to write, or you would just get on with it.

hth, hk

Bigos

unread,
Sep 23, 2012, 8:56:41 AM9/23/12
to
On 23/09/12 07:25, kent...@gmail.com wrote:
> On Friday, September 14, 2012 6:47:14 PM UTC-4, Bigos wrote:
>> Hi,
>>
>> lot of irrelevant text removed.
>>
>> I guess I can live with Hyperspec looking as it does, but I wonder why
>>
>> the Common Lisp Cookbook was abandoned. I guess it could be easily
>>
>> improved visually with Greasemonkey, but why it was abandoned.
>>
>
> Sorry, your problem is the Hyperspec's CSS? You apparently have no code to write, or you would just get on with it.
>
> hth, hk
>

It seems that the Hyperspec was written before CSS became popular. When
you look at the HTML source you will see what I mean.

But because Hyperspec is supposed to be a formal reference material I
can live with it's appearance. Most of effort there is needed for
digesting the information.

The website has been structured nicely and each function there is on a
separate, relatively short page, so there's not so much need to scan the
text looking for required information. But there is still room for
improvement and it wouldn't hurt to have the site to be visually easier
to read. The bigger problem is with other Lisp sites.

Other languages of frameworks have nicely done documentation websites,
which make it easy to scan and find required information. Appearance of
many Lisp sites can be, to a certain extent, improved with the
Greasemonkey. But it is difficult to improve site which was not written
for ease of scanning and finding information.

Beauty and good appearance is a tricky subject, as different people view
it differently and most programmers are not good designers.

What do you mean saying " You apparently have no code to write, or you
would just get on with it."? I think there's a difference between
pleasure of doing something and just getting on with it.

Cliki is a good example here and it shows that some of CSS make-up will
not hurt. Some sites have much more information per page than the
Hyperspec and having nicely styled site is a huge improvement.

I am a noob, so I don't have too much code to write.
https://github.com/bigos/Pyrulis/tree/master/Lisp/scripts
Partly because of problems with finding required information. It took me
few days to write something that in Ruby would take few hours.

Maybe I should change my documentation search habits and ask more
questions here. But I am still fan of good appearance and I think that
with correct graphic design you don't get distractions, but improvement
in your productivity.



Pascal J. Bourguignon

unread,
Sep 23, 2012, 11:01:17 AM9/23/12
to
Bigos <ruby....@googlemail.com> writes:

> What do you mean saying " You apparently have no code to write, or you
> would just get on with it."? I think there's a difference between
> pleasure of doing something and just getting on with it.

It means: just send the css stylesheets to the site authors and if it's
nice and can be used freely, they'll probably be happy to put it on
their web server.


> Cliki is a good example here and it shows that some of CSS make-up
> will not hurt. Some sites have much more information per page than the
> Hyperspec and having nicely styled site is a huge improvement.

Just do it.


> I am a noob, so I don't have too much code to write.
> https://github.com/bigos/Pyrulis/tree/master/Lisp/scripts
> Partly because of problems with finding required information. It took
> me few days to write something that in Ruby would take few hours.

I had more difficulty browsing the Ruby reference documents than the
CLHS.


> Maybe I should change my documentation search habits and ask more
> questions here. But I am still fan of good appearance and I think that
> with correct graphic design you don't get distractions, but
> improvement in your productivity.

So help us! Write nice css and send them.



Now, on the other hand, I originally understood the separation of style
from content as a mean for users to have their own style sheets. Can't
you just write a style sheet you like, and configure your web browser to
use it for all or some web sites?

Bigos

unread,
Sep 23, 2012, 12:35:57 PM9/23/12
to
Greasmonkey is a very good plug-in for such experiments. So far best
results I had with improving looks of the CLTL. With other sites I think
more would have to be done. I guess I would have to mirror part of a
website in question and try to redesign it to make it more susceptible
to CSS restyling. I'll experiment a bit and hope to post some results
within couple of days.

Bigos

unread,
Sep 23, 2012, 2:17:26 PM9/23/12
to
On 23/09/12 16:01, Pascal J. Bourguignon wrote:
>> Cliki is a good example here and it shows that some of CSS make-up
>> will not hurt. Some sites have much more information per page than the
>> Hyperspec and having nicely styled site is a huge improvement.
>
> Just do it.
>

OK

> Now, on the other hand, I originally understood the separation of style
> from content as a mean for users to have their own style sheets. Can't
> you just write a style sheet you like, and configure your web browser to
> use it for all or some web sites?
>

In my opinion highlighting fragments of the text in different colour,
putting code fragments in frames and increasing line height improved
readability a lot.

This is example Grease monkey script for the CLTL:

// ==UserScript==
// @name CLTL-decorator
// @namespace /Groups/AI/html/cltl/
// @description decorator for CLTL book
// @grant none
// @include http://www.cs.cmu.edu/Groups/AI/html/cltl/*
// @version 1
// ==/UserScript==

//alert('Hello world!');


function addGlobalStyle(css) {
try {
var elmHead, elmStyle;
elmHead = document.getElementsByTagName('head')[0];
elmStyle = document.createElement('style');
elmStyle.type = 'text/css';
elmHead.appendChild(elmStyle);
elmStyle.innerHTML = css;
} catch (e) {
if (!document.styleSheets.length) {
document.createStyleSheet();
}
document.styleSheets[0].cssText += css;
}
}

addGlobalStyle('body{padding: 1em; font-size: 16px; font-weight: 100;
font-family: helvetica, verdana, sans-serif; }');
addGlobalStyle('tt{color: #b00; font-weight: normal;
font-size:1em;padding: 0.25em; font-family: monospace; }');
addGlobalStyle('p{line-height:1.5em;}');
addGlobalStyle('pre{line-height:1.25em;border:solid #dee 1px;
background:#f8fff8; padding:0.75em;font-size:1em;font-family: monospace
;}');
addGlobalStyle('code{line-height:1.25em; }');

Bigos

unread,
Sep 23, 2012, 3:57:59 PM9/23/12
to
On 23/09/12 16:01, Pascal J. Bourguignon wrote:
>
> Now, on the other hand, I originally understood the separation of style
> from content as a mean for users to have their own style sheets. Can't
> you just write a style sheet you like, and configure your web browser to
> use it for all or some web sites?
>


I have tried to write a Hyperspec. I'm not too keen about the choice of
fonts in my script. This is the best I could do with my styling and the
website doesn't look as scary as before.

I would have to create a mock-up to show what I really mean. At the
moment I don't know if it is possible to use the Greasemonkey to style
comments and results.

The more I play with it the more I realise how to fix the looks. So the
problem gradually is becoming irrelevant.

I'll experiment a bit and if I come up with something interesting I will
post it here tomorrow.


This is my Hyperspec script:

// ==UserScript==
// @name hyperspec-decorator
// @namespace /Groups/AI/html/cltl/
// @include http://www.lispworks.com/documentation/HyperSpec/Body/*
// @version 1
// ==/UserScript==


//alert('Hello world!');


function addGlobalStyle(css) {
try {
var elmHead, elmStyle;
elmHead = document.getElementsByTagName('head')[0];
elmStyle = document.createElement('style');
elmStyle.type = 'text/css';
elmHead.appendChild(elmStyle);
elmStyle.innerHTML = css;
} catch (e) {
if (!document.styleSheets.length) {
document.createStyleSheet();
}
document.styleSheets[0].cssText += css;
}
}

addGlobalStyle('body{padding: 1em; font-size: 16px; font-weight: 100;
font-family: helvetica, verdana, sans-serif; }');
addGlobalStyle('tt{color: #b00; font-weight: normal;
font-size:1em;padding: 0.25em; font-family: monospace; }');
addGlobalStyle('p{line-height:1.5em;}');
addGlobalStyle('p b{font-weight: bold; letter-spacing: 2px;}');

Bigos

unread,
Sep 24, 2012, 6:27:21 AM9/24/12
to
On 23/09/12 16:01, Pascal J. Bourguignon wrote:
>
>
>> Cliki is a good example here and it shows that some of CSS make-up
>> will not hurt. Some sites have much more information per page than the
>> Hyperspec and having nicely styled site is a huge improvement.
>
> Just do it.
>
>> Maybe I should change my documentation search habits and ask more
>> questions here. But I am still fan of good appearance and I think that
>> with correct graphic design you don't get distractions, but
>> improvement in your productivity.
>
> So help us! Write nice css and send them.
>


https://github.com/bigos/Pyrulis/blob/6702a0c49897fa58ede2373089e7ad8b26e4b1c6/Lisp/hs_max_improved.html

This is example of modified Hyperspec page. To get comment and result
styled I had to modify the content.

I don't want to create annoying christmas tree. I think subtle changes
are the best.

Example below shows code on dark background, which is in my opinion too
distracting.

https://github.com/bigos/Pyrulis/blob/0dc612e96e6f09c2dfd2c6d0b7bb4b8637cb355c/Lisp/hs_max_improved.html

If people like it I might send my suggestions, but at the moment I have
no idea where I am supposed to send it. If you have any comments or
criticism please write.

Daimrod

unread,
Sep 24, 2012, 6:38:56 AM9/24/12
to
Bigos <ruby....@googlemail.com> writes:

> On 23/09/12 16:01, Pascal J. Bourguignon wrote:
>>
>>
>>> Cliki is a good example here and it shows that some of CSS make-up
>>> will not hurt. Some sites have much more information per page than the
>>> Hyperspec and having nicely styled site is a huge improvement.
>>
>> Just do it.
>>
>>> Maybe I should change my documentation search habits and ask more
>>> questions here. But I am still fan of good appearance and I think that
>>> with correct graphic design you don't get distractions, but
>>> improvement in your productivity.
>>
>> So help us! Write nice css and send them.
>>
>
>
> https://github.com/bigos/Pyrulis/blob/6702a0c49897fa58ede2373089e7ad8b26e4b1c6/Lisp/hs_max_improved.html

It's nice, though the font is a bit small for my taste.

> This is example of modified Hyperspec page. To get comment and result
> styled I had to modify the content.
>
> I don't want to create annoying christmas tree. I think subtle changes
> are the best.
>
> Example below shows code on dark background, which is in my opinion
> too distracting.

IMO, if you want a dark background, you'll need to use it for the whole
style, not only for the code samples, otherwise it's too aggressive for
the eyes.

> https://github.com/bigos/Pyrulis/blob/0dc612e96e6f09c2dfd2c6d0b7bb4b8637cb355c/Lisp/hs_max_improved.html
>
> If people like it I might send my suggestions, but at the moment I
> have no idea where I am supposed to send it. If you have any comments
> or criticism please write.

I've no idea to whom you can send a request for the official version of
the hyperspec, but I suppose you could start with the one[1] used by
quicklisp. And then, once it looks nice on all pages, you'll have better
arguments.

[1] https://github.com/Hexstream/clhs

Bigos

unread,
Sep 24, 2012, 7:21:45 AM9/24/12
to
On 24/09/12 11:38, Daimrod wrote:
>>
>> https://github.com/bigos/Pyrulis/blob/6702a0c49897fa58ede2373089e7ad8b26e4b1c6/Lisp/hs_max_improved.html
>
> It's nice, though the font is a bit small for my taste.

Thank you for you comment. I have increased the font size.

>
>> This is example of modified Hyperspec page. To get comment and result
>> styled I had to modify the content.
>>
>> I don't want to create annoying christmas tree. I think subtle changes
>> are the best.
>>
>> Example below shows code on dark background, which is in my opinion
>> too distracting.
>
> IMO, if you want a dark background, you'll need to use it for the whole
> style, not only for the code samples, otherwise it's too aggressive for
> the eyes.

I think colour scheme shouldn't be changed too much

>
>> https://github.com/bigos/Pyrulis/blob/0dc612e96e6f09c2dfd2c6d0b7bb4b8637cb355c/Lisp/hs_max_improved.html
>>
>> If people like it I might send my suggestions, but at the moment I
>> have no idea where I am supposed to send it. If you have any comments
>> or criticism please write.
>
> I've no idea to whom you can send a request for the official version of
> the hyperspec, but I suppose you could start with the one[1] used by
> quicklisp. And then, once it looks nice on all pages, you'll have better
> arguments.
>
> [1] https://github.com/Hexstream/clhs
>

I can try, but making it look nice on all pages might require more work.
I had to modify HTML to get present results. I guess one could write a
script to modify the pages. I'll see what happens.

Daimrod

unread,
Sep 24, 2012, 7:36:50 AM9/24/12
to
I can imagine, but you'll need to do it if you want it to be used.
However, there might be some legal issues to modify the Hyperspec[1].

An alternative would be to use the texinfo version[2] and generate html
from it.

[1] http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm#Legal
[2] http://users-phys.au.dk/harder/dpans.html

Pascal J. Bourguignon

unread,
Sep 24, 2012, 5:05:23 PM9/24/12
to
0- you would have to contact Lispworks Ltd.

1- CLHS is not free. It's only $free.

2- AFAIK, CLHS will never be modified.

3- You cannot distribute modifications of the CLHS:
http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm#Legal

Permission to copy, distribute, display, and transmit the Common
Lisp HyperSpec is granted provided that copies are not made or
distributed or displayed or transmitted for direct commercial
advantage, that notice is given that copying, distribution, display,
and/or transmission is by permission of LispWorks Ltd., and that any
copy made is COMPLETE and UNMODIFIED. IN PARTICULAR, the material
that MUST appear in the copy includes:

this copyright notice and its date;

the main index page, ../Front/index.htm;

all HTML pages to which the main index page links using relative
links;

all graphical (GIF) images to which it links using relative
links, such as the LispWorks logo that appears on each page; and

all hypertext links, relative or absolute, such as the link to
http://www.lispworks.com/ that appears on each page.

Permissions related to performance and to creation of derivative
works are expressly NOT granted.

Permission to make partial copies is expressly NOT granted, EXCEPT
that limited permission is granted to transmit and display a partial
copy the Common Lisp HyperSpec for the ordinary purpose of direct
viewing by a human being in the usual manner that hypertext browsers
permit the viewing of such a complete document, provided that no
recopying, redistribution, redisplay, or retransmission is made of
any such partial copy.

Permission to make modified copies is expressly NOT granted.

Permission to add or replace any links or any graphical images to
any of these pages is expressly NOT granted.

Permission to use any of the included graphical (GIF) images in any
document other than the Common Lisp HyperSpec is expressly NOT
granted.


4- The only thing you can do, is to distribute a program to visualize
the CLHS. Of course, you can configure a browser to cascade another
style sheet when rendering the original CLHS. But check with your
lawyer, this could be considered a "performance of CLHS", which is
forbidden.


For your information, I use emacs-w3m to visualize a local copy of the
CLHS, and here is how your hs_max_improved.html page is rendered. I
don't see any difference with the original CLHS page.

------------------------------------------------------------------------

[LISPWORK [Common Lisp HyperSpec (TM) [Prev [Up] [Next

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Special Operator IF

Syntax:

if test-form then-form [else-form] => result *

Arguments and Values:

Test-form---a form .

Then-form---a form .

Else-form---a form . The default is nil .

results---if the test-form yielded true , the values returned by the
then-form; otherwise, the values returned by the else-form.

Description:

if allows the execution of a form to be dependent on a single test-form.

First test-form is evaluated. If the result is true , then then-form is
selected; otherwise else-form is selected. Whichever form is selected is
then evaluated.

Examples:

;this is a comment
(if t 1) => 1
(if nil 1 2) => 2
(defun test ()
(dolist (truth-value '(t nil 1 (a b c)))
(if truth-value (print 'true) (print 'false))
(prin1 truth-value))) => TEST
(test)
>> TRUE T
>> FALSE NIL
>> TRUE 1
>> TRUE (A B C)
=> NIL

Affected By:

None.

Exceptional Situations:

None.

See Also:

cond , unless , when

Notes:

(if test-form then-form else-form)
== (cond (test-form then-form) (t else-form))

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Starting [Contents [Index] [Symbols] [Glossary [Issues]
Copyright 1996-2005, LispWorks Ltd. All rights reserved.

------------------------------------------------------------------------



PS: otherwise, yes, firefox renders your hs_max_improved.html page
nicely. Good work.

Kaz Kylheku

unread,
Sep 24, 2012, 8:44:29 PM9/24/12
to
On 2012-09-24, Pascal J. Bourguignon <p...@informatimago.com> wrote:
> 3- You cannot distribute modifications of the CLHS:
> http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm#Legal
>
> Permission to copy, distribute, display, and transmit the Common
> Lisp HyperSpec is granted provided that copies are not made or
> distributed or displayed or transmitted for direct commercial
> advantage, that notice is given that copying, distribution, display,
> and/or transmission is by permission of LispWorks Ltd., and that any
> copy made is COMPLETE and UNMODIFIED. IN PARTICULAR, the material
> that MUST appear in the copy includes:

You can easily comply with the the above by distributing the unmodified
original, plus a stack of patches to be applied to it by the end user.

The modification is then done by the end user, not by the redistributor. What
the end user does on his machine with something that is not redistributed is
his business.

Context diff patches quote some of the material for the context lines and so
can be regarded as a derived work. But that falls under fair use: it's just a
small excerpt. I'm sure there is a way to construe those patches it to be some
form of commentary, research, or scholarship, or the like.

Patches don't have to be context diffs. Plain old diffs have only line
numbers: replace this numeric range of lines with that text.

Of course, what we can't publicly host a patched HyperSpec, because that is a
form of redistribution. Or rather "broadcasting".

Pascal J. Bourguignon

unread,
Sep 24, 2012, 11:10:33 PM9/24/12
to
Kaz Kylheku <k...@kylheku.com> writes:

> On 2012-09-24, Pascal J. Bourguignon <p...@informatimago.com> wrote:
>> 3- You cannot distribute modifications of the CLHS:
>> http://www.lispworks.com/documentation/HyperSpec/Front/Help.htm#Legal
>>
>> Permission to copy, distribute, display, and transmit the Common
>> Lisp HyperSpec is granted provided that copies are not made or
>> distributed or displayed or transmitted for direct commercial
>> advantage, that notice is given that copying, distribution, display,
>> and/or transmission is by permission of LispWorks Ltd., and that any
>> copy made is COMPLETE and UNMODIFIED. IN PARTICULAR, the material
>> that MUST appear in the copy includes:
>
> You can easily comply with the the above by distributing the unmodified
> original, plus a stack of patches to be applied to it by the end user.

I thought so, but now I'm not so sure (of course, IANAL):

Permission to make modified copies is expressly NOT granted.


Well, yes, you could distribute the unmodified sources with a patch, but
the end user is not allowed to apply the patches that would modify their
copy.

> The modification is then done by the end user, not by the redistributor. What
> the end user does on his machine with something that is not redistributed is
> his business.

Yes, but as I understand it, the quoted sentence above doesn't allow
anyone to make modify any copy.


> Context diff patches quote some of the material for the context lines and so
> can be regarded as a derived work. But that falls under fair use: it's just a
> small excerpt. I'm sure there is a way to construe those patches it to be some
> form of commentary, research, or scholarship, or the like.

Granted.


> Patches don't have to be context diffs. Plain old diffs have only line
> numbers: replace this numeric range of lines with that text.
>
> Of course, what we can't publicly host a patched HyperSpec, because that is a
> form of redistribution. Or rather "broadcasting".

The quoted sentence above doesn't talk about redistribution (of the
modified copies); it just forbid any modification.



As a poor layman, with no lobbying power on any lawmaker and no economic
power on any lawyer, the only way I have to fight silly laws (or
contracts or licenses) is to bring them to their absurd limits.

Perhaps this silly license will be the reason why a new lisp standard
will have to emerge in the future?

Kaz Kylheku

unread,
Sep 25, 2012, 12:44:45 AM9/25/12
to
On 2012-09-25, Pascal J. Bourguignon <p...@informatimago.com> wrote:
> Kaz Kylheku <k...@kylheku.com> writes:
>> You can easily comply with the the above by distributing the unmodified
>> original, plus a stack of patches to be applied to it by the end user.
>
> I thought so, but now I'm not so sure (of course, IANAL):
>
> Permission to make modified copies is expressly NOT granted.

People who say what bits I can and cannot flip inside my own machine
can go stuff themselves.

> Well, yes, you could distribute the unmodified sources with a patch, but
> the end user is not allowed to apply the patches that would modify their
> copy.

That's like saying you can't buy a paperback novel, and then tear out pages, or
scribble on them with crayons.
0 new messages