Rust Compiler Team
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee
  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    tags: tenets --- # \[draft\] rustc Contributor Guiding Principles \[23 apr 2021\] ---- **next draft is being composed here:** https://hackmd.io/24XY68xUSkyqDAv0w8HmYw **old draft follows** ---- These are our guiding principles; they are meant to guide people in making decisions about how to make contributions to the rustc code base, and how to interact with others on the project. * If you notice the word "tenet" in discussions of this document, it is a holdover from an earlier draft that called these things "tenets." * Why "tenet:" Because pnkfelix was inspired to do this by the example set at his workplace, where they call such guiding principles "tenets." * Why not "tenet": it was pointed out that the word is sufficient obscure as to be a road-block for non-native English speakers. This list is open to change; if you have suggestions for: 1. new principles to add, 2. amendments to the existing ones, 3. an argument for why a proposed principle should not be on this list, or 4. an unaddressed domain that should be covered here, then please do reach out to the compiler team leadership! Sometimes these principles will conflict with one another. In those scenarios, the lowest-numbered principle (i.e. the one that comes earlier in the list) takes priority. ### *(These are still in draft status)* * *Change Notes:* - *2021-04-23: Miscellanous revisions based on [steering meeting][2021-04-23 mtg]* - *2021-03-31: Added "Accommodate other cultures/perspectives"* - *2021-03-24: Initial circulation amongst team leads* - *2021-04-05: Added expository text for "Take team feedback seriously"; added "empathy" bullet to "Our community health matters most"* *The general format is: 1. Succinct Title, 2. expository text explaining the principle in the abstract, 3. bullets with concrete illustrative examples.* [2021-04-23 mtg]: https://zulip-archive.rust-lang.org/238009tcompilermeetings/95764steeringmeeting20210323GPscompilerteam424.html ## Our community health matters most Without a healthy community, we don't have a project. Every contributor needs to respect the time and workload of other community members. * Nearly every interaction is an opportunity to be *empathetic*: Listen well enough to put yourself in the shoes of others. Strive to understand their motivations. * Be aware that everyone, be they volunteers or paid contributors, is balancing multiple priorities. * You might have to wait to get feedback. Try to notice if you are putting a large workload on one or two people, and rebalance accordingly. ## All software has bugs While Rust prides itself on its soundness and stability guarantees, the compiler team also recognizes that bugs are going to happen. We try to select designs that are simple enough to maintain. We expect problems to arise, and we establish mechanisms to limit the fallout from mistakes. ## Rust is Production-Grade (formerly ~~Rust is a product~~) Rust aims to be a production-grade piece of software. We have users who depend on Rust to remain high quality, while still delivering new features and updates. * We will continue to encourage research efforts and hobbyist contributions, which have been responsible for many of Rust's advances. But we must prioritize Rust's needs as a product over its use as an experimental testbed. ## Our ownership is shared, not exclusive Keep the team in mind when contributing. Code implementations and proposed solutions need to be designed in a way that ensures we can all maintain their consequences. Not just the designer, and not just the designer and the reviewer. * We know not everyone can know everything. What we strive for is everyone *could* adopt ownership, utilizing associated documentation. ## Keep the trains running Much of our operation as a team is oriented around our release channels. * This means that developing new features for nightly often takes a back seat to resolving a problem on beta, before it becomes a problem for our stable users. ## Accommodate other cultures/perspectives The contributors to Rust are distributed throughout the globe, and come from all walks of life. Not every contributor has a systems programming or even a computer science background. * We tend to do our work in English; try to use words that are not obscure. ## Take our time now to save everyone's time later We take our time in developing a design, though both ad-hoc discussion and concrete design documentation. We structure our code and pull requests to ease their interpretation by future readers. * Example of taking time in design: We avoid jumping straight to Pull Requests for major changes to the code base. Instead, we establish processes to discuss changes before they are realized as code. (Examples of this include RFCs, MCPs, and design meetings.) * Example of taking time in PR structure: Before putting a Pull Request up for review, first look over its commit history. If the commit history divided up well (e.g. keeping refactorings in a separate commit from behavioral changes, while coupling updates to unit tests with the commits that required those updates), it will ease subsequent reviews, including the ones that matter most to you: The initial review loops that get the Pull Request approved! ## Get Buy-In We get buy-in from multiple stakeholders on any design proposal. * Such buy-in includes at least one stake-holder agreeing to take on review responsibilities. (This is spelled out in our MCP process.) ## Challenge assumptions (your own and other people's) We invite others to review our designs (both existing and proposed), and we actively seek people to disconfirm our beliefs and challenge our assumptions. ## Take team feedback seriously The Rust compiler team wants to add members over time, and to achieve that goal, we invest effort in mentoring our contributors. If we tell you something, it is usually because we want to help you become a more effective contributor. * If the team collectively discussed a matter and then sent their feedback on next steps, your first act should be to digest that feedback fully. * Sometimes that feedback will not match your expectations. Challenging the feedback can be a reasonable response, *after* first demonstrating understanding of it. ## Aim high! XXX (exposition needed) * Rust is still young. pnkfelix suspects it is at, or near, a knee point at its adoption rate, where it may really skyrocket soon. * That means we have an opportunity to land significant changes while the impact is (relatively) limited, and those changes can have huge follow-on effect as Rust's user base multiplies. ## Every little bit helps Rust is still young. It has lots of papercuts still, and much low-hanging fruit for new contributors. ## Err on the side of exposition The audience for Rust comes from many different backgrounds. We invest in providing high-quality diagnostic feedback and elaborate help messages in our compiler, in order to lift every programmer up to the same level of understanding. ## Value practical portabilty XXX (exposition needed) * Rust has various features and lints to encourage people to write portable software. We encourage this, but we also want our lints to have a high signal-to-noise ratio, which in this context means that we avoid lints that are accommodating esoteric targets that few of our users have access to.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully