Polishing Ruby
This is a modal window.
Das Video konnte nicht geladen werden, da entweder ein Server- oder Netzwerkfehler auftrat oder das Format nicht unterstützt wird.
Formale Metadaten
Titel |
| |
Untertitel |
| |
Serientitel | ||
Anzahl der Teile | 65 | |
Autor | ||
Lizenz | CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported: Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben. | |
Identifikatoren | 10.5446/37624 (DOI) | |
Herausgeber | ||
Erscheinungsjahr | ||
Sprache | ||
Produzent |
Inhaltliche Metadaten
Fachgebiet | ||
Genre | ||
Abstract |
|
Ruby Conference 201427 / 65
2
3
4
6
9
11
14
17
18
19
20
25
27
29
30
32
34
35
39
40
46
47
50
53
55
56
58
61
63
00:00
SpeicherbereichsnetzwerkMultiplikationsoperatorBereichsschätzung
01:44
MultiplikationsoperatorMAPWeb logComputeranimation
02:25
BeweistheorieSpeicherbereinigungProzess <Informatik>VerkehrsinformationMultiplikationsoperatorComputeranimationVorlesung/Konferenz
02:58
MathematikEinsBitRepository <Informatik>MathematikSpieltheorieComputeranimation
03:22
Reelle ZahlTwitter <Softwareplattform>Innerer AutomorphismusComputeranimationBesprechung/Interview
03:49
SchlüsselverwaltungFormale SpracheSoftwaretestIntegralEin-AusgabeApp <Programm>CodeInformationBesprechung/InterviewVorlesung/Konferenz
05:04
SoftwaretestDesintegration <Mathematik>Syntaktische AnalyseExogene VariableInformationFaktor <Algebra>Exogene VariableART-NetzMomentenproblemComputeranimation
05:43
Hash-AlgorithmusHash-AlgorithmusMomentenproblemExogene VariableObjekt <Kategorie>MatchingComputeranimation
06:15
Syntaktische AnalyseExogene VariableDifferenteHash-AlgorithmusMatchingInklusion <Mathematik>Computeranimation
06:42
Prädikat <Logik>Gebäude <Mathematik>Hash-AlgorithmusHash-AlgorithmusMatchingComputeranimation
07:07
Hash-AlgorithmusSchlüsselverwaltungMatchingEreignishorizontMAPComputeranimationVorlesung/Konferenz
07:40
Hash-AlgorithmusSchlüsselverwaltungTeilbarkeitHash-AlgorithmusMAPFigurierte ZahlSchreib-Lese-KopfSpeicherabzugZeichenketteSchlüsselverwaltungTeilbarkeitAliasingVerkehrsinformationModallogikSchlussregelComputeranimationVorlesung/Konferenz
09:04
ZeichenketteWort <Informatik>eCosComputeranimation
09:28
AliasingImplementierungSchlüsselverwaltungTwitter <Softwareplattform>ComputeranimationVorlesung/Konferenz
09:58
CASE <Informatik>Hash-AlgorithmusPaarvergleichSpeicherabzugTwitter <Softwareplattform>ErwartungswertTermInformatikFormale SpracheComputeranimation
10:21
InformatikImplementierungGrundraumAmerican Physical SocietyErwartungswertFormale SpracheHypermediaHash-AlgorithmusComputeranimation
10:51
Hash-AlgorithmusPatch <Software>SchnittmengeTeilmengeWeb logMonster-GruppeComputeranimationVorlesung/Konferenz
11:37
Patch <Software>Web logMonster-GruppeStapeldateiComputeranimationVorlesung/Konferenz
12:05
Hash-AlgorithmusHydrostatikPatch <Software>GeradeRechenschieberComputeranimation
12:29
Patch <Software>ComputeranimationVorlesung/Konferenz
13:04
ParametersystemMereologiePhysikalisches SystemProgrammfehlerComputeranimation
13:30
ObjektverfolgungPhysikalisches SystemE-MailFormale SpracheQuellcodeGasströmungFokalpunktProgrammierungWikiSchlüsselverwaltungPhysikalisches SystemWeg <Topologie>ComputeranimationVorlesung/Konferenz
13:53
ComputersicherheitSoftwareentwicklerSoftwareentwicklerEinsFlächeninhaltSoundverarbeitungHash-AlgorithmusComputeranimation
14:23
HackerIterationHash-AlgorithmusInterface <Schaltung>ResultanteSoundverarbeitungHash-AlgorithmusArithmetischer AusdruckComputeranimation
14:48
Hash-AlgorithmusOffene MengeTeilmengeSchlüsselverwaltungWikiWeb-SeiteVersionsverwaltungNormalvektorSpeicherabzugAbelsche KategorieResultanteMAPParametersystemHash-AlgorithmusOrdnung <Mathematik>SchlüsselverwaltungÄhnlichkeitsgeometrieMultiplikationSchlussregelCASE <Informatik>Computeranimation
15:33
CASE <Informatik>SpeicherabzugDivergente ReiheResultanteHash-AlgorithmusComputeranimationVorlesung/Konferenz
16:07
LoopHash-AlgorithmusComputeranimationVorlesung/Konferenz
16:36
Installation <Informatik>CodeHash-AlgorithmusVersionsverwaltungProgrammbibliothekErwartungswertHash-AlgorithmusExistenzsatzParametersystemGüte der AnpassungTeilmengeComputeranimationVorlesung/Konferenz
17:16
Boolesche AlgebraBoolesche AlgebraImplementierungSoundverarbeitungPatch <Software>ComputeranimationVorlesung/Konferenz
17:45
Patch <Software>Hash-AlgorithmusHydrostatikVollständigkeitMereologieTwitter <Softwareplattform>Computeranimation
18:10
Formale SpracheVersionsverwaltungHash-AlgorithmusNormalvektorOffene MengeAliasingComputervirusInstantiierungAutorisierungHash-AlgorithmusMathematikCodeMereologieÄhnlichkeitsgeometrieBrowserComputeranimation
19:12
MathematikMultiplikationsoperatorÄhnlichkeitsgeometrieAutorisierungSpeicherabzugHalbleiterspeicherComputeranimation
19:41
MultiplikationsoperatorInstantiierungComputeranimationVorlesung/Konferenz
20:07
CodeVersionsverwaltungAbelsche KategorieObjekt <Kategorie>NormalvektorThreadMathematische LogikCodeMultiplikationsoperatorWasserdampftafelProzess <Informatik>Workstation <Musikinstrument>Patch <Software>Projektive EbeneFaktor <Algebra>Computeranimation
20:35
Erweiterte Realität <Informatik>QuellcodeHill-DifferentialgleichungKonvexe HülleZellularer AutomatProjektive EbeneMathematikWechselsprungDeskriptive StatistikComputeranimation
20:58
Deskriptive StatistikBildschirmmaskeWeb SiteVererbungshierarchieElektronischer ProgrammführerComputeranimationVorlesung/Konferenz
21:28
Klon <Mathematik>Hardware-in-the-loopFermatsche VermutungQuick-SortPatch <Software>Bridge <Kommunikationstechnik>GruppenoperationAbfrageBesprechung/InterviewComputeranimation
21:52
AbfrageRückkopplungParserGraphische BenutzeroberflächeLokales MinimumDatumsgrenzeStrom <Mathematik>NormalvektorOffene MengeEindeutigkeitGewöhnliche DifferentialgleichungPatch <Software>ImplementierungTaupunktFehlermeldungMakrobefehlSyntaktische AnalyseInterface <Schaltung>ZeichenketteFunktion <Mathematik>p-BlockTLSMathematikMeterRechenwerkKommunikationsdesignFlächeninhaltBitrateMatchingWechselseitige InformationPersonal Area NetworkGeradeVerzweigendes ProgrammEinsProgrammfehlerVerkehrsinformationWeb logExogene VariableComputeranimation
22:20
DigitalfilterKonfiguration <Informatik>NormalvektorOffene MengeRückkopplungLineare RegressionDezimalzahlProgrammfehlerExogene VariableSpeicherabzugSoftwarewartungMultiplikationsoperatorDatensatzVerkehrsinformationComputeranimation
23:18
MaßerweiterungProgrammbibliothekBimodulStrom <Mathematik>Web-SeiteGeradeQuellcodeWikiSoftwarewartungSprachsyntheseMailing-ListeProgrammbibliothekExogene VariableSpeicherabzugStandardabweichungRechter WinkelDatensatzComputeranimation
23:52
Syntaktische AnalyseSpeicherabzugSoftwarewartungDomain <Netzwerk>Twitter <Softwareplattform>Proxy ServerSpeicherabzugWeb logVererbungshierarchiesinc-FunktionComputeranimation
24:44
EntscheidungstheorieWeb logProzess <Informatik>ComputersicherheitWeb SiteRohdatenComputeranimation
25:10
InformationInternetworkingInterpretiererROM <Informatik>Globale OptimierungSpeicherbereinigungProzess <Informatik>CodeMereologieImplementierungDivergente ReiheVersionsverwaltungElektronische PublikationWeb SiteSymboltabelleUmwandlungsenthalpieMereologiePaarvergleichSchnittmengeRechter WinkelPOKEProgrammbibliothekSondierungGruppenoperationComputeranimation
26:17
SondierungSpeicherabzugResultanteBitSoftwareentwicklerWeb logHeegaard-ZerlegungVierzigComputeranimation
27:03
KontrollstrukturMinkowski-MetrikSondierungMultiplikationsoperatorHeegaard-ZerlegungCASE <Informatik>Computeranimation
28:04
SichtenkonzeptPunktSichtenkonzeptHilfesystemArithmetische FolgePerspektiveComputeranimation
28:56
SoftwareEreignishorizontVideokonferenzArithmetische FolgeComputeranimationVorlesung/Konferenz
Transkript: Englisch(automatisch erzeugt)
00:18
This is I'm gonna I'm gonna give you a piece of advice before I start if you ever want to make a talk or submit
00:23
a talk for RubyConf do not submit a talk for something that you either have never done or It's very unlikely You'll do by the time RubyConf gets around because that's gonna just kill you and like with the whole imposter syndrome thing like I was up really late like
00:42
freaking out yesterday, but to deal with that because I have a bunch of people and I can I can like Suede you I brought chocolates. So if you hate this talk, you can come to me afterwards I can give you chocolate and you'll feel awesome about this talk and like actually showing up And oh, yes. Okay. So there's two types. There's French chocolates, which will go amazing with the coffee over there
01:05
And there's Icelandic chocolate and the brand I wish we had like the brand is called om nom I'm not shitting you. This is the brand Just for that go to Iceland because it's totally worth it Also, if you ask me a good question, I might throw a chocolate
01:21
so This talk is called Polishing Ruby and the subtitle kind of hinting at the idea of what I mean by polishing Ruby The idea is to basically together even if you're someone who's not confident We're gonna kind of go through kind of like my experience not being confident with Ruby and the question
01:41
I want to ask every single one of you in this room is why are you here? So I'm gonna let you finish but my blog is titled polishing Ruby and has been around since 2005 and it's the best blog ever
02:01
Bye Ryan So the problem with that is that I totally started writing the talk without remembering that someone has this title It's a great title, and that's why I stole it It feels great in technique like practice this thing, but it's actually hard to manage So the idea is like why are you here at RubyConf sitting there listening to people talk about Ruby
02:24
It's probably because some at some level you kind of care about Ruby. I hope And what I want you like what I want to try to exercise with you is to prove that if you do care about Ruby You should maybe try to think about a finding a way to leave it better than how you found it
02:44
Maybe a few years ago, or maybe just now if you have any ideas Nobody's asking you to change the world. We're not asking you to the revolutionize the garbage collector like that's not your job Necessarily there's someone who's really good at that but you can add to it, so you can
03:01
You can add to it in a meaningful way, and I don't mean like that like don't do that It's just like plus ones on repos and stuff like that That's not necessarily how you add to it, but you could add to it by just a little bit changing it and not Not changing it, but adding something without meaning to like you don't want to change everything that's ever happened
03:22
So just you know take the world as it is right now and just increase the the coolness of it by a little bit My name is Olivier. This is how you say that Olivier and you feel happy at the end I am NOT a Satanist For real I promise you this is the show Silicon Valley
03:41
You don't have to watch this, but everybody on Twitter is like super super excited about telling me how much I look like this guy But I am NOT a Satanist, and I really hope I don't get smitten is that how you smoten How do you how do you conjugate this smiten? Smoten see there you go. We have a we're going to talk about language, so I
04:02
Worked for code school, and so we teach people a bunch of things like Ruby rails So if you like these things we have amazing stickers There's Katie and Joel over here that have a bunch of really awesome stickers we don't have shirts anymore sadly and recently I worked on making an API for an iOS app and
04:22
I had made API's before but not API's that would Create a lot of havoc if they didn't work so I made it with Ruby, and I made it with rails and Crazily I didn't wrote tests for it
04:42
Thank you not test driven The reason I wrote tests because what if someone Especially me changes the API later And it breaks the app and I don't realize it until someone just says like it's not loading the right thing So I was really really scared of this Just like I was scared that I would forget my pants this morning like this is the worst fears
05:03
So I thought okay, let's write some integration tests, and then we can go have ice cream now Liberate you you can go have lunch So given a user if I ask the user API for something I should receive information about data about this user So something like this you have a user that you created with a factory or a fixture you
05:23
Call the user API for that only user that exists because you just made it and then you parse that response And then with our spec if you use our spec you can do Expect data to include the name Olivier, which is my name super still hard to pronounce So our spec says that's awesome that works. This is cool. Let's go have ice cream
05:43
And then I just had this moment when I was building this API was like can I do that in Ruby? Can I ask a hash do you include another hash for chance? Let's try so you take the same response. That's an object. That's been parsed and you ask
06:02
I don't know the first thing that came to mind because of our spec was Maybe blame our spec was include. Okay, so do you include this other hash? that's You know similar and no it doesn't because that's not what? this method is for so our spec is neat and it kind of like gets what I want to do, but and
06:23
So it has this matcher called include right there, and I was wondering okay So if there's a thing called include in our spec and I think I'll include in Ruby or for the hash include What's the difference there like what is this? Include matcher doing that the include method is not doing or I might miss understanding this whole thing
06:42
So I just looked into it So there's this matcher and inside of it is checking when you're doing a match on a hash it's checking to see if you're comparing the hash with a subset and Then internally so it does this thing and then it checks whether the two things that you're comparing our hash And then if you're a hash, and I'm a hash let's dance you
07:01
We're gonna actually compare things, and I'll tell you if it's true or not if you are included in the other thing It's really good and actually after that it does an actual Hash include so it actually does the simple thing that Ruby does With a key and a value that's great, and it only the only thing is that yeah, it's very simple
07:21
it just does the the the check there and As long as your value for this key is the same as my value for this key It's gonna be true which is for my API I really want to make sure that These keys and values match and not just the keys and not just the values on one side And I'm lazy so I want it to work that way and it makes sense so warning though
07:41
This only works for one level you can't have a nested hash in our spec It won't work or figure out like where in the nested hash. It's gonna be better so back to hash. How does Hash include work because it doesn't work how I somehow thought it would work It's not as neat as our spec, but it's it's still kind of cool
08:01
It makes sense so you have a hash a true be false another hash a true And you ask the first hash whether it includes why and it's gonna say false Because it's basically has key So it's not checking for anything fancy inside of your hash or whether it includes it or not It's an alias to all these things are the same actually it's include has key member key if you don't like the has thing
08:24
That's actually how it's named and see Ruby, but I Find that weird, but I don't know this much about Ruby. I can't really have crazy opinions turns out we value keys over values nobody Poor values are going to feel devalued at the end of the day
08:45
So they kind of like okay So I made me Grasp for this this thing because we like rules like if a necessary feature has a high astonishment factor it may be necessary to redesign the feature, but then Can't ask the Ruby core team to redesign a feature because it rubs me the wrong way
09:02
Probably a terrible idea so is hash include astonishing if I compare it to say string include Which words the way I expected because I'm lucky it you know if you ask it for the same string It's a substring of itself, so this is totally fine it, but if you do that on array include
09:21
It's not going to work exactly the same way either you can't ask An array if it contains itself so It's it's a little astonishing to me But just to me probably so I tweeted about it because that's the first thing that happens when I have a thought I just put it on Twitter If you follow me, I'm sorry
09:42
So I said okay I don't understand why it works that way and it's an as to key when it should check for a subhash in my mind It should check for a subhash just linguistically pry not an adverb, but So maybe I can do something about it So I thought about okay So I'm gonna write down what I mean and not just in a tweet so that other people can tell me this is
10:04
Completely crazy stop now, and they did that was awesome so fashion honestly was like yeah No, I expect the key check not what you think and Terrence was like no, please don't do this And everybody else
10:21
So my fix it my first lesson doing this like a little deep dive was my expectations and surprises are not necessarily Universal like what what surprises me as someone who's not coming from computer science because I'm not are different from what language implementers and people come from computer science expect and And also nobody wants to break the APS like that's a thing like very important thing if you're ever gonna try to do
10:45
Something with Ruby don't do things that break api's cuz that's just no But then I got some some hope from Pat He was like hey, what about a new method name maybe and that was like okay? Yes, maybe I can do something
11:01
Maybe I can have this thing and maybe it makes sense and other people are gonna agree So that's the simple question. I want to ask is does this hash contain this other hash, so maybe it should be called hash contain That seems to make sense and a bunch of people agreed So this is how it would work pretty much exactly the same as the original one Wouldn't that be nice?
11:22
Or it could be sub hash I think a bunch of people were when we were talking we're like this is kind of like the subset method on the set Which is kind of cool it checks for that and then while we're talking about this And I'm just talking to just a few people just like make sure I'm not completely insane This happens this person. Thanks to Terrence actually
11:42
Before I'm even done like figuring out with the name actually makes sense no who made a patch like I Don't even understand how that works like I knew he was called patch monster But I shit you not I just wrote a gist and a blog post and he had a patch for it Yes, you had to talk to him, but that's still kind of crazy you just mentioned it right mention it in passing
12:06
This is the patch. It's on github You just put it up on github And what's awesome about this patch is that if you are like me? Completely illiterate when it comes to see you can see well You can't see on this slide because it's a lot of a little more, but this is actually not a big patch It's like 20 lines something like that 20 30 lines, and there's just very simple things going on
12:26
You realize that's the thing I'm dreaming of Can be real without that much crazy effort, and that's kind of who feels awesome So thank you, Nobu. I don't know if you hear someone in the hallway
12:42
Holy shit, thank you So that's So you don't need to know C to contribute to Ruby It's good to be aware of it like like I am now because of the way I've seen how he's implemented that patch
13:04
And also there are many good humans like him like him like him, so that's Terrence sack And and so many others that will help you even when you're fumbling and you're really your arguments Not solid yet because it's totally not solid so what now?
13:22
So this is the second part of the talk. This is the part where actionable things are discussed So I'm sorry with the boring like stuff now. It's getting in the serious stuff So the second part is bugs that rubylang.org like just like memorize that as a litany You're just you're just gonna have to go there. This is the Ruby issue tracking system
13:41
It's a little verbose and not the best CSS That you'll ever see And there's a lot of wikis, and they're a little messy, but they're really really really helpful One of the most helpful ones is these this little for developers one And there's this thing called how to request features, so if you're if you're a pedantic
14:05
Crazy ambitious and OCD then you're probably one of those people who are gonna think oh I can add something So whether the first thing that you have to think about is is this thing that I want to add to Ruby a meaningful Improvement that's kind of a vague thing, but here's how I broke it down
14:23
before my thing To iterate over a hash you had to iterate over a hash or use the side effect of another method the merge method Hashmerge to achieve the expected result that I that I expected so like make sure that are you inside of you after you can ask a hash if it contains another hash, and it's just gonna tell you and
14:44
It's expressive. It's not surprising it makes sense Now the second criteria is is this a new request so is this something that someone's Actually submitted before could you please look so that you don't repeat the same thing that some of these are
15:01
Already asked and we turned them down and there was a good reason So I searched and I found 11 results for this weird career that I that I had and there was there was actually one pretty pretty similar feature of rest to extend hash include in order to be able to I think check for I think past multiple arguments or something like that. It was it was
15:22
Basic as you could Pato get two arguments a key and a value and the way it was done was interesting It wasn't actually breaking the API which is kind of cool. Which is the thing that would actually prevent people from going no But it's not exactly what I wanted to do and it's not exactly the same scope or use case So I think like that's this will work out and the issue
15:43
Was a year old and hasn't been followed upon after people from the core team like ask a bunch of you know questions other people Were like can you clarify this and that so? The third criteria is can it be done any other way, so if there's a way So I told you about hash merge, and that's a way to achieve the same result
16:01
And that's how I implemented my thing originally in Ruby, but just okay. How can I hack this in Ruby? Yes, it exists. It's either verbose Or if you loop over the hash Or it's an expressive because why would you merge a hash to figure out that's just doesn't make sense It's like you you have to take a detour
16:22
Then there's also would it benefit many people so I thought okay I found this method this include method in our spec, and this this is where they could the idea of it came about What about our spec like how many people use our spec a? lot of people Like 20 21 million downloads for all versions, and then like half a million for this version
16:44
Just kind of crazy, and that's just the our spec expectation gem which gets included in our spec So it seems like it could benefit people because people are using it and expecting it to work at least in this library Is it a good name? Well if you ask the question does a hash contain another hash and the method is called hash contain
17:04
I think it's a good name of course they Of course there's people who might disagree But I think so Now what does the method accept as arguments a hash?
17:20
What is the return value a boolean are there any risks of incompatibility no because it's a brand new method And I'm not actually changing anything existing I think I think that's fine, and then finally one of the criterias write write it down So this was the your implementation that I mentioned this was my super naive Implementation that just did the merges as a side effect of the merge you could figure out whether it's included or not
17:45
But of course no boost patch is better probably faster and Finally you have to make a concise but complete proposal which is the part that I think is the most terrifying because
18:02
You've formulated these ideas maybe on Twitter or to friends or to people at conferences. You're like it would be great Was like that, and then you actually have to do this thing So you have to go to the issue tracker, and you have to fill out. Oh, I have a laser. I forgot My nice red
18:20
Yeah, you this is a very important part. There's a thing in English. You don't have to know Japanese to Submit an issue this has been going on for a while But there's still people who don't understand this and they're still worried about that To submit their issue the only important thing is that is that in your description or in your explanation of your request? You include code that makes it explicit to anybody involved what you're talking about which is exactly what I'm not doing here
18:45
So don't do that And then I think the other thing that I did was yeah make sure the title is clear And you're not just rambling in the title so I think I try to make it as clear as possible use this to check whether something contains a hash and That's about it. This is not a finished thing. I actually haven't done this
19:02
It's in my browser right now And I think I might actually submit it at the end of this talk if if nobody like tries to tackle me in the meantime So I'm still working on it and finally the final thing finally the final thing Yeah Follow through so you remember the thing I mentioned where someone had open an issue similar like that
19:23
So a few people gave feedback, but they the author of the feature request didn't really come back to say oh, okay sure I'll I'll Change this thing this request to assess for that so following through Making sure you're responding when people actually take the time especially from the core team to respond to you is very important
19:40
So I will do that. I promise So I'm gonna rewind really quick To the first step Because I have opinions and you're not necessarily someone like me who just like finds a thing and I'm like I should work this way But you can find out inspiration in other people's feature requests if you if you're not like if you don't have a strong will
20:00
To change things or if you're just trying to learn how the things work in this issue tracker so for instance you can take Aaron Patterson's feature requests for I think time elapsed Yeah How he phrased it how he titled it the code that he included in there that might be meaningful to you Charles Nutter you could see how he made his own feature request
20:23
So those are people that are familiar with the process and to see how they do it when they're in familiar waters may make you Feel better about your feature request because you'll be like well mine has the same amount of detail so Then there's the documentation patches so ZZack is right here Zachary Scott
20:40
And there's this really great project the Ruby documentation project and in there They're actually great steps for you If that seems like a crazy jump for you to just be a Ruby user and then change Ruby and add something to it You can make it better Documented so and I love this sentence by the way this was right. This is like waiting for me
21:02
Existing documentation could use some polish Exactly in form and in form of clearer descriptions and better examples examples being the the things like there's a lot of really Quick sentences in the documentations, but not a lot of examples that are so it's a great place to start if you If you if you don't know where to start if you're kind of intimidated
21:23
And there's a lot of really nice step-by-step guides on on this site and also Zach may face mush you if if you do it because he'll be super happy and So yeah, there's that little getting set up thing that actually is useful not just for documentation patches because I learned a lot from that to
21:40
Fork Ruby, which is on github now, and you know have it locally Etc Then there's accepted features and this is something that Zach mentioned to me yesterday on the Ruby tracker There's a custom query in the sidebar that you can click on that shows you the accepted features for the current major branch I guess and
22:01
In there you could see the things that need action, and there's quite a few of them that are not assigned, so I don't know if Right so those are need need to be assigned. There's already a ton of them already assigned So and the ones that are not assigned. There's 159 so that's quite Quite enough for you to chew on and of course there are bugs so the problem with bugs
22:22
Is that there are many people responsible for things in the Ruby core team, so I don't know if it's probably Something a little more hairy to look at maybe a good place to learn how people report bugs So these are the unassigned bugs that you can also find in the Ruby tracker It sounds as fun, but
22:41
Fixing or learning or understanding bugs will probably help you kind of like get Situated and of course remember that although I spent a lot of time talking about feature requests because I was excited There are tougher sell because you're adding things that people are going to have to maintain for you inside the Ruby core team
23:00
If you don't join the Ruby core team that means somebody else is gonna have to maintain this thing that you were like I'm super excited about this This is the greatest idea ever and and then you just go and you never Touch it and never fix it ever again, and they have to deal with it So empathize with them and realize that somebody has to pick up your stuff Speaking of maintainers There's a really cool list of maintainers that you can find either on the wiki of that issue tracker or on the actual source
23:27
Inside of Ruby doc you can find so there's one thing that I noticed that they might be I don't know They might be different lists. I'm not sure if they're like right Now what's nice about this list is that you'd find who's responsible for what in the Ruby core team
23:45
And also the other libraries that are not necessarily like standard lib and stuff like that so if you if you have a features proposal say for abstract and You think that it should work better if you had a say in it you can go talk to her
24:00
Mark Andre and like find him on Twitter or find him somewhere and just talk to him or you can find someone that Actually knows about this domain and this thing or has dealt with it before so go talk to maintainers if you can Before you do your In a roundabout way, that's what I had the luck of doing through Terrence We should go talk to Terrence
24:23
The and remember that the core team is is pretty damn busy so if you can save them work by just talking to a human a Proxy of them or people who are knowledgeable on this topic that you've seen a blog post from or something like that Running your idea by them or running your suggestion by them will save basically just distribute the load and help you get comfortable
24:46
And to get comfortable. There's also a bunch of resources There's this really cool blog post that came out last week by PJ Haggerty about so you decided to Contribute to Ruby, which is like perfect. It's like Exactly the place to go after this talk if you want to learn more. There's
25:02
Terrence's amazing talk Ruby and you in which he talks about a lot of the Similar things a lot of security things and how the process works and This this site called Omni ref that Tim Robertson over there puts up so if you if you're it's super intimidated by see the same way that I am you are not alone and
25:22
This is a great place to go because he's annotated a bunch of the the trickiest part of the Lube Ruby library and other people have to you can discuss little things you can ask questions to people about specific Parts of the end just last week somebody was I think reviewing the symbol Symbol stuff in Ruby and figured out that there was kind of a performance issue there or something that was weird about it
25:44
And then Matt's found out about it, and this was fixed. I think within what a week or something like that after that Right symbol comparison so just because someone so someone I don't know I don't know their name sadly I feel bad Looked at this with a new set of eyes and was like
26:02
Why is it like this? And I'm not suggesting that everybody go around like poke at everything in Ruby and says like why is it like this? Why is it like this? But this person managed to improve the performance of Ruby just by looking at a thing with a brand new set of ice so You're not alone and to prove that point if you've never contributed anything
26:21
I made a survey yesterday, and if you haven't taken it yet. I would love you to take it And this is basically there's a few questions about your experience as a Ruby developer If you're paid if you have written a blog post and things like that, but really the core of it is this thing If you are intimidated by the idea of contributing to Ruby, why are you intimidated?
26:44
So there's I don't know where to start which I hope I kind of like Reduced a little bit. I don't know C. Which is not necessarily a problem even though. That's one of the biggest things People will figure out. I don't know what I'm doing which is exactly my problem. That's why it's checked And other things like breaking other people's stuff
27:03
So and the results are really cool, so this was just just five minutes before the talk 128 people submitted answers to this so What 41% of them were over five years they've been using Ruby over five years ago But it's kind of like you know a nice little even split between three four and one year ago
27:23
And more importantly the breakdown of the reason why people are terrified of contributing to Ruby is really cool. I don't know where to start Not anymore There's also I don't have time to work on this which is a really good reason in which case when you're at a conference Maybe that's the space to kind of like talk about that you have people around there
27:43
They can help you make it faster and easier for you and save time on the ramp I don't know C talked about that also not a big deal So really basically the big three reasons why people don't come like feel comfortable contributing back to Ruby are fixable So let's fix them and if if you haven't still it like I said if I you haven't submitted to this little survey
28:06
I think it's really cool to have a sense for why people are not doing something so please do this kind of a Weird URL, but hopefully you can snap it and see it and go there So to to conclude with like grandiose talks and and ideas
28:23
Science needs to meet reality at some point before it becomes technology, and that's where you come in you there's the people who create something who theorize about something conceptually, and then there's the real thing when you're using it and Your point of view matters every single one person that uses Ruby your point of view matters
28:43
And how you feel about things or you know how you're excited or not so excited about certain features actually matters and your help is needed it's not It's not useless at all so We have a more diverse community, and it's getting more diverse and the more diverse
29:01
It becomes the better things can be challenged by perspectives. They're not exactly the same And that's how we make progress so Let's make this Ruby sparkle, and thank you for caring. That's it