First, forgive me for not writing this in last month when #Rust2018 occurred. I was so busy and stressful with my career even on most of the weekends. Even this post was written at the TET holidays(I am living in Vietnam), while visiting Singapore for a vacation.
Some of these suggestions are not entirely new and have been added as posts/ comments on /r/rust, Github threads. But I believe better listing down all in a one place, because now we are in the correct time even I am bit late. Also forgive me if somebody got upset with some content of this post.
01. Documentation 📖
“We repeat what we don’t repair.”
— Christine Langley-Obaugh
It should not take more than two weeks to conquer on Rust
- 2015-2016 : No single place to cover all the areas
» Rust reference & v1 Documentation to understand the concepts.
» Rust by example & Cargo documentation to understand usages of syntax and IRC channels to get more help.
The main issue of the first documentation was content of some pages was highly coupled with some other pages, so newcomers had to read x,y,x,z,x pages to understand the contents of x page. We had to do the same with reference but because of it was a long single page at that time, it didn’t feel that much bad.
- 2016-2017 : More content added to v2 documentation
» Less coupling between pages.
» Having a better order compared to v1.
» More content merged from reference & Rust by example and cargo doc.
» More detailed explanations.
I don’t know why we create an another version of doc, without fixing the first version. Even now I prefer some pages of the first version compared to it’s replacements on second, especially because of more concise descriptions.
- 2018–2019 : single place to cover all + more concise content
» Should target all newcomers instead experienced system programmers.
» Should have a short and sweet documentation to learn things quickly.
» Guessing Game can be the right answer for wrong question.
» We need a UI/ UX refresh.
Rust is considered as a language which is difficult to learn. After getting the “Guessing Game” just after the “Hello world!”, I doubt that how many new comers continue learning Rust.(unless he/she is a systems programmer)
In the past years I suggested above changes many times in /r/rust but the default answer was “different people have different learning styles” and I also agree with it. But as a single person the only thing I can do is prepare a prototype to show that things can be better.
Unfortunately my career life was not that much stable and I had to struggle with many interviews, PHP & Golang projects time to time while learning Rust, so my speed was super slow. However this is what I created so far,
02. Crates 📦
“Yes of course. Rocket will eventually work on stable.
Every single feature that Rocket uses is being worked on right now for stabilization… every single one of them…
When is it gonna happen?
I don’t know that depends on these guys… over here…”
__ Sergio Benitez at RustConf 2017
As many of us know, most of the crates are single person projects which mostly started as a hobby or a side project. Most of developers are having their own struggles and life stories, so their ambitions can be changed.
So in Rust ecosystem we should build,
» an army to analyze and contribute for existing crates.
» a culture to listen crate developers as well.
» a proper mechanism to reward the crate developers like Mozilla did once for Tokio.
03. API 🏗️
“Making things more visible makes things better”
Most of #Rust2018 posts had many suggestions about RFCs, developers are waiting for. So in here I skip those.
In Rust std documentation, there is a section called “How to read this documentation”. In other words, we have written a documentation for the documentation. Seriously???
Instead of hiding information, we should show how Rust source code has been organized into crates, modules and etc. And we should encourage developers to check and understand the Rust source code, to see how things have been organized and how things are getting interconnected. These things should not be a dark magic.
» Rust by practice/ Practicing Rust
In October 2016, I suggested this first time on /r/rust. I couldn’t prove how it differs from Rosetta Code or cookbooks at that time but few months later try.kotlinlang.org had a same type of implementation I suggested for Rust. Even we started the Rust cookbook later, it is not what I suggest in here.
🎯 Should show the different ways of doing same task.
🎯 Should categorize both vertically and horizontally(list of pages + Table of contents in each page) with a proper order, to show interconnections.
🎯 Should have concise explanations + extra tips, which can be helpful for other sections.
Example for how to read a text file,
04. Community 👥
“Being Family is Determined More by Behavior Than Blood”
Everything begins in mysticism and ends in politics, but don’t let it happen to Rust ecosystem as well. Due to the internal conflicts over Joyent’s governance, io.js was created from node.js as an open governance alternative with a separate technical committee, to accelerate the development as well. Hope it will not be happened to Rust.
» Are we community yet?
» gitter.im/rust-lang/rust is more active and more user friendly than IRC
» Prepare high-quality conferences and meetups worldwide
» Share recordings of conferences ASAP to give more updated resources
» Make knowledge sharing a core responsibility
» Listen to the whole audience.
“We know often the very best ideas come from a very quiet voice” __ Jony Ive
» Sometimes we can suggest things better, by quality instead creator
05. Next 🏆
“If you want to be the best, you have to do things that other people aren’t willing to do.” — Michael Phelps
» № 01: Speedup compiler
» 2018 should not be boring!
» New UI/UX refreshes almost all sites(But don’t do like Mozilla did last year 🤐, check this as well)
» Official paid support plans for commercial projects
» Mozilla certified Rust courses/exams
» Rust videos from Mattias Petter Johansson 😻
Again, forgive me for not writing this in the last month when #Rust2018 occurred and if somebody got upset with some of above content. 🙇♂️