Fail at Maintaining Your First OSS Project in 3 Easy Steps!
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 27 | |
Author | ||
License | CC Attribution - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/35713 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Producer | ||
Production Year | 2018 |
Content Metadata
Subject Area | |
Genre |
EmberConf 20181 / 27
3
4
6
8
12
13
15
16
18
21
22
23
25
26
00:00
VideoconferencingOperations support systemLinker (computing)Video gameTwitterMultiplication signConnectivity (graph theory)XMLComputer animation
01:17
Product (business)Table (information)Profil (magazine)Real numberProper map
01:42
Open sourceProjective planeMultiplication sign
02:08
Variety (linguistics)Meeting/Interview
02:29
Disk read-and-write headMusical ensembleOpen sourceShared memoryCodeProjective planeSoftwareGroup actionComputer programmingMeeting/InterviewLecture/Conference
03:03
TelecommunicationOnline chatMultiplication signRevision controlSoftware developerType theoryMereologyMeeting/Interview
03:21
Programmer (hardware)Projective planeMereologyTotal S.A.Level (video gaming)Open sourceMultiplication signSoftware maintenanceComputer programmingOnline helpShape (magazine)
04:01
Level (video gaming)Computer programmingProjective plane
04:21
Projective planeOpen sourceSoftware maintenanceSoftware documentationMereologySoftware testingCode
04:55
Library (computing)Open sourceProjective plane1 (number)
05:18
Mobile appNumber
05:42
Software crackingSystem callMobile appMultiplication signGroup actionGender
06:06
WebsiteOnline helpProjective planeDampingMobile appComputer animation
06:28
Group actionComputer-assisted translationSpacetime
06:53
Software frameworkProjective planeProcess (computing)
07:12
Software developerArea
07:37
Software developerPosition operatorNumberPersonal digital assistant
08:09
Software developerInclusion mapState of matterExistence
08:51
Level (video gaming)Projective planeAxiom of choiceSound effectComputer animation
09:15
Web pageLatent heatProjective planeSoftware bugOnline helpSquare numberSign (mathematics)Web pageSoftware developerControl flowMobile app
09:52
MereologyProjective planeMultiplication signProduct (business)Order (biology)Online helpPersonal digital assistantGoodness of fitVideo gameSoftware maintenanceMobile appOpen source
10:58
Video gameTerm (mathematics)Multiplication signClosed setGame controller
12:26
Focus (optics)Focus (optics)Message passingVideo gameProjective planeSound effectMultiplication signOpen source
12:55
AdditionGenderVideo game
13:18
Revision controlInternetworkingGenderCycle (graph theory)SurgeryTerm (mathematics)Metropolitan area networkPhysicalismRevision controlFood energy
14:21
Stress (mechanics)Video gameShape (magazine)
14:58
Water vaporVideo gameReal numberMereologyInternetworking
15:31
Pairwise comparisonExistenceStress (mechanics)Multiplication signEvent horizonLogical constantMathematicsMathematical analysisVideo game
17:34
Software maintenanceMultiplication signProjective planeFood energyOpen sourceDecision theoryComputer architectureCellular automaton
18:21
WeightMultiplication signProjective planeProduct (business)
18:45
PressureSoftware developerDifferent (Kate Ryan album)Strategy gameMultiplication signWeightProjective plane
19:52
Content (media)Food energyProcess (computing)Projective planeVideo gameMultiplication signCodeComputer programmingCodeRight angleDescriptive statisticsComputer configurationPressureEndliche ModelltheorieGroup actionGoodness of fitBlogOpen sourceWritingMedical imagingSpeech synthesisVector potentialRow (database)Software developerBeat (acoustics)Force
22:18
Projective planeMultiplication signVideo gameOpen source
23:03
Linker (computing)CloningSquare numberDaylight saving timeComa BerenicesPattern languageComputer animationXML
23:26
Block (periodic table)Data typeComputer animation
Transcript: English(auto-generated)
00:17
So, my first things first, I use they and them pronouns, so that means if you're tweeting
00:25
or talking or writing about this talk for any reason, just make sure you say stuff like, I really liked their talk, or I really hated their talk, or they gave a talk during bonus conf, it was okay, or I went to one of the other activities so I missed their talk.
00:42
If you screw up it's okay, just like don't make a big deal, and just be like oh I'm sorry I meant they, and then move on with your life. So, also before I get much further, I just want to say like the second half of this talk is really personal and it was really hard to put it together, so be nice and don't
01:00
assume because I'm standing here and I seem confident that it's easy to say all these things in front of a room full of people. Anyway, moving on, so anyway like my name is Lee, still. I live here in Portland, Oregon. I work at Tilda, you might have seen our logo on some, not Skylight, but yeah you might have seen our logo on some
01:24
stuff here. I mostly work on our product Skylight which is a Rails performance profiler. When the conference starts tomorrow, the proper conference, we'll have a nice table out in the hall if you're curious and you want to talk about it. I'll be hanging out at that table a lot, especially in the morning if you want to come say hi. Anyway, this talk, so what's this talk
01:45
about exactly? From the title, you might think it's about contributing to open source or maintaining your own open source project for the first time and it is about that a little bit, but like the title says, it's also about failure which we don't talk a lot about. Most of the time when you go
02:06
to a conference, you see talks about how someone succeeded at something really cool or how they solved a really hard problem that makes them look really smart or they learned something really important and it turns out you
02:21
can learn a lot from failure. So when I was younger, I was involved in a quasi-performant art activism, you name it. So I love the idea of like-minded
02:44
groups collaborating on projects together, sharing knowledge, sharing skills, working together towards a common goal. So when I first learned a program and I learned about what open source was, that is to say software whose code is
03:00
developed in a collaborative public manner, it immediately appealed to me and I knew I wanted to be involved. Now I know it's not how it really is, but in my mind at the time, it was like the software development version of a volunteer-run all-ages punk show or a cool food-not-bombs type situation.
03:21
I couldn't wait to be a part of it. More than that, I really aspired to be a maintainer of an open source project, even if it was small. It really seemed like a great opportunity to shape a friendly, helpful little community in exactly the way I wanted. I had heard horror stories about how some projects had really mean people who would make you feel like crap in your pull request
03:42
if you asked the wrong kind of question or like, you know, I just thought it would be awesome to provide the total opposite of that, like the inclusive and friendly all-ages punk show of open source. The other thing I really wanted was a side project. I was two years into my career as a programmer at the time and I still didn't have a side project.
04:01
So anytime I asked, what do I need to do to get better at programming and level up and become an expert, the general advice seemed to be, get a side project. Okay. I also noticed that the people I admired the most or had the kind of careers that I wanted, they had at least one, if not many, side projects.
04:21
Or they were open source maintainers or they were actively involved in contributing to several different open source projects. So great, I knew exactly what I had to do. All I figured out, I had to figure out was what to do. At first, I tried contributing to other people's projects. Mostly, this consisted of small things like typo fixes and code documentation,
04:45
small tests here and there. I thought maybe I'd find one that I really enjoyed and I'd really get into it and I'd become part of that community, but nothing really stuck. There's a lot of great open source projects out there like Ember. But I found a lot of the ones I was interested in were too
05:02
difficult for me to jump into contributing in the way I wanted to. I hadn't really felt any particular thing click for me as the one thing I really wanted to focus on. So the obvious answer was to create my own project. So that's the path I started down. I had no idea what to do, so I thought to myself, what do I really want to get better at?
05:22
Maybe I should try to build something using the tools I want to improve my skills on. So what was I working on at work? That's what this is all about, right? So I want to improve my skills so I can do better at work. Well, at work, I used Rails and Ember, so I decided to make an Ember app backed by a Rails API. Done. So now the question was, what kind of app to make?
05:46
At the time, I had learned recently of a group called the DeGenderettes, who are a self-described friendly international feminist and genderqueer agitprop club. And they had recently been responsible for an all gender restroom
06:01
sticker campaign, which is how I learned about them. And I really wanted to help them out. So I reached out and I was like, hey, do you want some help with your website? They didn't need help with their website. Luckily, though, it turned out they had started an app project a while back, but it was abandoned. So I'd be free to pick up that idea and start from
06:21
scratch if I wanted to. So that sounded perfect. The app they wanted was a safety app. The basic idea was like if you're in an unsafe situation that doesn't really warrant calling the police or you don't feel safe calling the police and you just want to summon a group of friends together quickly to help you hold space, you would just select which group you want to send
06:44
an alert to, then those people receive an alert, they can see where you are on Google Maps and let you know they're on their way or they can't come. It's not very complicated. So it seemed like this was well within the scope of my abilities. So I went ahead and I spun up a little Rails API,
07:02
a cute little Ember app, and I was quickly in business. So originally, I chose Ember for this project because it was a framework I already was familiar with because I wanted to improve my Ember skills so I could do better at my job. But those aren't the only reasons I chose it. I found that it fit really well with
07:21
my specific goals of being able to onboard new contributors quickly and make it easy for anyone to contribute. So I found most of the people who ended up being interested were Rails developers or people who were newer developers or both. Ember is super easy to get the hang of if you only have
07:40
experience with Rails and I found the experience of teaching newer developers how to use Ember pretty smooth. The fact that the Ember community itself is so friendly and open was also a big plus. I wanted to be sure that any newer developers, especially from marginalized communities, would be able to go online or go in the Ember community slack for assistance and have mostly positive
08:04
experiences with people. And as far as I could tell, that's what happened. As an aside, I can't overstate the importance of a friendly, inclusive community, especially for newer developers and especially for those of us from marginalized communities. I often say the biggest reason why I love Ember,
08:23
Ruby, and Rust are their communities. And it's true that Ember has other positive attributes, but when you're not used to feeling safe in the world at large and you can find a community where you can be yourself and not worry about having to defend your existence, that's a pretty big deal. So if you're serious about diversity and inclusion, I recommend you also try to,
08:46
as much as possible, implement tools that are backed by diverse, inclusive, safe communities. Anyway, all those things considered, Ember was a great choice for this. I even got up on the big stage last year trying to recruit people to work on this exact
09:02
project that I'm now here telling you I failed at. Some general things I learned really quickly after I made the switch from just hacking on my project by myself to involving outside contributors. When you're still trying to build the MVP of a project and you don't have
09:20
specific bugs or new features to make issues out of, making issues is really hard. I struggled so much with this. I would make issues like implement sign-in page without really thinking about all the steps involved in implementing the sign-in page. And whoever ended up picking up that issue who is like someone who just learned Ember
09:40
and never has done an app before is like, oh, what? I need more help than that. So you really need to break every issue down into bite-sized pieces if you want new developers to contribute. Outlining the steps they need to take to do what you need them to do. Think about when you first learned a program, if you can, and what
10:02
you would have needed in order to be set up for success and just do that thing. If you can help a new contributor succeed and feel good about their contribution, they'll come back and they'll help you out more. And they'll need less and less assistance each time. I think a lot of this stuff is old news to people who have been doing open source for a while. But for me, when I was starting
10:24
out with this project, it was totally not obvious and it took me some time to learn these things. So there I was, finally, at the part where I had the open source projects of my dreams. It may have been small, but I was there. I was technically
10:40
an open source maintainer and I was starting to actually figure out how to kind of do that. I was helping new contributors submit PRs. I was getting better at writing good issues. My little app was getting better, little by little. Unfortunately, this is also the part where life gets in the way. And
11:00
that's the thing about life. It just happens, whether you like it or not, and you cannot control how that happens. In my case, I had to deal with two really big things that ended up slowly taking more and more and more of my free time, not just in terms of the things themselves, but also in the amount of time
11:21
that I needed to take for myself to recover from dealing with those things. So first, the external things. These are the things that were outside of myself that I could not control. It was about to get a little dark, I'm sorry. So I have a very, very close person in my life who I'm just going to call Jay. Jay is somebody
11:41
who, a long time ago, had a really serious drug problem, struggled with depression, almost died several times, eventually got sober, he got his life together, and he seemed like he was doing really well. And so I thought the worst was over from when it came to him, and I thought I wouldn't have to worry about him anymore. So unfortunately, that's not how actual people work. And for
12:03
whatever reason, kind of out of nowhere, he started to just slowly unravel, and he started drinking again. After 20 years of being sober, he left his partner, just kind of went downhill from there. And then pretty soon, he was texting me a suicide note as I was on my way to the airport to go to Switzerland. He's okay
12:24
now, by the way. But this person is probably the most important person to me in my entire life. So obviously, this slow unraveling of this person had a big effect on my ability to concentrate on anything else, which definitely included my open source side project. It's hard to find the focus to review pull
12:44
requests when you're worried that someone might literally be dead in a partner, that like they disappeared, and they haven't been home in days, they won't pick up the phone. So at the same time that this was happening, I was also dealing with some pretty major internal issues within myself. So on and
13:07
off throughout my life, I've experienced bouts of gender dysphoria with varying intensity, in addition to the more kind of like run-of-the-mill depression and anxiety. And so the gender dysphoria when it was happening, it would set off
13:21
the depression and anxiety, and it would make the dysphoria worse, and so on and so forth. It was a really bad vicious cycle. And if you don't know what gender dysphoria is, the internet says it's a conflict between a person's physical or assigned gender and the gender with which he, she, or they identify. So the best way I can describe it in terms of my own
13:42
experience is that I just wanted to crawl out of my own skin, but I couldn't. For me, it was a mind-body disconnect that is very hard to describe, but additionally confusing, because even though I was assigned female at birth, I also don't feel male or like a man, whatever that means. So I definitely
14:03
felt like I was not a woman. For years, I envied people who like got top surgery and took testosterone, trans masculine people. I knew that I really wanted that, but because I didn't feel like a man, I thought it meant I couldn't, even though I obviously had incredibly intense physical gender dysphoria. So anyway, after not having any for a few years, it came back
14:25
really hard. It was like a sledgehammer, and it was worse than it had ever been before. I don't know what triggered it. Maybe it was probably the stress of dealing with that person. I don't know. Anyway, I knew I finally had to deal
14:41
with it, because I was starting to be in really bad shape, and I couldn't live like that anymore on top of all the other stuff. So this was probably one of the scariest realizations I've ever had in my entire life, because it meant a bunch of really scary things. It meant that I had to come out as trans and
15:00
non-binary to everyone I know on the internet in real life. This is the scariest for what are probably obvious reasons, because it's a cruel world out there, and people who you think are cool and open-minded can surprise you, and they can turn out to be horrible. So I was really terrified that I was going to lose people I cared about. It's also hard, after spending your whole
15:21
life hiding something, to suddenly just like have to tell literally every single person you know in your whole life, and even many strangers. So I had to learn also how to insist that people use they-them pronouns for me. I'm really concerned with the comfort of everyone around me over my own comfort most of
15:41
the time, so I knew it would be really hard to advocate for myself and insist that people use what are still considered pretty like niche pronouns. And I would probably have to explain myself and defend myself at times when all I really want to do is just like exist. I thought for a long time before I came out that I could deal with he-him pronouns, because I thought it would be a
16:02
lot easier for people to adopt. But it didn't feel right, so I mean I might be cool with it later, but right now it doesn't work for me, and so I don't learn I had to work really hard to learn to advocate for myself in that way. I had to change my name. I changed all my documents. Anyone who's
16:20
changed their name through marriage already knows what a pain this is, but it turns out it's even harder if you're just changing your first name, because did you know that your credit score just goes to zero if you change your first name? It sucks. I applied for apartment last weekend. That's how I found that house. This was a minor thing in comparison to all the other stuff, but it's still like, geez Louise. Last but not least, I go to a fair
16:45
amount of conferences. I knew that I'd have to go with a new name and like a kind of new voice and stress about whether someone would call me the wrong name or the wrong pronoun and having to explain myself to people over and over and over and over again all day during an already stressful event that I'm working at. It's really overwhelming to say the least. And yes, before you ask,
17:04
I've been stressing about this with them for the past week, so fingers crossed, y'all. It's a lot. So this is what I was doing with these intermittent crises involving someone very close to me that I was also trying to manage. So the stress of all this also meant I was struggling with a constant depression and anxiety. It got really bad at times. Luckily, I had
17:26
already started seeing my therapist, so that helped a lot. Therapists are great. Get a therapist. It didn't stop me from struggling, though. Something I had to give, so you can probably guess. That was my open-source side project. By the
17:41
time I was really in the thick of all this stuff, I had like no energy to put into it. I tried really hard. Eventually, things got to where I was telling people, I'll review your PR tomorrow. I'll review it in a few days. I'll review it in a week or so. Finally, when I was like, I'll get to it next month, I was like, maybe I have to admit that I have to quit.
18:04
So I really tried hard not to quit. I tried to recruit a co-maintainer to work on the project with me, someone who could review PRs when I couldn't, and maybe just had a little more knowledge than I did, who could help me make architecture decisions, but I couldn't find anyone who had the time. I tried
18:21
waking up extremely early to dedicate one solid hour each morning to the project. The idea there is that even a small amount of time each day dedicated to it was better than no time, and I could still get things done just like really slowly. That worked for a little while. Eventually, I was just too burned out on the rest of my life, and that one hour of sleep became worth
18:43
its weight in gold. And I had a lot of trouble sleeping at the time, so that extra hour of sleep turned out to be the difference between me being functional at work or me being completely out of it all day. So I started to choose the sleep. Some people might be able to sacrifice that
19:00
hour with no problems. Some people are okay with being very barely functional at work. But for me, to be very frank, as someone who was very poor before I became a developer, and as someone who doesn't have a safety net outside of my own ability to earn money, I'm always going to put my ability to work first because I have that scarcity mentality that everything could fall apart at any
19:22
minute, so whatever I do, I cannot screw up at work. Some people, these strategies might have been enough to keep a project going. For me, it wasn't. It was clear that I had to quit. It was not easy for me because I'm an artist before. Quitting to me meant failure, personal failure. It felt like a
19:46
moral failure of me as a person, even though I knew that didn't make any sense. There's also a lot of pressure in our industry to have programming be your whole life. Job descriptions are always looking for people with passion, meaning people who have side projects and they contribute to open source and
20:03
they're involved in the community. So a lot of us, especially early career developers, feel like we have to have a side project or we have to be working on open source in our spare time to be viable candidates for work or to get ahead at work. This is doubly true if you're a member of any marginalized community because the chances are already you feel like you have to work twice as hard. So what I learned from this experience is it's
20:24
okay to not have side projects or code outside your job. It's understandable to feel like you need to, especially early on, and it's certainly helpful if you can. But it's also okay to just work really hard at work to do well at your existing job. This is something that had not really occurred to me as an option
20:44
until we hired my coworker, Kristen, who I told her I was going to talk about her for a few minutes, but she's not here. Anyway, I'm lucky to work with a small group of extremely smart and hardworking people, but a lot of us do a lot of work outside of work. Kristen was the first person I worked with who
21:01
showed up, did their work, went all in, did a great job, and then just was like, five o'clock, oh, I'm out, and just went and lived her life. It's not something that I always want to do, but when I do need to take care of myself and not work outside of work, I just think, what would Kristen do? And it will usually steer me in the right direction, so thanks, Kristen,
21:22
for being a good role model even though you're not here. Anyway, if you really feel like you need to prove your expertise outside of work and a side project or coding in general is too much to take on, you can also focus your energy on writing talks for meetups or conferences about the things you do learn at work or the problems you solve at work. Not everyone
21:41
wants to do public speaking, so you can direct your energy to write blog posts. Of course, if you can't do any of these things, that's fine too. Don't beat yourself up. It's an unfortunate reality that many potential employers focus a lot on activities that you do outside of work, but it shouldn't keep you from getting or keeping a job. It's definitely not worth
22:01
sacrificing your mental and emotional health to get ahead at work. If you need to focus on yourself, it's okay to just go to work and do your job as well as possible, and then just go home, do something else to take care of yourself so you're fully equipped to go back to work the next day and do the best job that you can. In conclusion, the main takeaway I want you to get from this talk is if you want to work on a side
22:23
project and you want to do open source in your spare time, that's awesome. I hope some of the things I talked about during the first half of the talk are helpful, but if your real life gets in the way and you need that spare time to take care of yourself, please take care of yourself. You're important, and we need you here, especially if you're
22:43
a member of any marginalized community. Just the fact that you exist in this industry is amazing, so just keep existing, and people who are like you will see you existing, and they'll know it's okay for them to exist too, and that is huge. Thank you.