emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Marcin Borkowski <mbork@mbork.pl>
To: emacs-orgmode@gnu.org
Subject: Re: How to make a non-GPL Org-mode exporter?
Date: Mon, 27 Jul 2015 18:32:54 +0200	[thread overview]
Message-ID: <87io95v9vt.fsf@mbork.pl> (raw)
In-Reply-To: <55B63902.7060800@gmail.com>


On 2015-07-27, at 15:58, Scott Randby <srandby@gmail.com> wrote:

> On 07/27/2015 08:10 AM, Marcin Borkowski wrote:
>>
>> Please refrain from comments about my stupidity or stupidity of the
>> so-called IP law.  And please understand that if I'm sounding a bit
>> angry in this email, it's because I'm *very* angry about this whole
>> lawyer mafia restricting my freedom (again).  (Note: I'm all for
>> restricting people's freedom when there are important reasons for that.
>> I just consider this situation not to be one of these.)
>>
>
> If I understand correctly, you wish to use code that other people have 
> written and published under the GPL. These people made the free choice 
> put the conditions of the GPL on the code. I don't see how it is 
> anything other than improper to reuse the code in a public domain 
> setting. I prefer to respect the choices of the code's writers.

I'm afraid that you didn't understand correctly, and I'm sorry for being
too vague.  Let me include an example.

