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

Issues are not feature requests #2299

Merged
merged 1 commit into from
Feb 19, 2018
Merged

Conversation

Manishearth
Copy link
Member

Currently issues get often used as feature requests, where they basically get ignored because nobody is watching the issues.

I'd like to propose we stop allowing issues as feature requests and severely restrict the issues on this repo to tracking issues
and general housekeeping.

We instead encourage feature requests to become discussions on the internals forum.

@Centril Centril added the T-core Relevant to the core team, which will review and decide on the RFC. label Jan 17, 2018
@mark-i-m
Copy link
Member

Currently issues get often used as feature requests

I have admit that I'm guilty of this too...

@aturon
Copy link
Member

aturon commented Jan 17, 2018

I'm definitely 👍 on making a change here, but until we have any team process around the issue tracker, I'd avoid recommending any use of it tbh.

cc @rust-lang/core

@Manishearth
Copy link
Member Author

GitHub does let you turn off issues entirely, so that would be convenient.

@Centril
Copy link
Contributor

Centril commented Jan 17, 2018

@Manishearth We have certain pull as a community (?). Can we ask GitHub for this ability perhaps?

@Manishearth
Copy link
Member Author

No, I'm saying GitHub already has this feature; so it is certainly easier to just close all issues and turn the tracker off instead of inventing a more specific set of criteria.

@Centril
Copy link
Contributor

Centril commented Jan 17, 2018

No, I'm saying GitHub already has this feature; so it is certainly easier to just close all issues and turn the tracker off instead of inventing a more specific set of criteria.

Oh, my bad - misread your comment as the negation of what you said ;)

We should change the README.md to reflect this change in recommendation as it currently says:

The most common preparations for writing and submitting an RFC include talking the idea over on #rust-internals, filing and discussing ideas on the RFC issue tracker, and occasionally posting "pre-RFCs" on the developer discussion forum for early review.

@Manishearth
Copy link
Member Author

Manishearth commented Jan 17, 2018 via email

@mark-i-m
Copy link
Member

It would be a pity to lose all of the discussions that already exist in the issue tracker, though... Perhaps the following approach might help:

  • Aggressively police the issue tracker by closing any new issues before discussion starts. Direct people to internals.
  • Gradually triage existing issues to either close or migrate them to internals. For each issue that is deemed to be "active", somebody summarizes the discussion and creates a post on internals. Then, we close the issue on this repo...

@Centril
Copy link
Contributor

Centril commented Jan 17, 2018

It would be a pity to lose all of the discussions that already exist in the issue tracker, though...

Does turning off the issue tracker remove the issues? Doesn't it just make it impossible to start new ones?
Can't we simply close all existing open issues..?

@Manishearth
Copy link
Member Author

It would be a pity to lose all of the discussions that already exist in the issue tracker, though

Yeah. Either way, I plan to triage all of the issues. If we choose a policy, I'll close everything that doesn't satisfy whatever criteria we pick. If we choose to close it down entirely, I'll comb through it for valuable discussions and try to migrate them to internals myself, or ensure someone else does it. We would wait a while before closing the tracker entirely.

(Goes without saying that all closed issues will get a comment suggesting they move to internals, probably from a bot)

Does turning off the issue tracker remove the issues? Doesn't it just make it impossible to start new ones?

I believe the issues still exist, but can't be found without a link.

@clarfonthey
Copy link
Contributor

clarfonthey commented Jan 17, 2018

Perhaps all of the issues that were opened before this decision could be moved to another repo, and then slowly closed as formal RFCs are written? Any new issues open would be closed immediately, perhaps by a bot.

This could provide the immediate benefit of removing clutter in this repo while not immediately getting rid of the issues or discussions. I'm personally not in favour of removing everything to internals as there's a lot of discussion already here that could be preserved, even if new discussions should go on internals.

@Mark-Simulacrum
Copy link
Member

