Skip to content
This repository has been archived by the owner on Nov 5, 2022. It is now read-only.

Plan for rollout of requiring verified email to publish #8

Closed
5 tasks done
carols10cents opened this issue Oct 30, 2018 · 3 comments
Closed
5 tasks done

Plan for rollout of requiring verified email to publish #8

carols10cents opened this issue Oct 30, 2018 · 3 comments

Comments

@carols10cents
Copy link
Member

carols10cents commented Oct 30, 2018

Investigation results

Number of users potentially affected

As of 2018-10-29:

  • There are 3,367 users on crates.io. 1890 of them (56%) have a verified email address and would not be affected by this change.
  • It's hard to tell how many of the remaining 1477 (44%) users are active publishers because we don't currently track which owners publish a particular crate version.
  • The best I could get was the most recent update to any crate that a user is an individual owner of (including ownership via team membership would require querying GitHub):
    • 254 users (17% of 1477) own a crate that has been updated during the last 6 week Rust release cycle (since 2018-09-13)
    • 227 additional users (15%) own a crate that has been updated in the last 6 months (since 2018-04-29)
    • 146 additional users (10%) own a crate that has been updated in 2018
    • 850 users (56%) only own crates that have been last updated prior to 2018

If we warn for a release cycle, we're likely to catch about 250 users and get them to verify their email address before it disrupts their workflow.

Ability to return a warning

Cargo does have the capability of displaying warnings from crates.io after a successful publish, however it's currently hardcoded to warnings about invalid categories and badges.

Proposed plan based on investigation results

I'd be happy to not get 250 emails complaining that we changed the publish workflow without warning, so I think we should warn for a release cycle.

For the purposes of this warning, potential future warnings, and potential warnings from alternate registries, we should add the ability to Cargo to display general warnings returned in a successful publish response.

Therefore, I propose the following plan:

  • Start publicizing this plan as soon as we agree on it Done
  • Add general warning display capability to Cargo and get it into nightly in this release cycle Done
  • Warning capability would go into beta with Rust 1.32.0 on 2018-12-06
  • Warning capability would be stable with Rust 1.32.0 on 2019-01-17
  • We would warn for one release cycle
  • Coinciding with the release of 1.33.0 on 2019-02-28, we would disallow publishing crates without a valid email address.
  • Implement the warning and hard error in crates.io, possibly with date checks so we don't have to remember to merge+deploy code on a particular day Done
  • Merge #1629 and deploy
  • After 2019-03-01, merge #1630 and deploy
bors added a commit to rust-lang/cargo that referenced this issue Nov 12, 2018
…xcrichton

Support untyped warnings from registries with successful publish

This adds a field "other" to the warnings deserialized from a successful publish response from a registry.

