For anyone who doesn’t know, this past December I started an internship with GNOME as part of OPW, the Outreach Program for Women. The point of this program is to get more women (by which they really mean cis woman and trans folks and genderqueer/genderfluid/agender folks… so basically, people who aren’t cis MEN) involved in the FOSS world. In my particular case, it certainly succeeded! I’d been meaning to do some open source contributing for a while, but had always been too intimidated and overwhelmed to start. When it came time for OPW applications, however, I had to: had to pick a project, delve into the codebase, and submit a preliminary bugfix for my application. Which, at least for me, was fabulous, because my very application process convinced me that FOSS contribution was something that I could do, and even something that I enjoyed!
So, here I am, one month into my three months of OPW. I’ve been working on GNOME Music, the new music player for GNOME, and specifically on implementing smart playlists (like Most Played, Recently Played, and maybe someday something as ambitious as Favorites).
In some ways, it feels like I’ve done remarkably little work in a month. Part of this is because of timing—I started the internship, worked for a week at the very bottom of the steepest part of the learning curve getting very little done, then went off for a previously scheduled vacation, then holidays happened, then Vadim was away… so time-wise, the first few weeks were fragmented and disorganized. Also, I had to set up a development environment—installing Fedora 21, getting all my dependences in order, and getting GNOME Music to build properly—which is an experience akin to having teeth pulled, without drugs, while lying on a bed of needles and listening to the Numa Numa song on an endless loop. And I had to do that TWICE, because I started out on this adorable little computer lent to me by a friend which had only 1GB of RAM and I wanted to punch myself in the face whenever I tried to do anything, so I tried again on a much newer, nicer, faster machine. This whole dev. env. set-up took WAY more time than I had anticipated.
But also, it’s disconcerting to be in the dark all over again, when I’d just gotten used to feeling like I knew what was up. I had to learn a whole new (essentially docs- and comment-free) codebase, and a whole new language—SPARQL, a query language that’s super powerful but for some reason no one has written accessible tutorials or how-to’s on the interwebs, so basically my only resource was the incredibly dense, not at all beginner-friendly technical specs. Somehow, I didn’t quite expect or remember how slowly work goes when you’re just starting out, when you’re just learning your tools.
However, recently, I’ve started writing actual code. I feel like I have a handle (well, more of a handle, anyway) on how this program actually works, how to write in SPARQL, and the tools at my disposal for testing things. (I don’t know how I could do any of this, for instance, if I couldn’t tool around with querying my database directly from the command line with
It’s also occurred to me that I’ve been blogging remarkably little about this whole experience. Which is odd, because I actually do really enjoy writing blog posts, and generally jump at the opportunity to talk loudly into the internet, even if no one is listening. But somehow OPW feels different—more serious, more adult, less happy-fun-play-time—than Hacker School. At Hacker School I kept a blog mostly for myself, as a journal and archive, a sounding board for my own ideas and a check on myself that I actually understood [concept X], which I could tell by whether or not I could coherently explain it to someone else. Now that I’m actually doing a Job (okay, Internship) in the Real World, somehow everything seems higher-stakes. I’m now reluctant to post those messy “why am I failing?” blog posts, or get really excited about this cool new thing I learned but everyone else has known for years. I want my posts to demonstrate the Excellent Things I have done, and be insightful and ground-breaking. And I realize that I’ve essentially been kicking my own blogging repeatedly in the shins.
So, I’m a month into OPW, finally out of holiday madness and ready to settle down into a consistent schedule. I’m past the worst of the learning curve and have a pretty decent handle on SPARQL, the architecture of GNOME Music, and what needs to happen next in this project. I’m going to revisit my Rules for Myself During OPW so (hopefully) I can successfully work from home without accidentally shutting off my brain and spending the whole day staring at cat pictures because I’m too dehydrated to work. I’m going to document my code as I go, to make things easier on the next person who has to dive head-first into this codebase. And I’m going to blog more, the impressiveness of said blog posts be damned. (Future posts I have in mind: “What is SPARQL, Anyway?”; “How I Chose My First FOSS Project”; “How to (Start) Figur(ing) Out an Alien Codebase”; “How Does GNOME Music Work?”) And mostly, I’m gonna spend the next two months writing some cool code! I encourage you to do the same! (And if you want to contribute to GNOME Music, I am MORE than happy to explain how everything works!)