\section{Introduction} \label{chap:introduction} JavaScript is a fundamental piece of modern Web applications. It was initially designed as a scripting language to extend web pages with small executable code. However, the language is used nowadays to construct a variety of complex systems, including Web applications with sophisticated user interfaces~\cite{kienle2010s,saner2015}. As a result, we are observing the birth of new technologies and tools---including JavaScript libraries and frameworks---to solve common problems faced in the development of such applications. For example, frameworks following the Model-View-Controller (MVC) architecture pattern (or variations of it) are widely used nowadays, including systems such as \angularjs, {\sc Backbone.js}, and {\sc Ember.js}. Among these frameworks, \angularjs\ is probably the most popular one. This fact is evidenced by comparing the number of Google searches (the most queried framework since 2013), the number of contributors in GitHub %(1,418 contributors vs.~555 and 283 in Ember and Backbone, respectively), %(~\ref{img:frameworkscontributions}), and the increasing number of questions and answers in Stack Overflow (the framework with more Q\&A since mid-2013). However, despite the increasing practical interest on \AngularJS, \ul{there is no clear knowledge on how the design and features proposed by this framework affect the development experience of JavaScript software}. More specifically, it is not clear what are the most appreciated features of \AngularJS, what are the main problems faced by developers when using the framework, and which aspects of \AngularJS\ can be improved. Answers to these questions are important to different developers. First, developers who {\em do not} use JavaScript MVC frameworks can understand the benefits and problems related to their use by reviewing the case of \AngularJS. Second, developers {\em who already use} \AngularJS\ can learn how to better use the framework and also to avoid bad \AngularJS\ programming practices. Finally, developers of JavaScript frameworks can use our results to build more powerful and usable frameworks. This paper reports the results of a survey with 460 developers, when we collected their perceptions about \AngularJS. We reveal the relevant features of the framework, e.g., custom components, dependency injection, and two-way data binding. We also reveal the most frequent problems faced by \AngularJS\ developers, e.g., the complexity of the API to declare directives. The remainder of the paper is organized as follows. Section~\ref{chap:background} introduces AngularJS. Section~\ref{chap:angularsurvey} documents the survey design and Section~\ref{sec:angularresults} presents the survey results.