discuss: Proposal for revised license and license requirements.


Previous by date: 6 Jun 2005 05:26:11 -0000 Re: Proposal for revised license and license requirements., David Lawyer
Next by date: 6 Jun 2005 05:26:11 -0000 Re: Proposal for revised license and license requirements., Rick Moen
Previous in thread: 6 Jun 2005 05:26:11 -0000 Re: Proposal for revised license and license requirements., David Lawyer
Next in thread: 6 Jun 2005 05:26:11 -0000 Re: Proposal for revised license and license requirements., Rick Moen

Subject: Re: Proposal for revised license and license requirements.
From: Alex Nordstrom ####@####.####
Date: 6 Jun 2005 05:26:11 -0000
Message-Id: <200506061326.03217.lx@se.linux.org>

Note: Adding others to your own Mail-Followup-To line is inadvisable. 
I've manually removed Andrew from the recipient list of this mail.

On Mon, 6 Jun 2005 08:01, David Lawyer wrote:
> Non-modifiable means that you can modify it, provided you have the
> author's permission.  Thus the author can try to prevent modification
> that only degrades the document: adding advertising to it,
> intentionally adding untrue statements, etc. 

A similar argument ("to prevent forking") is often applied to non-free 
software. The fallacy here is that the original author is left as the 
sole judge of what constitutes a good end result. While, in a society 
that recognises the notion of authors' moral rights to their works, 
this may be considered their prerogative, it is not necessarily 
optimal.

As with software, what is forgotten here is that the original 
maintainer's version of a Free document will remain as before. If it 
truly is better than a "degraded" version, the public will reject the 
degraded version in favour of the original.

> Non-free documentation is free to use (in a sense) to create improved
> documentation, unlike non-free software which can't be used to create
> improved software.  To use non-free documentation, you simply read it
> and use what you learn plus what you learn from other sources to
> write improved documentation.  So non-free documentation is not a big
> stumbling block to improvement like non-free software is.

I fail to see how rewriting documentation is any different from writing 
a clone of non-free software from scratch after having used (and 
possibly read the source code of) it. It involves using the non-free 
work in the restricted manner permitted by it to gain inspiration, and 
then recreating something similar, but not similar enough to be 
infringing. It's distinguishing apples from apples.

-- 
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 09:39:50 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/<string> in ()
 /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 0x8e1cc6c>
 /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 0x8e24a74>, global ctxt = {'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}
 /opt/ezmlm-browse-0.20/commands/showmsg.py in do(ctxt={'cmd': 'showmsg', 'threadidx': 8, '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 0x8e1c1ec>, ctxt = {'cmd': 'showmsg', 'threadidx': 8, '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': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=9368)
  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 0x8e1c1b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x8e7dccc>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8e7dccc>, 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 0x8e1c1b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x8e7db8c>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8e7db8c>, 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 0x8e1c144>, ctxt = {'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x8e7db8c>
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 8, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x8e7db8c>)
  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 0x8e14e9c>, global html = <function html at 0x8e14ed4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x8e871a8>
 /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 0x8e14e9c>, 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 0x8dada7c>, 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 0x8e29a0c>, 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 0x8e29a0c>, 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'