Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add story for picking a web server #127

Merged
merged 5 commits into from
Apr 9, 2021

Conversation

cortopy
Copy link
Contributor

@cortopy cortopy commented Apr 6, 2021

This is my take on a story following #95 and #112

Copy link
Contributor

@nikomatsakis nikomatsakis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great, thanks. I left one nit -- I feel like one of the morals may be overly kind in claiming that Rust is "ready for the web". I feel like the story is showing all the ways Rust is not ready. Maybe we can even just delete that part of the moral and focus on the "confusing" part?


### **What are the morals of the story?**
* Rust's ecosystem is ready for the web. There are a ton of brilliant libraries and frameworks out there. But web developers that are new to Rust may struggle with the idea that before picking a web server, they have to pick an async runtime.
* In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess my rephrasing overlaps with this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure I follow. Do you mean getting rid of the first point altogether?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I would combine them. For example:

  • Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again? New users especially are not accustomed to having to think about what "runtime" they are using, since there is usually not a choice in the matter.

Copy link
Member

@rylev rylev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking good. I think this captures a lot of the psychological "dread" that can face those looking to adopt Rust for web server projects.

* Rust's ecosystem has a lot of great components that may individually be ready for the web, but combining them is still a fraught proposition. It can also be confusing to web developers that are new to Rust, who may struggle with the idea that before picking a web server, they have to pick an async runtime.
* In a typical web server project, dependencies that use async features form an intricate web which is hard to decipher for both new and seasoned Rust developers. Alan picked Tide and reqwest, only to realise later that they are not compatible. How many more situations like this will he face? Can Alan be confident that it won't happen again?
* The situation is so complex that it's not enough knowing that all dependencies use the same runtime. They all have to actually be compatible with the same runtime **and** version. Newer versions of reqwest are incompatible with the latest stable version of actix web (verified at the time of writing)
* Developers that need a stable environment may be fearful of the complexity that comes with managing async dependencies in Rust. For example, if reqwest had a security or bug fix in one of the latest versions that's not backported to older ones, Alan would not be able to upgrade because actix web is holding him back. He has in fact to wait until **ALL** dependencies are using the same runtime to apply fixes and upgrades.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this point. I'm not sure any of the other stories mention this aspect so clearly. I'm glad it's mentioned here.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed!

Copy link
Contributor

@nikomatsakis nikomatsakis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel this is basically ready to merge, but I left two nits!

@cortopy
Copy link
Contributor Author

cortopy commented Apr 9, 2021

thanks all for your comments! I've just pushed a couple of commits that I think answer all of them

@nikomatsakis nikomatsakis merged commit 381026c into rust-lang:master Apr 9, 2021
@nikomatsakis nikomatsakis added the status-quo-story-ideas "Status quo" user story ideas label Apr 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status-quo-story-ideas "Status quo" user story ideas
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants