Learned on a 1-year GitHub Streak

This post is quite literally a year in the making, which has been both rewarding and exhausting.

Yesterday, I posted a commit to my “You Don’t Know JS” Book Series repo on my GitHub that marked the 365th day in my ongoing streak. In fact, I posted a whole bunch of commits to celebrate and mark the achievement.

Day 365 of my GitHub streak

A year ago, I decided to commit to at least one public “contribution” to the GitHub OSS community per day. The original goal was a year, which I’ve now hit, so my new goal is just to keep it going perpetually.

It’s been a long year. It’s been exhausting at times. There have been many, many days that I got down to 11:45pm on a day, realizing I hadn’t done anything yet, and scrambled to find something, even posting a single sentence to the books, or filing a Issue against myself for something I knew I needed to tackle, or some other such thing.

To be honest, I’m not even entirely proud of some of those “silly” contributions. But what I am proud of is that despite plenty of temptation to give up, I did stick it out. I want to be clear: it’s not about the streak itself, or any individual contribution, but the symbolism of what it means, that’s important.

This shouldn’t be taken to be about ego. Over the year, I actually had that side-handed accusation more than once. It’s not a bragging point. I’m not getting some sort of financial benefit directly from it. GitHub doesn’t throw a special party for members of the “365” club.

I just simply wanted to take my own OSS participation more seriously, more disciplined, more intentional. I hoped that if I did that publicly, it might have found a way to inspire others to do the same. And I’ve been super fortunate along the way to have many encouragements that this inspiration was working!

Observations

One thing I’ve noticed, frankly something that saddens me, is that I believe the OSS community has in some places been twisted away from a collaborative community to a promotional community — one that’s more focused on marketing and publication of what you do than soliciting what someone else can do with you.

BTW, contributing to OSS is probably a lot broader than you think it is. It’s not just about you writing code. I bet at least some people reading this may have a lack of confidence in their own code and feel nervous about submitting their code to someone else’s scrutiny. More on that in a moment.

But OSS participation is so much more than this. You can be a vital part of the OSS ecosystem simply by reading documentation and submitting Issues asking for things to be clarified. Or by writing documentation for a project. Or by writing tests. Or by filing bugs for test failures. Or… These may not seem all that important, but I’m here to say that they are some of the most valuable things we can do for each other. We all need to be doing more of this.

And btw, all of us repo maintainers need to be A LOT MORE CONCERNED with treating every single contribution and contributor as incredibly valuable and worth our time. I see an awful lot of terrible, hostile communication in OSS discussion threads. It’s kind of sickening.

If you are an OSS project maintainer and you’re so busy with so much work or Issue triaging that you can’t be bothered to not be an asshole as your default response, you either need to GTFO of OSS, or you need to get a hell of a lot better at recruiting help. There is no project, zero, zilch, nada, that’s so important that it justifies the aloof and an inhospitable treatment that often settles as norm in big/popular projects.

I think what makes OSS great is its potential to encourage and reward collaboration for the greater good of software quality. I’ve essentially open-sourced my entire career at this point, and I’ve done that because I believe in the transformative power of the community to make software better than individuals ever can. I want more people to be able to experience the truth and benefits of that mindset.

I don’t care if your project gets the most number of stars. Stars is such a poor metric for importance and viability. You know the metrics that matter most to me, and I think should matter more to others? Number of PRs and number of contributors.

Countless tweets, conference talks, blog posts, etc — all that supporting activity this year was designed for one purpose alone: not just to promote my stuff so that you’d star one of my passion-driven repos or even that you’d use my code in your site… but that you’d stop by and see what I need help with and choose to jump in.

See, I start all my code and writing with one basic assumption: every line I write is the worst possible line because it came only from me. The only way to make it better, even the best it can be, is with your help. So I start with an empty file and I commit everything I do in the open, and I hope and yearn for someone to help make it better. Then I do anything I can to try to catch people’s attention to get interested in what I’m up to so that they’ll help me.

You think you have a “confidence” problem with your own code, and that’s why you can’t get into OSS? Nah. Your problem is not that you doubt your own code too much. It’s the reverse. You don’t doubt your own code enough, and you don’t realize how important it is to get others to help you.

OSS Successes

I don’t want to end this post on a negative tone. So let me share some “wins” I think have risen out of my streak efforts.

First, my commitment to the streak would never have been able to be filled if I hadn’t been working on the YDKJS books constantly. Probably more than 80% of my year’s contributions came from that project. But the greatest part is that I’ve also had a really encouraging surge of participation in making the book content the best it can be.

I’ve had 43 contributors and 100 PR’s to date. I can’t even tell you how thrilling that is. Sure, I’m ecstatic about 9,147 stars, making us currently the 85th most starred repo of all time on GitHub! But honestly, the contributors/PRs are far, far more interesting and important to the success of YDKJS.

One more quick “win” example: super hero Sam Mikes popped up and took the lead in building out a comprehensive testing plan for my ES6 Promise polyfill Native Promise Only.

Not only that, but that same work has filtered directly into the official TC39 Test-262 Test Suites efforts. He’s a rockstar IMO, and a perfect example that embodies what I think is best about the OSS community.

The Streak Continues

I plan to keep this streak going as long as I can, not for the substance of it but for the discipline of it. Not for the ego of it but for the inspiration and symbolism of it.

And I challenge you to do the same. If you’re looking for places to contribute, I have plenty of stuff you can help me with!

Or, if you have stuff I can help you with, please let me know!

This is not going to be easy to keep the streak going. I am sure there will still be lots of days where I struggle to find something useful/relevant to do. I’m sure once the books are finished, it’ll get a lot harder because I won’t be as creative to have lines of code to write every day. I may very well fail and drop the streak.

But ultimately, OSS is going to win. We’re all going to win. Are you in?

Posted in: Misc by getify 1 Comment