author | Alan Dipert
<alan@dipert.org> 2020-02-06 00:06:12 UTC |
committer | Alan Dipert
<alan@dipert.org> 2020-02-06 00:06:12 UTC |
parent | 0b646cb0922b92e4f030efd5d5232c2a92eca647 |
paper/jacl-els-2020.bib | +7 | -0 |
jacl-els-2020.tex => paper/jacl-els-2020.tex | +138 | -25 |
diff --git a/paper/jacl-els-2020.bib b/paper/jacl-els-2020.bib new file mode 100644 index 0000000..8775d57 --- /dev/null +++ b/paper/jacl-els-2020.bib @@ -0,0 +1,7 @@ +@online{Somasegar12, +author ={Soma Somasegar}, +year = 2012, +title ="TypeScript: JavaScript Development at Application Scale", +url ="https://web.archive.org/web/20121003001910/http://blogs.msdn.com/b/somasegar/archive/2012/10/01/typescript-javascript-development-at-application-scale.aspx", +lastaccessed ="February 4, 2020", +} \ No newline at end of file diff --git a/jacl-els-2020.tex b/paper/jacl-els-2020.tex similarity index 79% rename from jacl-els-2020.tex rename to paper/jacl-els-2020.tex index 50115fc..3215a6c 100644 --- a/jacl-els-2020.tex +++ b/paper/jacl-els-2020.tex @@ -35,7 +35,7 @@ \begin{document} -\title{JACL: A Common Lisp for Single-page Web Application Development} +\title{JACL: A Common Lisp for Developing Single-Page Web Applications} \author{Alan Dipert} \email{alan@dipert.org} @@ -45,28 +45,44 @@ %% article. \begin{abstract} Single-page Web Applications (SPAs) are an increasingly popular - technique for implementing sophisticated and responsive Web-based - User Interfaces (UIs). Such applications are typically delivered as - one or more JavaScript files that are loaded and executed in users' - Web browsers. Interaction with the server is performed exclusively - by asynchronous exchange of serialized data, a technique known as - Ajax. Google's GMail Web application is a well-known example. In - response to the technical demands of SPAs, JavaScript and the Web - browser platform have evolved considerably in the past decade. In - the same period, SPAs grew in complexity and ambition, and languages - that compile to JavaScript --- but claim some advantage relative to - it, often with regard to the management of complexity --- have - increased in number and popularity. With a few exceptions, these - languages promote application architectures oriented around the - affordances of compile-time type systems, and a development workflow - characterized by alternating batch compilation with whole-program - reloading. In this paper, I introduce a new, Web browser-based - implementation of an extended subset of Common Lisp called - Javascript-Assisted Common Lisp or \textbf{JACL}. JACL is an - incomplete but ongoing effort to promote an interactive workflow - that improves the efficiency of SPA development without compromising - on the size or speed of deliverables, relative to contemporary - alternatives. + technique for implementing responsive Web-based User Interfaces + (UIs). SPAs are most commonly implemented in JavaScript. + + In this paper I introduce JavaScript-Assisted Common Lisp (JACL), a + new Web-browser based implementation of an extended subset of + Common Lisp. JACL promotes an interactive, + incremental, and bottom-up approach to developing SPAs in the Lisp + tradition. JACL is incomplete, but development is active and ongoing. + + %%project goals are to: + + %%\begin{itemize} + %% \item Promote an \textit{interactive}, image-based development workflow supporting incremental, bottom-up development, in the Lisp tradition + %% \item Integrate tightly with the Web browser platform + %% \item Produce executables competitive in size and speed with those produced by other popular compiled-to-JavaScript languages + %%\end{itemize} + + +%%In response to the technical demands of SPAs, JavaScript and the Web +%%browser platform have evolved considerably in the past decade. +%% +%% +%% Google's GMail Web application is a well-known example. In response +%% to the technical demands of SPAs, JavaScript and the Web browser +%% platform have evolved considerably in the past decade. In the same +%% period, SPAs grew in complexity and ambition, and languages that +%% compile to JavaScript --- but claim some advantage relative to it, +%% often with regard to the management of complexity --- have increased +%% in number and popularity. With a few exceptions, these languages +%% promote application architectures oriented around the affordances of +%% compile-time type systems, and a development workflow characterized +%% by alternating batch compilation with whole-program reloading. In +%% this paper, I introduce a new, Web browser-based implementation of +%% an extended subset of Common Lisp called Javascript-Assisted Common +%% Lisp or \textbf{JACL}. JACL is an incomplete but ongoing effort to +%% promote an interactive workflow that improves the efficiency of SPA +%% development without compromising on the size or speed of +%% deliverables, relative to contemporary alternatives. \end{abstract} %% @@ -113,7 +129,104 @@ %% information and builds the first part of the formatted document. \maketitle -%% \section{Introduction} +\section{Introduction} + +The demand for SPAs in the past decade has continued to +grow. Stakeholders and users continue to expect higher and higher +degrees of sophistication and performance from Web applications. + +To satisfy these rising expectations, Web browser platform +capabilities have advanced considerably. Beyond drastic improvements +to JavaScript runtime and layout engine performance, browsers have +also accumulated APIs for interacting with webcams and audio devices, +sending and receiving low-latency data over WebSockets, obtaining +location data, accessing the host filesystem, and more. + +The growing set of demands and platform capabilities, combined with +the inherent limitations of the Web browser's security model, pose a unique +set of challenges to today's SPA implementors. + + + + + +To satisfy these rising expectations, the stack of network computing +standards, infrastructure, and technology supporting the SPA concept +have all advanced considerably in the same period. HTTP/2, pervasive +CDNs, JavaScript runtimes, and layout engines are a few notable +examples. + +As the technology fabric supporting SPAs has moved forward, so too +have the practices of application implementors. + +In the past decade, SPAs have grown considerably in ambition and +complexity, and languages for SPA development that compile to +JavaScript --- but claim some advantage relative to it, often with +regard to large-scale development --- have increased in number and +popularity. + +For the most part, these languages imply a development workflow +characterized by alternating batch compilation with whole-program +reloading, and an application architecture oriented around the +affordances of static type-checking. Dart, TypeScript +\cite{Somasegar12}, Elm, and Flow are some well-known examples. + + + + + +This paper presents JACL. As a Lisp, JACL promotes a +compilation model oriented around the manipulation of a Lisp image. + +a +workflow oriented around the manipulation of a Lisp image, and as a +Lisp, implies much less about application architecture while +supporting interactive development and bottom-up design. + +\subsection{Tool Development} + +First, the batch compilation workflow impedes the production of +development tools for combating complexity on a per-application +basis. A compiler toolchain such as Grunt or Webpack must first be +installed on the development machine, and such toolchains typically +require extensive configuration and maintenance. This configuration +activity, while a prerequisite, is orthogonal to SPA development in +the sense that it's effected in a language and environment disparate +from that of the SPA. For example, the toolchain platform is usually +Node.js, while the SPA platform is that of the Web browser. Although +Node.js and the Web browser are both programmed in JavaScript, +significant differences between these platforms are likely to +discourage per-application tool development. + +Development tools are usually created organically as part of the +development process. The harder such tools are to create, the more +application complexity developers must regularly inure themselves to. + +\subsection{Interactive Development} + +Second, static type-checking impedes interactive development, which is +a well-known technique for rapidly producing high-quality +software. Compilers that perform static type-checking are necessarily +slower than those that do not, which increases ``cycle time.'' + + + +%% Google's GMail Web application is a well-known example. In response +%% to the technical demands of SPAs, JavaScript and the Web browser +%% platform have evolved considerably in the past decade. In the same +%% period, SPAs grew in complexity and ambition, and languages that +%% compile to JavaScript --- but claim some advantage relative to it, +%% often with regard to the management of complexity --- have increased +%% in number and popularity. With a few exceptions, these languages +%% promote application architectures oriented around the affordances of +%% compile-time type systems, and a development workflow characterized +%% by alternating batch compilation with whole-program reloading. In +%% this paper, I introduce a new, Web browser-based implementation of +%% an extended subset of Common Lisp called Javascript-Assisted Common +%% Lisp or \textbf{JACL}. JACL is an incomplete but ongoing effort to +%% promote an interactive workflow that improves the efficiency of SPA +%% development without compromising on the size or speed of +%% deliverables, relative to contemporary alternatives. %% ACM's consolidated article template, introduced in 2017, provides a %% consistent \LaTeX\ style for use across ACM publications, and %% incorporates accessibility and metadata-extraction functionality @@ -569,7 +682,7 @@ %% The next two lines define the bibliography style to be used, and %% the bibliography file. \bibliographystyle{ACM-Reference-Format} -\bibliography{sample-base} +\bibliography{jacl-els-2020} %% %% If your work has an appendix, this is the place to put it.