1 00:00:04,960 --> 00:00:19,999 [Music] 2 00:00:20,600 --> 00:00:24,720 um we've got a a bunch of amazing 3 00:00:23,640 --> 00:00:27,320 speakers for you and we're going to 4 00:00:24,720 --> 00:00:31,000 start with Stephanie Mullen um who's 5 00:00:27,320 --> 00:00:33,040 here all the way from New York thank you 6 00:00:31,000 --> 00:00:35,239 um where she tackles tough problems in 7 00:00:33,040 --> 00:00:36,640 information security particularly those 8 00:00:35,239 --> 00:00:38,360 revolving around data wrangling 9 00:00:36,640 --> 00:00:41,719 visualization building tools and 10 00:00:38,360 --> 00:00:43,520 Gathering data and knowledge sharing um 11 00:00:41,719 --> 00:00:45,760 and she's going to tell you all about 12 00:00:43,520 --> 00:00:50,520 the cool books she's written and the 13 00:00:45,760 --> 00:00:52,879 work she's done developing numpy do and 14 00:00:50,520 --> 00:00:56,120 um she's got a Bachelor's degree of 15 00:00:52,879 --> 00:00:58,199 Science in operations research from 16 00:00:56,120 --> 00:00:59,359 Columbia University's F Foundation 17 00:00:58,199 --> 00:01:01,519 School of Engineering and applied 18 00:00:59,359 --> 00:01:05,799 science that is a lot of words it's a 19 00:01:01,519 --> 00:01:07,840 very long we called it C's C's C's like 20 00:01:05,799 --> 00:01:12,159 the seven C's 21 00:01:07,840 --> 00:01:14,240 ah got a sh it somehow yes um and she 22 00:01:12,159 --> 00:01:16,520 enjoys traveling the world and inventing 23 00:01:14,240 --> 00:01:18,640 new recipes and leting new languages 24 00:01:16,520 --> 00:01:21,759 spoken among both people and 25 00:01:18,640 --> 00:01:24,290 computers uh so I'm going to let 26 00:01:21,759 --> 00:01:27,749 Stephanie get 27 00:01:24,290 --> 00:01:27,749 [Applause] 28 00:01:28,640 --> 00:01:32,159 started all right all right good 29 00:01:30,479 --> 00:01:34,399 afternoon everyone welcome to getting 30 00:01:32,159 --> 00:01:37,119 started with open- Source contributions 31 00:01:34,399 --> 00:01:38,880 again my name is Stephanie Mullen uh a 32 00:01:37,119 --> 00:01:41,399 software engineer at Bloomberg in New 33 00:01:38,880 --> 00:01:43,439 York City and I'm a core developer of 34 00:01:41,399 --> 00:01:45,200 the numpy do package which I'll tell the 35 00:01:43,439 --> 00:01:47,600 story about how that came to be in this 36 00:01:45,200 --> 00:01:49,719 talk and I'm also the author of Hands-On 37 00:01:47,600 --> 00:01:52,159 data analysis with 38 00:01:49,719 --> 00:01:54,680 pandas so I want to start by dispelling 39 00:01:52,159 --> 00:01:57,159 some myths around open source 40 00:01:54,680 --> 00:01:58,920 contributions so the first is that only 41 00:01:57,159 --> 00:02:00,439 professional developers or maintainers 42 00:01:58,920 --> 00:02:02,320 can contribute to open open source 43 00:02:00,439 --> 00:02:03,640 projects and just like you don't have to 44 00:02:02,320 --> 00:02:05,960 be a professional developer or 45 00:02:03,640 --> 00:02:08,080 maintainer to use those projects you 46 00:02:05,960 --> 00:02:09,759 don't have to be one to contribute there 47 00:02:08,080 --> 00:02:12,959 are ways to contribute regardless of 48 00:02:09,759 --> 00:02:15,040 your experience level and many projects 49 00:02:12,959 --> 00:02:17,360 accept help in a variety of 50 00:02:15,040 --> 00:02:19,200 forms and the second myth is that only 51 00:02:17,360 --> 00:02:21,519 experts can contribute something 52 00:02:19,200 --> 00:02:24,519 meaningful so again there's a way to 53 00:02:21,519 --> 00:02:26,599 contribute in a variety of ways and this 54 00:02:24,519 --> 00:02:28,239 can vary depending on your level and 55 00:02:26,599 --> 00:02:31,000 there are actually certain cases where 56 00:02:28,239 --> 00:02:32,959 not being an expert in tool is actually 57 00:02:31,000 --> 00:02:35,480 a preferred way for you to get some 58 00:02:32,959 --> 00:02:37,680 contributions in you think about 59 00:02:35,480 --> 00:02:39,280 newcomer documentation right who's going 60 00:02:37,680 --> 00:02:41,280 to be in the best position to write 61 00:02:39,280 --> 00:02:43,319 something that will understand where all 62 00:02:41,280 --> 00:02:45,879 the newcomers trip up than someone who 63 00:02:43,319 --> 00:02:48,000 is just a newcomer themselves it is very 64 00:02:45,879 --> 00:02:50,400 hard for experts to put themselves in 65 00:02:48,000 --> 00:02:53,319 the shoes of a 66 00:02:50,400 --> 00:02:55,599 newcomer okay so now that we've had 67 00:02:53,319 --> 00:02:57,840 those myths dispelled uh we're going to 68 00:02:55,599 --> 00:03:00,159 talk about how you find a project to 69 00:02:57,840 --> 00:03:02,480 work on and this is by far are the 70 00:03:00,159 --> 00:03:04,440 hardest part of actually contributing to 71 00:03:02,480 --> 00:03:05,959 open source you have essentially an 72 00:03:04,440 --> 00:03:07,040 infinite number of projects out there 73 00:03:05,959 --> 00:03:09,200 and infinite number of things you could 74 00:03:07,040 --> 00:03:12,159 potentially be looking at how do you 75 00:03:09,200 --> 00:03:13,599 find the one or the few that makes sense 76 00:03:12,159 --> 00:03:16,159 for you to get 77 00:03:13,599 --> 00:03:17,840 started and again there are variety of 78 00:03:16,159 --> 00:03:20,200 ways to contribute it doesn't have to be 79 00:03:17,840 --> 00:03:21,799 adding some fancy new feature to a tool 80 00:03:20,200 --> 00:03:24,720 it can be something like improving the 81 00:03:21,799 --> 00:03:27,360 documentation translating documentation 82 00:03:24,720 --> 00:03:29,040 adding better examples making tutorials 83 00:03:27,360 --> 00:03:30,799 building a community around a project 84 00:03:29,040 --> 00:03:33,319 reporting bugs 85 00:03:30,799 --> 00:03:35,360 there are a variety of ways so the first 86 00:03:33,319 --> 00:03:38,040 thing I like to do is sit down and 87 00:03:35,360 --> 00:03:39,760 brainstorm potential projects and at 88 00:03:38,040 --> 00:03:42,640 this point I just write down what are 89 00:03:39,760 --> 00:03:44,280 projects I've used recently no extra 90 00:03:42,640 --> 00:03:46,799 criteria just that have I used this 91 00:03:44,280 --> 00:03:48,640 recently write it down later on you will 92 00:03:46,799 --> 00:03:50,840 look through the list and evaluate for 93 00:03:48,640 --> 00:03:53,439 suitability so the first level just 94 00:03:50,840 --> 00:03:56,159 whatever comes to mind you write it 95 00:03:53,439 --> 00:03:58,439 down and then once you have that list 96 00:03:56,159 --> 00:04:00,720 you can evaluate those projects for 97 00:03:58,439 --> 00:04:02,760 suitability I like to do this with five 98 00:04:00,720 --> 00:04:04,360 criteria the first thing is I look at 99 00:04:02,760 --> 00:04:07,159 the software license that it's 100 00:04:04,360 --> 00:04:08,599 distributed with and this for a variety 101 00:04:07,159 --> 00:04:10,360 of reasons one might be that your 102 00:04:08,599 --> 00:04:12,000 employer has restrictions on what types 103 00:04:10,360 --> 00:04:13,879 of projects you can contribute to based 104 00:04:12,000 --> 00:04:15,519 on that license so that's a very easy 105 00:04:13,879 --> 00:04:18,079 way to weed things 106 00:04:15,519 --> 00:04:21,919 out the next is to look at recent 107 00:04:18,079 --> 00:04:24,440 activity so if a project hasn't had any 108 00:04:21,919 --> 00:04:27,160 releases or nobody commenting on it 109 00:04:24,440 --> 00:04:28,639 talking about it Etc then maybe it's 110 00:04:27,160 --> 00:04:30,639 been replaced with something else or 111 00:04:28,639 --> 00:04:33,080 it's not being used or people you know 112 00:04:30,639 --> 00:04:34,639 moved away from it you want to avoid 113 00:04:33,080 --> 00:04:37,199 those projects you want ones that are 114 00:04:34,639 --> 00:04:40,080 still active right if it's active people 115 00:04:37,199 --> 00:04:41,800 will be using it also contributing to it 116 00:04:40,080 --> 00:04:43,960 and someone will probably come and 117 00:04:41,800 --> 00:04:48,199 review what you work on as 118 00:04:43,960 --> 00:04:49,960 well the next is the codebase size so a 119 00:04:48,199 --> 00:04:51,680 smaller code-based project it will be a 120 00:04:49,960 --> 00:04:53,240 lot easier for you to get a foothold 121 00:04:51,680 --> 00:04:55,560 right there's less code that you need to 122 00:04:53,240 --> 00:04:57,800 review how it works to understand what 123 00:04:55,560 --> 00:05:00,240 you can contribute to or or how to even 124 00:04:57,800 --> 00:05:02,199 you know add from a developer standpoint 125 00:05:00,240 --> 00:05:04,320 to that project and then on the flip 126 00:05:02,199 --> 00:05:06,560 side something that has a much larger 127 00:05:04,320 --> 00:05:07,880 code base will then be a lot harder to 128 00:05:06,560 --> 00:05:09,360 find your foothold there's a lot more 129 00:05:07,880 --> 00:05:11,520 code that you have to go through and 130 00:05:09,360 --> 00:05:13,600 understand however I like to think of 131 00:05:11,520 --> 00:05:17,039 the code base in combination with the 132 00:05:13,600 --> 00:05:19,600 text stack so for an example like if 133 00:05:17,039 --> 00:05:20,960 something has a really big code base and 134 00:05:19,600 --> 00:05:22,919 maybe you're not familiar with that 135 00:05:20,960 --> 00:05:24,639 particular tool but you know that that 136 00:05:22,919 --> 00:05:26,560 tool is built on top of something else 137 00:05:24,639 --> 00:05:27,840 that you are very familiar with you're 138 00:05:26,560 --> 00:05:30,240 now in a very good position to 139 00:05:27,840 --> 00:05:32,240 contribute to that so example of 140 00:05:30,240 --> 00:05:35,000 something like that would be Seaborn the 141 00:05:32,240 --> 00:05:37,319 data visualization Library maybe you've 142 00:05:35,000 --> 00:05:38,880 never really looked at how Seaborn works 143 00:05:37,319 --> 00:05:41,199 but you're really really familiar with 144 00:05:38,880 --> 00:05:42,880 map plot lib you are now in a fantastic 145 00:05:41,199 --> 00:05:44,479 position to contribute to Seaborn just 146 00:05:42,880 --> 00:05:47,000 from understanding that because it's 147 00:05:44,479 --> 00:05:50,039 built right on top of 148 00:05:47,000 --> 00:05:52,800 motet and the final thing is repository 149 00:05:50,039 --> 00:05:54,919 access so you need to be able to find 150 00:05:52,800 --> 00:05:57,560 the public repository for the code it 151 00:05:54,919 --> 00:05:59,280 does not have to be on GitHub but if 152 00:05:57,560 --> 00:06:01,639 it's not public obviously you can't you 153 00:05:59,280 --> 00:06:01,639 can't control 154 00:06:02,360 --> 00:06:07,199 contributed okay so now that we have 155 00:06:05,240 --> 00:06:09,039 those brainstormed projects and 156 00:06:07,199 --> 00:06:11,080 hopefully we filtered down you have some 157 00:06:09,039 --> 00:06:12,599 projects that you can look further into 158 00:06:11,080 --> 00:06:14,680 I'm going to walk you through five 159 00:06:12,599 --> 00:06:17,000 strategies that I've used to get started 160 00:06:14,680 --> 00:06:18,000 contributing to various python uh open 161 00:06:17,000 --> 00:06:19,880 source 162 00:06:18,000 --> 00:06:22,000 projects and the first one is to 163 00:06:19,880 --> 00:06:23,599 participate in Sprints and you're all 164 00:06:22,000 --> 00:06:26,199 very lucky that at this event there are 165 00:06:23,599 --> 00:06:28,599 Sprints so Monday and Tuesday and there 166 00:06:26,199 --> 00:06:32,120 is availability from what I hear uh I 167 00:06:28,599 --> 00:06:35,560 will be uh on Monday with my project 168 00:06:32,120 --> 00:06:38,759 data more so be sure to check it out but 169 00:06:35,560 --> 00:06:40,080 I did my first Sprint at europython in 170 00:06:38,759 --> 00:06:42,639 July of 171 00:06:40,080 --> 00:06:44,400 2022 and I have to use my mouse because 172 00:06:42,639 --> 00:06:48,680 my clicker died so hopefully NOP you 173 00:06:44,400 --> 00:06:52,000 can't see that's great so I am in the 174 00:06:48,680 --> 00:06:54,360 back left where the arrow is pointing so 175 00:06:52,000 --> 00:06:56,639 that was me and directly across from me 176 00:06:54,360 --> 00:06:58,680 were two of the S kit learn 177 00:06:56,639 --> 00:07:00,800 maintainers and what they had us working 178 00:06:58,680 --> 00:07:04,000 on most of us had never contributed to 179 00:07:00,800 --> 00:07:06,039 pyit learn before so they had us working 180 00:07:04,000 --> 00:07:07,280 on their documentation and making sure 181 00:07:06,039 --> 00:07:09,319 that all their dock strings were 182 00:07:07,280 --> 00:07:10,840 compliant with the numpy do 183 00:07:09,319 --> 00:07:13,440 standard 184 00:07:10,840 --> 00:07:16,280 and yeah the C okay it's not going to 185 00:07:13,440 --> 00:07:18,479 work so um making sure that we're 186 00:07:16,280 --> 00:07:20,240 compliant with numpy standard so each 187 00:07:18,479 --> 00:07:22,560 one of us would take one particular 188 00:07:20,240 --> 00:07:24,520 class or one particular function update 189 00:07:22,560 --> 00:07:26,479 the doc string make a PR and I had 190 00:07:24,520 --> 00:07:28,840 gotten a few of those already emerged 191 00:07:26,479 --> 00:07:30,440 and then I started to have a problem it 192 00:07:28,840 --> 00:07:32,759 was telling me their script that they 193 00:07:30,440 --> 00:07:35,000 had to test that the changes were were 194 00:07:32,759 --> 00:07:37,759 working it was telling me that the dock 195 00:07:35,000 --> 00:07:39,440 string was not ending in a period and I 196 00:07:37,759 --> 00:07:41,479 looked at it and it very much looked 197 00:07:39,440 --> 00:07:43,080 like the end of the period I called over 198 00:07:41,479 --> 00:07:44,400 one of the maintainers we stared at it 199 00:07:43,080 --> 00:07:46,680 for a bit couldn't figure out what it 200 00:07:44,400 --> 00:07:49,199 was so I decided just delete the whole 201 00:07:46,680 --> 00:07:51,599 thing and and start over and it turned 202 00:07:49,199 --> 00:07:53,960 out it was a trailing white space at the 203 00:07:51,599 --> 00:07:56,599 end of the period so something that was 204 00:07:53,960 --> 00:08:00,000 not visible looking at from from our end 205 00:07:56,599 --> 00:08:01,520 as humans so I asked the maintainer how 206 00:08:00,000 --> 00:08:03,800 how do I not have this happen in the 207 00:08:01,520 --> 00:08:05,720 future and the suggestion was to just 208 00:08:03,800 --> 00:08:07,080 install pre-commit now that was another 209 00:08:05,720 --> 00:08:09,000 thing that I hadn't heard of at that 210 00:08:07,080 --> 00:08:11,599 point and at this point I did have to 211 00:08:09,000 --> 00:08:13,759 leave so I went when I went home and I 212 00:08:11,599 --> 00:08:16,520 researched about pre-commit got that set 213 00:08:13,759 --> 00:08:18,560 up uh for my personal projects for work 214 00:08:16,520 --> 00:08:20,000 and then also ended up making several 215 00:08:18,560 --> 00:08:22,319 contributions to other open source 216 00:08:20,000 --> 00:08:24,080 libraries adding pre-commit setups for 217 00:08:22,319 --> 00:08:25,639 them so you'll see that a lot if you 218 00:08:24,080 --> 00:08:27,280 contribute to a larger project you're 219 00:08:25,639 --> 00:08:30,039 going to be exposed to tooling and 220 00:08:27,280 --> 00:08:31,479 things that they use and small projects 221 00:08:30,039 --> 00:08:33,039 could really benefit from that but maybe 222 00:08:31,479 --> 00:08:36,039 they don't have it set up and there's a 223 00:08:33,039 --> 00:08:38,680 big opportunity for you to transfer that 224 00:08:36,039 --> 00:08:40,640 knowledge so overall I think this my 225 00:08:38,680 --> 00:08:43,200 first Sprint was definitely a fantastic 226 00:08:40,640 --> 00:08:44,920 experience I will say that Sprints do 227 00:08:43,200 --> 00:08:47,240 vary depending on where you go and which 228 00:08:44,920 --> 00:08:49,279 projects and it is a bit of finding the 229 00:08:47,240 --> 00:08:51,640 good affinity for yourself but I have 230 00:08:49,279 --> 00:08:53,839 contrib I have participated in Sprints 231 00:08:51,640 --> 00:08:56,560 both as contributors several times and 232 00:08:53,839 --> 00:08:58,680 more recently this year as a maintainer 233 00:08:56,560 --> 00:09:00,839 and it is a great experience from from 234 00:08:58,680 --> 00:09:03,519 either side you definitely you will 235 00:09:00,839 --> 00:09:05,399 always learn something so some tips to 236 00:09:03,519 --> 00:09:07,640 make the most out of your Sprint 237 00:09:05,399 --> 00:09:10,079 experience the first thing is to pick a 238 00:09:07,640 --> 00:09:11,800 project that interests you you are 239 00:09:10,079 --> 00:09:13,480 limited in which projects are actually 240 00:09:11,800 --> 00:09:15,000 there you can start your own even if 241 00:09:13,480 --> 00:09:16,720 you're not a maintainer and you can just 242 00:09:15,000 --> 00:09:18,120 gather group of people that are 243 00:09:16,720 --> 00:09:20,560 passionate about some project and want 244 00:09:18,120 --> 00:09:21,959 to contribute to it but finding 245 00:09:20,560 --> 00:09:24,320 something that interests you will help 246 00:09:21,959 --> 00:09:25,720 you be motivated to stick with it 247 00:09:24,320 --> 00:09:27,600 throughout the Sprint but then also 248 00:09:25,720 --> 00:09:29,720 afterwards to continue contributing to 249 00:09:27,600 --> 00:09:31,839 it 250 00:09:29,720 --> 00:09:34,320 the next tip would also be to look for 251 00:09:31,839 --> 00:09:36,959 beginner friendly projects now beginner 252 00:09:34,320 --> 00:09:38,440 friendly is subjective so if a project 253 00:09:36,959 --> 00:09:40,800 says they're beginner friendly it might 254 00:09:38,440 --> 00:09:43,360 mean that they can support people new to 255 00:09:40,800 --> 00:09:45,920 the project beginners to the project or 256 00:09:43,360 --> 00:09:47,320 beginners to coding entirely now 257 00:09:45,920 --> 00:09:48,720 everyone's very friendly at these events 258 00:09:47,320 --> 00:09:50,399 you can ask if you're entirely new to 259 00:09:48,720 --> 00:09:52,480 coding you're just starting out with Git 260 00:09:50,399 --> 00:09:54,320 or you've never used GitHub before you 261 00:09:52,480 --> 00:09:57,399 can just ask see which projects are able 262 00:09:54,320 --> 00:09:59,480 to support that kind of 263 00:09:57,399 --> 00:10:01,320 contribution and if you do need help at 264 00:09:59,480 --> 00:10:03,279 any point you're going to be sure to ask 265 00:10:01,320 --> 00:10:06,480 the maintainers for any support that you 266 00:10:03,279 --> 00:10:08,640 need so most of the time maintainers 267 00:10:06,480 --> 00:10:10,800 will come to these events with a goal in 268 00:10:08,640 --> 00:10:12,600 mind so in the case of of pyit learn 269 00:10:10,800 --> 00:10:15,399 they wanted to get their dock strings up 270 00:10:12,600 --> 00:10:17,519 to par with numpy do so they are they're 271 00:10:15,399 --> 00:10:19,160 invested in getting that done and they 272 00:10:17,519 --> 00:10:21,680 want to help people help them get that 273 00:10:19,160 --> 00:10:23,279 done right so both sides are very 274 00:10:21,680 --> 00:10:25,320 willing to help each 275 00:10:23,279 --> 00:10:27,360 other and it's important that you go 276 00:10:25,320 --> 00:10:29,360 into this experience with an open mind 277 00:10:27,360 --> 00:10:30,959 it doesn't matter how much experience 278 00:10:29,360 --> 00:10:33,360 you have going in you will definitely 279 00:10:30,959 --> 00:10:35,760 learn something right you can use this 280 00:10:33,360 --> 00:10:37,639 opportunity to ask the developers how 281 00:10:35,760 --> 00:10:39,519 they maybe how they navigate a massive 282 00:10:37,639 --> 00:10:41,399 code base what kind of tools they use 283 00:10:39,519 --> 00:10:43,399 how is their you know what's their IDE 284 00:10:41,399 --> 00:10:44,800 of choice what extensions do they have 285 00:10:43,399 --> 00:10:46,079 uh you're just exposed to more things 286 00:10:44,800 --> 00:10:47,920 that you might not bump into on a 287 00:10:46,079 --> 00:10:49,320 day-to-day basis and on the flip side 288 00:10:47,920 --> 00:10:50,440 you might be using something that you 289 00:10:49,320 --> 00:10:53,040 think's really cool that other people 290 00:10:50,440 --> 00:10:55,200 haven't seen and you can share that as 291 00:10:53,040 --> 00:10:57,839 well so the second strategy is to 292 00:10:55,200 --> 00:10:59,440 contribute examples to the documentation 293 00:10:57,839 --> 00:11:00,839 so I'm sure everyone in this room has at 294 00:10:59,440 --> 00:11:03,200 some point looked at a Project's 295 00:11:00,839 --> 00:11:05,880 documentation and not quite understood 296 00:11:03,200 --> 00:11:07,560 how to use it and it may have been that 297 00:11:05,880 --> 00:11:09,160 there were no examples but it could also 298 00:11:07,560 --> 00:11:11,440 have been that the examples just weren't 299 00:11:09,160 --> 00:11:13,920 super helpful for me maybe some super 300 00:11:11,440 --> 00:11:15,680 expert on the topic wrote the examples 301 00:11:13,920 --> 00:11:17,639 doesn't see how a newcomer might get 302 00:11:15,680 --> 00:11:21,200 tripped up on it right and then you as a 303 00:11:17,639 --> 00:11:23,920 newcomer didn't understand so in my case 304 00:11:21,200 --> 00:11:26,760 I was using Pol the polom degree 305 00:11:23,920 --> 00:11:29,560 function from numpy and there were no 306 00:11:26,760 --> 00:11:31,839 examples at the time and I was trying to 307 00:11:29,560 --> 00:11:33,160 figure out a couple things what happened 308 00:11:31,839 --> 00:11:34,839 when there were trailing zero 309 00:11:33,160 --> 00:11:37,600 coefficients in the polinomial what 310 00:11:34,839 --> 00:11:39,680 would the degree result in and then what 311 00:11:37,600 --> 00:11:41,720 order I even needed to put the 312 00:11:39,680 --> 00:11:43,480 coefficients in I'm I didn't major in 313 00:11:41,720 --> 00:11:44,839 math I don't know if there's a standard 314 00:11:43,480 --> 00:11:46,920 but there wasn't anything explicitly 315 00:11:44,839 --> 00:11:50,920 saying that around the function that I 316 00:11:46,920 --> 00:11:52,480 needed so I had to go open up python try 317 00:11:50,920 --> 00:11:54,760 out a bunch of things just to figure out 318 00:11:52,480 --> 00:11:57,040 what actually was happening right and so 319 00:11:54,760 --> 00:11:59,519 I didn't stop there because surely 320 00:11:57,040 --> 00:12:01,160 someone else at some point potentially 321 00:11:59,519 --> 00:12:02,880 in the past or in the future would 322 00:12:01,160 --> 00:12:05,839 probably have similar if not the same 323 00:12:02,880 --> 00:12:07,279 questions that I did so I packaged up 324 00:12:05,839 --> 00:12:09,959 the examples and put them in the 325 00:12:07,279 --> 00:12:12,920 documentation and I sent a PR to numpy 326 00:12:09,959 --> 00:12:15,959 and they were very grateful to receive 327 00:12:12,920 --> 00:12:17,920 that so there is a documentation Paradox 328 00:12:15,959 --> 00:12:19,959 right every project needs good 329 00:12:17,920 --> 00:12:22,639 documentation but it's very time 330 00:12:19,959 --> 00:12:24,199 intensive to write it which then means 331 00:12:22,639 --> 00:12:26,839 that maintainers might need to 332 00:12:24,199 --> 00:12:28,399 deprioritize writing the documentation 333 00:12:26,839 --> 00:12:30,600 in order to keep moving the project 334 00:12:28,399 --> 00:12:32,279 forward now that's not necessarily a bad 335 00:12:30,600 --> 00:12:34,079 thing right because then as people 336 00:12:32,279 --> 00:12:37,079 coming from the outside you now have a 337 00:12:34,079 --> 00:12:39,800 very good in to participate in that 338 00:12:37,079 --> 00:12:41,680 project and one thing I like to do is 339 00:12:39,800 --> 00:12:43,680 you can take a a big project something 340 00:12:41,680 --> 00:12:44,839 like numpy and you can poke around in 341 00:12:43,680 --> 00:12:47,880 parts of the library that maybe you 342 00:12:44,839 --> 00:12:49,880 haven't used before maybe there won't be 343 00:12:47,880 --> 00:12:51,519 examples there either so then you can 344 00:12:49,880 --> 00:12:53,160 figure out how it works by creating 345 00:12:51,519 --> 00:12:54,920 those examples and then add those 346 00:12:53,160 --> 00:12:56,720 examples to the documentation so now 347 00:12:54,920 --> 00:12:58,760 you've learned more about how that 348 00:12:56,720 --> 00:13:01,079 Library works and then you've also made 349 00:12:58,760 --> 00:13:02,639 a cont contribution right so then the 350 00:13:01,079 --> 00:13:04,920 next person that comes along can just 351 00:13:02,639 --> 00:13:07,720 learn from your 352 00:13:04,920 --> 00:13:10,000 example the third strategy is to browse 353 00:13:07,720 --> 00:13:12,839 open issues for ideas and here's where I 354 00:13:10,000 --> 00:13:16,600 really need that laser pointer so uh 355 00:13:12,839 --> 00:13:19,440 bear with me so here is the a screenshot 356 00:13:16,600 --> 00:13:22,440 from the GitHub issues tab in psyit 357 00:13:19,440 --> 00:13:24,480 learn now if you look up to the top 358 00:13:22,440 --> 00:13:26,959 where it says issues in this screenshot 359 00:13:24,480 --> 00:13:31,480 at this moment in time there were about 360 00:13:26,959 --> 00:13:33,320 1,600 issues for site kit learn now I 361 00:13:31,480 --> 00:13:36,880 said browse open issues I definitely 362 00:13:33,320 --> 00:13:39,160 don't mean read 1600 issues that's no 363 00:13:36,880 --> 00:13:40,519 one's going to do that so you need to 364 00:13:39,160 --> 00:13:42,399 understand how to filter things down to 365 00:13:40,519 --> 00:13:44,360 something that is manageable so in the 366 00:13:42,399 --> 00:13:46,760 screenshot what I'm doing here is I've 367 00:13:44,360 --> 00:13:49,480 selected just the ones that are labeled 368 00:13:46,760 --> 00:13:52,279 good first issue now you have to be 369 00:13:49,480 --> 00:13:53,880 careful with that because that label is 370 00:13:52,279 --> 00:13:56,040 something that is available when you 371 00:13:53,880 --> 00:13:57,839 create a new GitHub repository but 372 00:13:56,040 --> 00:14:00,279 there's no requirement for the project 373 00:13:57,839 --> 00:14:03,199 to keep it or keep even keep it with 374 00:14:00,279 --> 00:14:05,199 that exact same name so if that's not 375 00:14:03,199 --> 00:14:07,120 there then you can click and I would 376 00:14:05,199 --> 00:14:09,480 also recommend doing this in general so 377 00:14:07,120 --> 00:14:12,519 just to the to the right of the search 378 00:14:09,480 --> 00:14:15,959 bar there's a labels button and in this 379 00:14:12,519 --> 00:14:18,959 case there are 100 labels so 100 is much 380 00:14:15,959 --> 00:14:21,440 much less than 1600 right so you can do 381 00:14:18,959 --> 00:14:23,839 a quick scan through those 100 labels 382 00:14:21,440 --> 00:14:25,880 which are how they're classifying their 383 00:14:23,839 --> 00:14:27,639 issues and a lot of times there will be 384 00:14:25,880 --> 00:14:29,839 a description so you can kind of get a 385 00:14:27,639 --> 00:14:31,560 fla flavor for it by scrolling down you 386 00:14:29,839 --> 00:14:33,759 might see that oh there's a lot of of 387 00:14:31,560 --> 00:14:35,279 these labels that are just mapping to a 388 00:14:33,759 --> 00:14:37,240 module in the library so I'm not going 389 00:14:35,279 --> 00:14:38,680 to worry about looking at those but then 390 00:14:37,240 --> 00:14:42,279 I maybe see some that are saying 391 00:14:38,680 --> 00:14:44,320 beginner or meta issue or you know you 392 00:14:42,279 --> 00:14:45,680 can see the module one on the bottom or 393 00:14:44,320 --> 00:14:47,360 documentation right so you can figure 394 00:14:45,680 --> 00:14:49,279 out what makes sense what's in your 395 00:14:47,360 --> 00:14:51,600 wheelhouse and what you want to focus on 396 00:14:49,279 --> 00:14:54,480 and then use that to filter down the 397 00:14:51,600 --> 00:14:56,079 issues once you have those filtered down 398 00:14:54,480 --> 00:14:58,120 the last thing I like to do is before 399 00:14:56,079 --> 00:15:00,399 clicking into anything if you look all 400 00:14:58,120 --> 00:15:03,279 the way to the right there's comment 401 00:15:00,399 --> 00:15:06,440 counts so in general I like to look for 402 00:15:03,279 --> 00:15:08,160 things that have little to no comments 403 00:15:06,440 --> 00:15:10,480 and this is because if something has 404 00:15:08,160 --> 00:15:12,839 more comments it might mean that it's 405 00:15:10,480 --> 00:15:14,160 not clear what is actually to be done 406 00:15:12,839 --> 00:15:16,399 there might be disagreements people 407 00:15:14,160 --> 00:15:18,720 going back and forth or someone may have 408 00:15:16,399 --> 00:15:21,079 claimed it right and you don't want to 409 00:15:18,720 --> 00:15:24,000 be wasting your time on those now the 410 00:15:21,079 --> 00:15:26,120 one caveat to that is the middle issue 411 00:15:24,000 --> 00:15:28,800 here if you look it has 412 00:15:26,120 --> 00:15:31,079 227 comments and that is actually a very 413 00:15:28,800 --> 00:15:34,279 good good one to take and the reason 414 00:15:31,079 --> 00:15:37,160 here is that pyit learn has these meta 415 00:15:34,279 --> 00:15:40,120 issue which is the second label on there 416 00:15:37,160 --> 00:15:42,000 and the this again labels are defined by 417 00:15:40,120 --> 00:15:43,560 the repository but something similar in 418 00:15:42,000 --> 00:15:45,800 this similar vein would be something to 419 00:15:43,560 --> 00:15:48,959 look for when you scan those labels so 420 00:15:45,800 --> 00:15:52,040 this meta issue is psyit learn wants to 421 00:15:48,959 --> 00:15:53,519 apply a change across a massive part of 422 00:15:52,040 --> 00:15:55,480 their API potentially the whole thing so 423 00:15:53,519 --> 00:15:57,519 think of the numpy 424 00:15:55,480 --> 00:15:59,360 example right so they want to apply that 425 00:15:57,519 --> 00:16:01,560 over over the whole thing they don't 426 00:15:59,360 --> 00:16:03,560 want to put one massive PR touching 427 00:16:01,560 --> 00:16:04,880 everything so instead what they do is 428 00:16:03,560 --> 00:16:07,240 they break it down they might have a 429 00:16:04,880 --> 00:16:08,920 giant checklist or something saying here 430 00:16:07,240 --> 00:16:11,519 are all the spots we want to apply this 431 00:16:08,920 --> 00:16:13,600 change and then it's divide and conquer 432 00:16:11,519 --> 00:16:16,000 which means you find something like this 433 00:16:13,600 --> 00:16:17,639 you probably have several example PRS 434 00:16:16,000 --> 00:16:21,000 you can consult that have already been 435 00:16:17,639 --> 00:16:22,759 reviewed merged doing the exact changes 436 00:16:21,000 --> 00:16:24,240 slightly you know slightly different of 437 00:16:22,759 --> 00:16:27,240 what you need to do so this is a 438 00:16:24,240 --> 00:16:30,199 fantastic thing to look for so tips on 439 00:16:27,240 --> 00:16:32,959 being successful with this strategy 440 00:16:30,199 --> 00:16:35,240 so you can look for labels like beginner 441 00:16:32,959 --> 00:16:36,600 easy good first issue again keeping in 442 00:16:35,240 --> 00:16:39,519 mind that everyone will have different 443 00:16:36,600 --> 00:16:42,399 ones and also grain of salt with 444 00:16:39,519 --> 00:16:44,680 beginner and easy right that might 445 00:16:42,399 --> 00:16:47,120 that's entirely subjective and depending 446 00:16:44,680 --> 00:16:49,440 on the developer who puts that tag it 447 00:16:47,120 --> 00:16:52,240 might mean beginner to the project it 448 00:16:49,440 --> 00:16:55,920 might mean you know beginner or easy as 449 00:16:52,240 --> 00:16:57,480 in it's not it's hard for or sorry hard 450 00:16:55,920 --> 00:16:59,199 might mean something like it's hard for 451 00:16:57,480 --> 00:17:02,680 the developer but maybe not for 452 00:16:59,199 --> 00:17:04,839 everybody to do I've had um success with 453 00:17:02,680 --> 00:17:08,559 a library called uh Yellow Brick which 454 00:17:04,839 --> 00:17:11,839 does um visualizations for psych learn 455 00:17:08,559 --> 00:17:13,360 models and they had an issue we'd really 456 00:17:11,839 --> 00:17:15,360 love to have a pre-commit set up and 457 00:17:13,360 --> 00:17:17,120 they tagged it hard and that's because 458 00:17:15,360 --> 00:17:19,240 everyone that was a core developer at 459 00:17:17,120 --> 00:17:21,760 that time did not know how to do it so 460 00:17:19,240 --> 00:17:24,640 it was hard so grain of salt on on the 461 00:17:21,760 --> 00:17:26,760 beginner and and easy 462 00:17:24,640 --> 00:17:29,600 ones and then it's also important that 463 00:17:26,760 --> 00:17:31,120 you don't disregard old issues so just 464 00:17:29,600 --> 00:17:32,720 like with a search engine people might 465 00:17:31,120 --> 00:17:35,120 not go to the second page of results the 466 00:17:32,720 --> 00:17:36,640 third the fourth and the case I just 467 00:17:35,120 --> 00:17:38,320 mentioned with that pre-commit one I 468 00:17:36,640 --> 00:17:40,120 think that issue was four years old when 469 00:17:38,320 --> 00:17:42,080 I took it and then they were super super 470 00:17:40,120 --> 00:17:44,960 thankful that it was done because it was 471 00:17:42,080 --> 00:17:47,080 hard for them right in the case of 472 00:17:44,960 --> 00:17:49,360 Seaborn I've also had success going to 473 00:17:47,080 --> 00:17:52,000 the end of the backlog I found an issue 474 00:17:49,360 --> 00:17:54,280 that was 9 months old no comments but it 475 00:17:52,000 --> 00:17:55,679 was created by the creator of Seaboard 476 00:17:54,280 --> 00:17:57,720 and when I read it I was like this is 477 00:17:55,679 --> 00:18:00,159 just map plot lib a for Loop and map 478 00:17:57,720 --> 00:18:02,039 plot lib and and the important thing 479 00:18:00,159 --> 00:18:03,880 here is that you just ask hey are you 480 00:18:02,039 --> 00:18:05,760 still interested in this I would like to 481 00:18:03,880 --> 00:18:08,640 work on it you get a yes and then you're 482 00:18:05,760 --> 00:18:10,760 good to go and so that actually led to 483 00:18:08,640 --> 00:18:12,960 the reference line functionality for 484 00:18:10,760 --> 00:18:14,880 grid plots of facet grid and Joint plot 485 00:18:12,960 --> 00:18:17,760 if anyone has used 486 00:18:14,880 --> 00:18:20,000 that and again those meta issues if you 487 00:18:17,760 --> 00:18:21,520 see some tag or some label related to 488 00:18:20,000 --> 00:18:23,720 that definitely go and check those out 489 00:18:21,520 --> 00:18:26,280 those are great ways to get 490 00:18:23,720 --> 00:18:27,880 started and if anything that you find 491 00:18:26,280 --> 00:18:30,400 that it does interest you always make 492 00:18:27,880 --> 00:18:31,960 sure that you com ment on that issue 493 00:18:30,400 --> 00:18:33,880 that doesn't mean that someone else 494 00:18:31,960 --> 00:18:35,679 won't just beat you to it it's still 495 00:18:33,880 --> 00:18:38,240 possible but at least you've announced 496 00:18:35,679 --> 00:18:39,919 your intention and people who respect 497 00:18:38,240 --> 00:18:42,400 you know the etiquette of that won't go 498 00:18:39,919 --> 00:18:43,760 and and try to do that and that's also a 499 00:18:42,400 --> 00:18:45,480 good spot for you to ask if you need 500 00:18:43,760 --> 00:18:46,840 help you can also volunteer that you 501 00:18:45,480 --> 00:18:49,120 want to work on something even if you're 502 00:18:46,840 --> 00:18:50,720 not sure how to do it and I have more 503 00:18:49,120 --> 00:18:53,080 tips in the article I've linked here the 504 00:18:50,720 --> 00:18:55,000 slides are on my website uh for more 505 00:18:53,080 --> 00:18:57,600 tips on how to navigate the issue 506 00:18:55,000 --> 00:19:00,679 tracker so the fourth strategy is to 507 00:18:57,600 --> 00:19:02,480 identify and fix a bug so this is now 508 00:19:00,679 --> 00:19:04,159 going to require a heavier use of the 509 00:19:02,480 --> 00:19:05,960 project it's still possible that you're 510 00:19:04,159 --> 00:19:07,440 reading the docs and you find a typo or 511 00:19:05,960 --> 00:19:08,960 an Omission right and that's something 512 00:19:07,440 --> 00:19:11,360 that you can fix you know with little 513 00:19:08,960 --> 00:19:13,000 experience but to kind of bump into the 514 00:19:11,360 --> 00:19:16,440 spots where it's not working correctly 515 00:19:13,000 --> 00:19:18,320 you do need to be more of a heavy user 516 00:19:16,440 --> 00:19:20,120 so if that's the case then you would 517 00:19:18,320 --> 00:19:24,000 file a bug report and that's what I have 518 00:19:20,120 --> 00:19:25,919 up here so in my case I had been using 519 00:19:24,000 --> 00:19:27,880 pandas and I had bumped into this this 520 00:19:25,919 --> 00:19:30,159 bug several times where I was trying to 521 00:19:27,880 --> 00:19:32,720 make a quick horiz izontal bar plot and 522 00:19:30,159 --> 00:19:34,919 I wanted to label the x and the Y AIS 523 00:19:32,720 --> 00:19:37,200 and every time I put the x-axis label it 524 00:19:34,919 --> 00:19:39,159 ended up on the y- AIS and I put the y- 525 00:19:37,200 --> 00:19:40,720 access label and it just went nowhere 526 00:19:39,159 --> 00:19:42,120 and I had bumped into this on multiple 527 00:19:40,720 --> 00:19:44,679 versions and eventually just got 528 00:19:42,120 --> 00:19:48,360 frustrated and went and saw if anyone 529 00:19:44,679 --> 00:19:50,280 had reported this now Panda's very very 530 00:19:48,360 --> 00:19:52,679 popular Library why wasn't this fixed 531 00:19:50,280 --> 00:19:55,039 that was kind of my question right but 532 00:19:52,679 --> 00:19:57,520 plotting functionality is I would say a 533 00:19:55,039 --> 00:19:59,320 lesser known functionality of pandas and 534 00:19:57,520 --> 00:20:02,600 so maybe it hadn't really been bumped 535 00:19:59,320 --> 00:20:04,000 into another possibility is that someone 536 00:20:02,600 --> 00:20:06,280 could have potentially put in the bug 537 00:20:04,000 --> 00:20:08,440 report but it was deprioritized by the 538 00:20:06,280 --> 00:20:10,280 maintainers so that's a very interesting 539 00:20:08,440 --> 00:20:12,960 thing to think about you're bumping into 540 00:20:10,280 --> 00:20:14,520 a bug volunteering to fix it means you 541 00:20:12,960 --> 00:20:17,000 now control the priority of when that 542 00:20:14,520 --> 00:20:20,159 actually gets fixed which is very 543 00:20:17,000 --> 00:20:22,280 nice so when you're going to report a 544 00:20:20,159 --> 00:20:23,840 bug first make sure that it hasn't 545 00:20:22,280 --> 00:20:26,240 already been reported you don't want to 546 00:20:23,840 --> 00:20:28,080 be wasting the maintainer time so you 547 00:20:26,240 --> 00:20:29,919 should be checking the latest version 548 00:20:28,080 --> 00:20:31,960 and also the main branch of that 549 00:20:29,919 --> 00:20:34,960 repository checking that it's doesn't 550 00:20:31,960 --> 00:20:37,240 still exist also check the open and 551 00:20:34,960 --> 00:20:39,200 closed issues so it's possible someone 552 00:20:37,240 --> 00:20:41,120 has already done it they decided it was 553 00:20:39,200 --> 00:20:42,200 a feature not a bug and so you know 554 00:20:41,120 --> 00:20:45,080 consider 555 00:20:42,200 --> 00:20:46,400 that when you do put in that bug report 556 00:20:45,080 --> 00:20:47,919 you want to make sure that you're 557 00:20:46,400 --> 00:20:49,280 detailed with what you're putting in 558 00:20:47,919 --> 00:20:51,280 there and also you provide a 559 00:20:49,280 --> 00:20:53,400 reproducible example so that the 560 00:20:51,280 --> 00:20:55,080 maintainers can look at that and make an 561 00:20:53,400 --> 00:20:57,240 accurate decision of whether that should 562 00:20:55,080 --> 00:21:00,159 be fixed or 563 00:20:57,240 --> 00:21:02,200 not also you can volunteer to fix it 564 00:21:00,159 --> 00:21:03,640 right that's you you found a bug you can 565 00:21:02,200 --> 00:21:05,760 go and fix it and again that's your way 566 00:21:03,640 --> 00:21:08,760 of prioritizing that it gets done right 567 00:21:05,760 --> 00:21:10,240 away and also if you don't know how to 568 00:21:08,760 --> 00:21:11,880 do it but you want to fix it because it 569 00:21:10,240 --> 00:21:14,320 impacts you and it bothers you right you 570 00:21:11,880 --> 00:21:16,039 can ask them i' love to work on this I'm 571 00:21:14,320 --> 00:21:18,120 not sure how to get started can you give 572 00:21:16,039 --> 00:21:20,799 me some 573 00:21:18,120 --> 00:21:23,600 pointers okay and the final strategy is 574 00:21:20,799 --> 00:21:25,440 to propose and Implement a new feature 575 00:21:23,600 --> 00:21:27,720 so now again you need to be even more of 576 00:21:25,440 --> 00:21:30,080 a heavy user what are the pain points of 577 00:21:27,720 --> 00:21:31,440 using this software uh is there 578 00:21:30,080 --> 00:21:33,240 something that could be done in a better 579 00:21:31,440 --> 00:21:35,880 way is there a feature 580 00:21:33,240 --> 00:21:37,880 missing so in my case coming back to 581 00:21:35,880 --> 00:21:39,760 numpy do once I had learned about 582 00:21:37,880 --> 00:21:42,080 pre-commit I was surprised that there 583 00:21:39,760 --> 00:21:43,960 wasn't a pre-commit hook for numpy do so 584 00:21:42,080 --> 00:21:45,640 it seemed to me that would be much nicer 585 00:21:43,960 --> 00:21:47,039 especially in the S learn case that 586 00:21:45,640 --> 00:21:49,000 every time you were adding code or 587 00:21:47,039 --> 00:21:50,480 something it was checking are you still 588 00:21:49,000 --> 00:21:52,760 following the stock string standard that 589 00:21:50,480 --> 00:21:54,720 you want to follow so I had built that 590 00:21:52,760 --> 00:21:56,840 on my own and then I approached the 591 00:21:54,720 --> 00:21:59,880 numpy team by putting in a feature 592 00:21:56,840 --> 00:22:01,320 request asking if they were interested 593 00:21:59,880 --> 00:22:03,840 and they were and then eventually that 594 00:22:01,320 --> 00:22:05,559 did lead to an invitation to become uh a 595 00:22:03,840 --> 00:22:07,440 core 596 00:22:05,559 --> 00:22:09,480 developer so just like with the bug 597 00:22:07,440 --> 00:22:12,320 report you want to make sure that it Al 598 00:22:09,480 --> 00:22:14,000 hasn't already been requested so this is 599 00:22:12,320 --> 00:22:15,400 harder right because you might use very 600 00:22:14,000 --> 00:22:17,640 different words to describe something 601 00:22:15,400 --> 00:22:19,679 than someone else so best effort look 602 00:22:17,640 --> 00:22:21,919 through open and closed 603 00:22:19,679 --> 00:22:24,240 issues and then when you're describing 604 00:22:21,919 --> 00:22:25,960 in your feature your feature request 605 00:22:24,240 --> 00:22:27,720 make sure that you're very detailed you 606 00:22:25,960 --> 00:22:29,799 know show examples of what how you want 607 00:22:27,720 --> 00:22:32,000 it to work and you know what kind of 608 00:22:29,799 --> 00:22:35,000 effect it would have on your on your 609 00:22:32,000 --> 00:22:36,919 workflow again you can volunteer to do 610 00:22:35,000 --> 00:22:39,120 that change you're clearly invested in 611 00:22:36,919 --> 00:22:42,600 it you're interested in it but it's 612 00:22:39,120 --> 00:22:44,799 important that you go in again you know 613 00:22:42,600 --> 00:22:46,600 there is a possibility that they don't 614 00:22:44,799 --> 00:22:48,799 want that right it is a lot of work for 615 00:22:46,600 --> 00:22:51,440 the maintainers to then maintain foreign 616 00:22:48,799 --> 00:22:53,600 code that maybe they weren't new they 617 00:22:51,440 --> 00:22:54,919 were new to um and it's also possible 618 00:22:53,600 --> 00:22:58,159 that it just doesn't fit with the road 619 00:22:54,919 --> 00:23:00,120 map so be polite about it and you can 620 00:22:58,159 --> 00:23:01,760 also I mean if you want to good for you 621 00:23:00,120 --> 00:23:04,000 can create your own project that's 622 00:23:01,760 --> 00:23:05,600 that's totally fine I've also linked to 623 00:23:04,000 --> 00:23:06,919 a very good talk from europ python that 624 00:23:05,600 --> 00:23:08,960 gives you more of an idea about the 625 00:23:06,919 --> 00:23:11,600 maintainers perspective and why they 626 00:23:08,960 --> 00:23:13,120 might not want to make certain or accept 627 00:23:11,600 --> 00:23:15,520 certain feature requests like 628 00:23:13,120 --> 00:23:17,840 that okay so those are the five 629 00:23:15,520 --> 00:23:19,400 strategies and they were in order of the 630 00:23:17,840 --> 00:23:20,600 least experience to the most experience 631 00:23:19,400 --> 00:23:23,400 you would need to have with a given 632 00:23:20,600 --> 00:23:24,880 project but there is no best strategy 633 00:23:23,400 --> 00:23:26,640 you just tailor it to whatever you're 634 00:23:24,880 --> 00:23:29,240 you're comfortable with because no 635 00:23:26,640 --> 00:23:30,520 contribution is too small 636 00:23:29,240 --> 00:23:32,159 okay so I'll talk a little bit about 637 00:23:30,520 --> 00:23:33,640 being successful when you actually make 638 00:23:32,159 --> 00:23:36,200 your contribution 639 00:23:33,640 --> 00:23:38,320 now so I've said this a few times I'll 640 00:23:36,200 --> 00:23:40,240 say it again if there's an issue up 641 00:23:38,320 --> 00:23:41,799 there always let the world know that 642 00:23:40,240 --> 00:23:43,559 you're working on it comment on it and 643 00:23:41,799 --> 00:23:46,400 say that you're working on it say if you 644 00:23:43,559 --> 00:23:47,799 need help if the project has set up 645 00:23:46,400 --> 00:23:50,320 instructions for getting your Dev 646 00:23:47,799 --> 00:23:52,400 environment up and ready please follow 647 00:23:50,320 --> 00:23:54,400 those right that's going to help you 648 00:23:52,400 --> 00:23:56,320 actually be able to not get frustrated 649 00:23:54,400 --> 00:23:58,840 when you're working on it but you might 650 00:23:56,320 --> 00:24:00,760 also run into problems where those setup 651 00:23:58,840 --> 00:24:02,520 directions don't work and now you 652 00:24:00,760 --> 00:24:04,200 actually have your first PR right right 653 00:24:02,520 --> 00:24:05,240 there fixing it before you even get to 654 00:24:04,200 --> 00:24:08,080 the hard 655 00:24:05,240 --> 00:24:10,679 stuff if you are new to development then 656 00:24:08,080 --> 00:24:11,919 definitely try out documentation based 657 00:24:10,679 --> 00:24:13,919 contributions because that gets you 658 00:24:11,919 --> 00:24:16,279 comfortable with Git and GitHub without 659 00:24:13,919 --> 00:24:18,480 the extra overhead of of the 660 00:24:16,279 --> 00:24:19,640 coding and if you have the opportunity 661 00:24:18,480 --> 00:24:21,159 if you're around tomorrow definitely 662 00:24:19,640 --> 00:24:23,559 attend the 663 00:24:21,159 --> 00:24:26,120 Sprints and make sure that you're polite 664 00:24:23,559 --> 00:24:29,120 and patient in all of your interactions 665 00:24:26,120 --> 00:24:31,720 this is public and people will remember 666 00:24:29,120 --> 00:24:34,760 if you're not polite later 667 00:24:31,720 --> 00:24:36,960 on and also remember that maintainers 668 00:24:34,760 --> 00:24:39,120 are doing this many times outside of 669 00:24:36,960 --> 00:24:40,520 their work so be patient and allow them 670 00:24:39,120 --> 00:24:42,960 time to get to 671 00:24:40,520 --> 00:24:44,480 things so once you've had that first 672 00:24:42,960 --> 00:24:46,559 contribution then it's about keeping up 673 00:24:44,480 --> 00:24:48,279 the momentum and I alluded to this 674 00:24:46,559 --> 00:24:50,480 before but look for opportunities to 675 00:24:48,279 --> 00:24:51,960 share knowledge across projects maybe 676 00:24:50,480 --> 00:24:53,960 one project you're working on has this 677 00:24:51,960 --> 00:24:55,360 really neat GitHub action workflow that 678 00:24:53,960 --> 00:24:57,399 does something that another project 679 00:24:55,360 --> 00:24:58,760 would benefit from look out for those 680 00:24:57,399 --> 00:24:59,840 that's a great way to get started to get 681 00:24:58,760 --> 00:25:03,000 your foot in the 682 00:24:59,840 --> 00:25:04,440 door you can also help others contribute 683 00:25:03,000 --> 00:25:06,600 so I'll talk about the case of of the 684 00:25:04,440 --> 00:25:09,399 psyit learn meta issue so if you've 685 00:25:06,600 --> 00:25:11,760 already had a PR merged or a couple PRS 686 00:25:09,399 --> 00:25:13,399 where you've had comments on and you see 687 00:25:11,760 --> 00:25:14,559 someone else putting in a PR towards 688 00:25:13,399 --> 00:25:16,600 that same meta issue or towards 689 00:25:14,559 --> 00:25:18,120 something else and the CI is failing 690 00:25:16,600 --> 00:25:19,520 maybe you know why you can comment on 691 00:25:18,120 --> 00:25:21,600 that issue and let them know hey I think 692 00:25:19,520 --> 00:25:24,799 you need to fix you know this thing over 693 00:25:21,600 --> 00:25:26,320 here or you can say oh you know they've 694 00:25:24,799 --> 00:25:28,039 pointed out this particular thing to me 695 00:25:26,320 --> 00:25:30,520 in the past you might want to address 696 00:25:28,039 --> 00:25:32,120 this and all that kind of stuff whether 697 00:25:30,520 --> 00:25:33,679 or not it's contributing code or just 698 00:25:32,120 --> 00:25:35,159 being active in that Community will 699 00:25:33,679 --> 00:25:37,240 definitely get you noticed by the 700 00:25:35,159 --> 00:25:39,919 maintainers they will start recognizing 701 00:25:37,240 --> 00:25:42,360 your name your GitHub handle if you meet 702 00:25:39,919 --> 00:25:44,039 them at conferences they will come up to 703 00:25:42,360 --> 00:25:45,679 you and I've had that happen with um 704 00:25:44,039 --> 00:25:47,440 several different projects and that's 705 00:25:45,679 --> 00:25:49,880 really nice to meet people in person 706 00:25:47,440 --> 00:25:52,679 after all those interactions 707 00:25:49,880 --> 00:25:54,440 online and you know that was also how 708 00:25:52,679 --> 00:25:56,080 again the numpy do core developer 709 00:25:54,440 --> 00:25:57,440 invitation came around it was just 710 00:25:56,080 --> 00:26:00,320 caring about the project and 711 00:25:57,440 --> 00:26:02,840 contributing things so you know 712 00:26:00,320 --> 00:26:05,559 consistently okay so I hope I inspired 713 00:26:02,840 --> 00:26:08,080 you to start your open- Source Journey 714 00:26:05,559 --> 00:26:09,760 um if you do end up using any of these 715 00:26:08,080 --> 00:26:11,600 strategies or making your first 716 00:26:09,760 --> 00:26:13,840 contribution I'd love to hear about it I 717 00:26:11,600 --> 00:26:15,159 will celebrate with you on LinkedIn or 718 00:26:13,840 --> 00:26:17,919 sorry on social media it doesn't have to 719 00:26:15,159 --> 00:26:20,320 be LinkedIn uh anything and you can let 720 00:26:17,919 --> 00:26:21,919 me know on the left I have a QR code for 721 00:26:20,320 --> 00:26:23,720 feedback to let me know what you thought 722 00:26:21,919 --> 00:26:26,600 of this talk and on the right there are 723 00:26:23,720 --> 00:26:28,740 links to follow me and I hope to see you 724 00:26:26,600 --> 00:26:36,380 at Sprints tomorrow thank you 725 00:26:28,740 --> 00:26:36,380 [Applause]