Late in 2018, I got into a groove updating and improving my very-long-running open source project, POP Forums. It was a huge refactoring project, updating the CSS framework, embracing Dapper for object mapping from the database, rewriting the admin area to use Vue.js, adding support for ElasticSearch and Azure Functions... it didn't look new, but the internals were massively different. As that effort went on, leading to a release that following May, I committed to making at least one contribution to OSS per week. Having transitioned into more manager than maker, I wanted to keep some street cred, and frankly I still find the process and the learning to be fun. This week, I've contributed for 100 straight weeks!
I started to branch out a little, too. Last year I made a little library to break-out the external identity bits from the forums and .NET itself, with POP Identity. Early this summer, I finally put the code for my blog into the open source realm, not surprisingly called POP Blog, and added functionality to make it work as a podcast aggregator as well. I needed to get my old podcast off of 15-year-old code (and Windows), so it was a natural thing to do. And then, in a moment of temporary insanity and frustration with the direction of music services, I built MLocker, my personal music cloud service. I had a POP Forums release this year, too. I made a whole lot of free software this year!
Yeah, so I'm humble bragging a little, but I want to explain why I think it's important that we do this sort of thing.
- On average, we take more than we give when it comes to open source. Most of us who code for a living work on things that are proprietary as it is, so it's hard to balance it out. I don't mind helping out.
- For me personally, I wouldn't have a career if it weren't for the open source tools I've been able to use over the years. I feel somewhat obligated to give back. The scope doesn't matter... the smallest contributions help.
- I get tired of hearing that the .NET open source community is not robust. I mean, the footprint on Github is huge, but this reputation persists. I'm here to say the reality is better than that.
- Adopting stuff as it comes out creates the feedback loop necessary for rapid iteration and improvement. I mean, if I don't keep complaining that the Azure Functions emulator doesn't support v5, who will? 😀
I think we can still do a better job at participating in the community, but it has come a long way in a short period of time. I see far fewer issues logged that look like "IT DOESN'T WORK FIX IT FOR ME!" and more thoughtful, working-the-problem communication. I often say that software has become a practice of composition, and not so much one of algorithms and computer science. That can be true, while professionally we still do the work to improve our code and the code we consume.
Will I continue the streak? Maybe. It's not the worst habit to have. Try it yourself... maybe a month or two to start.