git » jacl.git » commit e51c85d

paper

author Alan Dipert
2020-02-07 22:08:43 UTC
committer Alan Dipert
2020-02-07 22:08:43 UTC
parent 68eb4cf31737ce35bd207f2caccf1a0d27ca9885

paper

paper/jacl-els-2020.tex +52 -24

diff --git a/paper/jacl-els-2020.tex b/paper/jacl-els-2020.tex
index fd5ac97..fab3a7b 100644
--- a/paper/jacl-els-2020.tex
+++ b/paper/jacl-els-2020.tex
@@ -41,18 +41,20 @@
 \email{alan@dipert.org}
 
 \begin{abstract}
-  Single-page Web Applications (SPAs) are popular technique for
+  Single-page Web Applications (SPAs) are a popular technique for
   implementing responsive Web-based User Interfaces (UIs). Google's
   GMail, introduced in 2007, was one of the first well-known
   SPAs. SPAs are most commonly implemented in JavaScript (JS) or with
-  a language that compiles to JavaScript. Despite their ubiquity, SPAs
-  continue to present a wide set of challenges to application
-  developers, and implementation techniques vary widely.
-  
+  a language that compiles to JavaScript.
+
+  Despite their ubiquity, SPAs continue to present a wide set of
+  challenges to application developers.
+
   In this paper I introduce JavaScript-Assisted Common Lisp (JACL), a
   new Web-browser based implementation of an extended subset of Common
   Lisp (CL). JACL, which is incomplete and under active development,
-  is an attempt to ease SPA development by facilitating the use of CL.
+  is an attempt to facilitate the use of CL in overcoming the
+  challenges of SPA development.
 \end{abstract}
 
 %%
@@ -102,30 +104,56 @@
 \section{Introduction}
 
 The demand for SPAs in the past decade has only grown. Users and
-stakeholders continually expect larger and more sophisticated SPAs.
-
-SPA implementors have responded by creating a widening variety of
-special-purpose programming languages that compile to JavaScript. Each
-new language promotes one or more paradigms, application
-architectures, or development workflows, and claim some advantage
-relative to the status quo.
+stakeholders continually expect larger and more sophisticated
+SPAs. Unfortunately, large-scale UI development presents a particular
+set of challenges that are not easily overcome.
+
+One challenge is the creation and composition of many different kinds
+of user input and output elements. For such elements to be reusable,
+and for an application's implementation to be comprehensible, these
+elements must share a set of visual, behavioral, and data contracts.
+
+Another challenge is the correct handling of events resulting from
+user activity or received over the network from a Web
+server. Applications must react to these events predictably and
+without corrupting data.
+
+SPA implementors have responded to these and other challenges by
+creating a widening variety of special-purpose programming languages
+that compile to JavaScript. Each new language promotes one or more
+paradigms, application architectures, or development workflows, and
+claim some advantage relative to the status quo.
 
 This paper presents one new such language, JavaScript-Assisted Common
 Lisp (JACL). JACL is as an implementation of an extended subset of
-Common Lisp (CL). CL is a famously powerful and flexible language, and
-a proven substrate for large-scale application development.
+Common Lisp (CL).
+
+Unlike contemporary SPA implementation languages, CL is associated
+with a history of innovation in the domain of UI implementation that
+predates even the existence of the Web.
+
+For example, many challenges associated with dynamic UI element
+composition were managed successfully in Lisp as early as the late
+1970s. The MIT Lisp Machine operating system was a dynamic, graphical
+computing environment implemented in Lisp. A system called Flavors was
+applied successfully on the Lisp Machine to the problem of managing a
+large number of UI elements.
+
+The Common Lisp Object System (CLOS), CL's standard facility for
+object-oriented programming, is a direct descendent of Flavors.
 
-While the Web had existed for only a few years by 1994, and JS didn't
-exist at all until 1995, many of the challenges inherent in
-large-scale industrial application development were known long before
-the advent of the Web. The design of CL is filled with hard-won
-knowledge about how to overcome these challenges and rapidly build
-high-quality, high-performance applications.
+Predictably handling UI events without data corruption is another
+challenge that has been approached and overcome using Lisp-based
+software. The Garnet UI development system developed at CMU in the
+late 1980s introduced a declarative, constraint-based model for
+managing complex relationships between UI elements. It was used
+successfully in several applications.
 
 The primary goal of the JACL project is to ease the task of SPA
-development by applying the design of CL to the challenges now faced
-by SPA implementors. JACL is envisioned as the means to that goal, and
-to have at least the following ancillary affordances:
+development by applying CL --- a proven substrate, as evidenced by the
+preceding examples --- to the challenges now faced by SPA
+implementors. JACL is envisioned as the means to that goal, and to
+have at least the following ancillary affordances:
 
 \begin{itemize}
   \item Compelling interactive development experience.