1 #+OPTIONS: H:4 num:nil toc:2 \n:nil @:t ::t |:t ^:{} -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
2 #+STARTUP: align fold nodlcheck hidestars oddeven lognotestate hideblocks
3 #+SEQ_TODO: TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
4 #+TAGS: Write(w) Update(u) Fix(f) Check(c) noexport(n)
5 #+TITLE: Google Summer of Code 2012
6 #+AUTHOR: Thorsten Jolitz
7 #+EMAIL: tj[at]data-driven[dot]de
9 #+STYLE: <style type="text/css">#outline-container-introduction{ clear:both; }</style>
10 #+LINK_UP: ./index.html
11 #+LINK_HOME: http://orgmode.org/worg/
12 #+EXPORT_EXCLUDE_TAGS: noexport
17 <div id="subtitle" style="float: center; text-align: center;">
19 Org Mode ideas for GNU's application to <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012">GSoC 2012</a>
22 <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012"/>
23 <img src="../../images/gsoc/2012/beach-books-beer-60pc.png" alt="Beach, Books
31 * Org Mode GSoC 2012 Ideas Page
32 ** Real webprogramming with Org Mode and PicoLisp
33 *Project Description:*
34 [[http://picolisp.com/5000/!wiki?home][PicoLisp]] is one out of many [[http://orgmode.org/worg/org-contrib/babel/languages.html][Org Babel languages]], but may be special in
35 the sense that it does not only contribute to the static
36 webpublishing capacities, but may introduce dynamic webprogramming on
37 top of a real database into Org Mode.
39 Real interactive webprogramming frequently involves a (SQL) database
40 like MySQL, a programming language like PHP or Python to build a MVC
41 (Model-View-Controller) application on top of the database, a web
42 framework for that programming language to make the programmers life
43 easier (e.g. Django for Python), and a persistence layer that abstract
44 away the conceptual mismatch between the SQL database and the (mostly)
45 object-oriented application. Sometimes, a WYSIWYG html editor like MS
46 Frontpage is invovled too, when webdesigners design the UI of the
49 Such an application needs user input (via <form> or <input> elements
50 in the html pages) and needs to adapt dynamically to the users actions
51 and queries by updating either the whole page or only parts of it
52 (Javascript). For each user, a session is needed to keep track of the
53 state of the application during his/her visit.
55 This kind of dynamic webprogramming can't be done with Org Mode.
56 Typical webpages made with Org Mode are static in nature, even if they
57 update their content frequently with some cron jobs on the server.
58 There is no interaction with the user.
60 Considering the web stack for dynamic web apps described
61 above, Org Mode really functions as a kind of 'Frontpage on steroids'
62 for highly skilled academics. The project idea is to let PicoLisp
63 replace all the other elements of the webstack and combine Org Mode
64 and PicoLisp into an entirely Lisp-based framework for dynamic web
67 In the PicoLisp application framework, UI and database are unified.
68 Database objects are first class members of the language, and the UI
69 elements act directly on this object-oriented lisp database (that is
70 fast and scalable). No external SQL storage is needed, no persistence
71 layer between the relational world of the DB and the object-oriented
72 world of the application, and no glue code (controller) that connects
73 the view to the model.
75 By merging PicoLisp's framework for rapid web-application development
76 with Org Modes framework for rapid (web-) content production via Org
77 Babel, new kinds of websites produced with Org Mode should become
87 Knowledge about the inner workings of Org-babel and the
88 PicoLisp application programming framework, some experience with Git.
91 Bastien Guerry, Eric Schulte
93 ** Git merge tool for Org files
94 *Project Description:*
95 This project idea is about writing a git merge driver for Org mode
96 files, in the way [[http://git.savannah.gnu.org/gitweb/?p%3Dgnulib.git%3Ba%3Dblob%3Bf%3Dlib/git-merge-changelog.c][git-merge-changelog]] does this for GNU style
99 One of the obstacle for using Org-mode for collaborative programs is
100 that many operations add or remove text from the beginning or end of a
101 file, or which add or remove a subnode from an outline tree. These are
102 operations that confuse the git merger, in particular if two people
103 have added something to a file, or removed/added sequential sibling
106 I believe that this could be solved with a dedicated merge driver that
107 understands the integrity of an outline (sub)tree, and that knows that
108 the sequence of two new subtrees added by different people does not
111 The idea for this is actually (I believe) from Brian Gough who asked
112 me about it at FOSDEM. I have now also run into this problem and would
113 really find it great if such a merge driver could be written.
122 Good understanding of Git and the structure of Org-mode files.
127 ** Implement an Elisp backend for Ragel
128 *Project Description:*
129 Ragel http://www.complang.org/ragel/ is a tool
130 that integrates regular expressions and state machines under one
131 umbrella. It has backends currently for C, C++, Objective-C, D, Java
132 and Ruby. Programming an Elisp backend would be a manageable task for
135 After that org-mode code might become half as long and twice as
136 fast - at least those sections that are heavily regex oriented.
145 Familiarity with Org-mode, regular expressions and state machines.
148 Bastien Guerry, Rustom Mody, Nicolas Goaziou
151 ** "Notebook" like console interface on top of Org Mode/ Babel
152 *Project Description:*
153 Implementing a multi-programming-language "notebook" like console
154 interface build on top of Org-mode and Babel (with both Emacs and
164 Familiarity with Org-mode and Babel
169 ** Asynchronous code block execution for Org Babel
170 *Project Description:*
171 Adding support for asynchronous code block execution.
180 Good understanding of Org Babel and the GNU/Linux process model.
185 ** Piping results between Babel code blocks
186 *Project Description:*
187 Adding support for piping results between code blocks allowing many
188 blocks to run concurrently (probably best combined with asynchronous
198 Good understanding of Org Babel and the GNU/Linux process model.
203 ** Handling Babel code block output written to STDERR
204 *Project Description:*
205 Adding support for handling output written to STDERR.
214 Familiarity with Org Babel and GNU/Linux.