Rails Core AMA - Rails World 2023

Ten of the current 12 Rails Core members sat down to answer questions submitted by the Rails World audience in Amsterdam, such as: How do they decide on which features to add? How should Rails evolve in the future? What does it take to join the Core team?

Rails Core members present were: Aaron Patterson, Carlos Antonio Da Silva, David Heinemeier Hansson, Eileen Uchitelle, Jean Boussier, Jeremy Daer, John Hawthorne, Matthew Draper, Rafael Franças, and Xavier Noria.

Hosted by @Planetargon founder and CEO @RobbyRussell.


#RubyonRails #Rails #RailsCore #AMA #RailsWorld #opensource

Rails World 2023

00:00:04.330 [Music]
00:00:17.560 good morning everybody so let's see I had we posted the last couple weeks we had questions from the community we
00:00:24.640 reached out and you submitted about 40 questions which we've got an hour so I don't think we're going to get through
00:00:30.519 40 questions but we'll do as much best as we can here so thank you everybody
00:00:35.719 for being here right and early hope you had a good time yesterday with your first day so so how it's going to work
00:00:42.719 I've kind of curated the questions and talked about different topics and themes that you were interested in um some of
00:00:48.199 them I've had to kind of combine questions a little bit so if your name is not referenced I apologize but just
00:00:53.359 trying to make sense of 40 questions for everybody so let's if everybody's ready let's get into it Jah Manuel from Lisbon asks what's
00:01:02.680 your favorite [Laughter] color blue I guess I don't know
00:01:11.280 Carlos uh also blue that's great David you disagree yeah I gotta be on team
00:01:17.240 blue all right um this is this is going well um all right so let's see uh Dr uh
00:01:24.240 which part of the ra manual actually asks which part of the rail is code based do you think is a must read for
00:01:31.360 every rails developer I don't think there's any part
00:01:36.439 like the the part you absolutely must read is whenever you say oh this is like
00:01:42.720 this seems like magic and you absolutely need then to open it and to go look at
00:01:48.200 it and realize this is not magic I didn't go to a guart did anyone no uh
00:01:54.600 this is very much you can understand it just go read that one um BAS
00:02:00.640 nothing Carlos do you have a anything more specific to
00:02:06.079 say yeah I think uh the part that people usually use are going to use in all of
00:02:11.720 their applications is the integration between controllers and Views in general so getting to know that a little bit
00:02:17.319 better is is I think a good place to start what about you Aaron uh I think
00:02:24.519 the the number one thing you should read is the implementation of 42 question mark what is that R 42
00:02:32.440 yeah which library is that in uh that would be an active support active support yeah Matthew similar question
00:02:40.920 came through from Anonymous I don't it's mysterious so this is a really tough question for you is there a lesser known
00:02:47.440 rails feature that you wish more developers were aware
00:02:53.080 of I don't think there's anything specific but we're taking a 5 minute break but what
00:03:02.000 sorry mate I I don't think there's anything specific that lots of people should know about but don't I I think
00:03:08.360 that it's valuable that there are a lot of features that you only need to find when you need
00:03:17.720 it and I think that that works well I I hope that we hide away that complexity
00:03:24.720 so that something like composite primary keys that is being better supported now
00:03:31.360 in 71 hopefully you'll only come across it
00:03:36.599 if you actually go looking for it because most of the time you shouldn't be reaching for that as you
00:03:41.920 default but we'll handle it when you need it and for those out here is there
00:03:48.200 anyone that doesn't know what composite keys are it's okay everybody knows great
00:03:55.079 um that's great um also there there was a a question that came in kind of yesterday related why why I still have
00:04:02.480 you Matthew um you know there's a lot of there's a lot of references to MyQ and I
00:04:08.120 know from running the ruon ra survey every couple years postgress is far more popular and more preferred despite some
00:04:15.040 of the legendary luminary six you know 66 billion doll companies using MySQL um
00:04:21.560 so some people were curious about like well it seems like everybody's like the core teams companies tend to gravitate
00:04:28.360 towards MySQL is there something wrong with postgress or is my school better what's your kind of take on that Matthew
00:04:35.199 yeah I think it it is true that most of us work on my SE
00:04:41.400 applications personally if I was starting an application today I would choose postgress and so postgress is
00:04:47.720 always going to have first class support in active record I think that there's
00:04:53.479 some time-based history to the fact that several of the largest and oldest rails
00:04:59.720 applications started on my SQL and are now there without much
00:05:06.160 opportunity to change that choice there are also benefits where my
00:05:12.680 SQL has a longer history of effective replication which matters at certain
00:05:19.360 huge scales but yeah postgress is a
00:05:24.479 fully supported Dash base and I encourage everyone to use it but as we're hearing it sounds like
00:05:30.800 SQL light is the future so um let's see all right um all right
00:05:39.199 quick quick thing I want to actually a little activity for you all um yesterday David and Eileen both mentioned that
00:05:45.600 there's been what nearly 7,000 contributors to the rails Corp project
00:05:50.720 um so outside of just these 10 people and all the you know there's two other core team members that weren't able to
00:05:55.919 make it here but if you've have code contributed and that's been merged could you quickly
00:06:01.960 stand up real quick so we can see
00:06:09.960 you now St stay standed Stay Stay stand up for a second if you've uh ever
00:06:16.840 contributed a comment or helped review a poll request we stay keep Stay Stay um
00:06:22.960 if you've par submitted a bug request you know participated in GitHub issues on the rails project tested something
00:06:29.960 you know could you also quickly stand up like part of the community so they rely
00:06:35.160 on that you know so it's like look around these people are part of the
00:06:40.400 community as well so I just want to take a moment you can sit down now but thank you and if you couldn't stand um you can
00:06:48.199 wave your hand and stuff um so the question for you Eileen as just sip some water Joshua from Brisbane Brisbane
00:06:56.000 Brisbane asks what's the criteria for joining the rails core team committers or issues team is and do you have any
00:07:02.199 hot tips on which I think the question is how do I join the cool kids [Laughter]
00:07:08.160 club for the issues team am I miked yeah well I mean I am miked but I couldn't
00:07:13.440 tell if you could hear me um for the we actually recently like
00:07:18.919 last year added another team for we call it triage and part of that is because
00:07:25.840 issues has merge rights and we wanted a way to let people get involved earlier but before they had built up like the
00:07:32.680 trust to not merge the wrong PRS um so you start out on the triage team and
00:07:38.400 usually it's just if we see you around commenting on issues running the bug
00:07:44.240 report the bug reports that people leave um reviewing poll requests once you get
00:07:51.120 triage then you can actually add labels and close issues which is nice because it's you know that helps us out a lot
00:07:57.199 too because we don't have to do it after you've already given them
00:08:03.199 the answer uh and then issues team is allowed to merge documentation changes but not code changes and but GitHub has
00:08:10.440 no way to differentiate between that so that's why it's like a high trust sort of transition from triage to issues um
00:08:18.479 and that is like you've been doing a good job on triage now you move to issues once we see you doing a good job
00:08:24.080 on issues you move to committers uh committers you can merge pretty much anything but if it's a big feature we
00:08:31.199 don't want you to merge without talking to core first um and core gets final say
00:08:37.200 uh so once you do a lot of work on committers usually you've built a couple
00:08:42.320 features uh you're really present and active you're nice to the new other new
00:08:48.200 contributors um so like it also is how are you interacting with the community on GitHub and uh core is usually for
00:08:58.440 like each of them for triage and issues we don't really need a consensus we just add people to those committers we have a
00:09:04.680 discussion about whether we think that person is there but it's not really a consensus thing core is a little bit more of consensus where someone might
00:09:12.279 say oh hey I think this person's ready for core and then someone else might say oh yeah I think they're doing good work
00:09:18.079 but I'd like to see this from them or I'd like to see them build this feature or if they build a feature I'd like to
00:09:23.160 see them keep up with the bug reports rather than us having to you know remind them that they're there um it's not
00:09:30.640 it's not like a strict process
00:09:36.360 um and it kind of has changed over time a little bit where I don't know if anyone has anything more to add I do a
00:09:43.000 good job yeah so who's here is gonna try to
00:09:49.600 join the cool kids club at some point all right anyways
00:09:55.240 um this is about as close as I think I'm ever going to get but um you know one of the things I you know
00:10:01.279 curious I've always found it to be a little intimidating to try to get the rails development environment setup just
00:10:07.959 to even run the test suite and everything like that do you feel like there's things that the community and you could do for me to make that easier
00:10:15.560 specifically does anybody want to pair in my laptop later and we'll get this going yeah all right great uh David how
00:10:22.800 does rails core decide which features to abstract from the framework how do you balance proven features from your own
00:10:29.200 app say 37 signals against contributions from other
00:10:34.320 teams and different domains that's a good question uh for me
00:10:39.560 the most important thing for putting stuff into rails is that it has to represent a core element of the problems
00:10:46.920 we're dealing with in web development it has to be General enough that it's not something that's particular to a
00:10:53.360 specific app it has to be something that you have the vision that if you were
00:10:59.040 starting a new app you would also want to use that um a lot of the approach that I've driven my own contributions
00:11:06.440 and the contributions of 37 signals to rails with over the years have been actually whenever we start a new
00:11:11.760 application we have a golden rule that you are not allowed to copy any code from an old application without passing
00:11:19.200 it into open source and sometimes that means contribution straight to rail sometimes it meets a new gem sometimes
00:11:25.600 it meets something else but having that firewall that when we started working on Hay we were not allowed to just copy
00:11:33.000 things over from base camp that led to the creation of active storage which was
00:11:38.480 an unextracted feature that lived inside of base camp for many years and we needed the same kind of code in Hay it
00:11:45.160 wasn't going to make it straight in it meant the extraction of of action text um active job came out of that
00:11:52.720 transition to so there's three major Frameworks that came out of that uh large transition and that's one of the
00:11:58.200 reasons for me to really enjoy working on new Green Field applications because it's an opportunity to do that and I
00:12:04.040 think the same has been true for the other major contributions that's been happening from other companies uh GitHub
00:12:10.440 had a wonderful implementation for dealing with multiple databases and Eileen and team there
00:12:18.360 really worked to extract that put that in such that they could use it for new stuff and we can all use it for new
00:12:23.399 stuff in terms of uh contributions from the community I think uh one that stands
00:12:28.600 out to me was the internationalization feature which was added relatively early on but was a
00:12:34.920 feature that did not originate from any of the core uh applications actually we
00:12:41.560 had talked about it for several years and then someone stepped up did exceptional work provided a gem that was
00:12:47.680 excellent and that just seemed like an obvious choice this is what we should have in the framework so proving things
00:12:53.360 out in a gym if you're not already part of the rail core team or contributor team is the best way to go about it
00:12:59.839 making a wonderful gem um and then getting that on the radar of someone on core I think a lot of you know some of
00:13:06.600 the people that had questions that came in were kind related to this where you know a little bit of a interesting
00:13:12.440 Dynamic of like well it sounds nice so 37 signals can just build a new app you know every few years and the Green Field
00:13:18.000 thing and a lot of people are like my app was started 14 years ago and trying to keep up and like how is it there like
00:13:24.680 how do you balance that trying to make sure that it's I guess forward it's compati ability and you kind of stop
00:13:30.399 providing security updates at something for people and things like that which I understand why they do that it's it's just kind of like an interesting balance
00:13:36.360 to try to probably blend there but does anyone else on the team kind of John um
00:13:42.079 at GitHub we're actually upgrading uh rails almost every week we're running on Rails Main and I think Shopify is doing
00:13:48.360 something similar and part of our hope in doing this is that we'll have uh like
00:13:54.480 we're we don't expect most companies to be able to do that but because we're doing that all the time we're hopeful
00:14:00.199 we'll catch any regressions um and like immediately and uh make sure things stay
00:14:06.320 forward and backwards compatible so uh hopefully that has been your experience that uh modern upgrades have been a lot
00:14:13.240 easier they have been but yeah it's still challenging for for companies I know that um Raphael Thomas from Japan
00:14:21.399 asks what criteria makes a feature worthy of joining the rail core team or the rails core project what kind of
00:14:27.839 problems should it aim to solve uh I I think it's what David said
00:14:33.680 like I think it needs to be generic enough to be solving problems for like web developers I think like to me
00:14:42.000 specifically I probably the one of like interact with the community more in the
00:14:48.360 issue tracker and when I review a feature I looking for like how
00:14:54.040 generically it is how useful is going to be to every single applications like you might want to add a uh a feature that is
00:15:02.560 specific for user case but it's not every single application that would need it for me I actually dislike most of the
00:15:10.720 active support uh extensions and those are the very the easiest ones to not be
00:15:17.079 generic enough like oh I want to add something to prize uh the bull false and
00:15:23.519 true like oh yeah that's not specific oh that's L enough it's very specific to your need um I think uh another kind of
00:15:33.319 feature that I really like is like when it introduce a step stone for your
00:15:38.759 application so rails like David says like in the website we say that is good
00:15:45.160 for you to come for start your application to IPO there are a lot of Step ston that you actually need to do
00:15:52.480 to get there it's not just like put rails and you can IPO a company it's not
00:15:57.920 like that like you actually need sometimes to implement features that uh
00:16:03.399 are increasing the resilience of your application or how much like uh request
00:16:09.279 per second you can get so I particularly enjoy those because those are the kind
00:16:14.680 of problems we actually solve at shopy like extractive things that the feature
00:16:20.040 is there but it's better and only when you actually need it that you you can
00:16:25.959 introduce like it's not something you should start to use it or like like mat
00:16:31.160 said like oppos Prim is one of those you should not you sh for like you create a table you add the compos primary key but
00:16:38.360 when you get to the point where it makes sense you should be able to easily uh just change a few lines you get the
00:16:45.040 thing so to me those are the features that I'm most excited about like features that increase the scalability
00:16:51.880 of rails nice the um Jeremy Benjamin from
00:16:57.160 Del asked are there plans to support key rotation for deterministic keys in
00:17:02.360 active record encryption uh yes cool could could you actually explain
00:17:09.360 what that what that means for for me uh when you when you have a bunch of data encrypted with one key and you need to
00:17:14.720 rotate to a new key um well how do you read data that was encrypted with the old one while encrypting new data with
00:17:20.959 the new key in fact this is already supported uh if you look at the old dir tournament s Keys option and there's
00:17:27.199 also a method called reinc that will decrypt with the existing key and then reencrypt with the new key
00:17:34.919 there was a good talk on that yesterday um on encryption Jeremy why still have
00:17:40.039 you Aaron P from Seattle
00:17:45.799 asks might you ever make AAL table public no
00:17:52.559 cool and there's some background to that there's been requests to make uh to expose uh arrol which is the
00:18:00.760 underlying library for doing low-level relation management so if you want to
00:18:06.440 get um uh kind of below active record you want to do something complex there's
00:18:13.280 the tendency to feel like you need to go deeper when in fact AC active record can typically do what you need and so the
00:18:20.360 hazard in exposing something lower level and getting this kind of weird leaky abstraction is that everybody will then
00:18:26.799 feel like they need to reach for that to do something that uh that you can already do out of the
00:18:32.120 box nice Aaron where where do you live um Seattle
00:18:41.240 oh um what is what would what would you say you do
00:18:49.120 here I didn't know I didn't know it was it was time to do our our reviews so I just I got some feedback
00:18:56.919 from the team I know you had a you had a retreat the other day and that was like the first time you've been all able to
00:19:02.480 meet together in a while um maybe this maybe one of the largest Gatherings you've had as well um what were some of
00:19:08.919 the the big decisions you made behind closed doors that we're all so curious about oh my
00:19:15.679 goodness I feel very on the spot here what do I do here I do some stuff is
00:19:21.080 that wait what what is the question yeah it's like a little bit of um I'm not good at questions this is why I asked their questions and I try to inject my
00:19:27.280 own questions and I apologize um I'm learning on the job
00:19:32.640 here oh thank you I'm failing
00:19:38.360 upwards what what do you do so do you are you typically working on small little things bug fixes type things like
00:19:46.400 yeah usually usually bug fixes I think a lot of my recently A lot of my involvement has been around like
00:19:51.799 security stuff which is extremely not fun cool uh I'm going to get to security
00:19:58.039 and a little bit um see I'm curious a little uh Brandon from
00:20:04.159 Brazil asks what's rails core rails core vision for the future of rails so for
00:20:09.919 example say take something like active storage which was born as a file serving uh engine how open are you to PO request
00:20:16.760 for extending existing functionalities and how to handle image optimization maybe
00:20:23.720 Raphael y multiple databases doesn't work with it right now so if someone wants to fix
00:20:30.120 that I would love a PR that's great but yeah and I think is you know the the you
00:20:35.840 know one of the things that's kind of like I don't know that's super obvious it's like when you release something as
00:20:41.200 a new feature like solid cash or something like this is what it's maybe that's a bad example
00:20:46.960 because it's kind of you kind of probably wrap your head around what it should and shouldn't do but for something like active storage and you're
00:20:52.360 like this is what it can do initially and people are like well I want to add stuff to it I guess there's that question of like well should I go
00:20:58.520 through the process and create a poll request for some like image optimization things or add color tints filters or
00:21:06.080 something to if you want to have your images have some interesting coloring tinting is that is that in or outside of
00:21:11.679 the scope of that particular thing because I don't know that like the the release and the read me really kind of touches on like where's the boundary
00:21:19.000 there yeah I think the most important thing is don't do speculative things do
00:21:25.240 the thing you want for your own application that you would have done anyway if you need image uh manipulation
00:21:32.159 and you think it fits well with active storage try it out in your application uh I try out ideas all the time in our
00:21:37.840 applications that I think oh there might be a ver feature for rails and quite often I learn it is not it's not generic
00:21:44.640 enough it's not General enough the implementation is simply not nice enough there's a high maintenance burden and
00:21:50.039 then it doesn't go any further than that but if you find something that you actually use in your own application and
00:21:55.200 you go this is better this is nice this is is good I would love to share it
00:22:00.400 that's the time where you go do you know what here's a gift I might be able to present now core or the rest of the community or
00:22:08.159 me or anyone else might not agree with that in all cases but at least you've validated it for yourself which is
00:22:13.480 always step one don't think like oh I wonder if this might speculatively be a good idea no no try it out first that is
00:22:20.520 the Hallmark of rails it is a collection of extractions of real solutions to
00:22:26.480 actual problems not imaginary ones ones that you have tried out and found better than what was already
00:22:33.840 there I think that's a really great way to kind of touch on
00:22:40.760 that rapael could you speak to this a little bit about you
00:22:46.159 know I'm trying to think about how to rephrase this person's question here
00:22:52.320 but do you do you how does a team when those things are get submitted how do you kind of talk about about that
00:22:58.480 amongst yourselves and like like Hey how do you evaluate oh this someone had an idea and they've submitted it and you're
00:23:04.120 like is this useful for other people or for the wider Community yes sure uh I
00:23:09.159 think we just had our first panel discussion about P request ever like we
00:23:14.960 usually don't like try to discuss about exal contributions at
00:23:20.320 least among a team like we don't try to find the consensus usually someone kind of speed head something like Matthew
00:23:26.799 cares about push even though he doesn't use so he is speads like oh is a
00:23:32.440 contribution to add new feat for p I'm going to take decision what happens like I don't know if it's the best way to run
00:23:39.080 open source but working well for us but what happens usually is like we merge some PRS like me take own decisions and
00:23:46.520 other person in the par see that they reverse and say no that's not good and then we sh conversation after that but I
00:23:53.159 find a very streamline way to unblock ourselves because we going to wait every
00:23:59.919 single one of us have opinions we would never merge anything so I I think it's
00:24:06.039 very fast because we can take decisions individually and I think we are very much aligning on most of the things we
00:24:12.720 disagree with a few but most of the things we align that's why we are so actually I believe that's one of the
00:24:18.919 criterian to being call is not to think as everybody in this stage thinks but
00:24:25.559 more like we need to be aligning the Val and that's why the doctrine is is written in the website I think is
00:24:32.320 actually a definition of all values as a team and also the vision David had for
00:24:38.240 the framework so I believe that's how we decide but
00:24:44.919 though we have a huge backlog of opprs that we need to go through and those are
00:24:50.840 usually the pr that fall into the cracks when like I see a thing and say I think
00:24:56.159 it makes sense but not sure I'm going to let another person take the decision and then the other person that
00:25:02.840 came say thep St is open but now we are trying to actually meet and discuss what
00:25:08.720 we want to do with those P that fall into the cck so we can streamline those contributions anything to add to that
00:25:15.279 Shier all right yeah so something that I I love about this team is that uh we
00:25:21.159 trust each other a lot and there's a lot of autonomy all right so by default we trust each other so you can push to main
00:25:28.520 if you want you can decide on your own if if this particular PR gets in or not
00:25:34.960 and you can work on your own staff quite autonomously and that's wonderful it's very very streamlined way of of working
00:25:42.039 as a team you know and then when you feel that you need consensus for something you you need the opinion of
00:25:48.720 other people uh about some PR or about change that you that you um want to do
00:25:55.640 um and that's by your own creativity like I feel uh we we need an opinion of
00:26:01.039 other people you know in the team for doing that then you do that but otherwise it's autonomy great Jah Joshua from zir asks
00:26:10.279 with rails now being approximately 300,000 lines of code is that that's
00:26:15.320 what someone I didn't verify that maybe is that accurate I have no idea okay um
00:26:20.960 Fair uh with that many lines of code what's the core team's Benchmark for really getting the framework who Who on
00:26:27.799 the team really feels like they understand like so I think everyone on the team is
00:26:34.520 capable of understanding all the framework it doesn't mean they have it loaded in their head right now but if
00:26:40.600 there's an issue open and you go read the code and like there's as I said there's no magic there's a few quite
00:26:47.279 touchy parts that's for sure uh sometime you might like go ping the original AO and say like oh what did you do it that
00:26:53.399 way um but overall most like BAS few exceptions but like all the core team
00:27:00.080 and most committers because we talk a lot about the core team but committers do almost exactly the same job uh as us
00:27:09.039 um is are capable of understanding almost everything there's a few tou part in active record but rather tricky but
00:27:17.159 otherwise it's it's very streaming like who amongst the like is
00:27:22.799 like in the last month is like just focused on like bug fixes versus like new feature
00:27:30.840 thing we all do yeah oh good yeah I would say probably me because I was
00:27:36.720 releasing a version of raos so I had to actually focus on every single bug read
00:27:43.000 off then like I've been doing this so since 2010 I read every single me of rail trying to see if something's wrong
00:27:51.080 or not and I usually am the first line
00:27:56.279 of inter Direction in the isue tracker like Johan is also doing a lot like he
00:28:01.600 works in Europe I work in North America so we kind of have almost 24 hours of
00:28:06.840 coverage between like people isue and like WIP but for me particularly in the last
00:28:14.559 four months was just like trying to fix bugs because I want to release R
00:28:20.279 71 and that was my main focus so I so have you with you know that you we
00:28:26.519 released you know you You released 71 yesterday um official you know new
00:28:31.799 version of that um how much pressure does David put on you to' be like we got to get this done by rails world this is
00:28:38.880 going to ship and like get it get it done it's going to happen like WEA and
00:28:44.360 like is it like is like what we hear for everybody getting ready for like at Apple for an iPhone release I think I
00:28:50.840 put more pressure on myself the so I was actually feeling a huge failure because
00:28:57.000 I want to release on May or March I don't remember which month but something I don't even know what month it is now
00:29:03.039 so yes so I I spoke with Chris Oliver during ril go that I was going to do a
00:29:09.600 release after ril go and I actually fail for six months and I was really mad on myself
00:29:17.399 but uh I think we are trying to get better or putting pressure to ourselves
00:29:24.919 so one of the things that we are planning to do or think about doing is have a release Cadence that's like I
00:29:31.480 don't know something like one year and they find the date H just after the
00:29:36.880 release so like we doing conference we know when the next one is going to be we release that one yesterday and we know
00:29:44.320 when the next one is going to be so we play ahead and we can actually try to
00:29:49.360 feel better so the reason why I it took so long for me to release it's like I never felt it was ready I want the big
00:29:57.039 thing that's other things that are coming in the next version but we only were able to build the Stepping Stones
00:30:04.039 like things that are going to allow us to build the big big things but we did
00:30:09.360 not were able to do the big things and I decided maybe with a little pressure
00:30:15.880 from David like we need to get this out and said okay I'm okay with the big little things I don't need the big ones
00:30:22.880 and we release only with what we had like it's it's a huge is don't get me
00:30:28.399 wrong but it's not what I want to be there is like uh Improvement but not the
00:30:36.559 big Improvement we want how do you make the distinction
00:30:42.279 between you know you probably have talked about this in the past but the difference between 71 70 to 71 versus is the next
00:30:51.440 one8 or is it like 72 like how do you kind of make that decision or is it kind of like arbitrary based off what
00:30:57.240 whatever Aaron thinks it's pretty much what David decid so I will let him answer the question
00:31:05.039 all right um Aaron yes so back to your review um
00:31:12.399 Stephen from Berlin asks what's your personal pick for the most crucial evolution of rails that rails should
00:31:18.159 make in the next five years no
00:31:23.919 pressure that's what year would that be like 20
00:31:28.960 28 can we get an easier question yeah where do I see myself in
00:31:35.799 five years exactly it's you know what it is yeah AI yeah
00:31:41.799 right so sprinkle some AI on there actually um
00:31:47.760 one thing I'd really like to see and I I'm going to talk about it in my in my uh keynote is
00:31:54.559 um we I would really like to see uh more integration with language
00:31:59.600 servers basically anything we can do to improve like uh quality of life for
00:32:04.840 developers because I think I think uh Ruby and rails are all about uh enabling us to get our jobs done quickly and
00:32:11.159 anything I can anything we can do to make you know developers faster is what
00:32:17.000 I would like to see David a question came in about your
00:32:22.600 usage of Renaissance in your keynote and I don't remember spefic specifically who
00:32:27.679 mentioned this was an inperson question uh they wanted me to ask you is that because you didn't want to cut your
00:32:37.480 hair that Reddit is connected to my Renaissance you said renaissance
00:32:42.559 renaissance framework and my hair what the um actually someone pointed out that
00:32:48.679 that um Leonard Da Vinci drawing had a some resemblance so maybe that was unconsciously there when I was picking
00:32:55.320 the theme for the Renaissance Developers that is entirely possible but there's also a just much more banale explanation
00:33:01.559 which was I didn't cut my hair during the pandemic and then I just stopped bothering same um let's see uh
00:33:11.600 Matthew is that question for you again uh Alan from Norwich asks do you got any
00:33:17.840 ideas for making rails more appealing to new or Junior developers who might be leaning or being curious or being told
00:33:24.159 by someone that they should probably go towards using JavaScript as a first
00:33:30.080 language yeah that's a very good
00:33:36.000 question I'm not really sure anything to add eile uh what was
00:33:42.519 the question um yeah I think just the the general you know the sentiment that
00:33:48.480 people coming into the industry and they're kind of evaluating their options what do you think that rails could be doing to be more alluring to you know
00:33:56.240 new developers of the industry Junior developers or people changing
00:34:02.600 careers um I think we could redo our docs um the guides
00:34:09.639 especially like sometimes I'll be like reading them and one time we had a security doc that I was like when was
00:34:15.240 this written none of this makes any sense uh so I rewrote that but
00:34:21.200 um that's not the right like we shouldn't be like stumbling upon stuff that we realize is wrong like be great
00:34:27.960 if if we can get people who aren't us because we've been doing it so long we don't know how to
00:34:33.440 start but if you've been doing rails for two years you probably remember what it was like to start and you can help the
00:34:40.079 foundation and core like redo that like what's what doesn't make
00:34:45.800 sense what's hard to understand sorry all I'm losing my voice um what's hard
00:34:51.760 to understand uh like I think that videos are great
00:34:57.079 too like I learned on um so much about reals on right cast Real's cast thank
00:35:04.119 you um I actually like one time had a goal here for for
00:35:11.040 Ryan so all the great work that Chris Oliver is doing but like we can also do more of that like people really love
00:35:16.720 watching like short videos of like how do you how does this work in rails or how do I do this um so if you even if
00:35:23.599 you are if you're have been doing this for a couple years I feel like like back when I started everybody was always
00:35:29.720 sharing what they were doing um and like I just don't feel like we have as much blog posts or like just curiosity and
00:35:36.720 sharing that and maybe that's cuz everyone on the Internet is a can I curse on stage yeah Shad can I
00:35:44.240 add something so I I think one of the things we should be doing to actually
00:35:51.920 get new people to the community we are doing here right now like getting having
00:35:58.240 all this energy like people like talking about Rail and being happy about sharing
00:36:04.640 things about Ruben rails actually I believe it's going to help a lot of new
00:36:10.079 people like nobody choose technology only because of the tool but also
00:36:15.640 because of the community so remember that like we everyone here is a community and everyone here can do
00:36:22.720 something to uh bring new developers to the community sharing the passion like we had G like
00:36:31.079 for me G is doing a great job of this like sharing his passion for Ruben rail in every single place I see and I think
00:36:38.480 this conf is been great for this great thank you all for that
00:36:48.040 um you know what I you know thinking about you know when I talk with Junior
00:36:54.920 developers you know there is a concern erned that like rails is dying this is
00:37:00.800 Doom how many people here this is like their first like Ruby rails related conference Tech conference raise your
00:37:07.280 hand real quick oh wow
00:37:14.820 [Applause] welcome how many people have been using rails for less than a
00:37:21.240 year oh some new people okay
00:37:28.560 spread the gospel um couple of Rapid Fire questions for
00:37:35.200 you all and let's start with let's see Carlos been neglecting you a little bit
00:37:42.079 um alesandro from zerich ask if you could bring in into rails a feature that
00:37:47.520 kind of exists in another web framework do you have an idea what that would
00:37:53.560 be not really but I do think uh what
00:37:59.079 we're doing with turbo that hor talked about yesterday with the whole morph uh new feature is really interesting uh and
00:38:06.200 I think that's going to really change how we build apps uh and also one thing
00:38:11.240 that I have always wanted to improve in raos is uh what is now out in radio 71
00:38:17.560 like adding more bu tools so you can more easily build authentications on your own so you can understand that
00:38:24.079 whole system better uh and I think we should keep pushing
00:38:29.720 forward towards that like adding more uh helpers and abstractions to help you
00:38:35.440 build tools not give you the full thing uh already sure allow you to more easily
00:38:41.200 build that and uh construct your app uh without having to do a lot of
00:38:46.720 configurations and things like that but rather being able to Simply build what you need with the abstractions at the
00:38:53.680 right ler like authentication h kind of similar you know I was having a
00:38:59.839 conversation with Jeremy and Erin last night and they were talking about how jobs kind of like was when that came in
00:39:07.680 that you know was kind of a big thing and like there was always kind of like but why did it take so long for
00:39:12.839 something like jobs which probably I don't know what percentage of apps probably have some sort of background processing and so everybody needed to
00:39:19.400 kind of figure out that themselves are there so if you think forward a couple years or from now do you feel like
00:39:24.480 there's anything else that's kind of like oh that would be super obvious in hindsight but why you know yeah that
00:39:33.359 migrations yeah or the the thing is like we solve the problems that are in front of us so if
00:39:40.160 we keep hitting the same thing we're like this is annoying let's do it but we don't necessarily know what you're
00:39:45.560 hitting or we might agree that we want something that's oh I want this fature but I don't have the bandwidth to build it
00:39:52.599 so like we don't take future requests because we because we can't do work that we're not
00:40:01.040 currently work on problems we're not currently facing sure so often times people be like well why didn't you add
00:40:07.000 multiple databases before and it was like cuz it wasn't in front of us um and then it just became it became more
00:40:13.560 obvious that it was something that should be in the framework and I had I had the bandwidth to do it and it was
00:40:19.119 something I could see how it was going to play out so that made sense for to do that work at that time but it wouldn't
00:40:25.200 have made sense before if someone didn't actually have the problem in front of them or like they just didn't I don't
00:40:30.800 know like uh there's parts of the framework where I'm just kind of like ah I don't I don't know it's fine but I'm
00:40:35.960 not going to delete it but I'm also not going to work on it so I think that that's we each like have our own things
00:40:41.359 that we care about and that's the stuff we work on so there might be something that you want that we agree is a problem
00:40:48.599 but we're not going to do it so like if you want that you should do the work we talked about that
00:40:55.319 earlier so so sometimes you you need to uh be patient and wait until uh you you
00:41:03.160 get the right generalization or you feel like it fits in the framework one one
00:41:09.359 outlier here is something that everyone uses and it's not in the framework
00:41:14.599 because finding that balance is difficult and that's user authentication for instance it's it's something uh we
00:41:21.760 we we always use this this phrase uh you know what most people use most time most
00:41:26.880 of the time or need most of the time well authentication is one of those but finding something that fits that that we
00:41:34.400 feel is right in the framework that's hard and and if we ever find it is going
00:41:41.079 to make its way into the framework but uh not sooner than that you know I'm I'm
00:41:46.599 curious just for thinking about something like delayed job right that was around a long time ago was there actually a conversation if anyone
00:41:53.240 remembers was there ever a conversation back then about like should rails have some sort of a job thing because it
00:41:58.480 seems pretty obvious that a lot of people need that in their growing
00:42:03.680 quickly growing applications do you recall anything like that had been a conversation before
00:42:09.680 before active jobs there was uh r.q or something like that but was mered initially and then later reverted
00:42:16.640 because the interface wasn't so great so it's exactly what chavier said everybody
00:42:23.079 saw that there was a need for it it was just a matter of finding right implementation which took away took took
00:42:29.200 some time to figure that out I and I think actually the example of internationalization that we spoke about
00:42:34.599 earlier was a great one I was completely on board with the idea that we should have it it took two and a half years for
00:42:41.520 someone to come up with the right inter phase to do it this is one of these principles that Matt expresses all the
00:42:47.280 time for Ruby itself he can agree that a certain feature should exist but it will
00:42:52.319 not be merged until the right name is found Simply Having the correct name for
00:42:57.760 a certain method is a blocker to make it in I felt the same way with uh with credis I've been working with reddis for
00:43:03.880 at least 10 years always felt like there should be a better abstraction never stumble across to WR API um so sometimes
00:43:12.440 that's that's simply the blocker so don't think just because something isn't in railed that that's because there's a
00:43:17.640 fundamental disagreement against it being in rails very often is because someone didn't put in the right insight
00:43:24.720 to get the correct API just right you know I talk your earlier
00:43:32.160 mentioned security and I think the someone I didn't get their name but
00:43:39.920 what is like the general process for handling security can someone can explain that a little bit
00:43:45.359 like Aon and how can the and and this
00:43:50.720 followup question would be how can people here help okay
00:43:56.880 uh so the general process is you submit bugs submit any bugs you find to our hacker One account and then right now
00:44:03.440 we're doing basically we have a monthly meeting where we go through triage the bugs and try to fix them uh and
00:44:10.480 unfortunately there's I I don't think there's much anybody in the community can do to help with this because it's
00:44:16.559 all done it's all done secretly until we finally do the security release the best
00:44:21.920 thing you can do is if you find a security issue report it to us that's the best
00:44:28.480 thing and then that gets announced and I know there's like a was there still Discord or no we post it we post it to
00:44:35.119 the rails Forum we used to email it out but I think like we were emailing it out
00:44:40.319 to Google Groups thing but the problem with Google is now you have to have a you have to have a Google account to read the mailing list and we don't want
00:44:47.000 to require folks to have a Google account so we just post it to our our um
00:44:52.400 uh discourse Message Board now John what areas of the framework
00:44:58.680 codebase do you personally find to be most intimidating to work on oh
00:45:05.160 um uh active record for sure um it's also the one of the better parts of the
00:45:12.400 code base and like has the most power and the you can accomplish the most interesting things by working on it but
00:45:19.079 it's uh by far the most complex and has uh deep Mysteries um
00:45:27.119 I'm look I'm also looking at uh the active support callbacks right now and that is also a very difficult thing to
00:45:33.160 work on what about you
00:45:38.920 Carlos uh personally I've had less experience with the more recent acual
00:45:44.640 storage acual Tex Frameworks uh so I would say those probably uh because but
00:45:51.200 because it's I just haven't just really deep dived into those yet uh to
00:45:56.760 understand them more but like I guess like iink said yesterday they more or less follow the same patterns in general
00:46:03.720 so as long as you understand how the framework is generally organized and the patterns that it uses it's usually fine
00:46:09.640 to get in there and uh just understand how things work in
00:46:15.160 general Shier I know that you had a career
00:46:20.200 transition you haven't always been a software developer right say it again please did you can you talk a little bit
00:46:26.240 about your career like someone asked a question in there in this in the in the
00:46:31.760 questionnaire around you know did you think that you were going
00:46:37.119 to become a software developer early on in your career in your as an adult going in oh no no no
00:46:44.720 so and is it too late for people that are making a transition like you know is there oh so uh to answer that my first
00:46:52.880 soft my my my first job as a software developer I was I was 30 so absolutely
00:46:58.240 not so I I quit High School uh when I was 17 did a bunch of things then I
00:47:04.559 changed my mind again went to University when I was uh 23 I did I did uh a degree one year of
00:47:12.280 PhD and then I changed my mind again because I like it so the degree was math
00:47:17.599 I liked math a lot but it was 30 I wanted to so basically the way I work
00:47:22.680 this is a personal question right the way I work is uh I try to follow my my gut feelings and every time in my life
00:47:30.079 uh you know I try to decide what I want to do and if that's changing careers I do it and I I go I go like full with
00:47:38.040 that accepting all the consequences of that decision you know so uh so being a
00:47:45.119 software developer I like programming before so there's some background there but it was just the way life worked for
00:47:52.520 me and I enjoying it a lot a quick show of hands who here has a degree in
00:47:58.839 software engineering or whatever computer science just one person two
00:48:04.359 kind of kind of half half okay so you don't have to be you know computer
00:48:10.720 science wizard to or academically speaking to become a rails core team
00:48:16.119 member um which is good news for me um High School Dropout
00:48:21.640 um so did anyone else have a prior career before going into software
00:48:29.359 engineering kind of design design somewhat but I I knew that software
00:48:36.480 Engineers got paid [Laughter]
00:48:42.590 [Applause] more I'm just G to kind of wrap this up
00:48:50.119 so I know that um you I want to thank everybody there's also you know again there's 12 members of the coure team G
00:48:55.799 and we have 10 of them here today um which one of you came the furthest oh Matthew Matthew were you
00:49:03.160 were you coming from Matthew Australia Australian thank you who who who walked
00:49:10.280 here who was that who's the shortest V probably me probably you from okay I'm G
00:49:18.200 to pass uh the the Baton over to David because he wanted to say a few things
00:49:24.760 yes um so in this Spirit of recognition at this first reals world I think we've often
00:49:31.920 had um things where we recognize people in the community for various things we've had at other conferences Ruby
00:49:37.720 Heroes Awards of various kinds but I don't feel like we've ever formerly
00:49:43.359 recognized the core team and I think it is time to do that giving them the
00:49:49.799 recognition that they deserve in many cases for years or even Decades of service to the rails community so here
00:49:58.359 to deliver a special recognition to every member of the Rails Court team uh
00:50:03.680 please give a round ofuse thank
00:50:14.120 [Applause]
00:50:24.440 you that's awesome all right everybody uh
00:50:30.440 thank you to the court team thank you for your questions thank you David um have a great second day at rails world
00:50:37.520 and come find me for om my Z Sal stickers all right thank
00:50:47.470 [Music]
00:50:54.440 you