TL;DR: I'm in favor of tracking (major) changes to Rust in issues here. Feature requests that need discussion should begin their life cycle on internals, and then move into an RFC or PR implementing them, and features that don't need discussion should start off as a PR. We should close feature requests on rust-lang/rust and rust-lang/rfcs, asking authors' to move them to internals or PRs implementing them.

So this has been a topic that I've thought about somewhat extensively for a while, and I don't think there's a good solution for us today. We currently have 3 main places for discussion/issues for Rust: rust-lang/rust, rust-lang/rfcs, and internals.r-l.o.

I believe that the core goals for any solution are:

  • Relatively easy search (Was this feature requested already?)
  • Good status tracking requested/approved

Search is a non-solved problem anywhere. I think GitHub is better than Discourse at search, but it's hard to say concretely. Neither is great, or really all that good.

The current state is that we try to direct people to internals or to the issue tracker here from rust-lang/rust for feature requests. We can certainly aggressively close issues that are feature requests, but then we run into two problems: the definition of feature request and negative impact ("they don't care about my problem").

There are quite a few issues filed on rust-lang/rust that are in a middleground between reporting a bug and requesting a new feature. For example, rust-lang/rust#45838 is an expansion of the existing recursive call lint. We classify it as a feature request today, but arguably, it could be considered a bug that the existing lint doesn't catch this case. Similar cases exist in the other direction.

The negative impact problem is perhaps harder to solve, but could be avoided with clearer guidance in the various README and CONTRIBUTING files. A bot that automatically moves the issue could work as well.

In general, we can see that based on current tagging, there are 360 feature requests on the rust-lang/rust repository. Moving these elsewhere could be good, but also somewhat harmful to the current guidance to contributors to Rust. It's also true that for many of the standard library feature requests, there's really no particular obvious need for the issue. They request addition of methods or relaxation of bounds that would take 5-10 minutes to put up a PR for (well, at least, for a somewhat experienced Rust developer) and we could discuss on the PR itself. Ideally, we could ask the community to help out with these, put up PRs, allowing the libs team to review and approve. Many of them don't even necessarily need approval, as landing them in an unstable state isn't really a problem.

I, personally, would love to see the feature requests that warrant discussion move elsewhere, probably onto internals. If no one other than the author is inclined to discuss, then it seems like there's a relatively low chance that we'll see sufficient momentum to warrant the feature for now; and it's likely we might need an RFC. Feature requests that don't need discussion I believe should be closed in favor of a PR implementing them being put up to streamline the process.

@glaebhoerl
Copy link
Contributor

I like to think of issues here as "keeping track of ideas for future reference" (including as a status tracker), which internals is even less suited for.

(I'm not saying "therefore it needs to stay exactly as it is", only that "post to internals instead" doesn't feel like an appropriate substitute.)

@burdges
Copy link

burdges commented Jan 17, 2018

I think stackoverflow.com might provide a better venue for some issues raised here recently, so maybe users who raise such issues repeatedly could gently be pushed over there.

I've no yey/ney feelings on this particular proposal really, but..

If you need new rules then it's okay to grandfather in existing issues. You need not even enforce new rules perfectly consistently or even wait until excessive issues becomes problematic.

Internals' software (Discourse) is very slow due to bloated and needlessly interactive javascript. I keep web/icon fonts disabled because they're bad for performance and acts as trackers, but that doesn't help much. Ain't worth your time to migrate software of course, but I wanted to single out Discourse being awful.

@Mark-Simulacrum
Copy link
Member

I want to agree with that, but I also am not sure that there's much, if any, worth to keeping track of ideas for future reference. That is, unless it's an idea that is relatively large (i.e., custom allocators) and something that we're going to actively discuss from now and into the future, I don't see how keeping an issue around will be helpful. Could you elaborate on why you think that's useful?

@aidanhs
Copy link
Member

aidanhs commented Jan 18, 2018