This is [part of our plan to eventually require an email address to publish on crates.io to comply with DMCA](rust-lang/crates-io-cargo-teams#8). The TL;DR of that is we plan to warn for a release cycle when you publish without a verified email address once this change makes it to stable.

I'm opting to add an "other" field rather than another field like the invalid badges/categories fields for a few reasons:

- The warning we're planning on adding about emails will only exist for 6 weeks; those other warnings have happened in the past and will continue to happen.
- There may be other transient warnings on publish that we'd like to send from crates.io in the future; it'd be nice to have a way of doing that without having to update cargo as well.
- Other registries may have different warnings than we could ever anticipate in cargo; if usage of alternate registries grows, it'd be nice to give them a mechanism to warn as well.

I've tested:

- Cargo compiled with this change against a crates.io instance that doesn't return `other` warnings
- Cargo compiled with this change against a crates.io instance that DOES return `other` warnings
- Current Cargo against a crates.io instance that does return `other` warnings

and they all behaved as I expected.

I haven't added any tests because there aren't any tests that inject registry responses, and while I think cargo should have some of those eventually, I'm not going to add that infrastructure without discussing it with lots of folks first :)

I know there's a soft feature freeze right now, buuuuut [it's wafer thin](https://proxy.duckduckgo.com/iu/?u=https%3A%2F%2Fs4.thcdn.com%2Fproductimg%2F0%2F600%2F600%2F27%2F10284327-1288263770-74000.jpg&f=1)!! It doesn't add any surface area to the CLI or manifest format! ❤️
@carols10cents
Copy link
Member Author

carols10cents commented Nov 17, 2018

Post I'm planning on submitting to users.rust-lang.org on Monday (I think this is better suited for users rather than internals, lmk if you feel differently... or maybe I should post to both for maximum visibility? 🤔)

Please let me know before Monday Nov 19 at 12pm ET if you have any suggestions for how to improve this!


Title: A verified email address will be required to publish to crates.io starting on 2019-02-28
Category: Announcements
Body:

To comply with DMCA, we need a guaranteed way to contact publishers of content on crates.io. We've added the ability to verify your email address associated with your crates.io account, and we're going to require a verified email address to be able to cargo publish to crates.io starting on 2019-02-28 (coinciding with the release of Rust 1.33.0).

Starting with stable Rust 1.32.0 that will be released on 2019-01-17, if you run cargo publish using stable Rust and you have not verified an email address, the publish will work but you'll see a warning encouraging you to verify an email address before 2019-02-28. We'll warn for that whole release cycle.

Starting on that date, if you run cargo publish with any Rust version and have not verified an email address, the publish won't work and you'll get an error that says you need to verify an email address.

You can verify or change your email at any time by logging in to crates.io, clicking on your icon/name in the upper right, choosing "Account Settings" from the menu, and going to the "User Email" section.

Some implementation details:

  • The verified email address is not associated at all to the email address that may optionally appear in the authors metadata in the crate's Cargo.toml.
  • Your verified email address won't be displayed anywhere publicly (unless you choose to place it in your Cargo.toml as well).
  • This email will only be used to contact you for crates.io operational needs and will never be shared with any third parties.
  • Only the crate owner running cargo publish will need to have their email address verified.
  • The email address will be saved with the particular version being published at publish time, so that if an owner is removed from the crate or removes their email address, it's still available with the published content.

@carols10cents
Copy link
Member Author

bors-voyager bot added a commit to rust-lang/crates.io that referenced this issue Nov 30, 2018
1565: Email verification warning r=jtgeibel a=carols10cents

This is the start of the implementation of rust-lang/crates-io-cargo-teams#8. 

We can start warning now; if folks are using nightly, cargo will show it. Next release, beta will show it, and then the release after that, stable will show it. We have until the release after THAT to implement the hard error. I think. If I've counted correctly.

Co-authored-by: Carol (Nichols || Goulding) <carol.nichols@gmail.com>
Co-authored-by: Justin Geibel <jtgeibel@gmail.com>
carols10cents added a commit to integer32llc/crates.io that referenced this issue Feb 22, 2019
Because that's at least on 2019-02-28 (the date we announced) in all timezones,
and should definitely be after the release scheduled for that day.

As per the plan at rust-lang/crates-io-cargo-teams#8
carols10cents added a commit to integer32llc/crates.io that referenced this issue Feb 22, 2019
Because that's at least on 2019-02-28 (the date we announced) in all timezones,
and should definitely be after the release scheduled for that day.

As per the plan at rust-lang/crates-io-cargo-teams#8
carols10cents added a commit to integer32llc/crates.io that referenced this issue Feb 22, 2019
Because that's at least on 2019-02-28 (the date we announced) in all timezones,
and should definitely be after the release scheduled for that day.

As per the plan at rust-lang/crates-io-cargo-teams#8
bors added a commit to rust-lang/crates.io that referenced this issue Feb 24, 2019
…geibel

Require a verified email after 2019-03-01 00:00 UTC

Because that's at least on 2019-02-28 (the date we announced) in all timezones,
and should definitely be after the release scheduled for that day.

As per the plan at rust-lang/crates-io-cargo-teams#8

Needs to be merged and deployed anytime before 2019-03-01 00:00 UTC to be on time with our announced date.
@carols10cents
Copy link
Member Author

And this is done! Whew!

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

No branches or pull requests

1 participant