# A Potential Rust Learning Project Group We, Ryan Levick and Esteban Küber (with Niko Matsakis as lang team liasion), propose an initiative to better understand how people learn Rust with the goal of helping the Rust project continue to make learning the language and core tooling easier. This is an open call for feedback on this idea. ## Motivation Rust is well known for its somewhat steep learning curve. In the latest Rust annual survey, many pointed out that making Rust easier to learn would directly help promote the adoption of the language. Over time, Rust has become easier to learn thanks to initiatives like the Rust book, friendly error messages, non-lexical lifetimes, and more. However, we believe it is time for there to be a concentrated effort in understanding *how* people learn Rust in order to continue this progress. ## Charter and Goals The project group's charter is simple: ***help* make Rust easier to learn**. Underneath this charter are several goals: * **Quantify Rust's learning curve**: our collective understanding of how people learn Rust is annecdotal making it hard to understand holistically and impossible to track over time. * **Collect disparate knowledge on *how* Rust is learned and taught**: there is a large wealth of knowledge on how Rust is learned and taught, but there is no repository for this information. We will collect this existing insight and make it useable by others. * **Improve the community's understanding of how people learn Rust**: while many Rust educators have deep insights into how people learn Rust, this insight is often incomplete as their primary goal is to teach Rust not to understand how Rust is being learnt. We should dive deeper into how Rust is learned than most educators would normally do. * **Provide data on best practices for teaching Rust**: educators often do not have the time or resources to try out various teaching strategies. We will provide insights into the effectiveness of certain teaching strategies. Along with these goals are **non**-goals: * **Produce educational material**: we want to help educators and the Rust community to teach Rust. We don't aim to explicitly do this ourselves. * **Give feedback on specific educational material**: while the goal is to provide insights into Rust education that educators will find useful in improving their offerings, we will not directly review or give feedback on specific educational materials. We hope the information obtained by the project group to be useful to many different stackholders including: * **Rust educators**: educators can use the insights to better teach Rust * **the lang and compiler teams**: these teams can improve the language and core tooling (e.g., by improving diagnostics, implementing quality of life features, etc.). ## Artifacts and Success Metrics The intended artifacts of this group are: * quantified data on how people learn Rust that can be measured and compared over time. * a repository of data on how Rust is learned and taught as well as data on the effectiveness of various teaching practices. The success metrics of this group are: * How relevant the various stackholders listed above find the data that is collected. * If Rust becomes easier to learn over time. ## Home We expect to eventually propose the project group as a [lang team project](https://lang-team.rust-lang.org/proposing_a_project.html), but we are open to feedback on the best home for it. ## First Activity The first concrete activity to be done by the project group will be to conduct a Rust learnability survey to better understand the status quo. ### Question We Hope to Answer The survey will attempt to quantify the perceived difficult of learning Rust across different co-horts (e.g., C++ developers, those who learn Rust on the job, etc.). ### Limitations of the Survey Naturally surveys are limited in what insights they can give. This is why the aim of the survey is to measure *perception* of Rust's learning curve. ## Future Possibilities For now, we aim to keep the goal of the project group simple, focusing on better understanding the status quo of Rust's learnability story. Further activities in pursuit of this goal may include: * Learnability studies where we actively monitor people's unguided learning experiences (e.g., user journaling) * Guided teaching sessions which aim to teach Rust in controlled ways to gauge effectiveness. If the first activity of this project group proves to be sustainable and successful, we may want to consider making this an official working group (potentially under the lang team, though this is an open question). This would entail growing the goals of the project group to include any of the following: * helping quantify the effectiveness of certain teaching strategies. * helping eliminate common "papercuts" from certain usage scenarios. * helping fine tune processes such as the RFC so that learnability is appropriately considered. ## Call for participation Assuming the community and the Rust project think this is a good idea, we would like to invite others to work with us. If you would like to participate, please let us know. First, we are looking for feedback and participation from the following groups in no particular order: * **any interested members of any team within the Rust project**: We hope that this effort can shed light on how people learn to use Rust holistically from the compiler and language to core tooling like Cargo and rustdoc. * **Rust educators**: Teaching Rust can give deep insights into the issues that learners face. While we won't be able to generalize on every experience every educator has had when teaching Rust, it would be a mistake to not engage with this community. * **those with data science backgrounds**: we will need assistance in creating and analyzing artifacts such as surveys, user learning journals, education practice reviews, etc.