Skip to content

Instantly share code, notes, and snippets.

@lcbasu
Forked from brson/rust-getting-started.md
Created January 1, 2018 02:32
Show Gist options
  • Select an option

  • Save lcbasu/67dc551b0d90997182adc7df3ad9e4e1 to your computer and use it in GitHub Desktop.

Select an option

Save lcbasu/67dc551b0d90997182adc7df3ad9e4e1 to your computer and use it in GitHub Desktop.

Revisions

  1. @brson brson revised this gist Mar 14, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion rust-getting-started.md
    Original file line number Diff line number Diff line change
    @@ -207,4 +207,4 @@ Selected candidate tasks for 2017-02-24:
    <a id="ph3"></a>
    # Phase 3: Finding your niche

    Another good place to contribute right now is [Rust Cookbook](https://gist.github.com/brson/eac868c319248a97f7834991fa63e290).
    TODO. A good place to contribute right now is [Rust Cookbook](https://gist.github.com/brson/eac868c319248a97f7834991fa63e290).
  2. @brson brson revised this gist Mar 14, 2017. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions rust-getting-started.md
    Original file line number Diff line number Diff line change
    @@ -207,5 +207,4 @@ Selected candidate tasks for 2017-02-24:
    <a id="ph3"></a>
    # Phase 3: Finding your niche

    TODO

    Another good place to contribute right now is [Rust Cookbook](https://gist.github.com/brson/eac868c319248a97f7834991fa63e290).
  3. @brson brson renamed this gist Mar 6, 2017. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  4. @brson brson created this gist Mar 6, 2017.
    211 changes: 211 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,211 @@
    # Become a next-generation systems hacker with Rust

    [Rust] is a novel systems programming language, designed for writing
    and maintaining large-scale, ultra-reliable software in the domains
    where typically only C and C++ are appropriate. It is the only
    production programming language in the world that is memory safe -
    meaning Rust software does not segfault - but does not have a garbage
    collector or rely on reference counting, and that makes it suitable
    for writing all kinds of software. It is also arguably the fastest
    programming language in the world. And with a focus on developer
    ergonomics, Rust makes the most difficult types of programming
    accessible to a wide audience.

    Rust is known for it's welcoming and rewarding community. Although
    sponsored by Mozilla (the creators of Firefox), it has a thriving
    community of contributors, and many of the greatest parts of Rust have
    been written by ambitious students. There is great opportunity yet for
    making a name for oneself in the growing Rust ecosystem.

    In this hackfest we're going to learn how to contribute to open source
    generally, by learning how to participate in Rust. We're going to
    first learn a bit of Rust, and in the process we're going to socialize
    with, and get help from, other Rust hackers; we're going to figure out
    how to discover appropriate contribution opportunities, and we'll each
    submit a quick, simple patch, to get some early success. Then we'll
    hack on whatever cool thing we feel like.

    Our primary goal will be to have a good time with Rust, and we can be
    flexible about what exactly we work on.

    [Rust]: http://rust-lang.org/

    - [Phase 1: Getting started](#ph1)
    - [Phase 2: Making an initial contribution](#ph2)
    - [Phase 3: Finding your niche](#ph3)

    # Resources

    - [Rust installation](https://www.rust-lang.org/en-US/install.html)

    - [areweideyet.com](https://areweideyet.com/)

    Information about Rust and editors.

    - [The new Rust book](https://rust-lang.github.io/book/)

    This is probably the best guide for learning Rust.

    - [Rust documentation](https://www.rust-lang.org/en-US/documentation.html)

    The old Rust book, API docs, more.

    - [rust-learning](https://github.com/ctjhoa/rust-learning)

    Lots of learning resources.

    - [Contributing to Rust](https://www.rust-lang.org/en-US/contribute.html)

    Basic guides for contributing to Rust.

    - [Community resources](https://www.rust-lang.org/en-US/community.html)

    More places to find other Rust folks.

    - [rust-lang/rust](https://github.com/rust-lang/rust)

    The main Rust source code repository.

    - [CONTRIBUTING.md](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md)

    How to submit bugs and pull requests to the main repository.

    - [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/)

    Rust is hosted on [GitHub], as are most Rust projects. This explains
    basic GitHub usage.

    [GitHub]: https://github.com

    <a id="ph1"></a>
    # Phase 1: Getting started

    ## Where to get help

    The first thing to do is join #rust-beginners on Mozilla's IRC
    network. This is the best place to go to get started with Rust and the
    Rust community. There are usually people there happy to help, and you
    should ask for help freely. IRC is where much of the Rust community
    collaborates, and being on IRC is a good way to make friends and stay
    in the loop.

    The easiest way to join is through [Mibbit], a web based IRC client,
    but any IRC client will work. [XChat], [mIRC], and [Colloquy] are good
    options.

    The [community page][cp] on the Rust website lists other places to
    look for help.

    [Mibbit]: https://chat.mibbit.com/?server=irc.mozilla.org&channel=%23rust-beginners
    [XChat]: http://xchat.org/
    [mIRC]: http://www.mirc.com/
    [Colloquy]: http://colloquy.info/
    [cp]: https://www.rust-lang.org/en-US/community.html

    ## Installation

    Follow the [installation instructions][i]. It is usually
    straightforward.

    Additionally, Windows users will need the [Microsoft Visual C++ Build
    Tools][bt], or a recent version of Visual Studio. Mac users will need
    XCode. Linux users will need gcc.

    [bt]: http://landinghub.visualstudio.com/visual-cpp-build-tools
    [i]: https://www.rust-lang.org/en-US/install.html

    Use the editor of your choice. VS Code, emacs, and vim are the most
    widely used editors with Rust. Most editors have at least syntax
    highlighting for Rust, while some have more advanced features.
    Details about Rust editors can be found at [areweideyet.com]. For VS
    Code, use the RustyCode plugin, emacs use rust-emacs, vim use
    rust.vim.

    [areweideyet.com]: https://areweideyet.com/

    With a working installation you should be able to type `rustc
    --version` at the command line and get a useful result.

    ## Read the book and do some exercises

    If you are new to Rust it's probably best to spend some time on your
    own reading about it, trying exercises, and forming opinions and
    questions.

    The best starting place is probably [The New Rust Book]. This book is
    incomplete, but is somewhat higher quality than [The Old Rust Book].
    The book has a guessing game tutorial that I strongly suggest
    doing. It will give you a good feel for Rust. Another excellent
    source of Rust exercises is [rustlings].

    [The New Rust Book]: https://rust-lang.github.io/book/
    [The Old Rust Book]: http://doc.rust-lang.org/book/
    [rustlings]: https://github.com/carols10cents/rustlings

    We don't need to be very knowledgable about Rust to start contributing
    to Rust, but it will be important to have some background. While you
    are acquainting yourself, keep an eye out for things that are wrong,
    confusing, annoying, etc. Those little things that personally affect
    you are often the best threads to start tugging at to find your way as
    a contributor.

    Ask for help on #rust-beginners!

    <a id="ph2"></a>
    # Phase 2: Making an initial contribution

    One's initial contribution to any project is a critical juncture, like
    any new relationship. First impressions matter, for both the new
    contributor and maintainer. It's usually best to start small, because
    small contributions are most likely to be acceptable without a great
    amount of debate, allowing one to ease successfully into the project
    without yet understanding it.

    Good initial contributions usually come from "scratching an itch". If
    you've gotten this far and you've already encountered something
    confusing or buggy, that's a good place to start. Was some
    documentation not clear enough? Fixing that is a perfect initial
    contribution - docs are always being improved, patches are always
    welcomed, and as a new user you have the right perspective to make the
    docs clearer. If you know what you want to do at this point,
    the next step is to search the appropriate bug tracker to see if
    anybody else is talking about the issue.

    Sources for discovering Rust tasks:

    - [Rust easy bugs][e]. Bugs specifically tagged for new contributors.
    - [Rust mentor bugs][m]. Bugs for new contributors with willing mentors.
    - [Rust help wanted bugs][h]. Not easy bugs that still need help.
    - [This Week in Rust][t]. Every week they put out a call for
    contributions, with specific curated tasks. This is probably the
    best place to find community libraries that are actively seeking
    contributions (as opposed to contributing to Rust itself).
    - [brson's someday list][b]. This is my personal list of things that
    should get done but haven't. I may be able to help you pick
    something out of this.

    [e]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy
    [m]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-mentor
    [h]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-help-wanted
    [b]: https://internals.rust-lang.org/t/brsons-someday-list/3948/23
    [t]: https://this-week-in-rust.org/

    Selected candidate tasks for 2017-02-24:

    - [Move COMPILER_TESTS.md out of the root directory](https://github.com/rust-lang/rust/issues/39896)
    - [macros: don't `cfg`-process items before applying attribute proc macros](https://github.com/rust-lang/rust/issues/39336)
    - [Removal of the lang feature gate tests whitelist](https://github.com/rust-lang/rust/issues/39059)
    - [byteorder crate remediations](https://gist.github.com/brson/d17ff2fb3f1b1418c5d073e8afc9da55).
    Fixes needed for the byteorder crate after a recent evaluation.
    - [Multiple unused formatting argument notes should use multispan](https://github.com/rust-lang/rust/issues/37718)
    - [E0072 needs better underline](https://github.com/rust-lang/rust/issues/35965)
    - [Remove obsolete no_stack_check attribute and test](https://github.com/rust-lang/rust/issues/34915)
    - [Add error explanations for all error codes](https://github.com/rust-lang/rust/issues/32777)
    - [The Standard Library Documentation Checklist](https://github.com/rust-lang/rust/issues/29329)
    - [Failure to fulfill higher-kinded "outlives" predicate could have better error message](https://github.com/rust-lang/rust/issues/27114)

    <a id="ph3"></a>
    # Phase 3: Finding your niche

    TODO