This post was most recently updated on December 7th, 2022.6 min read.
… And that’s a wrap! This year I had the chance, and the privilege to once again participate in the month-long celebration of open-source, Hacktoberfest. And unlike last year, I took the time to write about the experience again!
And for someone like me, who doesn’t really do much open-source stuff, it is a bit of an experience. And the event itself has come a long way!
2022: Hacktoberfest has matured
A few years back, there was quite a controversy around the event, as the organizers didn’t really formulate the rules for what’s acceptable conduct and what isn’t. This led to quite a few participants concentrating more on quantity than quality – PRs would be submitted to random repositories simply by changing wordings in readme.md.
Don’t get me wrong – documentation, and the clarity of it is important. But these PRs simply had additional line breaks added or perhaps a few angle brackets added for style. Something like below.
Understandably, some of the maintainers were getting quite annoyed by this event. But the organizers (eventually?) listened to the feedback and changed the event rules to be opt-in for maintainers (and tightened the rules on acceptable contributions in general).
So, long story short, I think nowadays the event encourages higher quality contributions than before, which means everyone wins! Except maybe the participants, who have to work just that little bit harder for that t-shirt and the stickers… ;)
Is participating in Hacktoberfest a sign of privilege?
Contributing to open-source projects isn’t something I usually get to do during my work hours.
Last year was an exception. I was working for Etteplan at that time, and they had a fantastic employee benefit called “Hobbyism” which – among other aspects – compensated employees for their contributions to open-source projects, up to a certain annual limit.
Regrettably, they ended this benefit at the end of last year, which was also one tiny reason among many for me to leave the company.
So that leaves me using my free time for open-source stuff.
But isn’t GitHub essentially your CV, if you’re a programmer? This open-source stuff – it’s good for your employment prospects, right?
Eh, yeah, and no, I guess.
You still occasionally see the hot takes about never hiring programmers without massively active GitHub profiles (a few such takes below).
I’ve always felt it’s an unfair position – not everyone has the opportunity to contribute to projects on GitHub during their work hours, and many of us don’t even have the leisure to do so during our off hours. Or if we do, it means neglecting other aspects of our lives.
Or if you’re like me, you have almost never coded anything if you didn’t either get paid to do it, save money doing it, or earned study credits or something for it. And that’s not to say I haven’t coded a fair bit – but I’ve just been good at getting paid to do it since around 2004 (I was 14 or 15 when I started freelancing).
Sure – valuing open source contributions makes sense – but requiring them is downright stupid, promotes an overall toxic hiring culture, and likely just unnecessarily limits your hiring pool.
Then again, I’m definitely biased. I mainly contribute to projects as a hobby, and I don’t really have much time for hobbies, so my wall of contributions doesn’t look that impressive either. The vast majority of my contribution at work is either not code, or is committed to Azure DevOps. Or private GitHub repositories.
This year, while working for Omnia, I have also downshifted (mostly for tax reasons…) and only work 4 days a week. That leaves me more time to spend with the family – and makes it a bit more socially acceptable to neglect my family for a couple of nights during October to participate in Hacktoberfest.
But what to do for Hacktoberfest? Where to contribute to?
The problem was, the last year I’ve had very little contact with any interesting open-source projects or libraries. Most of the stack at Omnia is either home-cooked or comes straight from Microsoft. So I hadn’t really run into any obvious things to contribute in the past 6 months.
So, I got in touch with the team developing one of the tools that I have used (very heavily, even) earlier in my life – the magnificent PowerShell module by the PnP (SharePoint Developer Patterns and Practices community – whew, that’s a mouthful!), and the good folks maintaining the repository pointed me to a few issues open issues (and a couple of other improvements) I could start from.
So, what did I do this year?
My Hacktoberfest stuff in 2022
Okay – so what did I do?
I don’t actually code every day. Come to think of it, I don’t think coding has been a part of my day-to-day work (save for some projects at Etteplan) since around 2016 or 2017 when I took more responsibility for one of the bigger customers at Blue Meteorite. That feels like a lifetime ago, even though it’s just 5 or so years.
In the past 6 months, I’ve cranked out more YAML than C#. But it’s fun to gather my thoughts and actually write some proper code every now and then. And this year I chose to jump in to contribute to the PnP PowerShell repository – a community effort to maintain commandlets to use in PowerShell for Power Users and Admins of Microsoft Graph and different Microsoft 365 services.
And my contributions were as follows:
|#2466||Add new |
|I added a new, pretty simple commandlet to query Microsoft 365 Groups (also known as Unified Groups) that are set to expire pretty soon. Developing this was interesting since my dev tenants didn’t have the necessary licenses (Azure AD P2), but I could luckily borrow a corporate environment for this one.. 😁||I got to configure Group expiration for the first time and had to figure out the licensing, after which the actual implementation was pretty quick. Some playing around in Graph Explorer was required :)||🔗|
|#2467||Add Filter |
|Someone asked for support to Filter Teams teams (queried by Get-PnPTeamsTeam) by different AAD properties. This was pretty straightforward to add to an existing commandlet.||A new parameter and some changes to the background utility class are required. Had to refresh my memory on Advanced Queries, as knowing what you can request from AAD is a bit convoluted even through the Graph API…||🔗|
|Get-PnPRecycleBinItem was unable to handle thousands of items (and by extension, Restore-PnPRecycleBinItem, too). Trying to restore or even query items when there are over 5000 of them in the Recycle Bin would usually just throw a “The attempted operation is prohibited because it exceeds the list view threshold.”, or in some cases just complains about “The request uses too many resources.” and fails.||I got to remind myself how trash OneDrive is. It’s been about 3 weeks since I started generating test data, and OneDrive is still trying to figure out what to do with a couple hundred thousand files. It was just faster to use the web UI instead of letting the client application sync the changes from Windows Explorer. Really frustrating how bad the sync is.||🔗|
|#2473||Docs improvements||When working on my other Pull Requests, I noticed a few typos and a minor mistake or two in the documentation site for the PnP PowerShell project. I figured I’d fix them all in one PR.||Documenting edge cases and making existing documentation easier to read is valuable. I mean – this one was a pretty easy contribution since I just fixed the docs that I used… But on a more general level, I wish more people put effort into documentation :)||🔗|
|I implemented advanced queries for TeamsUtility, which is used by commandlets like Get-PnPTeamsTeam. That enabled me to add support for “advanced queries“, which.. Well, I don’t like the name, but it’s just additional query features against AAD properties when you’re using Microsoft Graph.||A continuation of the earlier PR, I added the required headers and parameters to support the convoluted (“advanced”) queries.||🔗|
|#2499||Super basic |
|Restore-PnPRecycleBinItem now accepts -RowLimit parameter (it was always supposed to, but simply ignored it). |
I suppose this has been an oversight years ago but didn’t raise any eyebrows since most people – yours truly included – would just pipe anything to be restored to the commandlet. And that worked.
|I ended up struggling with OneDrive even more and learning how to just generate, remove and restore data with PowerShell instead.|
I’m incredibly frustrated by OneDrive.
And that’s it – that’s more than what’s required, but most of the work was quickly done.
I hope this can serve as another example that you don’t need to be able to do magical things in order to be helpful to other people – and on a more concrete note, in order to be able to participate in open-source projects :)
Hacktoberfest 2022 T-Shirt design
Ah – I’m planting trees in my yard and purchasing more solar panels, so I thought I’d rather get the t-shirt. And here’s what it looks like – the design is a bit different from the last few years, but it looks awesome nonetheless!
So, without further ado, here’s the design you (we) all have been googling for:
Looking forward to the event next year again :)
- How to manually install Windows updates? - November 28, 2023
- How to restore an old version of a Trello card? - November 21, 2023
- How to fix winget when it’s throwing a “0x8a15000f : Data required by the source is missing”? - November 14, 2023