'Issue tracker' implies a greater sense of up-to-dateness and...tracking than a forum does. My (uninformed) vague impression is that on forums people will prefer to create new threads linking to old ones, rather than just bumping old ones. It's also trickier to close threads in favour of an older thread.

So if you want to watch the single source of truth on where something is up to, it's much better to click subscribe on github. There are also assorted niceties, like github cross-references, that let you see what other things might be related and who's talking about the issue. I dug up #1022 recently and thought it was neat someone had followed up two years after the initial raising of the issue with some thoughts. Looking through the old issues, there's one from 2014 on SIMD that had a comment added when the newer SIMD RFC happened - people were notified about something they were interested in.

It makes some sense to me to have them in the same repo because a lot of the feature requests in issues could only possibly be solved by RFCs, so you can more easily tie together any relevant discussion.

That said, I wouldn't say no to some cleanup, e.g. with triage every 6 months - if an issue could be reasonably said to have been addressed, it can be closed and if there are aspects that haven't then people can raise new issues. For example #276 mentioned Option<T> optimisation - we have a subset of what was being suggested with NonZero, so let's close it and people can raise new issues if they want more general ways to express invalid values.

@petrochenkov
Copy link
Contributor

I'm all for more aggressive triaging, but redirecting people to internals would be a mistake.

I'd probably close non-actionable research-related issues (a la "investigate formal verification of Rust code"), library extensions (you can make a crate on crates.io) and unrealistic language extensions (some period of time + judgment of a single lang or compiler team member would be enough).

Regarding redirecting to internals.
Rust development happens on GitHub. It's convenient to keep all the tracking stuff on GitHub as well.
Issues can be labeled, merged with duplicates, they can link to each other, link to people, teams, PRs, all other "development entities".
People can find these issues through search engines, "like" or "dislike" them, leave comments. All this accumulated feedback can be useful.
Even closed issues are more useful if they are labeled and interlinked on this tracker, rather than kept as forum discussions. The Discourse is much more of a dead end in this sense, it was never supposed to be an issue tracker or something like it.

@Mark-Simulacrum
Copy link
Member

I've been convinced that we should utilize GitHub for feature request tracking. I think that those issues should still go into rust-lang/rfcs, though. Some will evolve into RFCs, others may be implementable after discussion, but either way, that work I believe should happen away from rust-lang/rust.


unrealistic language extensions (some period of time + judgment of a single lang or compiler team member would be enough).

So a problem that has arisen in the past with this is that neither lang team nor compiler team members have much time, or inclination, to browse issues looking for things to close. It's likely we can ease the process (e.g., present a queue of "likely closeable" issues), but even then, I have doubts that we'd get sufficient interest from teams (libs for std/test issues, lang and compiler team for additions to the language) to be able to feasibly triage issues. Do you have thoughts on how to fix that problem? Am I wrong about people on these teams not wanting to help close issues?

@clarfonthey
Copy link
Contributor

Would it make sense to have a pre-RFCs repository? Something that's sort of a middle ground between rust-lang/rfcs and internals. Basically, stuff here is specifically about tracking the formal RFC process and postponed RFCs, while that repo holds everything else that would otherwise go here.

@scottmcm
Copy link
Member

scottmcm commented Jan 19, 2018

I'd be happy to help with some of the cleaning, but I've been unsure of protocol even for things about which I'm fairly certain. Like I'm confident #274 can be closed (because of pending MIRI stuff, size_of being const since rust-lang/rust#42859, etc) but I've never really felt like I was supposed to. Should I just do it? Should I mark things or ping people when I do?

Hmm, this sure doesn't seem to be a new problem: #375

@glaebhoerl
Copy link
Contributor

@Mark-Simulacrum Unless I'm misunderstanding something(?), the whole discussion is about issues on the rfcs repo, and doesn't touch on the rust repo in any way.

I already have this repo watched so I'd also be willing to help triage and label things and such if that'd be helpful (as I already do occasionally, but I only have comment privileges), if it doesn't involve any hard commitment.

