RFC: IO simplification

This RFC proposes a significant simplification to the I/O stack distributed with
Rust. It proposes to move green threading into an external Cargo package, and
instead weld `std::io` directly to the native threading model.

The `std::io` module will remain completely cross-platform.

[Rendered](https://github.com/aturon/rfcs/blob/io-simplification/active/0000-io-simplification.md)
@thestinger 

> It used to be a friendly environment until I decided to voice a dissenting opinion on the design of I/O / concurrency a year ago and it was taken as a personal attack by the people who wrote the runtime.

I've been actively following the Rust project for over a year and while I on occasion disagree with some of the decisions by members of the core team, I've found them _all_ to be incredibly reasonable, intelligent and polite, _without fail or exception._

In general, I've found it incredibly easy to misunderstand people's intentions, opinions and reactions when interacting with them online. It's absurd how often this happens, even when I'm on the lookout for it. I'm sure that's what happened in your case _in both directions_. You have a tendency to present a strong, unfiltered opinion that those unaccustomed to such an approach might find harsh. Put that together with everyone's tendency to misunderstand others online and you have a "personal attack."

> Since then, my pull requests and opinions have become progressively less welcome.

I strongly doubt that's the case. You are very knowledgeable and technically competent and the Rust team isn't stupid by any means so I'm sure they value your contributions (which like you mentioned are free). I'm also sure you believe you are less welcome than you actually are. 

> It ends up arriving at the right design choices only after ignoring reality and trying every other option.

IMO that overstates it quite a bit, but I'll agree that there's far more truth to that statement than there should be. The core team does have a _slight_ tendency to do go with the (sometimes obviously) right design after exercising all other options first.

> Rust is a project where who you are matters far more than the merit of your ideas.

This isn't true, and so aren't your other comments that the RFC process is a rubber-stamp for ideas from the core team. The RFC's here are proof enough. Plenty of core team RFC's fail after pushback from the community. This happens all the time and is exactly as it should be. Also, plenty of RFC's from non-core team people are accepted.

It's certainly easier to convince someone that your idea has merit when you can talk to them in person instead of just over IRC or GitHub and that contributes to what you perceive. But that's just human nature.

> I can't submit a single pull request under my real name without barriers being thrown up and it rotting for ages, and any attempt at an RFC will just be rejected with no justification or taken out of my hands and implemented without giving me any role in the design process or credit for the work I put into it.

I doubt this is true. I think you may be referencing the [tail call RFC](https://github.com/rust-lang/rfcs/pull/81) you submitted. IMO that was a great RFC that should have been accepted, but I also see the core team's concern of "we just want to ship 1.0 ASAP and this isn't critical to that so no." I don't like that position but I do understand it.

I also think that the way the core team handled that from a communication standpoint wasn't great, but AFAIK some of the RFC discussion process was changed as a result of that (we now know ahead of time which RFC's will be discussed at a core team meeting). 

IIRC you were unhappy that this RFC was rejected without your input and that the work you put into implementing it was wasted (correct me if I'm wrong). Please realize that a large part of the blame for the wasted work does lie with you; you decided to start implementing it before anyone decide to accept the RFC. That was IMO a mistake on your end.

I also didn't see anything related to that RFC (in the meeting minutes, the RFC or IRC) that would indicate that any personal dislike for you was a factor in the decision. Frankly I find the idea of this to be absurd.

Daniel, you must realize that you're creating a vicious cycle here. Because you think you're unwelcome, you frequently comment with an "everything here sucks" attitude which in turn and over time could easily make you unwelcome to some, thus creating the situation you dislike.

I recommend taking a step back and giving Rust and the core team a clean slate. You must also try to moderate your approach; you mention that it isn't your intent to convince others and yet that's _precisely_ what you must achieve if you want to change _any_ aspects of Rust design.

I wouldn't presume to speak for the entire Rust community, but I personally highly value your input. But if you couch it in a "everything here sucks" attitude it will fail to provide value and will only be detrimental, both to Rust and to your personal happiness.

Life's too short to hold grudges. Your current attitude _isn't useful_, to you or anyone else. Forgive, forget, _move on_ and continue to provide valuable feedback to Rust's design in _a detached and diplomatic manner._