 All right, I'm gonna get started and if people come in then they'll find a seat Meet us halfway through Welcome everybody. This is my talk about taking the plunge and becoming a contributor My name is Alex Ross. I'm a senior architect at NBC Universal And on the various channels on the internet, I'm Bleen or Bleen 18 so you can find me on all the all the various places I Tend to talk really loud. So if it gets too loud because of the speakers, let me know and I'll move the mic I can't tell how that it is back there Or if you can't hear me at all So basically before I got started Contributing I was doing what most people are doing and using Drupal and getting what I can out of it not doing anything To kind of contribute back to the community. I was using a bunch of modules. I was using a base theme I was doing all these things. I would you know, search around when I had questions or problems But I was never doing anything kind of To get back so Like most people it started when I found a bug, right? That's usually the first place that people end up contributing and You know, I submitted a bug report. I tried to fix it. That didn't go so well I talked to a couple people in the community and And you know eventually I got to the point where I was able to get some help and get some guidance from some of the community community members who were around at the time and I finally got a Fix in place and I submitted a patch and it was accepted into Drupal core and it was very exciting And actually this is the comment from that original post So I don't know if you can read it, but I was very excited about my first patch getting in and Web chick was threatening to go get Jello and feathers and then whistled innocently So, yeah, this was about four or five four years ago and since then I've become the maintainer of About a dozen modules on triple org. I've contributed patches back to core and to a bunch of contrib modules And I've written documentation. I've submitted bugs. I've submitted feature requests. I've answered questions. I've been a mentor I've done trainings. I've started Kind of mentor-y type activities at the local Drupal user group In New York, so I've done all of these things and I figured this was a good opportunity to talk about those things and talk about how you Can kind of get back to the Drupal community and and get involved So I'm gonna get started with how you can contribute so These are some of the ways is not all the ways But they're most of them that you can actually give back to the community and become a more active member Become a contributor and I'm gonna be going over each of these in pretty good detail Some of them are much easier to explain and talk about than others, but it doesn't necessarily mean they're easier to do But as we go through you'll see what I'm talking about so the most common way that people think of when they're they're talking about contributing to Drupal is just by You know writing a bit of code making a patch Fixing a bug creating a new feature submitting that patch back to the contrib module or to Drupal.org So we're gonna talk about that. We're actually gonna do it by the end of the presentation Writing and maintaining your own contrib module Some contrib modules out there are very very small and very easy to maintain some of them are panels, right? huge complex beasts that require, you know Ten people to kind of really get together and deal with So we're gonna talk about how you can actually go about contributing your module and your code back to core Back to the community rather we're gonna talk about how to review patches, right? If you come across a patch that hey, it's been useful for you Talk about that go back on the issue and say hey, I use this patch It worked for me or I use this patch and it totally screwed up everything and you should never use it Both of those pieces of information are equally important to the person who's either maintaining the module or the core maintainer If the patch Works that's great information if it doesn't work that means that there's more work to be done But now we have another you know another data point to work off of Mentoring someone right. This is a great way to contribute to the community On Friday and I'll talk about this a little more There's a whole big sprint for for newbies and people who are just getting started contributing And there will be a whole bunch of people in I don't know what color t-shirt is yet because I haven't picked it up but in a Yellow t-shirt who will be there mentoring others and helping you get started as a contributor in one way or another triaging issues, all right, not the most sexy of contributions you can you can do here, but Very very important. There are hundreds of new issues on triple org every day and some of them are duplicates some of them are Triplicates some of them are you know are are totally In the wrong project and just need to be moved some of them need to be confirmed and so on so we're going to talk about that Submitting a bug report in a feature request, right? How do we actually do that properly and by properly? I don't mean what form do you go to? I mean there are kind of right ways and wrong ways I'll talk about for example why it's not a good idea to submit a bug report by saying wow your code is broken You guys suck. Why haven't you fixed it yet, right? Things of that nature And then something as as straightforward as summarizing an issue hugely important There's been an initiative for a couple because a year and a half now to start going through and summarizing issues on Drupal.org especially for core Some of those issues can get really long and nasty to try and figure out and try and grok So just you know contributing that way can be a great way to get started And then finally writing documentation Everybody always talks about document everything document everything and that's true We want to document everything but there are again, you know different ways of doing that within the Drupal community And each of them are valid in their own way and we're going to talk about kind of how How you can go about contributing by writing documentation So that's what we're going to talk about And we're going to start with writing documentation He's basically go in order of ease of explanation not in ease of doing which I mentioned before So writing documentation the first thing I like to remind people whatever form your documentation Takes and wherever you're writing it and we'll talk about those Always assume that whatever code you're writing Documentation for is or whatever whatever process you're writing documentation for Assume you're going to need to do it again in about two years when you're drunk if you assume those things Right, then you will always write good documentation because you will always need to you know you'll always kind of picture it as As though you're going through this again for the first time because nobody can look at code two years later when they're drunk and Understand what in the world they were doing with that good documentation So on Drupal.org there's a good amount of documentation up there and We're going to go take a look at that and actually you know play around with it a little bit I if you're following along with documentation on Drupal.org and you see something wrong Fix it right there right then if you see something needs clarification fix it right there right then If you get into the habit of doing that over time if everybody gets in the habit of doing that over time the documentation on Drupal.org And in other places, which we'll talk about is going to get better and better so Another point that I like to bring up if there's no documentation already for the thing you're doing whatever that thing is Write it down as you go, right? If you can take out an old-fashioned pen and piece of paper, believe it or not They still work, but write it down as you go. These are the steps. I took this is what I clicked on This is what I this is the wrong path. I went down right those are good for Parentheticals saying don't do this even though you may think you should All that is really good information and if you can add it to the documentation That's going to be hugely helpful to the next person that comes along and don't forget that next person might be you in two years When you're drunk, so let's do that real quick. I don't know if the internet is working right now So I have it. Whoops. I have a backup plan if it isn't Where'd that link go? Well, let me click on my link. Oh well So I'll bring up my backup plan here So documentation there are a couple ways to document what's going on There's documentation in code right if you're actually sitting in writing code Document your code right wherever you're doing it. There's documentation on Drupal.org Which is what we're going to talk about mostly right now and there's documentation That can happen in your in your blog right on your personal site wherever so Documentation on Drupal.org if you come here close that There's a documentation link right up at the top bring through a page just like this And if you click around one of the areas that the documentation Breaks it down into and you might be in all likelihood You'll get to one of these pages based on a Google search anyway But if you get to one of these pages for example working with nodes and content types Right and you see something that is incorrect, right? You as long as you log into Drupal.org you can edit it right away right here. There is no requirement to You know to have permission to edit the documentation all you need is a Drupal.org account. That's it So log in head into here say hey this documentation is only appropriate for Drupal 7 or it's a beginner or all this good stuff And then there's the actual documentation down at the bottom Very often as I'm going through a process I have this page open in another tab and I just go through and I write my documentation hugely important. Okay, so that is Documentation I'm gonna keep going So the next thing I want to talk about is summarizing issues All right, like I said, there's been an initiative for a little while now For summarizing issues again all you need to do this is a Drupal.org account So it's not there's a very low barrier to entry in terms of getting involved When you're summarizing an issue we want to summarize everything in that issue, right? This is a deceptively simple process. You know people think oh summarizing issue I have two free minutes I can go and summarize that issue it almost never takes that long it almost always takes You know half an hour or longer Because what you need to do is really understand You know the entirety of the issue and if the issue is at a point where it means summary Chances are there's a lot going on. So let's take a quick look at an example of why this is really useful There was an issue In 2008 that I remembered very vividly and I wanted to bring that up This issue if I scroll down long enough has I'm not gonna go all the way down. It has about six hundred five hundred comments And it was about there's a really really horrible annoying IE bug. I know an IE bug Where you can't have more than 31 style sheets on a page It'll just ignore the 32nd and on like it won't tell you it won't throw an error It just ignores it and suddenly you add one more module and your entire site explodes for no good reason So we needed to figure out a way to deal with it I'm not going to go into the details of how we did but looking through these comments if you were to come into this conversation on I don't know Let's say January 6th 2010 and someone was gonna say to you hey, what's going on that issue? Do you know how to fix the problem? There's no way you would be able to figure out what in the world was going on And if we scroll all the way back up, and I'm not gonna scroll I will use my little magic scroll mark here All that's really in here is hey IE breaks when you add, you know, 31 more than 31 style sheets Here's a link to Microsoft. That's it, right? So grocking this issue to and it this is why I remember it So it took me like a day and a half to really understand that the the path people were taking Because a lot of people were arguing back and forth. So an issue summary, right? This is why they're so important. It would be it was nearly impossible to figure out what was going on here so Here's an example of a more recent issue from last year and the last year where they did go through and And I don't know whether this is the person who initially opened the issue or this is someone who went back and did it But they actually went through and they did an issue summary for this and just to give you an idea of how much easier This makes life. What's the problem? Okay, when you use the CK editor in Drupal 8 There's no accessible way to move around the buttons. That's really the issue And here's some screenshots that show hey look no toolbar. I can't move around the button. That's a problem for accessibility What's the proposed resolution? Hey, we need a drag and drop Click you are the drag and drop click UI should be driven from an HTML form which underlies it so that you know Someone using accessibility software can can take advantage of the form instead of the actual dragging and dropping Okay, there's a proposed resolution. What tasks are remaining? Determine a solid implementation and so on so that the key points here are Raining tasks up when we have the problem proposed resolution remaining tasks Whether there's any user interface changes or API changes and then the original post We always like to keep the original post so that when the person who really posted it comes back later and says Ah, this wasn't the issue. I was talking about we can refer back and figure out what went on there So hugely important to do these and I don't know if this is the right one Yes, there is even a node on jubil.org which has a template for these issue summaries. Yes Sure, it's definitely so the question was is this relevant for closed tickets I would argue that in the perfect world it would already have been summarized before it was closed but In reality if a ticket does get closed an issue, you know for whatever reason why that whether it was nonsensical or it just You know the community decided to go away and go another way or it got pulled in It's really definitely useful To have that summary in there, but ideally it would be there in there ahead of time Some issues are so small and so straightforward that the summary just never happens for them, but in those cases, you know, that's fine Okay, so that's that's basic, you know image issue summaries and Let's go back to this guy So I showed you an example of why this is useful and how this is done. Well Again, these can take a long time because grokking that issue could take you quite a while But once you've done it, it makes the lives of the people who are actually doing the code and that might be you also a lot easier And finally that's the link to to the standards that have been kind of set up So that you can just copy and paste the template and start adding the summary The next thing and in my opinion, this is absolutely a way of being a contributor to jubil And it's for most people. It's the the first way they contribute to an open-source project My project stuff working. I don't know why right? I file a support ticket file a bug These things are You know, they're very valuable if nobody ever files the bug if everyone assumes that someone else is gonna file the bug then bugs Don't you know get fixed so huge huge value for everybody But a couple things to keep in mind when you're when you're you know submitting a bug report is always ask yourself Is this a bug report or is this a support request, right? There's a very Grayish line When people are deciding that a bug report a good rule of thumb to keep in mind with a bug report is if you are in Let's say it's Drupal 7 and the views module Start with a vanilla install of Drupal 7 with just the views module and see if you can can you know still Reproduce replicate the issue that you're seeing and if you can doesn't necessarily mean it But chances are this is a bug report. This is a bug and you're gonna want to file it that way but If what you're asking is really hey, how do I do this? That's not a bug report That's support request if it's hey, it would be great if your module also did x. That's not a bug record You know a bug report. That's a feature request So it categorizing those well helps the maintainers of the module or core Figure help you basically Be as detailed as possible, you know if you can do an issue summary right at the beginning That's great. We will everyone will always go back and refine those issue summaries as we go But you know definitely worth taking the time and trying to start out with an issue summary Finally don't be angry The worst possible thing you can do and you submit a bug report and I kind of mentioned this earlier is say your code sucks Fix it right no one wants to help out with that Especially people who are working in an open-source project and volunteering their time to do so So be be respectful of the people who are going to be helping you out and helping you know You get your problem solved So let's go ahead and just take a quick look at the way to submit a bug report on jubal.org Yes So writing tests is Is your question like should we write tests? Yes? Yes. The answer to that question is is yes I mean jubal core takes a lot of time and effort to make sure that pretty much everything that goes into core has tests Attached to it not every contrib module does but most do No, I wouldn't say most many do It's definitely good practice and it's going to prevent the bugs from you know obviously from resurfacing later on or at least help prevent that So very quickly I'm just going to go to I don't know use and If you need to add a Feature request or a bug report one thing to just keep in mind the first thing they have at the top here is a search box This is so that we don't Submit duplicates as much as possible The first thing you should do before submitting a bug report is search around see if somebody's already done it Maybe there's a fix already. Maybe the patch has already been included and you just need to update the latest version module But if not, you're going to open the issues right here here all open issues and then I'm not logged in I'm going to log in real quick. I Always get nervous. I don't forget to tab during a presentation. Everyone didn't see my password and Then submitting issue is fairly straightforward. What version of the module are you using is this? Part of a specific component not every module has such detailed components Most of them have just kind of its code or its documentation or something like that Bug report task feature request support task is kind of the amorphous catch all I don't know which one of these this is so I'll choose task and then priority Who's assigned usually you can only pick yourself unless you are the maintainer the module and then finally What's the status of this right? This will go back and forth 25 times during the course of an issue Between being reviewed and tested or being in needs work or there's a patch or I'm not going to fix it Things of that nature and then just be as detailed as you can in your description over here, right pretty straightforward So let's keep going. I don't like keynote. I've decided so yeah, so I'm a new dad So I have gratuitously cute photos of my kid Yeah Oh So in that in that situation so the question was basically hey Maybe there's a patch sitting in an issue for for a really long time and nobody's nobody's updating it Nobody's looking at it. What do you do in that situation? typically what I would do there is You know leave a comment say hey has there been any updates to this issue give people a reasonable amount of time to respond to that and if Nobody does I may go an IRC And see if the maintainers and IRC and ask them hey, you know has anyone looked at this issue But again, I don't go into IRC and say hey you have to fix this issue, right? It's breaking my site. That's it's just never gonna get done that way and people are never gonna kind of respond to you that way At the end of the day if nobody responds There's a couple options. You can you know if you want to take over the responsibility of that module That's that's something you can request by opening an issue in that module saying hey It doesn't look like anyone's being very responsive see this issue where no one's responding I'd like to become a maintainer or a co-maintainer of this module. Maybe move things along That's absolutely totally, you know reasonable thing to request if you feel comfortable with that And then failing that you know patch the module and you have a module that you've patched And you have to unfortunately keep track of that as you go Okay, triaging triaging issues So one question That a lot of the core maintainers in particular Have whenever new issues pop up, but this is also true for contribute maintainers is Hey, I see there's a new issue that someone put up there today It wasn't didn't I see that issue three days ago or three weeks ago or three years ago? And wasn't that related to something else and isn't that a duplicate and I don't remember what's going on and They can certainly take the time and start looking through All of the issues and see if they can't find the related one if they happen to know the one right then and there That's terrific, but if not you take someone like you know like Tim Plunkett who is committing You know 400 commits to to Drupal core every couple days I'd rather he spent his time working on core than searching through the issue queue And and figuring out whether that's a duplicate or not So triaging issues helped out a lot Couple things to keep in mind when you do it is can you confirm the issue right if someone puts a bug report and says hey It doesn't work when I click, you know the foo button I thought it was supposed to do something try it right install that you know Drupal's triple eight on your local machine and give it a shot If you can confirm it great comment on that issue saying I can confirm this right if you can't confirm it Say comment on an issue and say I can't reproduce this right both of those pieces of information are equally valuable And then there's a link on Drupal that org that makes it a lot easier to kind of participate this way and There I am if you go to your dashboard Obviously have to be logged in for this if you go to your dashboard You have this add a block right here and if you add a block one of the blocks You can add it's called contributor links right here And this is incredibly useful for a lot of stuff if you're going to be contributing The the cues right here are particularly valuable for Drupal core development, but they also include some you know the contribute issues Many of them do at least but this one right here is issues needing triage if you actually go there It's it's the same list of all of the issues that are open for Drupal org On Drupal org I should say but it's one it's sorted by replies right where zero is on top So Every one of these issues on here have zero replies Which means no one has looked at them or no one has looked at them and felt it necessary to comment on them If you scroll down and we go to the ninth page There is still Not one with a reply if you go to the 13th page There is still not one with a reply. I believe I looked the other day I think it was 16 where we started to actually get reply. Yeah ones with one reply So that means that there's somewhere between 13 and 16 pages of issues that have never really been looked at and some of them Might be really critical in the person, you know putting the issue in to the issue queue Just wasn't aware that how critical it was some of them could be you know killed right away Oh, this is a duplicate. We fixed this last week. That's sort of a thing. So Now triaging issues is as easy in terms of kind of the process As picking one right hey the update hook help for comment module All right, there's an issue that's a task for Drupal core and you know, it was opened by Ifrick and here's a quick background. Hey, this this issue is part of a meta task And I'm gonna talk about meta tasks and I met a issues in a minute And we need to you know review the the hook help for what module was this the comment module Okay, this isn't a bug. So it's not to say whether or not this is reproducible, right? That's not a valid Way to triage this particular issue, but it's totally valid to sit here and say oh somebody already did this right that happens from time to time or You know, this is something that's probably good You might want to tag this as novice if it hasn't been tagged that way already If we feel that this is something that somebody who's new could handle Just that simple act makes it much easier for someone who's coming into the community to say alright I want to try something. I want to you know, I want to figure something out I'll look at these novice issues and again novice issues if you go to your contributor links There's a nice there it is novice issues like You know so, you know simply by the act of triaging these issues we're really kind of setting the table for people who want to do Code contributions or review code or write documentation Within the code things of that nature that might be you that might not be you right? This is not necessarily You know this idea of being a contributor is not necessarily just for people who write code It's not just for developers Everybody in this room can you know accomplish some of these tasks very few people can accomplish all of these tasks So bear that in mind Okay, let's keep going do-do-do Mentoring so Year and a half two years ago, maybe not that long And there's an initiative that was started by a couple of members of the Drupal community for for mentoring New folks who are coming into the community people who are trying to kind of take the step from going from you know I'm really novice at this too. I want to be a little bit more involved And how do we kind of climb the ladder everybody's I hope everybody at this point is either seen that Ridiculous cartoon about the Drupal learning curve right where you climb up the cliff and the cleaves keep going skin It starts to come around this way The Drupal learning curve is that daunting right for those of you who have been in the community for a little while You may kind of already have gotten over some of that But for those people who are coming in for the first time it can be a big challenge So having people who are there regularly Helps considerably So mentoring there's a couple things you can do to mentor It's not you know, it's not just the Drupal mentoring program Which I'm gonna show you that site in just a second you can go right on IRC and answer questions, right? That is mentoring. There's no there's no You know What's the word I'm looking for? There's no formal process that you have to go through in order to mentor someone if you spend 10 minutes You know in your afternoon or something in in Drupal or Drupal support or something like that in IRC Then you're helping someone out. You know you answered that one or two questions. That's great You're helping that person get to the next level If you don't know about IRC or don't know how to get on IRC There's a great page on Drupal.org Drupal.org slash IRC which kind of explains how to get on there and what to do Again when you're on IRC be nice, right? And it pains me that I have to like kind of repeat that at every Camp that I go to and I give a talk like this or every conference But you'd be amazed some people come on and they're just nasty and there's no reason for it And you're just not gonna get you know good responses if you're not kind to other people Another thing that you can do and we've done this in the New York group. We started a newbie buff Right, so at every New York meetup, which is once a month We have somebody from the community who's fairly senior in the community go to a separate room off to the side and just They started a newbie buff so anyone who's there at that Drupal meetup who is either new to Drupal doesn't understand exactly what Drupal is Or they're there because they have a very specific question And it's not really appropriate in a room full of 75 people to be like on my site I get this error but only on Tuesdays That sort of a thing You know can be a little bit of a challenge with that many people in the room So we do that newbie buff great way to help mentor people great way to help move people up from being You know brand new to this to I'm a novice. I'm a novice to I'm kind of at that intermediate step And we definitely have people who now run the newbie buff who were in the newbie buff at one point And that's you know, that makes us feel all warm and fuzzy inside. So that's a great thing to do Drupal mentoring so I talked about this a little earlier. Drupal mentoring is a great site that was set up by By Jess and Kathy and Andrea and a couple other people I think and Tim Plunkett. Yeah Basically the idea is that people who are a little more senior in the community are going through and Taking note of issues that are appropriate for people who are at various levels of getting started in the community And they flag them as such and they break them down into very, you know specific tasks and and then they have office hours and IRC two or three times a week depending on what's going on and If you come into the office hours and say hey, I want to help I do not know how to get started someone that will be there during those designated times That is very specifically there to respond to a person exactly like that And they'll point you to Drupal mentoring org and they'll help you assign You know a task to yourself and those tasks can be as simple as triaging issues or as simple as summarizing an issue Or as complex as you know, write this hook for Drupal 8 You know, they kind of span the range of all the things that you might be interested in doing So that's a terrific way of getting involved For the people who want to become contributors And it's a terrific a way to get involved for those of you who already feel like you're a little bit more senior and you want to help Others become a contributor That's a terrific way to do it. So I highly recommend doing that Friday this Friday there is a kind of mentoring day Mentoring sprint where the mentors will be around in their yellow t-shirts. So come to that if you want to be a mentor talk to Kathy And you know, it's it's really, you know terrific to help out the people who are just getting started on Friday Okay, the next thing you do and now we're gonna start to get a little bit more into code So for those of you who aren't coders a lot of the stuff that you can kind of do to contribute We've covered for those of you who are writing code. This is where we're gonna start to get into that a little bit So reviewing a patch. There's a couple ways that you can review a patch um First is reviewing a patch for style gotchas and strategy now what I mean by this is Let's just do it. Let's go there So Do-do-do that I miss it. No, there it is If I go to Think it's this one Yes, no There we go. Okay. So this is a module that I'm a maintainer of it's called representative image. It's a great module It's terrific. You should definitely download it try it out It helps you with that problem of hey my content type is 12 different image fields And I want to view but I want to pick which image field is the representative image for that content type So that that's the one that always shows up. Anyway, um, that's me plugging the module So if you come to an issue where you have a Patch like this right I can click on this patch and I can actually start looking through this patch It's a little bit harder to see on on the On the board here, but I can start looking through this patch and seeing oh, okay You'll have to take my word for it that these are pluses on the side and there are some minuses down here Oh, this person is adding this bit of code and taking away this bit of code From the style point of view. Hey, they're not using Drupal coding standards I don't need to apply this patch to my code to know that I can look at it You know once I'm more familiar with that I can look at it and say oh you you know You're supposed to have a comma at the end of you know the last thing in an array You don't have that and I can comment on that Um, I can look at this and say from it from a strategic point of view. Why are you, you know You're using a function in here from the views module, but there's no dependency on the views module Well, that's strategically a bad idea because someone might install this module the representative image module But not have views installed and then this will explode right? I don't need to actually install this to figure that out I can just know The other thing that you know, you might see are hey, you know This needs tests right and you might just comment in the issue Hey, this is a great patch as far as I can tell so far, but there's no tests and this definitely needs tests Because you're fixing an error and almost always when you're fixing an error you need tests This is a kind of a crappy way to look at these if you if you know even even if you could see the pluses and minuses So somebody came up with I think it was Sun and someone else came up with a tool that I'm going to show you to make this way more better in terms of reviewing so Now that I have some internet I was in incognito mode over there so that you didn't see that I had this thing and I'm gonna show you how to get this thing But you'll notice I'm on the same page, but I now got this lovely little review button down here I also have this even lovelier little simply test me button. I'm gonna talk about both of those So the patch we were just looking at it is this one right here if I click review. Oh This is so much easier to read because it's color-coded right red things are deleted and green things are added What else can I do in here? Well, let's say that I want to leave a comment This is you know, it's not the biggest patch in the world, but there's some stuff going on here But let's say I wanted to leave a comment specifically about this line and this line I can highlight those two lines and I get this box over here and say What is this for? I don't understand whatever the comment is, right? This is kind of just demonstrative But all right, and I can save that and then I could come down here and I could say on this line. Oh Don't delete that there We need that later. All right, so I've kind of gone through and I'm reviewing this particular patch again Right now I'm only reviewing because I haven't applied the patch I'm only reviewing for style and for gotchas and strategy. So I save that save and Once I'm done. I can click paste Now if you look at this guy, I can see That I'm gonna preview it because it's easy to see I'm gonna preview this comment. I can see that Hey, the thing I highlighted is in here in a code tag already for me with my comment Same with the second one. Same with the third one. It makes reviewing Patches so much easier. So this tool that I've been using is called dreaded er. All right, and you can get it There's a new site called here. It's called. It's called It is called Dreaded er There you go That's where you can get it. It's available for chrome and for firefox if you're using firefox you need another extension for firefox called web monkey But it's pretty easy to install So I highly highly highly highly recommend using Jettiter There's also a bunch of other tools that Jettiter gives you to make this issues page a lot more usable And I'll just go through those really quick If you are the maintainer of a module for example I'm not on the issue page where I want to comment preview if you're the maintainer of a module and you have You have dreaded er installed you get this create commit message button down here, right? So I can create the commit message It'll put a link to every name of every person that submitted a patch and I can click Oh Alberto is the one who really did most of the work on this and I can copy that commit message And it will make sure that it's in the you know kind of the the appropriate format for get commits that You know that are expected on Drupal.org and it gives credit to the person who did you know the chunk of the work? Notice that it gives credit in two places, right? It has everybody's name who appears in these buttons separated by a comma and then it has the author You know in git only allows one value. So that's kind of what you're picking there So that's incredibly useful making this sticky is incredibly useful especially on a long issue, right? I could be typing and say oh in comment number 127 so-and-so said such-and-such but in comment number 283 such-and-such said something else Other things it'll do if you're you know, let's say that that is the comment that you're doing right What about comment 3 and I'm number 3 rather number 3 and I hit tab it makes a link directly to that comment All right So there's tons of kind of little hidden gems and predator that make going through the issue queue Much much much easier going back to our summarizing the issue. Yeah, when you say hey, what are the proposed resolutions? Well, wouldn't it be great to say one proposed resolution with resolution a and one was resolution B Link directly to those two comments, especially if it's a nice big long issue makes it easier for everybody And there's really no extra work to do it if you're using something like this I can make this unsticky Clone an issue if there's an issue out there that's pretty close to what you wanted Not it's not going to include the comments but including kind of all the metadata up here at the top Clone it and just change the one little piece that you wanted to change I personally haven't found this totally useful yet because if it's that close Then you probably want to just stick to this issue, but it's it's new and it's there The last thing I want to talk about and I pointed to this is to simply test me simply test me is phenomenal All right, if you want to actually review a patch including the code and functionality of it But you don't really have a local dev environment And you're not really set up This is a great way to do it if I click simply test me and hopefully internet don't fail me now Um, it's going to say hey, what project are you testing? What version of Drupal are we talking about? Do you want to make sure there are any other modules installed at the time you test it? Right, maybe that maybe representative image that doesn't depend on views But it has some stuff that uses views. So maybe I want to you know add Views and it'll be give me a list and say oh there it is. Okay, and are there any patches to apply? Well, by you know by default it puts that in there dreaded or puts that in there for me And I can add another patch if like this was an issue that also requires a patch for core To make this all work I can add two or three patches and I click launch sandbox and then I wait for about 10 minutes Um, it's not really 10 minutes Let's see Doing much better today than I was a couple days ago Um But anyway, I'll let that go for a few minutes Um, and what'll end up happening is I'll have a fully functioning vanilla Drupal site with nothing installed except vanilla Drupal Represented representative image and views that I can now click around in and test it. It's fantastic Um, so simply test me is a is a hugely hugely helpful tool. It just came around maybe three or four months ago Um, and it's kind of in my opinion. It's really revolutionized a lot of the testing that you can do Um Okay, so that well, let's see if it's there yet. Oh, it's so close. It's close enough to taste. There we go Okay, so it plops in my admin and my password. I can log in and Escape out of my little one password thing and I can see under configuration And under media Where are you? There's media. Oh, there it is. There's my representative images You know link for configuration and I can now go through this and say Oh, I want to play with this path with this patch and actually adds this path Option down here and I'm going to try it out and see if it works and comment back on the issue accordingly Um, if you want to do it a little bit, you know, have finer tune control and do it a little bit old school You can um, you know apply the patch using normal get tools. So I'm going to show that real quick Um, is it a little bit too zoomed in? Is that still readable for the most part? Whoops Okay, so I am in my local Drupal 7 site and let's assume I downloaded that patch to my desktop Right in order to apply it and get it's very simple get apply And then the path to the patch So this patch is called rep I'm gonna actually do the comment I have a different patch on the desktop I kind of put everything there because the internet wasn't working earlier So I had to run back to the hotel and download everything so that if the internet wasn't working during this I could still demo other things Um, and that's not how you spell apply at all Get apple it's not going to do anything at all All right, so there we go get apply So I downloaded that patch to my desktop and I did get apply and it says okay Um, we applied it quick warning that applied it after fixing a little white space error that I must have had in the patch Maybe I used tabs and such spaces. That's no good and I have my get set up to yell at me when I do that Um, and now if I do get status status Um, there we go. I've modified you know this one Uh file is modified here and if I do get diff Then I can see oh, what am I fixing here? Uh, it's probably really hard to see it but implements is spelled wrong Right implements should be spelled correctly. So that fixes it if I scroll down a little bit Where's my? This comment was um, somehow inadequate Right. So what's that? It should well should be one line um The the general rule of thumb is 80 characters and I'm just so zoomed in that You can't tell that I'm I'm behaving and I am at 80 characters. So that's pretty good. Um, I didn't have the type On the uh on the parameter in my comment, right? I should say object or string or whatever type that can Can accept and so on so I can keep going down and all of these are basically just issues with the comments all right, so I'm just gonna quit out of that and We're going to actually kind of go through the process right now of Opening an issue Submitting a patch and then assuming you are the contributor We're going to review the patch accept the patch and commit the patch All right, so let's just go through that whole process Which kind of runs the gambit You know if you're if you're new to all this you probably only do the first couple of these steps If you're getting more and more in advance you'll do the last couple of these steps. So I'm going to go back to that There it is representative images Oh, no, that's not it. That's our little fake site. I'm just going to go to representative images Represented Am I smelling it right representative image there we go and We're going to assume I already looked through to see if anyone has you know Opened an issue saying hey all the comments need to be cleaned up and No one has so I create a new issue. This is for version 7.1 7x 1x dev which is kind of ahead Um, this is a documentation problem category is a bug fix or a bug report Um, it should also be a task really right clean up the the uh uh the comments and Priority is definitely critical. No priority is minor and I'm going to say clean up The comments a bunch of the comments don't meet The Drupal coding standards We should fix that right always be nice. Have a nice day Okay, all right. I can't type today. It's hard to type when you're looking behind you Um, and I'm going to open this issue. So there we go. So we've opened a new issue There's this issue and That's pretty good. We've opened our issue. So let's actually Submit our patch to do that. I'm going to choose a file and on my desktop Now, of course the assumption here is that I've made all the changes and I've tested them locally, right? Um, the module maintainers in particular get kind of frustrated when someone throws up a nice big patch there having never tested it And then the module maintainer applies the patch and just everything explodes all of a sudden Um, so make sure that you're testing what you're doing in our case. It's just comments So you can't really break anything with comments. Um, but here's my patch so I can attach that file and I can say Here we go made a patch to fix this fix this and Apparently I have scrum in 30 minutes um And I'm going to save that comment But I forgot something. All right. There's a very key um I don't even know the word I'm looking for but there's a there's a key step that I forgot Which is whenever you submit a patch always all the time without exception if you submit Well, that's not true. There are exceptions, but they're really rare. Um, if you submit a patch You always want to set this to needs review Um, the reason for doing that is because if you upload a file The way did I not actually hit submit? Where'd my comment go? Let's reload and see what happens There it is. Okay. Um, but like I said if you know I forgot to do a needs review if you upload a file Called dot patch anything dot patch And you set the status to needs review Then Drupal's test bot will come along and see that issue And it will run through all of the simple tests necessary if it's a contrived module Not like I said, not every contrived module has tests They should if you're going to be writing your own contrived module You should be having simple tests and you can set up on Drupal.org your project to run those simple tests But core every patch that gets Submitted for core that every file that ends in patch when you set it to needs review It's going to run through all What like 45,000 tests that exist in core now some ridiculous number Um, it takes a few minutes. Sometimes it could take as much as like half an hour 45 minutes But if you so we want to do this i'm going to do needs set review Forgot to set for review Here test bot And I save it What's going to happen once it saves Is and I'll refresh real quick Is oh it didn't do oh there it is queued for testing right it took a second now It's queued for testing once test bot comes along and like decides okay I'm going to I'm going to go through the test this is going to turn yellow And then once test bot comes along and says all right you passed all your tests It will turn green if you fail the test it'll turn red and give you a little link saying you know Here's some more details about what failed the details about what failed Aren't you know, it's not like it says oh line 72 you screwed that up They're not as helpful as one would hope but they at least tell you This test failed and you can look at the code for that test and say oh well What it's trying to do here is make sure that I can save a node and it's not letting me save a node Let's try and you know go through that process manually on my local development machine And see if I can have that same break happen and then if I can great I can fix it If I can't then I'm going to start to maybe go into irc and ask questions or talk to other people And see if I can't figure out what might be going on From time to time test bot goes on vacation If that happens try again the next day It or a couple hours later test bot is a is a fickle friend And doesn't always work, but I'd say I'd say 51 weeks of the year test bot is great But there's that one week scattered throughout that's pretty pretty terrible Okay, so now what we what have we done we've opened an issue We've submitted a patch for it Let's now kind of go through flip side and now you're the module maintainer right you're the contributor This is your contrib module. Well, let's let's review it All right, so I come on to this issue and I say oh someone has opened an issue and given me a patch. Let's take a look All right, so we fixed some comments here. That looks good. We fixed some comments here um One another good thing about dredder and I don't know if I have any examples of it I hopefully don't is if you for example have tabs in here instead of spaces or if you have an extra space at the end Of your line dredder will actually like blink it, you know, I blink it but like make it bright red Indicating. Hey, you have a little bit of a coding standard problem there. Definitely doesn't catch everything But whatever it can catch it tells you about which is really nice, especially as the maintainer um So I'm going to look through this and I'm going to see all right. This looks great or this doesn't look great um And actually this is a problem. This shouldn't be in here. This is not a comment fix Right, so when I made my patch, I screwed that up a little bit So right this is not a comment fix that belongs to another issue Whatever it is probably belongs in another issue Right so I can save that and what I'll do I'll go through the process right now and I will Here's the code in question I am going to That was actually well, what was that problem? Let me look again Oh, really all this was was it was actually just a white space problem If I look a little bit closer, but just for the sake of argument, let's just change it around just to see what happens um, so there's Break to what line was that? Line 189 So oh, there we go. That's actually the problem. There's a tab in there Don't know why that was there. So let's actually just save this and I'm going to do Get this and I'll see that should go away Yeah, it's not in there anymore as part of this get oh no it isn't there Hmm. All right. Well Let's see what happens here Um, I quit I'm going to do get diff and this is how you create a patch if you haven't created a patch before Um, you make sure that whatever can trip module or if it's core it's core That you've checked it out using git. All right, that's the easiest way by far to create a patch Um, so I'm in the actual representative image folder I'm going to do get diff and I just do a greater than sign and then the name of the file So desktop and then it is represented. Whoops Rep image comments dot patch so I'm overriding there and now I'm going to go back to um Go back to this issue and say I don't want to cancel the paste because I had made a comment in there And I'll save Right now you'll notice magically Oh, it's not magically Doesn't this usually put it back to needs work? Oh, I thought it did only if it fails the test. Thank you All right, so I should have set this to needs work right as the module maintainer now So I'll save that and set it to needs work And now as the person actually doing the contributing I'm going to say, oh, I fixed it right whenever you upload a patch you want to set this back to needs review and say I fixed that issue You found in number For tab and it puts the link right in there Yes, you can heckle Forded yes, that's absolutely right And I didn't upload an inner diff. Okay, I was going to go into inner diffs But I'm glad that you brought it up. So inner diffs are especially especially especially with big patches are really important All right, imagine I upload a patch that is, you know, 5k 500 lines of all 5k is not 500 lines, but whatever 500 lines of changes And somebody comes along and says hey, there was a you know a spelling mistake Or there's this one little thing you need to change. Well, the person who has gone through the effort of reviewing that initial patch Does not want to go through the effort of reviewing the entire patch again Just to confirm that I fixed that one minor change that they wanted to make Just for time sake, I'm not going to go through the process right now. Sorry, Kathy But it's not too hard and there's a great post on on drupal.org if you just do drupal inter diff You'll promise you'll you'll get it right there But basically what it does is it allows you to upload two separate files One is the big huge patch with just your little tiny extra change that you made and the other is looks very similar Right, it looks like one of these but it only shows shows the changes from the previous patch You know as long as you did it, right? So that way you can see oh, he just fixed the spelling mistake that I told him to excellent Now I don't need to review this entire patch again Um So those can be very very helpful Okay, so now let's actually go back in there. Let's review this again And sure enough I don't know why it's still in there. I don't know what keeps screwing with that, but let's pretend for What's that? Yeah, but it shouldn't have been like that to begin with I don't know. Um Anyway, I don't want to kind of get bogged down on a little thing like that during During this but basic idea here is as the maintainer again I'm putting on my my module maintainer hat Um, I can actually sit there and say oh, okay. This patch is excellent And I've tested it by applying it locally Right, which I you know, I downloaded it and applied it the same way and I could say get Add minus a so add actually let's just you get status first and double check You always want to do get status before you do get add for those of you who are fairly new to get um Because you want to make sure you're not accidentally adding some other wacky files that had nothing to do with this change And I'm not so I'm going to do get add minus a Um, I could also just do get add and specify the file when I want to add and now I could do get commit minus m and start writing out that big long message or I can go back to Here and Create the commit message Say that I fixed it Copy this and whoops and go back into my terminal And paste it Now I've committed it and I can do get push origin I'm not going to do it because I want to figure out why I what I messed up with that little space there But if I were to do get push origin, that's it. It's done almost right the code is there It's done with respect to the code. What isn't there. However Is an update to this issue. That's the last thing as a maintainer You want to make sure you always do is come back to the issue say thank you so much to whoever it was that submitted the code Right, if it was you you can pat yourself in the back. That's fine Um, but you know usually or hopefully it was someone else who was helping you out Um, but you want to set this to fixed Right, you want to set this issue to fixed and the other thing you want to do is you want to say Hey, I fixed this. Here's a link to that commit Okay, the way to get that link the way that I always do it I feel like there must be another way to do this But I open up the project page in another tab and down here on the side is a repository viewer and a view commits So if I click the view commits, I will see All the commits that I pushed up to origin from wherever I pushed them up So let's assume for example that this was my most recent commit. I click on it and I can just copy this URL right here, but just very quickly to look through what are you getting here? Well, you get information about you know, what was the parent commit and all that kind of you know, uh get um Those get details, but you also can look at the commit diff And see what changed in the last commit right in the last commit I guess we added this comment here on this comment here and so on And I can look at the tree and I could look at the log I could put the short log right the short log is just a list of the commits very briefly This is really really useful Especially if you want to send information about the get repository to someone else Right for the most part. This is all information. If you have the get repository cloned locally You can just get excuse me using get but if you don't or you want to point someone to a specific commit or a specific comment Didn't commit something like that. This is really super helpful. So I come down to here and um I would say, you know, thanks a ton exclamations You know this is committed and I would set it to fixed submit the The form and now I'm done all right, so that's kind of the whole life cycle of Someone identified a problem someone wrote the patch somebody reviewed the patch I screwed up the patch. So somebody wrote another patch. It's still screwed up, but we're going to pretend it's not I reviewed the patch Right, and it doesn't have to be the core maintainer who does most of the reviewing um Or the or the contrib maintainer the module maintainer typically they will right before they put it in hopefully at least give it a Good looking at but um often module often issues get Back and forth and back and forth between a reviewer and the person writing the code And it's not the module maintainer. Um, and then we committed it and we uh closed out the issue So that's the entire kind of workflow for that process. So I'm gonna Keep going okay So the next thing that you can do, uh, you can write your own Contrib module I'm not going to go through and demonstrate the process of writing an entire contrib module because that will take a really long time But what I do want to talk about is a couple of things to keep in mind The first thing is before you write your own contrib module ask yourself if a module already exists For that particular problem, even if there's one that's close, right? Better to work with a module that already exists that gets you 90 of the way there than creating your own The last thing that we want to have on Drupal.org is 75 different modules that print out a debug statement, right? Devel does that pretty well. Can it be improved? Absolutely, but do we need another module that does basically the same thing? Not really, right? So ask yourself if that module already exists somewhere, right? If it does try and work with that module maintainer try and get your changes that you need into that module Um, but if it doesn't and you've come up, you know With a totally new problem that hasn't really been solved in Drupal. You should create a sandbox project. All right, creating a sandbox project is Pretty straightforward if you go to drupal.org Slash, oh wait, I have a link in there. I forgot the exact link Oh, that's silly thing Drupal.org slash Actually the way I do is get to it Because I had the link pasted in there, but apparently keynote doesn't let me actually click on a link um Is I go to My dashboard and I click on your projects and there's a nice little link right at the bottom here, which is add a new project All right, when you're adding a new project, you know, is it a module? Is it a theme and so on? Um, it asks you a couple questions about it, you know Are you actively maintaining it or you know, so on you give it a title and give it a description And then there's this sandbox check check box a sandbox project for those who don't know Anyone on drupal.org can create a sandbox project at any time It's a great way to start getting your module going. All right There's no reason to have a full-on project that people are downloading everywhere With like half written code and 10 000 to dos, you know written in there You really want to kind of flesh out your ideas a little bit first But you still want a place to host it so that you can collaborate with other, you know other dribble Developers so you can get opinions on the code so that you can have people try it out Some people are more conservative than others with when they'll kind of cross that threshold and say this is no longer sandbox project This is a real project and it should have a name like views Or admin menu or something more, you know, exciting than that You need to apply For full project maintainer status before you can make that switch from a sandbox project to a full project And in order to do that You can just go to I have this open in this screen You can go to my stupid Thing here No, that's not it. Here it is Um project drupal.org slash project slash project applications There's all sorts of details here about what you need to do Helpful hint. All right. There is a program that basically allows you To kind of get your project a little bit higher in the priority list as people are reviewing before deciding whether to Allow you to make it a full project And if you go through and you evaluate other people's applications for full project status And say hey, this is a great idea or hey, this is exactly the same as views. Why are we creating another module for that? Or hey, your code is really terrific. I'm really a fan something like that. Um, if you go through and you review other people's Um, and notice there are 234 open issues on this project Those are all people applying to get project maintainer status Um, then the people who are authorized to actually Give you that right that permission permission will kind of kick you up the line and look at yours A lot sooner So if you're really really eager to get that project maintainer status Go ahead and review three or four other people and you'll kind of you know, kick your kick your uh chances in here So that is What you need to do in order to get a new project That's the reviewer bonus program what I was talking about and I already went through that. Um, don't forget to maintain your modules I know that sounds silly, but you'd be amazed at how many people create a new project You know get really excited about it for a week Commit tons of code and then That's it. They're they're you know, they leave and they never Um, kind of look at the issue queue. They never look at You know people making feature requests people offering up their own code and submitting patches Uh, and that's kind of unfortunate So One more slide and then i'm going to open the uh the door to questions So the last thing and this is probably what you know, most people kind of consider being a contributor But like I said before all the different steps we've gone through all the different things that we've discussed really are in my opinion You know attributes of being a contributor to Drupal every one of them Um, but the last one is is actually creating your own patch to either a contrib module or to uh to core um I'm not going to go through that process because it's the same um as I'm not going to do it through the core patch creating process because it really is the same as creating a patch for um a contrib module But a couple things to keep in mind This is actually the solution to And hopefully you've all heard this at least 300 times while you've been here not don't hack core, right? um The solution to that is to create your own patch and submit it to that contrib module or to core Right by submitting it you have at the very least opened up in a in a formal kind of easy to find location A summary of the problem and a and a and a suggestion for the solution We have at my in my team We have a rule where every once in a while you do come across something in a contrib module or in Drupal core where you really do Need to make a change So our rule and this is true of our entire organization is basically before you are allowed to make that change You must have opened an issue on Drupal.org for that change and you must submit a patch back when appropriate um The reason for this is there's no reason you should ever be You know making a change to Drupal core or to a contrib module unless there's either a bug Or a feature that you need that isn't there and in both of those cases That patch should live on Drupal.org. There's a bunch of reasons for that someone else will review it, right? Always having extra pair of eyes is good. Um the maintainer may come along and say oh That's not really a problem. You're just doing it wrong, right? Here's a here's a solution that you can use without having to you know change any code Someone may come along and say oh, there's a security problem with what you just did That's going to be a big deal, especially If your site is is using e-commerce or something along those lines And a couple other quick points and then we'll just open it to questions. Um Get familiar with the Drupal coding standards, right? uh Drupal coding standards are kind of Seemed nitpicky when people you know you submit a big long patch to you know solve some big problem And someone comes along and says you need two spaces instead of tabs can get a little bit frustrating But if you get yourself familiar with that then you you won't deal with it anymore, right? You'll you'll really be able to focus on um on the problems you're trying to solve last point um You don't need to solve 100 of a problem in order to submit a patch web chick wrote a great blog post It's kind of a few years old at this point But she talks about the idea of the person the one person who sits and writes this big long patch and takes two Three or four weeks to kind of solve the problem and figure out what they want to do and then submits the patch Versus another person who kind of just gets a rough idea and throws it up there that day By doing the rough idea and throwing it up there that day you can get immediate feedback And you can save yourself, you know 13 other days of work um You know with with other people you know with other people looking at your your quick idea and saying Oh, you're going down the wrong path try it this way instead Whereas the person who takes two weeks to do it doesn't have that luxury um They they spent two weeks of doing work and then suddenly You know someone comes along and says oh, we already fixed that or you went down the totally wrong path and that's not great um, so that's basically it um If there are any questions again, that's me on dribble.org um I'm bleeding or bleeding and I well what time is Are we getting close? Yeah, we have five minutes. So if there are any questions come up the mic or just shout them out That's good Yeah, I'll repeat the question. Go ahead. Um, it's a fair question. So the question was What happens when kind of the reverse happens on irc when you when you're trying to suggest an idea or Try and get get your patch into a core module or core or control module And the the maintainer doesn't want to hear from you and is kind of obnoxious about it um I mean there's not too much you can do about that other than to you know, try and you know ask them Nicely if they'll reconsider Other than that, it's it's really kind of at the the maintainer's discretion If it's a core maintainer you should definitely let some people know about that Um, I know all the core maintainers to one degree or another and I can't imagine any of them ever actually doing that um, but contrived modules are contrived modules if it starts to get like really Um inappropriate That you should you should kind of find find someone um from the either I guess the dupal association or You know one of the the long standing members of dupal who you happen to know and ask them what you might be able to do about that um Drupal does have a core a code of conduct that you know essentially is be respectful of other people that you know To summarize it in one sentence. So if someone is really being disrespectful, you know You can kind of call them out on that if you want to go through that process But in terms of like getting your patch in there's nothing you can do about getting your patch in if it's their contrived module And they just don't want to hear from you Um, that's unfortunate You can yeah, you can fork their their their module You can offer to be a co-maintainer if the if the the problem really is I just don't have the time for you Um, you can you know try and get if there's more than one maintainer Maybe try and get in touch with one of the other maintainers Um, but there's there's not too much you can do about that Any other questions There's no maintainer at all So the question is really what happens when the maintainer is just not responsive at all And there's a bunch of patches just waiting in the queue and you you want to get this module moving along Uh, okay, so so the date mod. Yeah, that is actually a pretty good example. Um A couple things can happen either someone can step up and say I will help maintain this module Um, and if you open if if the maintainer is not even responding to that request You can open an issue in the issue queue and say please make me a maintainer I'd really like to help move this module along and if it stays open for a you know, a reasonable amount of time and nobody Um, nobody responds to it You can open an issue in the in the project applications queue and say hey I'd really like to help move this module along nobody no maintainer has been responding to my requests I'd like to take it over and someone on that team will evaluate You know the the situation and if you know if they feel it's it's appropriate Then they will make you a maintainer and you end up taking over that module Um, if if that's not something you want to take the responsibility for or you don't feel you're at the level to take responsibility for that Um, you know, you can try and find someone who would be willing to if you look through the issue queue for that module And you happen to see that there's that one guy or that one girl who's who's committing or or Uploading patch after patch after patch Mm-hmm. This will be last question. Um Then maybe that person is a great person to kind of tap and say, you know, no one's been responding Maybe you want to take the module over that would be terrific and you know, you can try and help out that way um really quick before uh before we get kicked out of here is the The what did you think page right go to the the link here? And if you could fill out the the survey and let us know what you thought that would be terrific That helps me out a lot and helps the the organizers out and then That's it. Thank you very much. How are you candy? Pretty good. You too. I've heard your guy over here. Yeah VGA