@Manishearth
Copy link
Member Author

I certainly am going to help triage this repo based on what we decide here. I've been doing it a bit already but it's kinda hard to tell what should be closed.


Part of the problem of using this repo for discussing feature requests is that there aren't folks actually discussing stuff here. Post a feature request on internals and you're probably going to get some discussion. Post a feature request here, and most likely it will go largely unnoticed. So this becomes a place where folks dump random feature requests and nobody really does anything about it. Even if people did discuss, there's no end-goal for these since we don't WONTFIX things. They either close after an RFC, or stay indefinitely open, causing more clutter.

The only thing the issues here are useful for is meta-tracking RFCs, and often to track well-known wishlist items that people are generally aware of. Which is why my PR here suggests letting team members use this to keep track of things; but in general it can be looser -- if it's clear that there is a lot of folks wanting a problem to be solved, anyone can list it here in an issue.

@petrochenkov
Copy link
Contributor

petrochenkov commented Jan 19, 2018

@clarcharr

Would it make sense to have a pre-RFCs repository?

I think it would be okay to reuse this repo.
There are not too many issues are created here (an order of magnitude less than in rust-lang/rust and many of them were created in a single event during migration from rust-lang/rust), so there should be enough "place" for everything.
On the other hand, people do create issues here, so this tracker is already known and public (and it's kinda logical to post "RFC embryos" (aka feature requests) somewhere near full RFCs).

@Mark-Simulacrum

I have doubts that we'd get sufficient interest from teams (libs for std/test issues, lang and compiler team for additions to the language) to be able to feasibly triage issues.

Some time ago most people didn't even have rights to do anything in this repo!
Even now there are twice less people able to create labels here than in the rust-lang/rust repo.
There's very little motivation to triage if you can't do anything beside leaving a comment.
So, as a "step zero" we need to make sure that members and shepherds from teams have rights to label and close issues.
I think labeling all issues with T-lang/T-libs/etc would be a good start after that.

@Centril
Copy link
Contributor

Centril commented Jan 19, 2018

@petrochenkov

I think labeling all issues with T-lang/T-libs/etc would be a good start after that.

Sounds good; I've been doing that for all new RFCs and issues =)
I'll spend some time today triaging older issues too with labels.

@mark-i-m
Copy link
Member

I think this might have already been suggested somewhere, but what if we have a bot that goes around looking at all the issues. If an issue has not received a comment in the last month, the bot makes a warning post "This issue looks inactive and will be closed automatically if it does not received further discussion. Please feel free to discuss further on IRC/discourse or file an RFC if the ideas are fully fleshed-out". If the issue does not receive more comments in the following month, it is closed by the bot. The OP can reopen later if they wish to revive it.

@mark-i-m
Copy link
Member

That would force the issue to be triaged at least once a month by someone on the thread.

@Manishearth
Copy link
Member Author

IME that works well for bug reports since folks need to repro to verify validity.

For feature requests, there's never a reason not to keep it alive so folks will just tell the bot "this is still valid, don't close it".

I guess making it clear that there has to be discussion (not just an assertion of "this is still applicable") makes sense

@mark-i-m
Copy link
Member

mark-i-m commented Jan 19, 2018

@Manishearth There are issues in the issue tracker that haven't been touched since 2014! It's hard to know if these issues are actually still applicable. I imagine there are a lot of issues that have been solved by some other features in the meantime.

Moreover, while I think the discussions are meaningful, discussions of features that are unlikely ought to be closed to reduce clutter. A casual reader is extremely unlikely to go through 700 issues many (most?) of which are unlikely to ever happen. But they might glance through the list if it was much shorter and the issues are actually full of active discussions.

@KiChjang
Copy link
Member

So one thing that I'd like to point out here is that foreign language communities often find the RFC repo to be the most direct and open way of asking for feature requests, and I worry that redirecting them to an English-only discussion forum would create more friction and cause them to shy away from discussing their ideas.

@Manishearth
Copy link
Member Author

I mean, this is a discussion forum too. It's perfectly ok to drop a feature request on internals and let others flesh it out if you don't feel equipped to communicate; we can be clearer about that.

@Ixrec
Copy link
Contributor

Ixrec commented Jan 22, 2018

I'm curious why an (English-only) issue tracker is seen as more open/accepting of feature requests than an (English-only) discussion forum. Most issue trackers I've seen at least attempt to have some sort of "confirmed/accepted issues only please" requirement, while forums are rarely stricter than "stay vaguely on-topic and don't be a jerk", so I would've expected the exact opposite. Is this a general social/cultural thing we have no control over, or is https://internals.rust-lang.org/ "doing something wrong"?

@Mark-Simulacrum
Copy link
Member

The core team discussed this during our last meeting, and we decided that we're not ready to change the status quo here. As such, we'd like to see this PR updated to change the README to indicate that the issue tracker here isn't going to be actively looked at by Rust's teams: the status quo as we understand it.

Our reasoning for not changing the status quo currently is that we don't believe that there's a solution that we can come to consensus around today. Of course, people interested in discussing such a solution are welcome to do so, either in an issue here or on internals.r-l.o, as per usual. It's likely that a single place for feature requests will eventually be decided upon, but we believe that today isn't the right time for that.

@Manishearth
Copy link
Member Author

amended. r? @Mark-Simulacrum

I kinda don't like a solution of "we allow issues but won't look at them" -- either we look at them, or we don't allow issues -- this middle ground is going to be confusing since folks are going to file issues and there's no way to redirect them now. I guess we could comment "you may get more attention on the internals repo instead" on each issue but if we're going to do that I don't see why we can't just close the issues (or shut off issues entirely)

@Mark-Simulacrum
Copy link
Member

Thanks! So to clarify the core team doesn't like this solution either, but we don't have the time currently to figure out how best to resolve this problem of where to discuss and aggregate feature requests. I myself hope that we can do so soon, but it may be some time. I'll start FCP with a disposition to merge soon (need to get rfcbot updated to accept me as a core team member).

@Mark-Simulacrum
Copy link
Member

@rfcbot fcp merge

I believe we're ready to go on this and that the current text represents the consensus of the core team (though we are not happy with the state, and expect more work in this area in the future).

@rfcbot rfcbot added the proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. label Feb 2, 2018
@rfcbot
Copy link
Collaborator

rfcbot commented Feb 2, 2018

Team member @Mark-Simulacrum has proposed to merge this. The next step is review by the rest of the tagged teams:

No concerns currently listed.

Once these reviewers reach consensus, this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@rfcbot
Copy link
Collaborator

rfcbot commented Feb 9, 2018

🔔 This is now entering its final comment period, as per the review above. 🔔

@rfcbot rfcbot added final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. and removed proposed-final-comment-period Currently awaiting signoff of all team members in order to enter the final comment period. labels Feb 9, 2018
@rfcbot
Copy link
Collaborator

rfcbot commented Feb 9, 2018

🔔 This is now entering its final comment period, as per the review above. 🔔

@rfcbot rfcbot added the final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. label Feb 9, 2018
@rfcbot
Copy link
Collaborator

rfcbot commented Feb 19, 2018

The final comment period is now complete.

@Mark-Simulacrum Mark-Simulacrum merged commit 1706316 into rust-lang:master Feb 19, 2018
@Manishearth Manishearth deleted the issues branch February 22, 2018 07:12
@Centril Centril added the A-meta Proposals about how we make proposals label Nov 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-meta Proposals about how we make proposals final-comment-period Will be merged/postponed/closed in ~10 calendar days unless new substational objections are raised. T-core Relevant to the core team, which will review and decide on the RFC.
Projects
None yet
Development

Successfully merging this pull request may close these issues.