DEV Community

Cover image for Preptember
Mike Stemle
Mike Stemle Subscriber

Posted on

Preptember

It's that time of year again, and Hacktoberfest is right around the corner! I thought I'd give you a quick run-down on how I prepare for what I'm going to do for Hacktoberfest.

This isn't a long-form piece, and these are just my own practices. I'd love for y'all to share your practices in the comments, or in your own posts.

Step one: Project Selection

I work in a lot of spaces, and the hardest part is selecting what to work on. Typically I like to find a variety of stuff to do, so I'll usually select two projects to work on, and then I'll keep an eye out on the Discord server for Hacktoberfest and participate in a fun community project.

An example of a community project that I had a great time with was in 2020. Someone was trying to get people to add silly stuff to his dynamic webpage project, so I made a stop-light widget in vanilla JavaScript and HTML for him. That was fun, and Hacktoberfest really sets the scene to both contribute to interesting projects, and to have a bit of fun. I encourage both.

This year, I have two projects:

Datadog Service Catalog Metadata Provider (DDSCMP)

I'm working on the DDSCMP some more. I think the Datadog Service Catalog is really helpful for production support activities, and this project helps folks set that up more easily. This project has been received very well, and I think there's a lot more I can do with it still.

@manchicken/promise-regulation

The @manchicken/promise-regulation module is going to get some attention this Hacktoberfest mostly because I've started using it more. I originally wrote this as an experiment, trying to see if I could take a more traditional Promise.all() approach and control the number of concurrent promises executing at once. I mostly want to work on sprucing it up some, and giving it some documentation.

Step two: Task Selection

Now that I've chosen my projects, I need to make sure I have a roadmap of stuff I can do. It's fun for me to look at what might already be there from last year, and then add to it what I can think of for this year. If I'm working on a project that has a user-base, I usually try to prioritize requests from users first, but that's not a hard-and-fast rule.

It may seem counter-intuitive to not always prioritize user requests first, but it's important that maintainers do what is best for the project first. User requests are very important, but so are tests, documentation, bug reports, and maintenance.

When you're choosing your tasks, though, make sure that you're focusing on what you want to get out of Hacktoberfest.

Step three: Prep Dev Environment

It can be frustrating to sit down to work on code, only to have to fight with a build environment. To set yourself up for success, use Preptember to get your development environment ready to go. Do you need to put together a build environment in a Docker image? Want to try Codespaces? This is the perfect time to start thinking about those choices.

The DDSCMP project I've been working on has never been tested in any Actions runner other than ubuntu-latest. This should be resolved since not everybody uses that runner. I'm expecting some environmental issues to arise from this.

For the @manchicken/promise-regulation module, I've only tested that on macOS and inside of GitHub Actions using ubuntu-latest. As September continues, I'm going to whip up GitHub Actions workflows which test the module using other runner types so that I can make sure it works in other environments.

That's it!

Well, that's pretty much what I do to prep for Hacktoberfest. I'd love to see what y'all are doing.

Here are the links to the projects I'm working on, again:

Also, don't forget that Hacktoberfest is about community building and fun; don't forget to participate in both the community and the fun. This year will have different prizes, now that they've discontinued the t-shirts, but there's so much more to Hacktoberfest than the gifts.

Here are some more resources on Hacktoberfest:

Top comments (0)