00:00:24.840
morning hey how's everyone doing
00:00:31.960
let's hear it that was pathetic come
00:00:38.879
on I made it here you guys made it here act a little more excited than that
00:00:45.879
please thank you no not yet save that for the after
00:00:54.199
party all right so today we're going to talk about Ruby core for tender feet no
00:01:01.359
I don't mean Aaron but well kind
00:01:07.840
of uh now today we're going to talk about uh so contributing to open source
00:01:13.080
has been kind of a theme of this conference there was you know a few talks about it so far uh but we're going
00:01:19.600
to talk about specifically uh Ruby core and I want to talk about these four main things uh newcomers progress report some
00:01:27.400
things I've been working on uh working with the team and road map with some stuff we have going on I know kichi
00:01:34.159
covered a lot of the technical details I'm just going to cover some of the things that I think are important uh not
00:01:40.119
just specifically Ruby core but just things that affect everyone and uh we should be concerned
00:01:45.520
about and I'm Zach
00:01:54.079
uh I kind of need notes I guess
00:02:03.360
okay all right so yeah I don't want to focus on like the technical details this isn't going to be a very technical talk
00:02:09.759
so hopefully ease into your morning with some some information to help you uh we're going to we're not going to cover
00:02:15.800
how to run the test site in Ruby or like you know really contributing guidelines
00:02:21.239
or like uh you know uh how to how to report a bug I think uh Shabbat asan's
00:02:28.000
talk uh his lightning talk yesterday covered that pretty well and a lot of that information is already available on the internet uh and if you weren't a
00:02:35.400
around for shabat ass son's uh uh talk his slides are online on speaker.com
00:02:42.800
hsbt uh so check that out now I really want to focus on you
00:02:50.280
know what I've been learning from Ruby core and and and what we can learn from each other and work together to you know
00:02:57.599
to contribute
00:03:04.920
so our intended audience is definitely newcomers uh I think there's a lot of
00:03:10.159
people in here uh that probably haven't uh contributed to uh Ruby itself and I
00:03:16.480
want to change that um there'll be more later on this uh but let's let's briefly talk about
00:03:23.159
what I mean um you know maybe some of you you know I think Bren Brandon did
00:03:29.319
like a show show in hands how many people have contributed to open source and or have their own pet projects in open source and that's great um but
00:03:36.599
specifically I'm talking about someone that's like like I really want to focus on people who maybe have an idea
00:03:43.599
something they want to do with Ruby they want to work on but they're not really sure you know like how to do that like
00:03:50.159
how to how to collaborate with us and like I want to give you basically
00:03:56.879
the confidence to do that um and so that's what what we're going to basically that's that's our goal by the
00:04:02.000
end of this talk I want you to have the confidence to work with Ruby
00:04:08.319
so everyone has to start somewhere and uh you know some of the things that I've been working on uh specifically Ruby has
00:04:16.919
been uh working on finding new contributors uh onboarding people you
00:04:22.199
know adding adding new core committers um and helping them uh you know learn the ropes and like fix fix some patches
00:04:29.639
and stuff and Ruby uh was working on maintaining 187 and 192 with Terrence
00:04:35.280
from Heroku uh but that's that's going to come to an end actually we're going to make an announcement really soon and
00:04:41.240
hopefully like just kill that by the end of next month it was supposed to be this month but just been like busy with stuff
00:04:48.720
uh and definitely like one of the more important things which doesn't get a lot of um appreciation I think at least like
00:04:56.400
uh is security announcements like these are super important whether or not like there's vulnerability like uh teaching
00:05:03.199
people you know like what's what how their applications might be affected by Ruby and or the things that Ruby's built
00:05:10.240
upon um it's really important stuff and I want to I've been working on that as
00:05:16.160
well I I also joined uh the rails uh the rails team IR earn commit bit to rails
00:05:22.280
uh that was that was big important news for me uh been working on fixing a lot
00:05:27.440
of regressions helping get like 40 six out and 412 um and contributing
00:05:33.280
documentation mainly helping people who want to contribute and have patches like clean it up so it's acceptable and get
00:05:39.360
it merged in basically um and basically just anything rails uh so I want to I'm
00:05:45.680
actually one of three people that have uh commit to rails and Ruby and now Sinatra too which
00:05:52.280
is kind of crazy uh but I I do have plans like to
00:06:00.039
to work on these things like I have been working on this stuff uh me you know me and Constantine have uh delusions of
00:06:06.560
grandeur for what SRA 2 should look like and there's been some code written and we're definitely going to use
00:06:16.479
bacon like the three other people that were at the bar last night when we were having like this intense debate about
00:06:22.599
like our spec versus mini test might understand that one if they still
00:06:28.400
remember between that and like Keith's magic tricks but he's all out of flame
00:06:40.240
so H yeah so I've been I've been traveling a lot made it here I also went to South Africa gave a talk I went to
00:06:47.199
the Philippines basically just follow uh Winston around and like get him coffee and stuff it's really
00:06:54.720
great I love you Winston yeah thanks for having having me
00:06:59.800
man this is great so uh we want to talk about
00:07:04.960
different types of contributors I kind of brushed on like what what kind of uh you know what we're targeting and
00:07:10.720
newcomers we talked about the beginner and or ENT I guess entry level or
00:07:16.440
whatever you would call it um but there's also you know there's Engineers out out there there's engineers in this
00:07:22.560
audience definitely people who have like way more experience than even I do um as I saw like with the The Elixir ear Play
00:07:29.560
Talk yesterday I had no idea what the hell that guy was talking about but it sounded really
00:07:36.599
cool so how do we convince people like that to to like give up on Elixir and
00:07:42.120
come back to Ruby and actually use that amazing knowledge they
00:07:47.680
have because really like you can do that stuff with Ruby I mean you generally
00:07:53.560
don't but somebody out there uses flipflops so someone needs to maintain
00:08:01.800
that you but above all else you know everyone here is a contributor to Ruby
00:08:08.680
in one way or another and if you're not yet
00:08:14.720
convinced I have a plan right now to to turn you all into contributors in one way or another and I need two
00:08:21.440
things first I need everyone to stand
00:08:27.240
up and then I need Aaron where's
00:08:32.919
Aaron he's
00:08:40.279
pooping oh no bad
00:08:45.720
timing all right we have time I don't have a whole lot of slides just keep
00:08:53.680
standing I'm going to drink some coffee is he is he really pooping that
00:09:00.920
would be
00:09:07.320
ridiculous I think I saw him leave but I was like that wasn't him some other
00:09:15.920
guy yo maybe I should yell him I'm G to yell
00:09:28.120
him no internet yo needs
00:09:38.000
internet guess it's tender love everyone should yo Aaron right now if you have yo yo at
00:09:47.480
Tender Love there he is you know what today is Friday it's
00:09:54.560
freaking Friday let's do this who's got a camera there there's a
00:10:01.560
camera thank you we're not
00:10:10.440
done one more one more all right seems like everyone's
00:10:16.720
ready yeah so you're all a part of this community now and you're all contributors to Ruby because not only
00:10:22.360
did you do that but you're here you came to this conference you you know you company helped sponsor this thing that's
00:10:28.000
that's that's what that's how this stuff happens it's great we talked about different types of
00:10:34.800
contributors uh what about the actual people on the team want to introduce you to some of them so you have an idea of
00:10:41.120
what you're actually getting into right so I want to break it down into
00:10:48.760
basically three main categories there's companies uh either for profit or
00:10:57.680
not there's employees full-tim part- timr uh hobbyists even I guess you could
00:11:03.560
consider their weekend job uh Ruby and then there's
00:11:10.120
Matts he's in a league of his own that guy he doesn't even Shan had a slide is
00:11:16.120
like who who works on Ruby and it's like Matt's
00:11:23.440
no uh I still count him cuz he I mean he kind of kind of like answers Skype call
00:11:29.480
sometimes and stuff uh but if we break it down into these four groups uh like
00:11:35.560
the main companies that that we see on the team are uh you know GitHub cookpad
00:11:41.639
Heroku uh there's some people in red hat with kit and of course AT&T hires like
00:11:47.639
three full-time employees
00:11:56.480
and we have from the left Tender Love
00:12:02.839
uh K Maran and that's noou with a beer if you can he works at
00:12:09.120
Heroku nobody really knows that guy though uh yeah and then we have Matts
00:12:16.199
you know which without him Ruby wouldn't wouldn't be possible we wouldn't have any of this stuff really uh so that's
00:12:22.560
great um but you know there's a lot of people on the team um not not just those
00:12:27.800
guys not just those companies they definitely contribute a lot and what they do is is a great uh help to the to
00:12:33.560
the language in the community um but we have these people that you can rely on
00:12:39.800
and since Ruby has grown to uh this level of maturity as it is uh so so is
00:12:45.600
the code base and it's grown drastically and there's like a ton of libraries and ton of code in there that that we we
00:12:52.199
have to maintain and so basically we break it down uh certain people have have taken over gems in the standard
00:12:58.320
Library and they maintain them and those are the go-to people for like certain problems right and so it's important to
00:13:05.240
recognize who works on what and how to get a hold of them and that's really uh
00:13:10.480
you know depending on what you want to touch in in the language uh that's really the place to go um outside of
00:13:16.959
outside of Library land um like koese the knows a lot about garbage collection
00:13:22.519
so like if you have a question about performance stuff you you'd want to go to him or like uh you know you could go
00:13:29.040
to nari um but there's you know there there's lots of people on the team I think there's like almost 100 committers
00:13:35.120
at this point not all of them are active but they all have like their place in the team for
00:13:41.600
sure um and and what they really you know they really help us uh maintain the important parts and help others
00:13:48.320
understand why certain things exist you know when you take ownership of something you know you kind of have to
00:13:53.480
know why it's there and why it's important whether or not you know there's a better gem out there or whatever uh doesn't matter it's still in
00:14:00.519
the language and we still have to work on it and like make it
00:14:05.759
better for so for the last few years now uh we've been releasing pretty steadily like once a year and we've been doing
00:14:12.440
this like minor version bump thing on Christmas that's really great um it's
00:14:17.560
very semantic uh it's Christmas driven
00:14:24.680
development uh but our main focus is making Ruby better each year each version is better than the last right
00:14:32.000
and we want to encourage you to use those versions in your applications when testing Ruby when you know considering
00:14:39.720
uh things you should definitely uh be Forward Thinking and if possible definitely use trunk whenever whenever
00:14:47.199
you can even in production like it's my best advice for
00:14:55.839
you but uh you know this requires a lot of communication and given you know the
00:15:02.160
separation of of team members and location and region and stuff this is this is kind of an issue uh one way we
00:15:09.160
solve this is we have uh semi-regularly uh developer meetings so we schedule these um
00:15:17.240
whenever possible there is one uh coming up Shabad is on his computer outside to ask him uh there is there is one coming
00:15:24.720
up for like feature uh there's like a feature uh developer Mee where you you can submit any future requests you want
00:15:31.240
to make in I'm pretty sure this hasn't happened yet uh but uh so if you have
00:15:36.399
like a feature you want to submit to Ruby uh you know you can submit it and then you know put it in the agenda for
00:15:42.120
this meeting and we'll we'll discuss it and basically you know the It ultimately comes down to Matt's um if it's a hard
00:15:49.120
decision in any case so he gets to be like yes or no and it's a great way to get uh you know instant feedback uh
00:15:56.000
because we sit down whoever is available whoever ever we need in the in the meeting depending on what is going to be
00:16:01.759
discussed and basically go over uh this stuff and make decisions and uh you know try to scope
00:16:09.319
the next version of Ruby it's very uh you know we we use
00:16:15.240
these meetings to kind of track track our progress and plan and plan things ahead of time um we we also have uh Ruby
00:16:21.920
Ki which is like an annual uh uh conference in Japan um that it's very
00:16:28.880
very important for us to get everyone together and this year it's going to be September and you should definitely go
00:16:35.319
uh tickets aren't on sale yet I don't think um but as soon as I do you should grab one it sells out pretty fast um and
00:16:42.880
it's not as expensive as like
00:16:49.519
WWDC I don't even have a good joke for that I wish I did uh but the best part about it is we
00:16:57.480
do this thing called committers versus the world and what this is is like a live Q&A session where we take a stage
00:17:05.199
roughly this size and we sit everyone down in
00:17:11.319
chairs and then you guys ask me questions and they answer them it's like a great it's a great great deal but it's
00:17:19.839
it's it's another way to get instant feedback and you know pick our brains and figure out what you know what you're
00:17:25.880
interested in and ask us questions like when are we going to move to get or
00:17:31.360
whatever and Matts can like Dodge them it's pretty funny to
00:17:36.640
see uh and of course uh a lot of people are worried about this language barrier
00:17:42.799
thing and the good thing about the the like the Q&A session in ki is all the all the Japanese talks including that uh
00:17:49.559
have translators as of last year uh to English so even if you're not fluent in
00:17:54.880
Japanese uh you can still go and like uh you can ask question questions in English and it's fine like uh it's it's
00:18:01.840
a it's a great uh it's a great time uh but people people still worry about this outside of this context right
00:18:09.080
in the mailing list and stuff and so I want to kind of I want to kind of touch base on
00:18:14.240
this you know as as as you know uh we have we have a lot of Japanese uh people
00:18:20.360
on the team and not all of them uh speak great English and uh so you kind of you kind
00:18:27.799
of wonder like most of the internal discussions that they that take place between them are definitely in Japanese
00:18:34.039
like they don't revert to English just because they're talking about something important in Ruby they use their natural
00:18:39.080
language and that's fine like they should just be able to communicate however they want um but when it comes
00:18:44.679
to public facing stuff you know we're getting better at like you know translating this stuff having someone
00:18:50.679
take notes at the meetings so that we get an English version available on the for other committers that couldn't make
00:18:56.280
the meeting and get everyone synced on the same page page I think this is really important not everyone speaks uh
00:19:02.960
Japanese um and they they've been doing a great job at the at the translations and so that's really good
00:19:08.480
to see still I've been uh I've been doing my best to learn about the culture so
00:19:15.679
that I can help uh help with the team and and understand things better and I've been trying to improve my Japanese
00:19:22.480
skills it's really hard I've been studying for like a year now and I knew
00:19:28.679
to to copy that kanji down that one I didn't draw the first
00:19:35.600
time I tried to draw a go I was like this terrible this I can't write kanji yet uh but I
00:19:44.280
can definitely type it which is important uh so I do have a shortcut for
00:19:49.320
learning the language um
00:19:55.240
and as you'll see it's basically comes down down to the more beer I have the
00:20:00.320
more Japanese I know those are supposed to be beer bottles I
00:20:08.840
guess so funny story I was actually uh I was in Japan uh for oo Ki and Sasa Sasa
00:20:17.799
Dake koi's koi's wedding party and uh getting to the point where I can
00:20:23.880
like kind of figure stuff out right and I was like working in this Cafe with a few friends and I was just like drinking
00:20:31.159
coffee all day and uh you know I really had to go
00:20:36.200
to the bathroom and so like I went to the went went went to the bathroom and there was
00:20:42.159
like a sign on the door and it was like all in coni and I was like ah this must be important but the other bathroom uh
00:20:49.520
didn't have a sign so I was like what could this mean but the other bathroom was the
00:20:55.360
woman's bathroom and I wasn't conf confident like going in there I was like I don't know the culture if that's like
00:21:00.880
kosher or whatever so I went in there I did my business and uh I went to go
00:21:06.840
flush to the toilet and it didn't freaking flush so I just like walked out of there
00:21:12.919
ashamed and like never went back I was like no I can never go to that place again they're going to remember that guy
00:21:18.919
that didn't read the sign I don't know why that's relevant
00:21:27.039
but the trials and tribulations of me I
00:21:32.679
guess uh so moving right along I uh I want to help make uh you to avoid making
00:21:38.159
the same mistakes that I have definitely don't do that if you see a sign on the door like and you don't understand it especially like don't go in there just
00:21:44.799
don't go in there uh yeah so when we're working with
00:21:52.279
Ruby core uh I want to provide you some some great tips to to getting your point
00:21:57.360
across and and how to how to connect with us how to really get your point across and the first step is open a
00:22:04.000
ticket you would be surprised how many people forget this step and it's like well did
00:22:09.480
you do anything about it you're just like tweeting at me about this like I have no idea what you're talking about
00:22:15.480
right now and uh it's a super important step people always Overlook it but it's like the most important step make a
00:22:22.480
ticket and sign it and you know shabata had this had the notes yesterday how to how to report there stuff in the wiki
00:22:28.679
that will tell you that it's it's really simple it's just red mines not like rocket
00:22:34.360
science if you don't hear back from us from after a little while uh definitely uh ping us on the mailing list or if
00:22:40.720
it's not you know some cases like maybe you don't need a ticket like there was an instance recently where uh we needed
00:22:47.760
we really needed a release and so uh Aaron just like sent an email to the team was like hey what were you doing
00:22:54.640
about this like is anyone planning to do a release and then they're like oh yeah I totally forgot like op SSL has this
00:23:00.559
weird bug and like it's seg falting on Heroku every day like please just release it um affected a lot of people
00:23:08.120
so it was really like it's a really great step to just like send an email ping people ping the right people and
00:23:13.360
you know CC them or whatever and you can easily do this just by sending an email to Ruby cor rby.org uh and you don't
00:23:21.440
even need an account or anything I'm pretty sure it just goes right through uh yeah so
00:23:30.240
I kind of touched on this uh if if it's specific to like a feature or you know something important add an agenda item
00:23:37.360
to the meeting and you know tag the ticket that you set up or if you don't have a ticket like I've put questions in
00:23:43.600
there before like something something and you know I didn't attend the meeting
00:23:48.720
because it was like 2 am Pacific time so I missed it but I I got a nice little feedback in you know in the meeting
00:23:54.640
summary that was like oh yeah you know someone talked about this this is how you do it whatever and that was great
00:24:00.080
because I didn't have to like bother anyone with an email I just like put a oneline thing in there and they're like oh okay we can talk about that it's on
00:24:07.279
the agenda it'll just take up people's precious time and and last but certainly
00:24:12.720
not least uh nou he's like the key to everything and especially in Ruby like if you have a question just ask him he
00:24:19.000
probably knows it uh so yeah if all fails those are your
00:24:25.760
basically like four Pro tips to bottom line contributing to Ruby core
00:24:31.360
learn Japanese avoid doors with signs and ping
00:24:40.000
noou onward and forward I want to talk about the road map we're almost through this thing I'm doing great on
00:24:47.120
time uh so I talked a little bit about the wiki I've been kind of cleaning this thing up uh there's certain stuff that
00:24:53.039
like doesn't quite belong or it's like misguided it's hard to find it's buried whatever it's like no one really wants
00:24:58.600
to work on this thing it sucks it's like you know it's a Wiki like who wants to deal with that but it's actually super
00:25:04.039
important and anyone that goes to the issue tracker should be able to find like exactly what they need and all like
00:25:10.760
in relatively quick succession um for the things they want and the things they want to
00:25:17.440
do I'm going to keep working on bringing you know more people onto the team doing things like you know this talk for
00:25:24.279
example and getting people uh to understand how how work as a team and so
00:25:29.960
that they can better contribute and help us out uh that kind of covers that and
00:25:37.000
eventually I want to retire someday so that's why we need everyone
00:25:43.360
here to start contributing so you know my job's a little easier I can work on other stuff such as
00:25:50.720
arock you probably don't uh even realize you have it on your system but it's super important and if you install gem
00:25:58.600
uh you probably like opt out of the documentation but you shouldn't you should install it I'm telling you right
00:26:03.880
now I know it sucks and really slow but I want to make that I want to improve that um definitely starting with with
00:26:11.120
rails now that I have Commit I am like fully focused on making the API docs
00:26:16.200
better and easier to find what you need and differentiating between public and private API because rails has some funky
00:26:22.640
stuff that they do with private methods and public methods are actually private and blah blah blah
00:26:28.240
um so working on that the speed thing uh it's really bad like installing rails
00:26:34.320
takes like 30 seconds to install the documentation that's ridiculous it shouldn't take that long it should be
00:26:39.640
like you know instant um it's just some files like how long does it take to
00:26:44.919
download like five five megabytes or whatever uh maybe it does take 30
00:26:51.159
seconds I don't know no there's definitely some improvements we can make there uh and
00:26:56.679
the internationalization thing is really important so one of the other committers recently added uh support for this in
00:27:02.720
the source so you could have inline translation not inline translations but you could have translations in a similar
00:27:08.480
way that you would have translations in a rails app like you would just have a folder with you know your translations
00:27:14.840
and you would tag a method or something so Ardo Ardo uh finds out you know about
00:27:20.880
this method and picks up the translation the language you want to you want to use um and we're trying to get that out in
00:27:26.640
like next major version of our dock uh but it's definitely it's it's definitely like almost ready um and then as we
00:27:34.120
eventually have to start running docs that's the hard part uh we do have
00:27:39.159
Japanese and English docs um and we are working on improving that
00:27:44.960
s that situation uh which is great uh shabata has put a lot of work into this
00:27:50.000
um the Japanese site recently got a facelift and looks something like this
00:27:57.640
which is much better than if you look at the uh English ardoc generated output um
00:28:03.440
which I've been working with someone to try and get them to redesign the pages because it's like horrible looking and
00:28:09.559
like really hard to find stuff uh someone did recently go through and make all of the pages really accessible for
00:28:16.279
uh like for blind people so that they can uh reason about the documentation
00:28:21.760
and find methods and do searches and stuff and it'll like you know it'll read it out to them or do all that awesome
00:28:27.880
stuff for people that you know want to want to learn about ruby and can't can't
00:28:32.960
get there um I kind of been playing around with this idea uh having a contributor
00:28:39.120
site similar to rails um so sometimes in like some my slides I have like uh and I
00:28:46.120
think kichi has a a slide where he does uh like noou patch commit like count and
00:28:52.399
so I wrote some like script stuff like using the git Jem I I think so that I
00:28:58.640
could uh like find out you know who had the most commits last week or stuff like
00:29:03.799
that and I want to like we basically could build a similar site to this um which would be great to see noou at the
00:29:09.240
top of that thing and you know like five other people but you know we're going to get
00:29:16.919
there and like this is the things that I think are important there's definitely other stuff that people are working on that are super important you know
00:29:23.279
performance improvements etc etc and you know let's let's work on it together and
00:29:29.679
let's let's work together to make Ruby awesome and I'm Zach and thank you so
00:29:40.279
much any questions for Zach Zach um you mentioned about people not installing
00:29:47.120
adock and the that you don't want them to how do people actually make use of
00:29:52.679
our do on their local death machines there's two ways you can run a local
00:29:57.960
Ardo server which will load the documentation dynamically and serve up
00:30:03.159
the pages for you just load up the it in your browser I think it'll even open your browser for you or something uh but
00:30:09.200
there's also RI which is command line um which is great uh so if you're you can
00:30:15.480
also use it like if you're in IRB already uh so you just type like help and then like the constant name and like
00:30:21.279
the method or whatever like an instant method and that that'll like load up the documentation basically in like a less
00:30:26.919
and like you like peruse around and stuff it's really great like I use it all the
00:30:32.880
time thanks so I think the primary reason people don't use ourg is that when
00:30:38.799
you're installing gems takes forever it takes forever so it takes forever to
00:30:45.799
build rubies with documentation as well is there another tool yeah that uh will
00:30:52.399
install the r dock after the fact after you the like like asynchronously so you
00:30:59.880
bundle no documentation and then it installs the documentation later well
00:31:05.039
it's not async because we don't have the node technology yet but we're going to get
00:31:10.960
there uh I don't remember the question that was a stupid joke uh damn
00:31:19.120
it uh no so there is a gem called arock data and sorry Aon you're gonna have to
00:31:26.159
wait uh no arock data is like after theact thing that uh compiles the
00:31:31.919
documentation for every version of Ruby and all the core docs and uh we use that for like Windows installer because it
00:31:38.559
can't ship the ardoc and it's it just makes the binary so much bigger um so we can install it after the fact it's
00:31:45.480
really nice but it also requires like maintenance like you have to build the compile the documentation for each
00:31:51.880
version and release it and stuff yeah anybody
00:31:58.600
else Aaron what were you gonna say ah thank you did I get it right
00:32:06.559
great success well uh if not thanks Zach thank
00:32:26.080
you
00:32:39.480
d