--8<---------------cut here---------------start------------->8---
(defcustom ox-my-cool-menu-key ?o
  "The dispatch key for the My-Cool exporter in the exporter
menu.")

(org-export-define-backend 'my-cool
  '((italic . org-my-cool-italic)
    (bold . org-my-cool-bold)
    (plain-list . org-my-cool-plain-list)
    (item . org-my-cool-item)
    (link . org-my-cool-link)
    (headline . org-my-cool-headline)
    (line-break . org-my-cool-line-break)
    (horizontal-rule . org-my-cool-horizontal-rule)
    (table . org-my-cool-table)
    (table-row . org-my-cool-table-row)
    (table-cell . org-my-cool-table-cell)
    (example-block . org-my-cool-example-block)
    (paragraph . org-my-cool-paragraph)
    (plain-text . org-my-cool-plain-text)
    (section . org-my-cool-section)
    (template . org-my-cool-template))
  :export-block "MY-COOL"
  :menu-entry `(,ox-my-cool-menu-key "Export to My-Cool"
				    ((?O "As buffer" org-my-cool-export-as-my-cool)
				     (?o "As file" org-my-cool-export-to-my-cool))))

(defun org-my-cool-paragraph (paragraph contents info)
  "Transcode PARAGRAPH element into My-Cool format.
CONTENTS is the paragraph contents.  INFO is a plist used as
a communication channel."
  contents)

(defun org-my-cool-plain-text (text info)
  "Transcode a TEXT string from Org to My-Cool.
TEXT is the string to transcode.  INFO is a plist holding
contextual information."
  text)

(defun org-my-cool-section (section contents info)
  "Transcode a SECTION element from Org to My-Cool.
CONTENTS holds the contents of the section.  INFO is a plist
holding contextual information."
  contents)

(defun org-my-cool-template (contents info)
  "Return complete document string after LaTeX conversion.
CONTENTS is the transcoded contents string.  INFO is a plist
holding export options."
  contents)

(defun org-my-cool-italic (italic contents info)
  "Transcode ITALIC from Org-mode to My-Cool."
  (concat "'" contents "'"))

(defun org-my-cool-bold (bold contents info)
  "Transcode BOLD from Org-mode to My-Cool."
  (concat "''" contents "''"))

(defun org-my-cool-plain-list (plain-list contents info)
  "Transcode PLAIN-LIST to My-Cool."
  contents)

(defun org-my-cool-export-as-my-cool
  (&optional async subtreep visible-only body-only ext-plist)
  "Export current buffer as an My-Cool buffer."
  (interactive)
  (org-export-to-buffer 'my-cool "*Org My-Cool Export*"
    async subtreep visible-only body-only ext-plist (lambda ()
						      (when (fboundp #'my-cool-mode) (my-cool-mode)))))
--8<---------------cut here---------------end--------------->8---

The above fragment was written by means of taking (a fragment of)
ox-latex, removing all LaTeX-related parts and filling in my ones (of
course, this one is rather silly).  Assume now that these functions will
be expanded when needed by code generating suitable output.

If I were an author of a (more sophisticated than the above) exporter,
and someone would want to take it, put the "meat" aside, leave the
"skeleton" (as above), fill it with his/her code and publish it under
whatever license s/he wanted, I wouldn't see anything improper about it.
(I *might* expect to be asked first, though, but this would be matter of
politeness, but probably not ethics, and definitely not law.  OTOH,
I probably *would* expect the author to include a short note, like
saying "This code is modelled after ox-whatever.")  I cannot see how
using my code in such a way would be irrespectful.

Actually, such a situation took place a few months ago, though not with
any Elisp code, but with a LaTeX document I published on my website
(someone wanted to take my document, leave the preamble and markup
commands defined by me, and put his contents inside).  He asked me if
I'm fine with it, and my answer was "Of course".  He then proceeded to
ask me how exactly the code is licensed, which I considered a nuisance;
I told him to treat it as CC-licensed (under one of the CC licenses,
I don't recall which one now), just to make him stop asking silly
questions.  (He then proceeded to complain that code should not be
licensed using CC licenses; I wrote back very shortly and ignored him
from that point, since I didn't feel like wasting time on nitpicking).

I am astonished that someone could react differently, especially that
the code is supposed to be "free".  The only regret I have is that
I shouldn't have ignored the guy, but explain (as politely as I can,
which probably means moderately politely at best...) that he's making
fool of himself, since I can license *my* code in whichever way I want,
and besides nobody really cares anyway.

> Scott Randby

Best,

-- 
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University

  reply	other threads:[~2015-07-27 16:33 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-27 12:10 How to make a non-GPL Org-mode exporter? Marcin Borkowski
2015-07-27 12:16 ` Oleh Krehel
2015-07-27 13:02   ` Rainer M Krug
2015-07-27 13:09     ` Greg Troxel
2015-07-27 13:13       ` Andreas Hilboll
2015-07-27 13:30         ` Rainer M Krug
2015-07-27 14:05       ` Marcin Borkowski
2015-07-27 14:03   ` Marcin Borkowski
2015-07-28 12:33   ` Paul Rudin
2015-07-27 12:39 ` Daniele Nicolodi
2015-07-27 16:59   ` Marcin Borkowski
2015-07-27 18:02     ` Nick Dokos
2015-07-27 18:12       ` Marcin Borkowski
2015-07-27 18:45     ` Daniele Nicolodi
2015-07-28  7:55     ` Oleh Krehel
2015-07-29 14:54       ` Aaron Ecay
2015-07-30 10:08         ` Oleh Krehel
2015-07-27 13:05 ` Greg Troxel
2015-07-27 14:32   ` Marcin Borkowski
2015-07-27 13:58 ` Scott Randby
2015-07-27 16:32   ` Marcin Borkowski [this message]
2015-07-27 15:13 ` Eric S Fraga
2015-07-27 16:01   ` Marcin Borkowski
2015-07-27 16:12     ` Oleh Krehel
2015-07-27 17:12       ` Marcin Borkowski
2015-07-27 17:13       ` Thomas S. Dye
2015-07-27 16:54     ` Eric S Fraga
2015-07-27 17:04       ` Marcin Borkowski
2015-07-27 18:38         ` Eric S Fraga
2015-07-28  8:07           ` Oleh Krehel
2015-07-28  9:00             ` Eric S Fraga
2015-07-28  9:00               ` Oleh Krehel
2015-07-28 10:38                 ` Eric S Fraga
2015-07-28  9:20               ` Andreas Hilboll
2015-07-28  9:30                 ` Oleh Krehel
2015-07-28 10:14                   ` Andreas Hilboll
2015-07-28 10:29                     ` Oleh Krehel
2015-07-27 18:32 ` Richard Lawrence
2015-08-04 15:04 ` Phillip Lord

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87io95v9vt.fsf@mbork.pl \
    --to=mbork@mbork.pl \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).