discuss: Proposal for revised license and license requirements.
Subject:
Re: Proposal for revised license and license requirements.
From:
Alex Nordstrom ####@####.####
Date:
5 Jun 2005 05:27:39 -0000
Message-Id: <200506051327.31238.lx@se.linux.org>
On Sun, 5 Jun 2005 12:16, J. Greenlees wrote:
> Alex Nordstrom wrote:
> > On Sun, 5 Jun 2005 10:25, David Lawyer wrote:
> > > I think our manifesto needs to be changed to require that any
> > > license must allow modification if the author can't be located
> > > after searching on the Internet.
> >
> > Also, what happens when this hypothetical clause is invoked? Does
> > the new maintainer assume the original author's modification
> > rights? Does he share them with the original author? Do the rights
> > become non-exclusive?
>
> new author has those rights, only on the parts of the document that
> they have written.
This presumes modifications are limited to atomic passages of
exclusively authored material added to the existing material. It's more
or less a given that one can take material that one has singlehandedly
authored as part of another work and use it in a different context.
However, the result of the effort to modify a document is not
necessarily severable from the result of the effort to write the
original document. A more interesting question is what happens to the
document as a whole.
For example, if the original author resurfaces, what are his rights in
relation to the derived work, and how does this situation affect the
author of a derived work?
> > What happens when a document with such a license is created by
> > several authors and some but not all are unreachable? What are the
> > powers of the remaining author(s) to withhold rights or invoke the
> > suggested clause?
>
> generally, each contributor has copyright on the parts they
> contributed. such a group should work out details for righte before
> submitting any works. ( this helps tldp to track down correct person
> in case of alteration requirement )
Again, this presumes the work is severable. Consider the situation where
persons A and B agree to write a document to be published according to
the proposed licence. A writes the document in German and B translates
it to English. B subsequently gets flattened by a bus. Person C now
wishes to correct some spelling mistakes in the English document. Can
he do so without the permission of A? Can he prevent others from
modifying the resulting work? Is he in fact forced to do so? What
rights does A have to modify C's modified translation?
Even if work is severable, issues remain. Suppose persons A and B write
passages 1 and 2, respectively, to form a document to be published
according to the proposed licence. Nothing gives either party the right
to distribute even unchanged copies of the document as a whole other
than the licence. If A (or a person who has attempted to contact A)
makes changes to passage 1 with which B disagrees, is publishing a
document based on this modified passage 1 and the original passage 2
allowed?
Now suppose persons A, B, and C write three separate passages, and C
dies. If A and B disagree on changes to be made, can either of them
release a derived work based in part on C's work?
Provisions can be made for these situations (and should be part of the
licence rather than collaboration agreements), but it will make the
licence very complicated. (Remember that most people find the simple
GPL difficult to grasp.)
--
Alex Nordstrom
http://lx.n3.net/
Please do not CC me in followups;
I am subscribed to the tldp discussion list.
--> -->
<type 'exceptions.IOError'> | Python 2.5.2: /usr/bin/python Wed Jul 3 10:16:11 2024 |
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/opt/ezmlm-browse-0.20/main.py in main() |
424
|
425 if path is not None:
|
426 main_path(path)
|
427 else:
|
428 main_form()
|
global main_form = <function main_form at 0x8ec5c6c> |
/opt/ezmlm-browse-0.20/main.py in main_form() |
378 except ImportError:
|
379 die(ctxt, "Invalid command")
|
380 module.do(ctxt)
|
381
|
382 def main():
|
module = <module 'commands.showmsg' from '/opt/ezmlm-browse-0.20/commands/showmsg.pyc'>, module.do = <function do at 0x8ecda74>, global ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'} |
/opt/ezmlm-browse-0.20/commands/showmsg.py in do(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}) |
18 write(html('msg-pager') % ctxt)
|
19 write('<hr>')
|
20 sub_showmsg(ctxt, ctxt[MSGNUM])
|
21 write('<hr>')
|
22 write(html('msg-pager') % ctxt)
|
global sub_showmsg = <function sub_showmsg at 0x8ec51ec>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum' |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=9363) |
229 format_timestamp(ctxt, ctxt)
|
230 write(html('msg-header') % ctxt)
|
231 rec_showpart(ctxt, msg, 0)
|
232 write(html('msg-footer') % ctxt)
|
233 ctxt.pop()
|
global rec_showpart = <function rec_showpart at 0x8ec51b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x8f26ccc> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8f26ccc>, partnum=1) |
205 else:
|
206 for p in part.get_payload():
|
207 partnum = rec_showpart(ctxt, p, partnum+1)
|
208 else:
|
209 write(html('msg-sep') % ctxt)
|
partnum = 1, global rec_showpart = <function rec_showpart at 0x8ec51b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x8f26c6c> |
/opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8f26c6c>, partnum=2) |
208 else:
|
209 write(html('msg-sep') % ctxt)
|
210 sub_showpart(ctxt, part)
|
211 return partnum
|
212
|
global sub_showpart = <function sub_showpart at 0x8ec5144>, ctxt = {'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x8f26c6c> |
/opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 3, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8f26c6c>) |
164 type = ctxt[TYPE] = part.get_content_type()
|
165 ctxt[FILENAME] = part.get_filename()
|
166 template = html('msg-' + type.replace('/', '-'))
|
167 if not template:
|
168 template = html('msg-' + type[:type.find('/')])
|
global template = <function template at 0x8ebde9c>, global html = <function html at 0x8ebded4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x8f301a8> |
/opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-application-pgp-signature') |
40
|
41 def html(name):
|
42 return template(name + '.html')
|
43
|
44 def xml(name):
|
global template = <function template at 0x8ebde9c>, name = 'msg-application-pgp-signature' |
/opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-application-pgp-signature.html') |
31 except IOError:
|
32 if not _template_zipfile:
|
33 _template_zipfile = zipfile.ZipFile(sys.argv[0])
|
34 try:
|
35 f = _template_zipfile.open(n).read()
|
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x8e56a7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20'] |
/usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x8f26d8c>, file='-c', mode='r', compression=0, allowZip64=False) |
337 self.filename = file
|
338 modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
|
339 self.fp = open(file, modeDict[mode])
|
340 else:
|
341 self._filePassed = 1
|
self = <zipfile.ZipFile instance at 0x8f26d8c>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r' |
<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
args =
(2, 'No such file or directory')
errno =
2
filename =
'-c'
message =
''
strerror =
'No such file or directory'