For the introduction of InnerSource at Europace we relied on gathering a group of people interested in the topic. While most of the discussion is designed to be remote-first with all issues being discussed in an asynchronous way we also set up an internal monthly InnerSource meetup. That meeting is open to each and everyone for attending. Meeting dates, location, and agenda is posted in advance:
- In a GitHub issue dedicated to the particular meeting in the gh#innersource project,
- On the Slack channel with the same name as the GitHub project (slack#innersource),
- As a calendar invite to those attending regularly and to those who participated the last time.
The meetup is designed to be remote-friendly with dial-in options provided to participants.
Prior to the meeting participants are encouraged to share discussion items in the meeting GitHub issue. Often these are being turned into individual GitHub issues - it's not unheard of that issues that originally were submitted for discussion in the meeting could be resolved asynchronously before the meeting takes place.
We try to start each meeting with a brief check-in so that people get a chance to be mentally in the meeting instead of clinging to whatever it was that they were dealing with right before or will have to deal with right after.
Depending on how many discussion items were collected before the meeting there's a brief time window to collect discussion items at the beginning of the meeting.
Depending on the amount of discussion items identified, either we go through them in random order or we prioritize them according to how many people in the group are interested in each (giving each participant three votes they get to select the items that are most interesting for them).
The goal of the meeting is not so much to end up with hard and fast decisions. The idea is to get people back on the same page, give time and space to exchange best practices, as well as provide an opportunity to share lessons learned and experiences not only on the record but also off the record.
To allow others who couldn't make it to the meeting to participate a protocol is generated. It lists everything that was discussed (except for cases where participants wanted that information to be off the record) with names of individuals stripped except where needed to understand context. This summary is posted in the meeting GitHub issue, the link to that issue is posted back to the Slack channel, and everything starts from the top.
In order to make meeting organization easier all steps, including the list of regular participants are stored in a checklist of the gh#innersource GitHub repository.
- Introduction to series
- Voting in new Trusted Committers ... how do we find and activate new contributors and turn them into Trusted Committers
- Checklist for base documentation ... which base documentation should we think about when starting a project?
- Issues - for brainstorming ... issues not only as digital versions of sticky notes, but also for brainstorming
- Issues - for tracking work and asking questions ... tracking work, asking questions, further use cases for issues
- Lazy consensus ... avoid waiting endlessly by adopting lazy consensus for non-controversial changes
- Templates to drive standards ... pilot recommendations locally, derive a template from the successful pilot, only then roll that pilot out as a standard to others
- External tools? ... GitHub only? By far not - if appropriate switch to another tool, but link your content together for better findability. Careful: Search gets harder the more tools you introduce.