author | Alan Dipert
<alan@dipert.org> 2020-02-07 22:08:43 UTC |
committer | Alan Dipert
<alan@dipert.org> 2020-02-07 22:08:43 UTC |
parent | 68eb4cf31737ce35bd207f2caccf1a0d27ca9885 |
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.