 2018 I am loving this because I live here in Portland and basically this is 300 of my best friends or soon-to-be best friends coming to my hometown I'm also super pleased after this is the fourth Rust conference that we've held starting with RustCamp and this is the first time that we aren't in round tables because there are too many of you so really excited about the conference today and so I want to talk a little bit about one of the major focuses of this year which has been Rust 2018 the new edition of Rust so if you've been paying attention to Rust at all you probably will have heard of this it's basically the culmination of those last four years of work you know since Rust 1.0 came out right so there's a there's a huge list of features connected with Rust 2018 obviously we don't have time to talk about all of them in depth but I did want to you know start talking through some of them so there's you know features like raw identifiers there's clarity visibility modifiers are in Rust 2018 you can now nest imports yeah I love that there's a question mark operator which you can now use in the main function you can control panics in Rust 2018 we've been working on async away it's not actually going to ship in Rust 2018 unfortunately but that was the brakes yeah there's we've made some improvements to the trait system you might have heard about with ImpleTrade and DineTrade there's operator equals I don't know what that is actually oh yeah I've never used it but let's see there's slice patterns we've made some changes to ownership and lifetimes I like that one yeah no that's that's one of my favorites wait he was just about I'm sorry that were you gonna read how many slides of this 158 I'm just reading this list oh my god no so hi I'm Ashley and I'm also supposed to be giving this talk and I can't stand idly by and give a keynote unless it's about philosophy so it's time to get philosophical yeah let's do that so I'm really into this idea of genealogy yeah no this idea of genealogy and I think it has a lot to do with the addition and so a genealogy often attempts to look beyond the discourse in question towards the conditions of its possibility and so I've gotten these ideas by reading these books so the first one obviously is Nietzsche's genealogy of morals followed closely by Hegel's phenomenology of spirit and so there's also logical investigations one two right I think I think Aaron I mean okay was a little maybe a little off but the original idea was pretty good we should talk about rust but we can talk about rust and philosophy right so we could talk about the 2018 edition but not about the edition itself but about what made it possible what do you think hmm pretty good I think it's good it's good right it's good yeah they like it they like it it's true alright I'll give it a shot so if we're gonna talk philosophy obviously the first question is what even is rust so at least traditionally we talk about rust being a systems language and how does a systems language get created well we have a whole team full of systems programmers yeah but like systems programmers in like a way that you're not imagining I think right like systems programmers because open source is an intricate system of people this is a talk about people systems and I mean like you guys get this right like you know that joke about the hardest problem in computer science right okay this one's pretty good but the one I'm mostly I'm talking about is this one which is that the hardest problem in computer science is actually people and unfortunately as you probably already know people yeah people can be a little frustrating but let's not forget we're talking about what made the rust 2018 edition possible and it's all of these people here it's all of those people who are not here it's all of us in the rust community working together right so this is what our talk is gonna be about and I think we're yeah we're gonna start the real talk now so welcome to our talk about people systems I'm Nico Mazzacchi's I'm Aaron Tehran and I'm a g-dubs and I don't have a mic and I'm gonna kick it off by talking about unleashing latent energy meaning basically how can we bring together all the and help to organize in channel all the people who are excited about rust and make things happen in rust right and in open source more generally so if we look back to when rust first started it's been an open-source project from the beginning right but initially we didn't have kind of a formal governance structure right we had decisions being made by like Graden and other people who were involved but there wasn't and there are people contributing PRs and things but there wasn't a lot of structure to it and that we changed that around 1.0 when we brought in the rust teams and the goal here was two-fold first off we had this problem that there was just a small set of people making all the decisions and it was kind of overwhelming and there was a blocker like we couldn't make enough progress we couldn't scale up but also there were a lot of people who were really heavily involved in the project who didn't have a formal role and that was unjust and it was a shame and so we wanted to find a way to bring all of them in and give them control as well as scaling the project up I just want to point out I read that RFC yeah I know forever your name will live in glory and since then we've we've made a lot of progress so the rust teams have started from this kind of relatively small set and in the last well you can see it for yourself this is a graph of the last year of all time actually the size of the rust teams but in the last year especially you can see there's been a steady climb and the number of people involved in rust governance structure and that's not an accident that's the result of sort of deliberate engineering of trying to grow this structure and make space and create the opportunities for people to step in right and I want to tell you a story about that and this story has to do with Alex Alex are you here somewhere yeah so if you if you had come and said to me maybe a year ago you know can you point to me at the team that's responsible for rust release process I would say yeah there's Alex right over there because he in addition to all of his other duties doing lots and lots of things he was maintaining basically full-time the infrastructure ensuring the releases get out and it sounds pretty cool Alex is cool but it's also kind of overwhelming right like he this is too much for one person to do and and in the result he couldn't get all the things done and we wanted to improve the situation and so now if we look now what what we have we have a team that manages the release process led by Marx in the locker room we have a separate team managing the infrastructure led by Aiden Hobson Sayers and in addition to that we have this kind of ever-watching team of bots that are growing and growing at a fast pace right and where did these bots come from well the answer is these bots came from those two teams right because now that we have actual teams managing this process they have enough time to do things like automate the processes and make them better and not just always be just in time getting everything done right and you can see that also looking at like the number of pull requests this is a graph of our pull request status showing different how many pull requests and how what state they're in and you can see first of all that we have a graph that's also something the teams managed to pull together and secondly that we're fielding twice as many pull requests as we were right so so this stuff works but how did this happen or how do we go from from from Alex to two teams neither of which Alex is leading by the way right also very cool so the first there's a couple of steps involved right and the first one maybe the most obvious one is you need to to ask for help you need to recognize kind of that this is something that people will help with and that's not always obvious like I think that there were a lot of doubts about whether for example release management was something that you could handle in an open source fashion not everyone believed that and so asking can take a lot of forms this was one of the ways that we asked in this case Aaron posted this comment basically saying hey if you'd like to help let me know right here's a bunch of people see seed but it's not it turns out it's more than just asking right there's a right way and a wrong way to ask if that was the only thing that Aaron had done I think it we'd still have Alex managing everything else right but what what came before that was a lot of groundwork basically laying out figuring out what things were blocking people from participating now and could we correct those and giving and figuring out what would be the first few steps that a nascent team can take I can we have some kind of activities people can get together and get the ball rolling and once things get going it's usually a lot easier because people start coming up with their own ideas of how to improve things but the first few steps are really hard yeah and it's a it's a really delicate balance you know because you are trying to make a space for people to fit into but if all you do is open the space then people are just kind of floating around they don't there's nothing to to sort of attach themselves to right so you have to build a little bit of structure but leave enough freedom for people to find their place in it and I think one of the things that we did for the infrastructure team to kick it off that helped a lot was right off the bat we had a task that we could all work together on and sort of gel as a team it wasn't the most important task in the world but it was it was something where we could start to build a rapport start to build some momentum and then the structure was kind of evolved from there yeah exactly so I usually call this or I've come to call this sort of building a skeleton and this skeleton can take a lot of forms but the whole idea is you're not constructing the whole thing it's just enough of it to see the to see how it fits together and where the gaps are right so that might be just instructions on a pole on an issue kind of saying not just I can someone fix this but here's a couple places in the code you might look here's the rough idea how to do it but it might be if an end-to-end prototype or it might be the first few tasks for a team just different it takes a lot of different shapes and the other thing that's really important is opening up not just kind of the issues to be fixed and so on but also the planning and decision making itself so doing regular meetings especially being a 10 paying attention to the fact that people have to operating interact asynchronously so these sorts of things and involving everyone else in decision making and prioritization is really important so the last step an important step is don't forget to say thank you and to tell everyone what a great job they're doing because sometimes we take it a little bit for granted that they know how awesome we think they are right but actually they may not they might like to hear it and if you do it all together I mean to bring this back to this awesome opening slide you know basically you are able to do a lot more because you have a whole bunch of people working together then you would have been able to do by yourself right but so so this is kind of right and so like basically that previous slide all those things came out from the impulse period I don't know how many of you remember the impulse period but we had this big first attempts at growing the teams grade and then we have the domain working groups focusing in different areas all of these are examples of basically growing out successfully and getting a lot more done but it's not a hundred percent easy right there's there's another side to this and that's one of the things I want to talk about in this part is that there's like this some kind of tension coming between succeeding at growing out the team and losing some of what you had before right so so one part of it is it's a lot of work to run these teams and and and do a lot it's basically but whereas before you were writing code let's say if you're me and now you're kind of organizing you are doing some of it but leaving the best bits and you're doing a lot of other things that maybe is not what you originally had in mind what you originally signed up for right it's very rewarding because you're seeing a lot of things get done but it's not the same work anymore and one of the challenges that we have found is it can be sometimes hard for example to find people who have the time and willingness to do this on a volunteer basis it might be that they like doing it but they don't have time because it takes a lot of time it might be that they don't like doing it that much early so they don't do it when they have their free time right these two things and that's an interesting challenge I think to try to figure out how we can bridge that but there's something else too that's a little more subtle which is initially when it was just you running your project or doing your thing you were managing all the decisions and yes it was overwhelming but also it was kind of nice right everybody was recognizing who made this happen and now you have these other people coming in they're helping but it feels a little bit like this they're like taking some of that away from you you know and you may find yourself starting to do things that intentionally or not kind of getting their way right you're like I'm just trying to help you here's some tips maybe you should write it this way and that's a little frustrating and you might find yourself kind of blocking their vision so I would probably never have put this gift in here but I actually found it anyway so you you so this is a quote from from Aaron's favorite book pretty much but it kind of gets at this right they did a lot of times the best way or at some point there comes a time when the best thing is to allow other people to take the project and sort of take ownership and take it in directions that maybe you didn't originally intend or know about so this has come up also in the rust this is a quote it's actually not a quote I think we discovered it's a it's what we all thought was a quote but we discovered it was us paraphrasing flurry and flooring what's how you go to skate or skate as I know him better but coming to do it there are times when you know everyone agrees there's some task that has to be done and you think well the problem is we just don't have time to do it or to set up kind of oversee it being done so that we can be sure it's done right and the end result is that there's this task just sitting there and there are people who would be willing to do it but you're sort of not allowing them to do it because you want to have the oversight and you're afraid of what might happen and there's legitimate fear there but there's also sometimes the end result is the task doesn't get done and it would have gotten done and maybe gotten done in a way you didn't expect in a good way so I actually have no idea what this thing is about but this picture was too good to cut but this is the like the feeling these sort of tensions that come out right so you can sort of summarize this I think all these tensions I'm talking about that there's these two impulses both of which are good and both of which are necessary to do the work that needs to be done yourself but or to support other people doing the work and and they kind of work together but they also pull against right and it plays out so there's the control like I was talking about I have an example of this that's like a relatively small one but from early on we had we wanted to add the D ref trait that you're probably familiar with so let's you overload D ref and we had this idea of how to do it and we thought we'd implement it I think I thought I would implement it probably and so and then Eddie B came along and this was when he was quite new appeared with a PR and first I was like who is this writing this big PR and then I started reading it and it's not done the way I would do it actually it's done better than I would do it why did I think of that and so that was kind of the enjoying the ride part right as I realized it's good this is awesome now we have D ref but and there's also sometimes just a really practical tension that arises of like we need to meet a deadline the fastest way is if you know how to do it you can do it faster but if you spend the time to teach other people then of course that increases your overall throughput how do you balance those these things can be really tricky there's no easy answer but I think it's important to recognize that both sides are positive there's nothing wrong with doing it and there's also definitely nothing wrong with helping others to do it so you have to work them both all right with that I'll hand it over to Aaron so I'm gonna talk about itching get ready yeah so there's a sort of old-school notion in open source that you know open source projects essentially operate in this very you know an arctic way where everybody's got their own personal motivations their own problems they want to solve and they're basically showing up to scratch their own itch and somehow this all comes together into a coherent project and we've definitely had experiences along these lines in rust so burnt sushi is one of one of my favorite restations is is Andrew here Aaron doesn't have favorites don't worry you're all my favorite but I think I think burnt sushi is really just you know writes these exemplary libraries he's been an incredible force in rust and this pull request back from 2014 was essentially his introduction to the rust community right so I remember I had not been involved in rust very long at this point and I just remember the team being kind of baffled that this guy showed up from nowhere with a red rejects implementation that was super high quality that we weren't really actively asking for like there was an issue that said oh this is a high priority but nobody was assigned to work on it or whatever and then just bam there it was and of course this has become the rejects crate which has made its way all the way into the rust line work and all that can we admire this pull request text also it's just so humble and so amazing links to documentation and benchmarks are in the RFC I apologize if I made any amateur mistakes I've only been around for one month yeah so you know sometimes this can work out well right so this sort of it's scratching thing you can think of it as in the good case OSS open source software by serendipity right and so in a case like burnt sushi it's like oh great now we have regular expressions this is awesome right but it doesn't always work that way so I didn't actually realize Nico was gonna talk about Eddie as well but he's another another of my favorites you're all my favorite Eddie's been around for a long time he started as a high school student contributing to rust and he also would show up as Nico was saying with a different anecdote with these massive pull requests that in this case nobody was asking for and this was a good pull request you know it was something that sort of needed to be done eventually but I don't know if you can see the details here but the pull request was open at the beginning of April and merged in mid September which is not really how we'd like things to run and it's not like there was this super active discussion or revisions or whatever it was that the team just didn't know what to do with this and we weren't comfortable just turning it down because you know he'd done a lot of work but we couldn't really prioritize reviewing it or getting it landed right so OSS by serendipity sometimes works out well sometimes we don't really know what's going on right and sometimes it can get you know a little caddy so the other thing to notice about serendipity which I think is really important is that it really if you're trying to run your project through this kind of serendipity and personal it's scratching you're selecting for a certain kind of person probably a person who has a certain amount of privilege a person who feels comfortable just coming out of nowhere and saying I did this thing pay attention to me right but there are a lot of people out there who don't have that comfort level or don't have the privilege that would let them do this and if you run your project this way you're missing out on that huge pool of energy and talent so what's the alternative well my idea is that we get people to all itch in the same direction right and you know I don't know how many of you know this but if you ask Graydon about the name rust he will tell you about fungus um you can google it it's actually quite beautiful um so yeah I mean so basically just giving all of you this shared fungus is totally the the answer to this serendipity thing right um and then we can all be sort of jumping in the same way yeah you didn't have to go there about the whole way yeah I did okay so so more seriously right um the the contrast I want to draw out is you can do open source by serendipity that's the traditional model of very decentralized individualistic yada yada or you can do open source on purpose uh there there are a lot of aspects of you know what that looks like in practice um and it connects back to some of the things that that nika was touching on um the you know the fundamental idea is giving people some structures to work with so that they know what contributions are needed they know how to make those contributions you're actively welcoming welcoming and inviting them right and so this works at different scales um at the small scale uh there's something we call quest issues which is a pattern we've used a lot in the rust community where you've got uh some some thing to do a lot of different times in a lot of different places and so you can write out instructions for how to do this thing and then have a big checklist of doing that thing for all the things right and so in this case uh uh this is from uh nick Fitzgerald on the wasm working group um hey nick uh and it's basically like filling out api bindings uh for the dom and this is like catnip I mean every time one of these goes up it's just like you cannot get yourself assigned to one of these items fast enough they they just get snapped up right away um and so this is a great way to get a bunch of people into the process uh you know in a lightweight way make them feel good about the contribution and then you can start more actively mentoring them um at the medium scale we've talked a lot recently about working groups and working groups are are sort of um this new frontier of rust teams right so we have the the teams that have been around for a while who are making the big decisions about the direction of rust and the working groups are are a little bit less formal than that and it's just let's get a bunch of people together with some kind of shared task and you know a couple of leaders and see what we can get done uh and this has been working out really well uh this year with rust 2018 around these domain working groups um which you mentioned earlier and then finally at the largest scale uh you know in rust we've implemented various visionary processes right so we have a roadmap process each year this is we've talked about this at each of the previous rust cons you know what what is ahead for this year um even the addition itself the idea of an addition is to sort of lay out this vision and this is a really key aspect of spreading that fungus right like that basically you're saying okay we're generally heading in this direction so if you are not itching in that direction we're probably not that interested in in your work right now um and it's a hard message but it's much nicer if you can frame it within this positive vision rather than just saying no we're not going to take your PR um sorry um I mean I'll just add I think it also helps like those PRs sometimes arise because people are looking for something to do they want to be a part and they don't know what's the priorities are right they would happily do something that's priority if it's clear to them what it is yeah exactly so the overall message um about all this itching is that like motivation and and I I experienced this a lot as a manager um I don't as a manager I don't tell people what to do very much and when I've tried it it doesn't tend to work um and instead you know I have to get them to want it themselves right and we have to come to um some kind of consensus right so I was told that I needed to perform this gesture Niko said that he was unwilling to but I'm going to inspire him come on Niko come on thank you can all do it you had to lead the way you were inspirational yes yes um right so this this all sounds pretty good right uh so we we started with the serendipity thing we saw the downsides it's like okay well we'll we'll shift to the fungal model and do this you know oh it's us on purpose all this fungus stuff was not in the practice that's good um right so you might think you know it's all unicorns and rainbows um but of course like real life is a little more complicated than that so even after we put all of these practices into place and we had roadmaps and we had a lot of clarity about the direction that doesn't stop people from you know coming up with their own ideas and uh putting a lot of work into something that's not on the roadmap and this is always a challenge for the teams so this this example um from a rescue meeting member Tiki uh is something that probably a lot of you have seen and are excited about um constant generics uh it's something that people have been asking for for a long time the team had thought about it and said not this year it's not on the roadmap nevertheless um Tiki really cared about it and went and wrote an RFC right and there was a lot of community support if you see like the emoji reactions everybody's really excited about this and so there's a conundrum of uh you know you've you set out this direction the serendipitous stuff still happens so what do you do and I think we don't have the perfect answer to this um we're still feeling it out in this particular case we ended up helping we ended up taking some time to help Tiki get this RFC to the right place and we got it landed so I you know I think it it worked out pretty well at the end and you know if I was to try to summarize this I would say we want to set out a vision we want to prioritize the work that we think is high impact but we still need to leave some room for serendipity that's still a really important part of doing open source um and it's you know it's not all one or the other uh so to sort of summarize the overall tension here um in in this section of the talk on the one hand you know we want to build capacity and sometimes that means letting people come and just do what they want to do but on the other hand we need to stay focused and so this is a delicate balance and it's something we're continually working on looks delicate yeah very delicate gosh all right okay it's haggled time right I'm just kidding that comes later I promise um yeah so the final thing that we wanted to talk about uh here was this idea of true openness and so kind of looking around the room I think we can already see some of the work that Rust has done to create a really large welcoming community with a ton of folks in it and this is because we tend to focus on these two ideas first the idea of pluralism and then secondly this idea of positive sums and so sometimes this is a little bit jargonese I'm gonna kind of define it so pluralism is this condition or system in which two or more states groups principles sources of authority all can be happily coexisting and so kind of just alone this idea of pluralism is like oh yeah great that's super idealistic but like in practice like how does that actually work and so clearly it's time for some game theory all right so in many ways it's often nice to talk about things in oppositions which hopefully you've been picking up on today um but the thing that a lot of people are probably familiar with this is the idea of a zero sum game which is this kind of representation of a situation where each participant's gain or you know um ability to get something is going to be kind of balanced out by somebody losing something the way you can kind of summarize this is your gain is my loss and so anytime somebody is winning that means that somebody else is losing and fundamentally if you want something that's pluralistic they can get antagonistic incredibly quickly uh and so what rust really likes to view the community and its systems as is a positive sum game which is to say that the gains of everyone uh the gains the losses when you add them all up we're going to end up with something greater than zero this is going to be a positive effect and the kumbaya way to say this is the hole is greater than the sum of its parts and that's a little saccharine but also that's kind of really awesome um and it's something that I think has led to a lot of rust successes uh but while it is something that sounds really awesome this is also an intense gamble uh the idea that we have a plural sum game and that it's actually going to work I mean in theory it looks like this right like we let our powers combine and then together you know the heart of rust and the earth of c plus plus and yes this metaphor does continue um we all come together and we form captain rust uh which is I guess a new ferris I'm going to have to draw um and this is ideal right this is what we want we want all these people with incredibly different perspectives coming together and forming this amazing uh pollution fighting group um and that's awesome uh but the trick is is like this is not guaranteed uh when you get all these people together it it might just collapse it might just fall apart and that's actually pretty scary um the work that we're doing here in the type of community that we're trying to develop in rust is a work in progress uh and we can't actually be sure that it's going to work out and what we're aiming for is this idea of truly open consensus seeking at scale which like I can't even think of state governments that have really pulled this off and so I have doubts um but I also think that this is amazing work to be trying to do and so I want to believe and so that's why I'm here and that's why I participate in rust and I think that this is like an amazing endeavor that could have impact across not only open source software but a lot of society um and so a lot of people are familiar with our attempts to do this really truly open process with the rfc process how many people here have written in rfc commented on an rfc enjoyed it oh no I think people didn't know there was a third question I'm just gonna assume that was the case um sorry about that uh so yeah we have this rfc process and the rfc process has had a little bit of an evolution so uh the main idea behind the rfc process is this idea of no new rationale and this actually didn't come up out of the first part of the rfc process but kind of emerged later because the original rfc process wasn't really open it kind of gave a little bit of lip service to openness like it was there you know how you can just put something on github but that doesn't make it open source uh it was kind of like that and so this is a quote from somebody who felt the need to call rust out on it basically there was this rfc that happened and you know people in the core team didn't really participate instead they went off into a room had their own conversation showed up and said we thought about it here's the solution and everyone was like what the hell that's not cool like we're all here in this room chatting and you just like pieced out and then like called the shots that's not what true openness is about and if we're going to put the effort to participate in this process the leader is better also and if you're not going to be here that's not going to succeed and that's where this idea of no new rationale happened and so all decisions need to be discussed in the public and I'll tell you right now as I said we're still working so if you see this happen call it out we care about it and it really matters so to give a small example about the rfc process that I think potentially I see people cringing good that was the purpose yeah so uh this year I guess it's been kind of going on for a long time at this point but there's then this great module system debate and there's been multiple blog posts multiple internals posts multiple rfcs and there's a lot of feelings involved in these rfcs and eventually we did reach a rfc that ended up getting accepted but there was a lot of work here and if you read Aaron's comment he's already addressing this idea of fatigue and while the rfc process allows us to approach this idea of true openness it definitely still has some of its downsides also just as an aside github reactions are not votes true openness involves commenting and participating fully and if you want to vent it's probably best to do it in private um and not with emoji or just use positive emojis anyways so uh Aaron has written several of these blog posts and if you are unaware that Aaron has like I guess I call it the feelings blog I actually don't know the official name does that work yeah all right great he has a feelings blog um and it's friggin awesome and in it he says that the module saga demonstrates both the payoffs and the pathologies we're getting a little Freudian here yeah nice all right of the rfc process and it played out over a dozen different threads reaching 1400 plus comments in total which is impressive and so in taking a look at this saga you kind of identified a couple of things that are downsides of the rfc process so the first is momentum and uh it's funny I've been writing a couple of rsc's over the past year and somebody told me like very sincerely you know an rfc rarely survives its first comment which is to say whatever that first comment is it's very likely to set the tone for the entire discussion in a way that is very difficult to evade afterwards there needs to be a lot of effort to kind of steer it away from when the person has started and this doesn't necessarily mean that the original commenter has done anything wrong but it's kind of just the way momentum works it's the way that threads work it's this linear thing and so you start going down one and then it kind of builds off that and suddenly we're talking a lot more about the thread than we're talking about the original artifact to begin with the second one is urgency which is man we give so many fucks in the rust community holy shit we care hard all right the stakes are high like a lot of us see this language as like the language that makes them like programming again and like that's pretty serious like if that's your job and this is what makes you happy then like yeah changes to it are serious and they kind of hit you right here and so that urgency is is something that's super real but I can guarantee that all of us can think of a situation where dealing with something or making a decision probably would go a lot better if you didn't have to do it quickly like if you remove the urgency suddenly a lot of our ability is to like cope and function with other people return and then when we're scared and needing to rush suddenly we like don't know how to people anymore and all of this kind of culminates in this thing with fatigue like 1400 plus comments like I don't I have a lot of stuff to do and reading threads exhaust me and you can tell it exhausts other people when you look at the module system debate so many people were part of the original one and slowly they just were dropping off not because necessarily they were pissed but like they just couldn't anymore like it is so much to ask of people and it's one of the interesting things about scale scale is this amazing thing that kind of points to our success but it's also kind of getting us to this pot where like how do we fit everyone in this room and be able to hear everyone at the same time it's an incredibly difficult problem and again this is something that like people haven't solved yet and like it's one of the biggest problems of the internet generally so this kind of brings me back to this book that Aaron really likes where it says you know the fundamental response to change is not logical even though I know we're programmers and we assume that everything we do is frigging logical it's not our very first response to change is always going to be emotional so you probably kind of feel like this and like maybe that's removing the mod keyword maybe it's okay to feel this way as I said the stakes are real but if you've got a room full of these rabid corgis and there's like a lot of lettuce for some reason like you're gonna have a bad time it's not gonna work out super great yeah so a lot of the sensation often happens particularly when we start thinking in this zero some way like oh no like the room is too full not everybody can hear everyone and so there's this sentiment that like okay luckily enough of us are gonna yell and we're gonna stop this really scary proposal from happening and we have to keep talking because if we don't stop shouting about this the evil people are gonna do the thing that we don't want them to do and this is like a terrifying attitude but this is real and like I have to be honest like I've felt this way before and I bet people in the audience have also felt this way before it's a it's a real feel and it's kind of weird and bums me out knowing that I relate to this because it kind of echoes this quote which is and I'm gonna read it because it's amazing that it's a real quote I honestly despise being subtle or nice the fact is people need to know what my positions on things are and I can't just say please don't do that because people won't listen I say on the internet nobody can hear you being subtle and I mean it so I don't know if you know the quote or the author it's this person whatever but fundamentally what we're seeing here is there's this vibe of like I want to be able to wield power but like the real thing I want to do is be able to change minds and these things are at a fascinating tension because wielding power is important we've heard about the need to focus we've heard the needs of a inspire power is a great recognition tool having it can feel like a reward but in the end when we have all these people in the room and we are all trying to seek consensus the thing that we need to be focusing on really is changing minds and using the power that we have to work on reaching that consensus instead of kind of enforcing it and saying that your idea is the one that people need to go with so again this idea of us versus them that the big baddies are just going to swat you away and that you need to get all your buddies together to fight the big evil cat but instead you can kind of just view it the other way with the module system saga I think a lot of people think by the end of the rfc that they had gotten the original people to compromise but if you talk to the original people a lot of them will say that it wasn't a compromise at all in fact what happened was over an incredibly long and very emotionally draining process we actually just came up with a better idea like the final process like the final thing we got wasn't like me like saying okay fine you get that I get this it was just it genuinely just created a better solution and that is what this idea of positive some game is that even though it can feel a little like a battle our gains and losses together end up producing something is better than just the status quo so instead I'd kind of like us to see it a little bit like this where maybe there's a battle but we're really kind of on the same side and in fact you should this is literally spider-man empathizing with himself and there's a cop car I don't know why that's there but like again a battle but it's kind of for show and maybe a little bit more collaborative you have a lot more in common with the other people on those threads than you might actually think so that's why we believe that true openness is something that we really want and as I said again it is a work in progress but I would be totally remiss if I didn't bring up this point whereas this like kind of utopian idea of total openness where everyone walks in on this equal platform is like actually I can guarantee you that that's impossible and not going to happen and there's a couple of factors about that like Russ is an open source project and open source is a huge political situation and how money is used in it is really common and so I mean a lot of times we'll do work and you have this like fuck you pay me feel but you know for some people like they can't do the work unless you pay them like there's no way because like they have to live and stuff and the money is going to make that happen and so if you have an entire ecosystem that has all of its velocity from people who aren't getting paid then the people who knew that money don't show up because they physically can't and that's like a really big problem but even if we were somehow able to bracket the economics portion out of this and this is going to get real so stare at the corgi if you don't like it like Russ is probably the most open and inclusive open source project I've ever worked in and I've worked in a lot but like I'm on the core team I like do a ton of work and there's Russ spaces that I don't feel comfortable in like that like I will try and participate and like I don't know someone says I'm a bad engineer because I use emojis I don't know like why the hell would you even say that that's ridiculous but like Russ not perfect and this isn't trying to call out that there's like some bad actor here who's doing something wrong but like there's just like history and material conditions and like I don't know it's 2018 and a lot of years happened before that and a lot of stuff happened before that and just because Russ has a code of conduct doesn't change that that's the case and so when we think about openness a lot of us are programmers and we love thinking about first principles openness and like yeah sure that would be cool but we can't rip ourselves out of time and space so we have to realize that true openness doesn't work unless we also bolster people up which means finding the people who have a lot less of the options and a lot less of the opportunities and giving them those opportunities not because they asked or because they did something or like show they were worth it but because we care about making equal opportunity like a real thing uh look at this pumpkin this pumpkin this pumpkin's inequality and the corgi's taking it out all right so we've been talking a lot about conflicts here and so it's like what's the conflict going on here and I couldn't really come up with one it turns out there's so many internal conflicts with the idea of openness that I'll just show it as opposed to itself it's an incredibly complicated idea and like so often we think of it as this like kind of shallow obvious thing um and so yeah I guess with that it's Nico's turn okay so I don't know if you noticed there was a theme about conflict and opposition whoa this is a theme that it turns out not well I don't know maybe it's on purpose we've been hitting for a long time in a lot of different ways through a lot of different keynotes so you may remember some of these slogans from years past um and they're all kind of of this of the same uh nature right that we want to have these two things that are in opposition but where we can find some kind of way to resolve that opposition to find a third way to kind of get the best of both worlds and get them both and that's kind of where we're out here with this talk oh this is definitely Ashley so now it's philosophy time I promise to here all right so I know I started talking about genealogies but I'm gonna end with this amazing idea of dialectics die of what we made a slide for the response so similar to this whole idea of oppositions uh understanding what a dialectic is is often uh like a great way to figure it out is to see it as opposed to formal logic how many people here study it any sort of formal logic math all right you're gonna hate this all right so in general formal logic states that things are what they are and that they stand in definite relationships to each other uh it's kind of this law of identity thing where we say a equals a you may realize that I am about to say that this isn't correct there are hidden variables all right so no this is actually what dialectics are opposed to so in formal logic it says hey when we reach a contradiction we're wrong and I'm here to say that's not the case all right so the hidden variable here is time and so things are able to change over time and so I like to say a does not equal a um and this is like an amazingly great thing so there's this idea of the dialectical method and lots of philosophers worked on it including Hegel but it says that the dialectical method in contrast to the method of formal logic trains us to identify these contradictions and thereby get to the bottom of the changes taking place so this is what a dialectic looks like and the idea is that all change in progress comes from this progression of dialectics and if this is like a little heavy because this talk has been forever and you need some more animated gifts I found one this explains dialectics perfectly wait for it that one's rust yeah so it's also visualized kind of as this spiral and as you can see there's this growth pattern and that what fuels the growth and the progression over time is this idea of contradiction so again in formal logic and I've seen this happen in programming so many times it's like oh this doesn't work there's a contradiction this failed we're wrong and the answer is no this is the opportunity for change this is where the growth is going to come from because these fundamental contradictions are what fuel history all right enough philosophy let me go over here so let's bring this back to rust so what's interesting so Nico wrote a blog post you might have read recently talking about some new ideas around the rfc process and there's a strange kind of resemblance actually visually to this dialectic process and you know as Nico was saying in some sense this has always been part of rust process and in some sense this talk is really about relating those technical oppositions to also oppositions around people systems there are lots of contradictions or apparent contradictions that we're trying to resolve and we are definitely on that spiral right we're we're constantly refining our people processes but we're also refining rust itself right so rust today is not rust tomorrow and in a sense uh you know this is um like a long con like the whole addition process guess what it's about dialectics right so rust 2018 is not the same as rust 2015 it's a refinement we're getting smarter we're understanding the contradictions better we're synthesizing new ideas and I think the the rfc process really epitomizes that kind of dialectic method when it works well um so to to kind of wrap this up right this has been a talk about oppositions um we've seen a ton of them uh just to sort of recap right we saw uh at the beginning um with Nico's section there's doing versus supporting both desirable things but you've got a strike of balance same with latency versus throughput I talked about building capacity out versus staying focused and Ashley talked about the complexities of openness um you know but the the point is the point of all this is that oppositions are inescapable they're a part of life they're at the heart of systems whether those systems are about people or software um but I think one of the really fundamental messages here is that there are conflicts but conflicts don't have to generate heat right um that is the natural response all those feelings are legitimate and should be vented somewhere um but I think rust and its community is at its best when we can have those conflicts and work through them together in this sort of positive some way um in other words to get to the synthesis we have to do a lot of people things right we have to be good at listening to one another we have to have a diversity of ideas and we have to pursue this ideal of openness right so I think our our message today is that rust just is about this synthesis um it's about positive sums oh go back oh sorry I screwed this up we have to watch the whole gif it's important thank you Ashley all right and with that we're at the end of the talk thank you very much