From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thomas S. Dye" Subject: [RFC] Self-configuring Org-mode files Date: Thu, 9 Dec 2010 21:09:17 -1000 Message-ID: Mime-Version: 1.0 (Apple Message framework v936) Content-Type: multipart/mixed; boundary="===============2004085005==" Return-path: Received: from [140.186.70.92] (port=53925 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PQx6b-0004bP-87 for emacs-orgmode@gnu.org; Fri, 10 Dec 2010 02:09:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PQx6Y-0006wS-G3 for emacs-orgmode@gnu.org; Fri, 10 Dec 2010 02:09:25 -0500 Received: from oproxy3-pub.bluehost.com ([69.89.21.8]:58977) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1PQx6Y-0006w3-9E for emacs-orgmode@gnu.org; Fri, 10 Dec 2010 02:09:22 -0500 Received: from cpe-66-91-68-127.hawaii.res.rr.com ([66.91.68.127] helo=[192.168.1.2]) by box472.bluehost.com with esmtpa (Exim 4.69) (envelope-from ) id 1PQx6V-0005QA-MT for emacs-orgmode@gnu.org; Fri, 10 Dec 2010 00:09:20 -0700 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode list --===============2004085005== Content-Type: multipart/alternative; boundary=Apple-Mail-2-125145243 --Apple-Mail-2-125145243 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Aloha all, I'm eager to learn how to build a self-configuring Org-mode file. I think Org-mode is uniquely positioned to produce reproducible research documents, but frankly speaking, the author of a reproducible Org-mode research document would be foolish to release it. The probability that it would run out-of-the-box on a reader's computer is quite a bit less than 1. Multiply this fraction by the number of potential readers and the probability that the author will receive one or more emails entitled something like "Your reproducible research isn't reproducible" rapidly approaches 1. A desire to produce reproducible research with Org-mode shouldn't reduce to an open-ended commitment to solve configuration problems on users' computers around the world. An Org-mode file that reliably self-configures might solve this problem. Based on the kind comments of several list members, I've come up with what I hope are the rudiments of such a self-configuring Org-mode file. I'm requesting your comments because I believe, individually and collectively, you know way more about this than I do. 1) At the end of the Org-mode file are some instructions saying something like "To use this document, first evaluate this code block", as suggested by Dan Davison: # Local variables: # eval:(sbe "essential-document-config") # End: 2) the source code block "essential-document-config" would consist of noweb calls to Library of Babel functions: #+source: essential-document-config #+begin_src emacs-lisp :noweb yes <> <> #+end_src 3) The Library of Babel would be populated with little functions, each of which sets a single variable in a buffer-local way (as suggested several times to me on the list): #+source: lob-set-this-variable #+begin_src emacs-lisp :var x=nil (set (make-local-variable 'this-variable) x) #+end_src 4) A super-function in the Library of Babel would set the buffer-local instance of every relevant Org-mode variable to its default state: #+source: lob-set-local-defaults #+begin_src emacs-lisp ... #+end_src 5) The Org-mode community would be responsible for populating the Library of Babel with the relevant little functions--whenever a new configuration variable is introduced, then a little function for it would be deposited in the Library of Babel. The name of the configuration function would be part of the variable's docstring. 6) The author of a reproducible Org-mode document could reasonably expect to produce a document that self-configures on computers around the world, in a way that is safe and effective. The author would call the super-function, then add noweb calls to little functions until the reproducible research document works as expected. I'm happy for any comments, positive or negative. All the best, Tom --Apple-Mail-2-125145243 Content-Type: text/html; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Aloha = all,

I'm eager to learn how to build a = self-configuring Org-mode file.  

I think = Org-mode is uniquely positioned to produce reproducible research = documents, but frankly speaking, the author of a reproducible Org-mode = research document would be foolish to release it.   The probability = that it would run out-of-the-box on a reader's computer is quite a bit = less than 1.  Multiply this fraction by the number of potential = readers and the probability that the author will receive one or more = emails entitled something like "Your reproducible research isn't = reproducible" rapidly approaches 1.  

A = desire to produce reproducible research with Org-mode shouldn't reduce = to an open-ended commitment to solve configuration problems on users' = computers around the world.  An Org-mode file that reliably = self-configures might solve this problem.

Based = on the kind comments of several list members, I've come up with what I = hope are the rudiments of such a self-configuring Org-mode file. =  I'm requesting your comments because I believe, individually and = collectively, you know way more about this than I = do.

1) At the end of the Org-mode file = are some instructions saying something like "To use this document, = first
evaluate this code block", as suggested by Dan = Davison:

# Local variables:
# eval:(sbe = "essential-document-config")
# End:

2) = the source code block "essential-document-config" would consist of noweb = calls to Library of Babel = functions:

#+source: = essential-document-config
#+begin_src emacs-lisp :noweb = yes
 <<lob-set-this-variable(x=3Dt)>>
<&l= t;lob-set-that-variable(x=3Dnil)>>
#+end_src

=
3) The Library of Babel would be = populated with little functions, each of whi= ch sets a single variable in a buffer-l= ocal way (as suggested several times to = ;me on the list):

#+source: l= ob-set-this-variable
#+begin_src emacs-lisp :var x=3Dnil
(set = (make-local-variable 'this-variable) x)
#+end_src

4) A super-function in the = Library of Babel would set the buffer-local instance of every relevant = Org-mode variable to its default state:

#+source: = lob-set-local-defaults
#+begin_src emacs-lisp
...
#+end_src

5) = The Org-mode community would be responsible = for populating the Library of Babel with&nbs= p;the relevant little functions--whenever a new&n= bsp;configuration variable is introduced, then a&= nbsp;little function for it would be deposit= ed in the Library of Babel.  The name of = the configuration function would be part of the variable's = docstring.

6) The author of a reproducible = Org-mode document could reasonably expect to produce a document that = self-configures on computers around the world, in a way that is safe and = effective.  The author would call the super-function, then add = noweb calls to little functions until the reproducible research document = works as = expected.

I'm happy for any c= omments, positive or negative.

All=  the best,
Tom

= --Apple-Mail-2-125145243-- --===============2004085005== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --===============2004085005==--