5.5 KB

Org Mode ideas for GNU's application to GSoC 2012

Beach, Books
  and Beer

Org Mode GSoC 2012 Ideas Page

What is an Ideas list?

Here is some info from Google about a typical GSoC ideas page:

"An Ideas list should be a list of suggested student projects. This

list is meant to introduce contributors to your project's needs and to

provide inspiration to would-be student applicants. It is useful to

classify each idea as specifically as possible, e.g. "must know

Python" or "easier project; good for a student with more limited

experience with C++." If your organization plans to provide an

application template, it would be good to include it on your Ideas


Keep in mind that your Ideas list should be a starting point for

student applications; we've heard from past mentoring organization

participants that some of their best student projects are those that

greatly expanded on a proposed idea or were blue-sky proposals not

mentioned on the Ideas list at all. A link to a bug tracker for your

open source organization is NOT an ideas list."

(quoted from the official GSoC 2012 home page)

Org Mode project ideas for GSoC 2012

Org Babel

Real webprogramming with Org Mode and PicoLisp

PicoLisp is one out of many Org Babel languages, but may be special in the sense that it does not only contribute to the static webpublishing capacities, but may introduce dynamic webprogramming on top of a real database into Org Mode.

Real interactive webprogramming frequently involves a (SQL) database like MySQL, a programming language like PHP or Python to build a MVC (Model-View-Controller) application on top of the database, a web framework for that programming language to make the programmers life easier (e.g. Django for Python), and a persistence layer that abstract away the conceptual mismatch between the SQL database and the (mostly) object-oriented application. Sometimes, a WYSIWYG html editor like MS Frontpage is invovled too, when webdesigners design the UI of the application.

Such an application needs user input (via or elements in the html pages) and needs to adapt dynamically to the users actions and queries by updating either the whole page or only parts of it (Javascript). For each user, a session is needed to keep track of the state of the application during his/her visit.

This kind of dynamic webprogramming can't be done with Org Mode. Typical webpages made with Org Mode are static in nature, even if they update their content frequently with some cron jobs on the server. There is no interaction with the user.

Considering the web stack for dynamic web apps described above, Org Mode really functions as a kind of 'Frontpage on steroids' for highly skilled academics. The project idea is to let PicoLisp replace all the other elements of the webstack and combine Org Mode and PicoLisp into an entirely Lisp-based framework for dynamic web programming.

In the PicoLisp application framework, UI and database are unified. Database objects are first class members of the language, and the UI elements act directly on this object-oriented lisp database (that is fast and scalable). No external SQL storage is needed, no persistence layer between the relational world of the DB and the object-oriented world of the application, and no glue code (controller) that connects the view to the model.

By merging PicoLisp's framework for rapid web-application development with Org Modes framework for rapid (web-) content production via Org Babel, new kinds of websites produced with Org Mode should become possible.

"Notebook" like console interface on top of Org Mode/ Babel

Asynchronous code block execution for Org Babel

Piping results between Babel code blocks

Implementing a multi-programming-language "notebook" like console interface build on top of Org-mode and Babel (with both Emacs and HTML interfaces) [Mentor: Eric Schulte] Adding support for asynchronous code block execution [Mentor: Eric Schulte] Adding support for piping results between code blocks allowing many blocks to run concurrently (probably best combined with asynchronous execution) [Mentor: Eric Schulte]

Handling Babel code block output written to STDERR

Adding support for handling output written to STDERR [Mentor: Eric Schulte]