update with moar feedback

This commit is contained in:
Lily Brown 2021-08-04 13:43:59 -07:00
parent feeb75b1fe
commit 92a00e9415
2 changed files with 20 additions and 18 deletions

Binary file not shown.

View file

@ -26,17 +26,17 @@
\begin{document} \begin{document}
\title{Position Paper: Some Goals of the Luau Type System} \title{Position Paper: Goals of the Luau Type System}
%% \author{Lily Brown} \author{Lily Brown}
%% \author{Andy Friesen} \author{Andy Friesen}
%% \author{Alan Jeffrey} \author{Alan Jeffrey}
%% \affiliation{ \affiliation{
%% \institution{Roblox} \institution{Roblox}
%% \city{San Mateo} \city{San Mateo}
%% \state{CA} \state{CA}
%% \country{USA} \country{USA}
%% } }
\begin{abstract} \begin{abstract}
Luau is the scripting language that powers user-generated experiences on the Luau is the scripting language that powers user-generated experiences on the
@ -69,9 +69,11 @@ as supporting goal-driven learning, non-strict typing semantics, and
mixed strict and non-strict types. Particular focus is placed on how mixed strict and non-strict types. Particular focus is placed on how
these goals differ from traditional type systems' goals. these goals differ from traditional type systems' goals.
\section{Human Aspects} \section{Needs of the Roblox platform}
\subsection{Heterogeneous developer community} \subsection{Heterogeneous developer community}
Need: \emph{a language that is powerful enough to support professional users, yet accessible to beginners}
Quoting a Roblox 2020 report \cite{RobloxDevelopers}: Quoting a Roblox 2020 report \cite{RobloxDevelopers}:
\begin{itemize} \begin{itemize}
\item \emph{Adopt Me!} now has over 10 billion plays and surpassed 1.6 million concurrent users earlier this year. \item \emph{Adopt Me!} now has over 10 billion plays and surpassed 1.6 million concurrent users earlier this year.
@ -80,14 +82,14 @@ Quoting a Roblox 2020 report \cite{RobloxDevelopers}:
\end{itemize} \end{itemize}
This demonstrates the heterogeneity of the Roblox developer community: This demonstrates the heterogeneity of the Roblox developer community:
developers of experiences with billions of plays are on the same developers of experiences with billions of plays are on the same
platform as children first learning to code. Moreover, \emph{both of platform as children first learning to code. Both of these groups are important to
these groups are important}. The professional development studios support. The professional development studios bring high-quality experiences to the
bring high-quality experiences to the platform, and the beginning creators platform, and the beginning creators contribute to the energetic creative community,
contribute to the energetic creative community, forming the next generation of developers. forming the next generation of developers.
\subsection{Goal-driven learning} \subsection{Goal-driven learning}
Goal: \emph{support learning how to perform specific tasks organically} Need: \emph{organic learning for achieving specific goals}
All developers are goal-driven, but this is especially true for All developers are goal-driven, but this is especially true for
learners. A learner will download Roblox Studio with an learners. A learner will download Roblox Studio with an
@ -123,7 +125,7 @@ specific task with as much help as possible from tools.
\subsection{Type-driven development} \subsection{Type-driven development}
Goal: \emph{enable users to leverage types in their development process} Need: \emph{a language that supports large-scale codebases and defect detection}
Professional development studios are also goal-directed (though the Professional development studios are also goal-directed (though the
goals may be more abstract, such as ``decrease user churn'' or goals may be more abstract, such as ``decrease user churn'' or
@ -158,7 +160,7 @@ types are introduced gradually, through API documentation and type discovery.
Type inference provides many of the benefits of type-driven development Type inference provides many of the benefits of type-driven development
even to creators who are not explicitly providing types. even to creators who are not explicitly providing types.
\section{Types} \section{Goals of the type system}
\subsection{Infallible types} \subsection{Infallible types}
Goal: \emph{provide type information even for ill-typed or syntactically invalid programs.} Goal: \emph{provide type information even for ill-typed or syntactically invalid programs.}