From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcin Borkowski Subject: Re: How to make a non-GPL Org-mode exporter? Date: Mon, 27 Jul 2015 18:59:20 +0200 Message-ID: <87h9opv8nr.fsf@mbork.pl> References: <87pp3dvm18.fsf@mbork.pl> <55B62668.7020100@grinta.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37870) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZJlkT-0001Zl-T5 for emacs-orgmode@gnu.org; Mon, 27 Jul 2015 12:59:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZJlkO-0007uA-TI for emacs-orgmode@gnu.org; Mon, 27 Jul 2015 12:59:33 -0400 Received: from mail.mojserwer.eu ([2a01:5e00:2:52::8]:34072) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZJlkO-0007tq-I4 for emacs-orgmode@gnu.org; Mon, 27 Jul 2015 12:59:28 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.mojserwer.eu (Postfix) with ESMTP id E946F8F2004 for ; Mon, 27 Jul 2015 18:59:26 +0200 (CEST) Received: from mail.mojserwer.eu ([127.0.0.1]) by localhost (mail.mojserwer.eu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ggPkigD0oQcp for ; Mon, 27 Jul 2015 18:59:24 +0200 (CEST) Received: from localhost (unknown [109.232.24.146]) by mail.mojserwer.eu (Postfix) with ESMTPSA id 5D7338F2003 for ; Mon, 27 Jul 2015 18:59:24 +0200 (CEST) In-reply-to: <55B62668.7020100@grinta.net> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org On 2015-07-27, at 14:39, Daniele Nicolodi wrote: > Hello Marcin, > > On 27/07/15 14:10, Marcin Borkowski wrote: >> Assume that (for some reason) I want to write an Org-mode exporter whi= ch >> won't be GPL'd. (Use-case: having written a few custom exporters, I'm >> writing a tutorial on them, and I consider publishing a *tutorial* wit= h >> GPL'd code a Bad Thing=E2=84=A2. (The idea of a programming tutorial = is that >> other people can or even should reuse the code in the tutorial, right? >> And I see no reason to impose GPL on them.)) > > As Oleh Krehel pointed out in a reply to another mail of yours, if your > code links to org-mode code (or other GPL code) you cannot release it > under a different license. I'm not sure about how linking is intended i= n > Elisp sense of ('require)ing a library, but I believe it is analog to > executable linking in machine code programs. I understand, and I thank you for your clarification. (Though I still consider it plain ridiculous. And the fact that Oleh's own blog is CC-BY-NC-SA licensed, and contains many fragments of Elisp code, both small snippets and whole functions, thus rendering it illegal, is sweet;-).) > Therefore, the only extensions to org-mode that can exist (and be > distributed, if you write code and keep it for yourself you are not > affected by the licensing terms) must be GPL. > > Thus, it makes little sense to continue the discussion: even if you > would release the code in your tutorial under a different license, it > would be or no use for who will read it. I see. Funnily, I found a few Emacs blogs (also by renowned Emacs hackers, like Oleh mentioned above) which clearly violate the rule that any Elisp code should be GPL'd. So my intuition that nobody cares (at least until explicitly asked) seems to be confirmed;-). >> How do I do that? Is that even possible? Also, is it possible to get >> an actual answer to this question without spending money on lawyers? > > There is no need to have lawyers involved, if you are in doubt about th= e > interpretation of the GPL you can consult the FSF (or other > organizations) on the matter. They will be happy to answer your questio= n > with a very high degree of authority on the matter. As someone mentioned, lawyers will not answer any question with a "high degree of authority". Although I admit that this is not entirely their fault. >> The manual says: >>=20 >> ,---- >> | Your two entry points are respectively =E2=80=98org-export-define-ba= ckend=E2=80=99 and >> | =E2=80=98org-export-define-derived-backend=E2=80=99. To grok these = functions, you >> | should first have a look at =E2=80=98ox-latex.el=E2=80=99 (for how t= o define a new >> | back-end from scratch) and =E2=80=98ox-beamer.el=E2=80=99 (for how t= o derive a new >> | back-end from an existing one. >> `---- >>=20 >> So basically you are expected to use existing GPL'd code to learn to >> write new exporters. > > The manual makes the thing easy for the ones that want to respect the > authors choice of license. I *do* want to respect the authors, and their choice of license. For instance, after all this discussion, I will GPL my tutorial (and probably include an explanation why it's not PD, CC0 or anything like that). Although I doubt that all authors bear in mind (or even know) these consequences of their choosing GPL. >> Also, the overall structure of the exporters is extremally similar. F= or >> instance, the :menu-entry argument of org-export-define-backend is >> almost the same for all exporters (and it should be, in order not to >> break usability!). Should I follow such conventions, in order to >> satisfy users, or should I deliberately break it, in order to satisfy >> lawyers? > > First, your goal is not to satisfy lawyers, but to comply with the > license terms. The license terms are chosen by the authors of the code, > thus you are satisfying the wishes of whom granted you access to their > code. It is the minimum you should do to thank them. I thank the authors in many ways. I also hold them in very high respect. As I mentioned in an earlier post, I (as an author) consider being nitpicky about licensing and such as wasting the author's time and annoying him, and I see little or no value (besides "satisfying lawyers") in analyzing licenses like we are doing now. > Second, if that is the only structure that makes sense, you can > re-invent it without looking at the GPL code. Thus you can use a simila= r > structure in your differently licensed code. However, you should really > have re-created it without looking at the original. This email already > suggests otherwise. And who cares whether I did look at the code or not? I mean, besides lawyers? >> Also, the names of functions (like `org-latex-export-as-latex' vs >> `org-latex-export-to-latex') are similar across exporters. Should I u= se >> this convention, too, in order to satisfy fellow programmers, or shoul= d >> I deliberately break it, in order to satisfy lawyers? > > Function names are not copyrightable (as far as I know). Whoa! Now things are getting really funny. I'm not a logician, but from what I recall from my logic lectures, anonymous functions' names are their bodies. Does that mean that if I rewrite everything using lambdas (which is theoretically possible), I'm fine? ;-) ;-) ;-) >> Also, the docstrings of many transcoders are similar. How am I suppos= ed >> to write a docstring which is at the same time more or less >> comprehensive and different enough from the existing ones, so that >> I don't end up in jail? (<--- this is actually a joke. I hope so at >> least...) > > There is a minimum unit of "code" that is copyrightable (the word "the" > appears in many copyrighted works, but you can still use it in your > own). If the doc-strings are trivial you can freely write something sim= ilar. As has been settled, docstrings are only a nuisance, not a real problem h= ere. > Cheers, > Daniele Best, and thanks again for your insights! Angry or not, and whether I like the legal system or not, I learned a lot from you today. --=20 Marcin Borkowski http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski Faculty of Mathematics and Computer Science Adam Mickiewicz University