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

"Unsafe Ferris" may be misleading and/or a barrier to entry #2555

Closed
adlerd opened this issue Jan 4, 2021 · 5 comments · Fixed by rust-lang/rust#87312
Closed

"Unsafe Ferris" may be misleading and/or a barrier to entry #2555

adlerd opened this issue Jan 4, 2021 · 5 comments · Fixed by rust-lang/rust#87312

Comments

@adlerd
Copy link

adlerd commented Jan 4, 2021

Currently the first (and only, for the first 18 chapters) definition someone reading the Book cover-to-cover will receive for "unsafe" is in the introduction section, like this:

Ferris will also help you distinguish **code that isn’t meant to work**:
...
This code block contains unsafe code.

I hope it's clear why this is not a good definition for "unsafe", but also it may be serving as an unnecessary barrier for people new to the language to feel that unsafe code is not an area they can ever become proficient in!

When considering ways this problem could be addressed; e.g. moving "unsafe Ferris" out of the table or some other way to clarify that the definition "code that isn't meant to work" doesn't apply to unsafe rust, I discovered that the attribute seems to only be used in chapter 19.1, titled "Unsafe Rust". My first suggestion then would be to just remove unsafe Ferris altogether; it doesn't seem to add much advantage over the appearance of unsafe keyword in the code and again may be disadvantaging people who try to interpret it without the background context long-time rustaceans have.

If there is interest in this idea I can open a PR to simply remove unsafe Ferris, but I didn't want to open such a PR without some kind of "ack" first since it could be taken the wrong way.

@carols10cents
Copy link
Member

You're right, I've removed the unsafe Ferris designation. Thanks!

@carols10cents carols10cents reopened this Jul 9, 2021
bors added a commit to rust-lang-ci/rust that referenced this issue Jul 20, 2021
Update books

## reference

6 commits in ab60513a3a5a0591e237fddff5d027a982648392..82d75cf423e4a7824fb36e73ccb18519d6900610
2021-07-05 08:27:31 -0700 to 2021-07-15 06:49:08 -0700
- fix wording/punctuation in "Lifetime bounds" (rust-lang/reference#1062)
- mention implicit `Sized` bound in more places (rust-lang/reference#1053)
-  (rust-lang/reference#1060)
- Remove inner attributes from non-block expressions. (rust-lang/reference#1051)
- Add note about the sign of the remainder (rust-lang/reference#1073)
- Clarify closure capture modes slightly (rust-lang/reference#1064)

## book

21 commits in a90f07f1e9a7fc75dc9105a6c6f16d5c13edceb0..eac55314210519238652f12b30fec9daea61f7fe
2021-07-05 14:43:12 -0400 to 2021-07-19 11:08:01 -0400
-  (rust-lang/book#2791)
- Add Deref trait to overload the deref operator in appendix table
- Revise linker installation instructions. Fixes rust-lang/book#2151.
- Clarify number literal type suffixes. Fixes rust-lang/book#1979.
- Add a note that lifetimes are coming up but aren't required
- Zip creates an iterator, not a vector. Fixes rust-lang/book#2762.
- Add Thai translation to the appendix. Connects to rust-lang/book#2636
- Derive Copy and Clone for Point to match stdlib docs example; fixes rust-lang/book#2657
- Make the definition of Option match the stdlib's, fixes rust-lang/book#2634
- Explain double quote backslash; closes rust-lang/book#2597
- Don't use the term 'anonymous struct' to fix rust-lang/book#2584
- Reword a sentence to fix rust-lang/book#2525
- Add Hindi translation. Connects to rust-lang/book#2496
- Remove unsafe Ferris designations from code. Fixes rust-lang/book#2555
- Add Traditional Chinese translation. Connects to rust-lang/book#2470
- Remove some more references to the authors field
- Make Appendix E be a link
- fix line wrapping
- remove description about the authors field
- remove the authors field
- remove the authors field

## rust-by-example

6 commits in 028f93a61500fe8f746ee7cc6b204ea6c9f42935..1db6bb483cc87ad3b424d9aba764fe622960a1be
2021-07-06 06:28:53 -0300 to 2021-07-15 06:17:42 -0300
- Updated the file destructure_tuple.md (rust-lang/rust-by-example#1452)
- Fix nomenclature around methods (rust-lang/rust-by-example#1450)
- std_misc/path.md: update `Show` to `Display` (rust-lang/rust-by-example#1449)
- Fix up github action (rust-lang/rust-by-example#1451)
- Remove github pages
- Support GitHub Actions (rust-lang/rust-by-example#1330)

## rustc-dev-guide

2 commits in 60e282559104035985331645907c3d9f842312c5..93422c21baca585dc88357ec886a48f6ddc7d665
2021-07-05 11:21:03 -0400 to 2021-07-13 12:45:58 -0400
- Update for merge of CrateDisambiguator into StableCrateId
- Minor capitalization fix (rust-lang/rustc-dev-guide#1170)

## edition-guide

8 commits in 5d57b3832f8d308a9f478ce0a69799548f27ad4d..af696ce8ea526445590ae0ca66a8128d2a95a69a
2021-07-05 10:33:32 +0200 to 2021-07-20 11:38:03 -0400
- Add migration section for panic-macro-consistency (rust-lang/edition-guide#258)
- Update transitioning chapter. (rust-lang/edition-guide#255)
- Add details on migrating the Cargo feature resolver. (rust-lang/edition-guide#259)
- Improve panic macro consistency summary (rust-lang/edition-guide#256)
- Add migration details to or-patterns guide (rust-lang/edition-guide#252)
- Add migration section to into-iterator (rust-lang/edition-guide#253)
- Add Rust 2021 prelude migration details (rust-lang/edition-guide#251)
- Provide more information about disjoint capture in closures and migration instructions (rust-lang/edition-guide#246)

## embedded-book

1 commits in 506840eb73b0749336e1d5274e16d6393892ee82..09986cd352404eb4659db44613b27cac9aa652fc
2021-06-24 00:01:32 +0000 to 2021-07-18 19:26:46 +0000
- Stop referring to the alloc crate as unstable  (rust-embedded/book#297)
@liby
Copy link

liby commented Aug 9, 2021

@carols10cents
I see doc.rust-lang.org hasn’t been updated yet. When will it be updated?

@carols10cents
Copy link
Member

The book rides the release trains. https://doc.rust-lang.org/beta/book/ch00-00-introduction.html does have the update (note the "beta" in the URL) so https://doc.rust-lang.org/stable/book/ch00-00-introduction.html will be updated when the next release of Rust happens.

@liby
Copy link

liby commented Aug 9, 2021

@carols10cents Thank you for answering my doubts.

@TheButlah
Copy link

TheButlah commented Dec 2, 2021

Just wanted to say that I'd been scratching my head trying to find unsafe Ferris for a while, until I came across this issue. As a beginner I never felt like unsafe Ferris meant "code that wasn't supposed to work". It did mean to me that it was a prickly Ferris and should be handled with care - which is exactly how unsafe should be treated.

Just my two cents - I think Ferris still belongs in that table, but the table should be re-framed from "icons indicating code doesn't work" to instead "helpful legends to navigate code samples"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants