Licensing

Started by Doug McNaughtabout 24 years ago13 messages
#1Doug McNaught
doug@wireboard.com

I may have some spare hacking time coming up, and I was thinking about
adding a PL (Scheme) to PostgreSQL. I've found some code out there
for a small Scheme interpreter, but it appears to be licensed under a
"BSD with advertising clause" license (as opposed to the "modern BSD"
license of PostgreSQL). The license text includes:

Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

Would it be a problem to include this code in PG?

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

#2Bruce Momjian
pgman@candle.pha.pa.us
In reply to: Doug McNaught (#1)
Re: Licensing

I may have some spare hacking time coming up, and I was thinking about
adding a PL (Scheme) to PostgreSQL. I've found some code out there
for a small Scheme interpreter, but it appears to be licensed under a
"BSD with advertising clause" license (as opposed to the "modern BSD"
license of PostgreSQL). The license text includes:

Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

Would it be a problem to include this code in PG?

I think it would be fine. I don't think the old/new BSD license is any
major distinction. We moved from old to new with no issues a while ago.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#3Ross J. Reedstrom
reedstrm@rice.edu
In reply to: Doug McNaught (#1)
Re: Licensing

That's not the 'BSD with advertising clause', that's the modern BSD
license, with a standard acknowledgement clause. The orginal advertisement
clause looks like:

(quoting from http://www.gnu.org/philosophy/bsd.html)

3. All advertising materials mentioning features or use of this software
must display the following acknowledgement: This product includes
software developed by the University of California, Berkeley and
its contributors.

Unless that (or something like it) is in there, you're o.k. BTW, kudos
for thinking about licensing issues _before_ doing the work.

Ross

P.S. Which package are you looking at, BTW?

Show quoted text

On Wed, Dec 05, 2001 at 01:17:39PM -0500, Doug McNaught wrote:

I may have some spare hacking time coming up, and I was thinking about
adding a PL (Scheme) to PostgreSQL. I've found some code out there
for a small Scheme interpreter, but it appears to be licensed under a
"BSD with advertising clause" license (as opposed to the "modern BSD"
license of PostgreSQL). The license text includes:

Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.

Would it be a problem to include this code in PG?

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

#4Ross J. Reedstrom
reedstrm@rice.edu
In reply to: Bruce Momjian (#2)
Re: Licensing

On Wed, Dec 05, 2001 at 01:48:33PM -0500, Bruce Momjian wrote:

Would it be a problem to include this code in PG?

I think it would be fine. I don't think the old/new BSD license is any
major distinction. We moved from old to new with no issues a while ago.

Shame on you Bruce: lawyers don't understand 'just a little change in
the license' We've gotten away with the change by making a good faith
effort to contact all copyright holders, and then assuming that those who
did not respond have assigned/abandoned their rights. And, the biggest
holder of them all, Berkeley, _did_ change their license. Probably a bit
'squidgy' but I think we'd win it in court, not that it'd come to that.

Ross

#5Doug McNaught
doug@wireboard.com
In reply to: Doug McNaught (#1)
Re: Licensing

"Ross J. Reedstrom" <reedstrm@rice.edu> writes:

That's not the 'BSD with advertising clause', that's the modern BSD
license, with a standard acknowledgement clause. The orginal advertisement
clause looks like:

[...]

Ahh, good to know. Sounds like it'll be OK then.

Unless that (or something like it) is in there, you're o.k. BTW, kudos
for thinking about licensing issues _before_ doing the work.

Heh, if there's one thing I hate it's wasted effort. ;)

P.S. Which package are you looking at, BTW?

TinyScheme:

http://tinyscheme.sourceforge.net/home.html

It's not the prettiest code I've ever seen, but it's small, not too
hard to read, and complete enough to be useful from what I can see. I
think it'll be an interesting project.

I am still thinking of maybe writing my own Scheme implementation, but
there are already N of them out there. If I can use something that's
compatible license-wise and reasonably functional, so much the better.

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

#6Hannu Krosing
hannu@tm.ee
In reply to: Doug McNaught (#1)
Re: Licensing

Doug McNaught wrote:

"Ross J. Reedstrom" <reedstrm@rice.edu> writes:

Yeah, a quick search on freshmet.net found TinyScheme and KSI Scheme as
candidates for an embeddable Scheme interpreter. KSI is described as
'well documented: but the doumentation is in Russian'

Whereas TinyScheme is lightly documented, but in English, so it's a
win for me. ;)

Have you checked SIOD? It _seems_ to have the old BSD licence (perhaps
because it
is not updated since '97 ;)

But it is small and lightweight (and has connectivity to msql, oracle,
rdb and sybase)

SCM which was initially based on it is probably a no-no for GPL, but
actually I think
that most PL's could be considered simple add-ons and be distributed in
./contrib where
we have historically been more liberal concernong "other" licenses.

Guile is probably out for same reasons, plus being fat anyway ;)

Refs:
SIOD: http://people.delphi.com/gjc/siod.html
SCM: http://www.swiss.ai.mit.edu/~jaffer/SCM.html
Guile: http://www.gnu.org/software/guile/guile.html
------------
Hannu

#7Ross J. Reedstrom
reedstrm@rice.edu
In reply to: Doug McNaught (#5)
Re: Licensing

On Wed, Dec 05, 2001 at 02:23:57PM -0500, Doug McNaught wrote:

"Ross J. Reedstrom" <reedstrm@rice.edu> writes:

P.S. Which package are you looking at, BTW?

TinyScheme:

http://tinyscheme.sourceforge.net/home.html

It's not the prettiest code I've ever seen, but it's small, not too
hard to read, and complete enough to be useful from what I can see. I
think it'll be an interesting project.

I am still thinking of maybe writing my own Scheme implementation, but
there are already N of them out there. If I can use something that's
compatible license-wise and reasonably functional, so much the better.

Yeah, a quick search on freshmet.net found TinyScheme and KSI Scheme as
candidates for an embeddable Scheme interpreter. KSI is described as
'well documented: but the doumentation is in Russian'

Ross

#8Doug McNaught
doug@wireboard.com
In reply to: Doug McNaught (#1)
Re: Licensing

"Ross J. Reedstrom" <reedstrm@rice.edu> writes:

Yeah, a quick search on freshmet.net found TinyScheme and KSI Scheme as
candidates for an embeddable Scheme interpreter. KSI is described as
'well documented: but the doumentation is in Russian'

Whereas TinyScheme is lightly documented, but in English, so it's a
win for me. ;)

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

#9Doug McNaught
doug@wireboard.com
In reply to: Doug McNaught (#1)
Re: Licensing

Hannu Krosing <hannu@tm.ee> writes:

Have you checked SIOD? It _seems_ to have the old BSD licence
(perhaps because it is not updated since '97 ;)

But it is small and lightweight (and has connectivity to msql,
oracle, rdb and sybase)

I did look at it (I actually played with it a long time ago), but it
didn't seem to be intended to be used as an extension language,
whereas TinyScheme is (you can have multiple interpreters in a
process, each with its own heap etc).

SCM which was initially based on it is probably a no-no for GPL, but
actually I think that most PL's could be considered simple add-ons
and be distributed in ./contrib where we have historically been more
liberal concernong "other" licenses.

True, but I'd like to think it's barely conceivable that my work could
go into the mainline code (not that Scheme has that big of an
audience, so it might not be worth it). ;)

Guile is probably out for same reasons, plus being fat anyway ;)

Yeah, bloat city. It's a nice system, but way overkill IMHO for most
extension-language uses. Not that Perl/Python aren't big too, but
Scheme's supposed to be "small".

Thanks very much for the suggestions!

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

#10Hannu Krosing
hannu@tm.ee
In reply to: Doug McNaught (#1)
Re: Licensing

Doug McNaught wrote:

Hannu Krosing <hannu@tm.ee> writes:

Have you checked SIOD? It _seems_ to have the old BSD licence
(perhaps because it is not updated since '97 ;)

But it is small and lightweight (and has connectivity to msql,
oracle, rdb and sybase)

I did look at it (I actually played with it a long time ago), but it
didn't seem to be intended to be used as an extension language,
whereas TinyScheme is (you can have multiple interpreters in a
process, each with its own heap etc).

Is there a standard way of making "safe" (no filesystem/network
access etc.) version of TinyScheme ?

Just recently there was much fuss about PL/Python's ability to read
files. Or are you planning to make only an untrusted PL ?

---------------
Hannu

#11Doug McNaught
doug@wireboard.com
In reply to: Doug McNaught (#1)
Re: Licensing

Hannu Krosing <hannu@tm.ee> writes:

Is there a standard way of making "safe" (no filesystem/network
access etc.) version of TinyScheme ?

Yeah, very standard: add it to the code. ;) There are no "hooks" for
that kind of access control currently. I'm not aware of a Scheme
system (except possibly Guile, just because it has everything else:)
that has such.

Just recently there was much fuss about PL/Python's ability to read
files. Or are you planning to make only an untrusted PL ?

Probably start off untrusted and add trusted afterward--I'd like to
get the basics (interface between Scheme and PG datatypes, SPI glue) in
place and get familiar with the code. It shouldn't be too hard to add
a "capability mask" to the interpreter structure and put permission
checks in.

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863

#12Peter Eisentraut
peter_e@gmx.net
In reply to: Ross J. Reedstrom (#7)
Re: Licensing

Ross J. Reedstrom writes:

Yeah, a quick search on freshmet.net found TinyScheme and KSI Scheme as
candidates for an embeddable Scheme interpreter. KSI is described as
'well documented: but the doumentation is in Russian'

Several months ago I looked to do exactly what Doug is proposing now.
There are a few dozen(!) freely available scheme implementations out there
that claim to be embeddable, but I haven't found a single one that a)
compiled cleanly, b) was documented, and c) could be used in a way that
wouldn't require changing the postmaster startup code. Most scheme
implementations play weird tricks with the stack for efficiency, but I
don't want that kind of thing in PostgreSQL.

Good luck anyway. ;-)

--
Peter Eisentraut peter_e@gmx.net

#13Doug McNaught
doug@wireboard.com
In reply to: Peter Eisentraut (#12)
Re: Licensing

Peter Eisentraut <peter_e@gmx.net> writes:

Several months ago I looked to do exactly what Doug is proposing now.
There are a few dozen(!) freely available scheme implementations out there
that claim to be embeddable, but I haven't found a single one that a)
compiled cleanly, b) was documented, and c) could be used in a way that
wouldn't require changing the postmaster startup code. Most scheme
implementations play weird tricks with the stack for efficiency, but I
don't want that kind of thing in PostgreSQL.

That's one nice thing about TinyScheme--it's a fairly non-tricky
implementation (as far as stack and pointer hackery).

As for (c), I don't anticipate any need to mess with the startup
code. An interpreter instance is a self-contained struct that can be
instantiated when a Scheme function is invoked, not before (and
cached of course for later use).

-Doug
--
Let us cross over the river, and rest under the shade of the trees.
--T. J. Jackson, 1863