What is a hackfest?
A hackfest is a session where small groups of Fedora contributors work together to focus on specific tasks. For instance, a hackfest might concentrate on packaging a CMS, writing a release criteria document, or creating UI mockups. The hackfest portion of a FUDCon consists of multiple hackfests happening in parallel.
FUDCon hackfests are different from FADs. Whereas FADs are planned in advance with Fedora contributors who already know each other and the task at hand prior to arrival, hackfests are much more casual and spontaneous in nature (some are first proposed during the hackfest period itself), with a significant portion specifically creating opportunities for newcomers dropping by to make their first contribution to Fedora.
Attending a hackfest
If you know you will be attending a FUDCon in advance, think about the things you are interested in working on and the people you are interested in working with. Look for a hackfest that fits your criteria; if there is something you are interested in that does not yet have a hackfest planned for it, consider running one. Notably, planned hackfest participation is typically one criteria for travel sponsorship to FUDCons.
Once you have chosen or started a hackfest, coordinate with the hackfest leader to do any advance planning, preparation, or learning needed before arriving at the event, and again at the event to figure out specific times and places where hacking will be taking place. Giving your hackfest leader an overview of your skills and interests at the start can also be helpful.
If you show up on the day of a FUDCon and haven't coordinated with a hackfest yet, that's ok; there will usually be a wall and a parallel wiki page describing the hackfests in session and their location; go to one and introduce yourself. If you are working on a hackfest and a newcomer arrives, take time to make them feel welcome and get them started on a task.
Throughout the hackfest, document what you are working on. If your group is working on IRC, log the conversation. At the very least, write a summary blog post after the hackfest detailing your accomplishments and next steps (if applicable).
Running a specific hackfest
Running a hackfest is fairly straightforward. You need:
- A clear goal
- People with the skills necessary to achieve that goal (Travel funding can often be requested to get the right people together for a FUDCon hackfest)
There are only a few things you need to do.
- Once you decide to run a hackfest, put an entry in the hackfest table on the page of the FUDCon you will be running it at.
- Recruit participants before FUDCon; help them prep beforehand if needed (highly recommended). Remote participants are extremely valuable and should not be overlooked!
- Attend the opening the morning the first day of hackfests in order to briefly describe your hackfest and choose a room to work in. Make sure any mailing lists, IRC channels, wiki pages, etc. where people may be going to find information about your hackfest gets updated with the appropriate information.
- During the hackfest itself, keep people in sync, on track, and fed (it is important that your hackers eat - though they will typically remind you of this!)
- Welcome newcomers if they come in during your hackfest; help them get started on a task right away.
- Ensure your work and progress is well-documented. This can mean everything from ensuring developers use version control to photographing whiteboards, getting zodbot into your IRC channel and logging conversations, emailing updates to mailing lists periodically, encouraging participants to blog at the end of each day, and so on.
- Thank participants afterwards, and write a summary post to Planet Fedora recapping the accomplishments of your hackfest crew.
- Congratulations, you're done!
Coordinating all hackfests at a FUDCon
Coordinating hackfests is a lightweight, but important, responsibility. Your job is to ensure that hackfest leads have everything they need to get their goals accomplished.
- When a FUDCon is announced, ensure that a hackfest section or page is created for that FUDCon (the table template below may be helpful).
- Spread the word about FUDCon hackfests, encouraging people to sign up. Post to mailing lists, blog to Planet, encourage people personally via IRC, email, and face-to-face to join or start a hackfest. Remotees can participate in (and even plan) hackfests at a FUDCon, too. You may want to do this at least twice during the process of planning a FUDCon; once when it's first announced, once shortly before the event itself, and possibly once in the middle.
- Ensure that someone (perhaps you) coordinates with the FUDCon coordinators to do a brief announcement and explanation of hackfests during either the opening or closing ceremonies of the barcamp portion of the FUDCon.
- Organize the hackfest kickoff during FUDCon itself; this typically consists of a short (1 hour or less) gathering the morning of the first hackfest day where the following things happen:
- Hackfest leads come up and state short (30 sec) explanations of their hackfest. (Make sure hackfest leads know that this is what they need to do.)
- Hackfest leads collaboratively figure out what locations their groups will be in. (Make sure you know what spaces are available beforehand; knowing things like power/connectivity availability, presence of whiteboards, type of seating, number of chairs, presence of projector, etc. can help with this process considerably.)
- During the hackfest itself, remind hackfest leads to document the work of their teams.
- After the hackfest, thank the hackfest leads and remind them to post their documentation to the wiki.
- Wrap up documentation of the hackfest and send out announcements to mailing lists and Planet Fedora showcasing the results.
You may find the following table helpful for use as a template. An example of this table in use can be seen for FUDCon Toronto 2009.
|Session Name||Session Leader||General Plan||Prerequisites, if any||Where?|
|Name of the session, linked to the wiki page for that hackfest (the hackfest leader should create this).||Name (and link to contact information) of the hackfest leader.||The purpose/goal of the hackfest.||Should people have preinstalled any packages, made any accounts, done any background reading, or acquired a certain level of familiarity or skill on a topic before attending this hackfest?||The location of the hackfest, once you know it. This will often be scheduled on the morning of the first day of hackfests when people know what hackfests are going on and what rooms are available.|