orgtutorial_dto-fr.org: Fix encoding
[worg.git] / org-contrib / gsoc2012 / orgmode-gsoc2012-ideas.org
blob7718bdf6ea8ec7c485ebbfa242117b9066b5a5b5
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
8 #+LANGUAGE:   en
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
15 #+name: banner
16 #+begin_html
17   <div id="subtitle" style="float: center; text-align: center;">
18   <p>
19   Org Mode ideas for GNU's application to  <a href="http://www.google-melange.com/gsoc/homepage/google/gsoc2012">GSoC 2012</a>
20   </p>
21   <p>
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
24   and Beer"/>
25   </a>
26   </p>
27   </div>
28 #+end_html
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
47 application. 
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
65 programming. 
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
78 possible.
80 *Difficulty:*
81 Medium
83 *Requirements:*
84 Elisp, PicoLisp
86 *Recommended:* 
87 Knowledge about the inner workings of Org-babel and the
88 PicoLisp application programming framework, some experience with Git.
90 *Mentors:*
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
97 ChangeLog files?
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
104 nodes.
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
109 matter.
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. 
115 *Difficulty:*
116 Hard
118 *Requirements:*
119 Git, Elisp, C
121 *Recommended:* 
122 Good understanding of Git and the structure of Org-mode files. 
124 *Mentors:*
125 Carsten Dominik
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
133 a GSoC project.
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.
138 *Difficulty:*
139 Medium
141 *Requirements:*
142 Elisp, RegExp
144 *Recommended:* 
145 Familiarity with Org-mode, regular expressions and state machines.
147 *Mentors:*
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
155 HTML interfaces).
157 *Difficulty:*
158 Medium
160 *Requirements:*
161 Elisp, HTML
163 *Recommended:* 
164 Familiarity with Org-mode and Babel
166 *Mentors:*
167 Eric Schulte
169 ** Asynchronous code block execution for Org Babel
170 *Project Description:*
171 Adding support for asynchronous code block execution.
173 *Difficulty:*
174 Medium
176 *Requirements:*
177 Elisp, C
179 *Recommended:* 
180 Good understanding of Org Babel and the GNU/Linux process model.
182 *Mentors:*
183 Eric Schulte
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
189 execution).
191 *Difficulty:*
192 Medium
194 *Requirements:*
195 Elisp, C
197 *Recommended:* 
198 Good understanding of Org Babel and the GNU/Linux process model.
200 *Mentors:*
201 Eric Schulte
203 ** Handling Babel code block output written to STDERR
204 *Project Description:*
205 Adding support for handling output written to STDERR.
207 *Difficulty:*
208 Medium
210 *Requirements:*
211 Elisp
213 *Recommended:* 
214 Familiarity with Org Babel and GNU/Linux.
216 *Mentors:*
217 Eric Schulte