I heard the word Hacktoberfest for the first time in March of 2020. I was set the task of looking into it and after a week of researching I was convinced Camunda had to participate. Hacktoberfest is a month-long celebration of all things open source created by Digital Ocean. It takes place annually during the month of October and people can earn prizes (usually a t-shirt) by contributing to various open source projects on GitHub.
I wrote up a proposal drawing on the blog posts, conference talks, and case studies from companies that have participated in the past. I learned so much from them, especially SendGrid’s Elmer Thomas. I was able to communicate the potential for outreach and engagement to the stakeholders and got approval for the campaign in early June. The next four months were nothing short of a whirlwind.
By September we had reworked our How to Contribute docs, reorganized our GitHub repos, and labeled our issues for easy viewing and access. We had a media campaign set up to promote our participation as well as swag designed for the participants. The results speak for themselves, in the month of October we saw an 238% increase in participation across all of our GitHub repositories compared to September. Oh, and did I mention that we held our annual conference, CamundaCon on October 8-9 and launched the 7.14 release on October 13? Some of our favourite pull requests from the event included:
- Two separate community members translated Tasklist into Hindi and Nepali. A third community member translated Admin, Cockpit, Tasklist and our Welcome Message into Brazilian Portuguese… with proper updates for the 7.14 release
- Another community member closed a 2-year-old feature request for Camunda to support filtering by process variables when using the Java external task client
- Sonar issues that were causing unexpected behaviors were fixed
- Support was added for .bpmn2 files produced by jBPM
- Someone created message keys which add additional context for particular commands
- REST API for TaskQuery.taskId() and .taskIdIn() now have documentation
So, how did we do it? How did we see such a great increase in engagement during our busiest season, despite neither Camunda as a company nor I, the person running the program, having officially participated in Hacktoberfest before? Below are the keys to our success.
The first key was starting very early. With the green light in early June we had four months to prepare the multitude of things we would need in place before launch.
If you’re leading a Hacktoberfest campaign at your company, start planning now. Especially if it’s going to be an extra ask for other teams or a “back burner” project. Getting the majority of the planning and prep done before September means you can dedicate the time needed during the month of October. I broke down my timeline roughly like this:
- April – Research
- May – Write and present proposal, secure buy-in and funding
- June – Delegate, assign tasks, and communicate responsibilities
- July – Select and/or create GitHub issues and begin labeling them
- August – Ensure that all documentation is up to date
- September – Begin social media campaign
- October – Hacktoberfest! Review PRs
- November – Wrap up and ship swag
You’ll find a much more detailed timeline at the bottom of this page.
Having a very detailed plan in place was the second key. I personally believe it’s better to over-plan than to under-plan. I’d rather spend time making plan B, C, and D and not use them than be under prepared. This concept applies to pretty much my entire life but it came in particularly useful for Hacktoberfest.
One way to accomplish this is to write out a big mega master plan with all the bells and whistles. In a perfect world, with no budget constraints and no hurdles to overcome, what would your plan look like? Then scale it back. Take your biggest, most unlikely to happen tasks and mark them as “stretch goals”. Then scale it back again. Isolate the tasks that absolutely must get done and label them as such. Then take a look at your plan. Do you have enough time to accomplish the “must get done” tasks as well as some of the tasks of middling importance? If yes, great! Start assigning due dates and people to complete all the tasks. If not, scale it back again or reassess if you can realistically complete the project with the time and resources you have.
Prioritizing your tasks from “must get done” to “stretch goal” will help you as you start to build things out. This also ensures you have some flexibility. If an unexpected fire happens you can leave off some of the middling tasks and just focus on the “must get done” ones. If you’re ahead of schedule or find extra bandwidth, you can work on some of those “stretch goals”.
Communicate Clearly and Often
The third key to our success was communication. Communication is the answer to many of life’s problems, but it’s especially important when working on a long-term, large-scale project across multiple teams within a company.
Chances are you’re not running a Hacktoberfest campaign alone. In our case the Developer Relations, Marketing, Engineering, Product Management, and Back Office teams all worked together to make Camunda’s first Hacktoberfest a success. Here’s a list of ways to ensure you are communicating effectively with all the various people involved:
- Schedule a kickoff meeting as soon as you have a solid plan and all of the team members in place
- This is where you’ll present your overall plan and timeline
- Those invited to the call should already be aware of what they will be responsible for
- Use this time to explain to everyone how they fit into the larger picture
- Be open to feedback! It’s not too late to tweak your plan if someone had a good suggestion for improvement or points out a problem you hadn’t considered
- Schedule regular check-ins with the people who do not work on the same team as you
- I prefer to have these at least monthly
- Create a Slack channel and invite everyone involved
- This is where you’ll post announcements and due date reminders
- It also serves as a place where folks can ask each other questions and collaborate
- Make yourself available to discuss progress and issues that come up
- Ensure that everyone knows how to contact you and make sure you respond to people in a timely manner
In addition to having multiple lines of communication and regular check-ins, it’s crucially important to make sure your communication is crystal clear. Early in the process when you’re delegating and assigning tasks, ensure that everyone knows exactly what is expected of them. If the request is vague, it can create problems down the road. If there’s the potential for someone’s responsibilities to grow, communicate that up front. Let people know they may have to be flexible. This gives people the opportunity to opt-out if their schedules or other priorities don’t allow for this flexibility.
As a program manager I’ve learned that once a program or project has launched, something always goes wrong. Let me repeat that, something always goes wrong. If you know this and are prepared to react, you can fix the problem more quickly and easily because you were expecting it. If you’re caught unawares, it takes you time to process and change gears before reacting.
One hiccup that we faced was that I was going to be going out on parental leave sometime in late September. We knew this months in advance which helped us plan, but not knowing exactly when I’d be leaving created a few issues. In order to combat this I kept a very detailed “Captain’s Log” that my manager had access to. Everything I was doing was documented and she could easily pick up where I left off. This log was also incredibly helpful for me to keep track of all the moving pieces along the way. I have no plans to go on leave this year, but I will still create a Captain’s Log to use as my source of truth and to have one place where all of my communications and status updates are documented.
Another hiccup that happened during Hacktoberfest 2020 was that someone made a YouTube video about how to get free t-shirts by submitting spammy pull requests. This video became very popular and participating companies and projects were inundated with invalid pull requests. This impacted everyone participating in Hacktoberfest. We all had to scramble to refine the rules and weed out these spammy PRs until DigitalOcean rolled out a few additional rules, which helped regulate the invalid pull requests. We adjusted quickly, first rolling out internal expectations about how to handle the spam and then adapting to Digital Ocean’s new guidelines.
Templates, Tools, and Tips
One of my absolute favorite tools as a Program Manager is Airtable. I use it for almost every project I work on. Here’s a template you can use for inspiration as you get started in creating your Hacktoberfest timeline.
Note: There are a few acronyms in the Airtable that I’ll define here
- DRI = Directly Responsible Individual
- The DRI is the person who owns the task and is responsible for its completion
- IC = Individual Contributor
- The individual contributors are the people who are working on the project
- OKR = Objective and Key Result
- OKR is a goal setting tool with measurable results. You set an Objective and then define a few Key Results that, if completed, complete the Objective.
If you’re more of a visual learner like me, it can also be helpful to “draw” out your plan or process using Cawemo. I created this process model for visualizing what the PR acceptance and approval process would look like:
Not sure where to start with promoting your participation in Hacktoberfest? Here’s an outline for a basic marketing campaign:
- Create a landing page people can visit to learn all about your Hacktoberfest participation, including:
- Dates and deadline
- Code of Conduct
- Contribution Guidelines or other how to contribute docs
- Links to your GitHub repositories
- Links to community spaces (forums, Slack workspace, Discord, etc.)
- Create at least four Twitter posts and post them strategically, for example:
- September 1st – announce participation and link to landing page
- September 14th – hype up prizes
- October 1st – go go go! Hype up the start of Hacktoberfest link to landing page
- October 14th – two weeks to go! There’s still time to get your prize!
- Post two blog posts:
- September 1st – announce participation and prizes, link to landing page
- November 7th – wrap up thanking participants and noting engagement
Have a limited budget? Here are some tips for saving money on swag:
- You can limit the number of prizes you’re offering
- This ensures you won’t go over budget
- Be sure you clearly state this on your landing page and in your announcement blog post
- You can use one of your tweets to say something like
“There are two weeks left until the end of Hacktoberfest 2021 and we only have 27 shirts left! Be sure to complete your PRs to earn yours!”
- Wait to order until after Hacktoberfest has ended
- While this does allow for uncertainty in how much you’ll end up spending on swag, it will ensure that you only spend what you need.
- Waiting until after Hacktoberfest has finished means you know exactly how many size smalls, size mediums, etc. to order, so you won’t have any left over and therefore no wasted funds
Don’t forget to order swag for your teammates! It’s nice to be able to give your hardworking teammates their Hacktoberfest shirts prior to October 1st so they can wear it while working on PRs during Hacktoberfest, and possibly even share pictures of themselves wearing it to promote on Twitter.