Skip to content
This repository has been archived by the owner on Apr 29, 2024. It is now read-only.

feat: Add new chapter on teams #27

Merged
merged 46 commits into from
Jan 19, 2024
Merged
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
90a4731
Add new chapter on teams
BekahHW Jan 5, 2024
4b9eeb7
Remove section on core team
BekahHW Jan 6, 2024
dd26c16
Add team sync gif
BekahHW Jan 7, 2024
1f5b3e4
Add link for removing teammate
BekahHW Jan 7, 2024
46c58ea
Add link for team ch to readme
BekahHW Jan 10, 2024
9843165
Add to sidebar
BekahHW Jan 10, 2024
59a03c9
Add gif and update content for clarity
BekahHW Jan 10, 2024
0029033
Add screenshot of permissions
BekahHW Jan 10, 2024
a46b553
Add screenshot and gif
BekahHW Jan 10, 2024
527278e
Add space
BekahHW Jan 10, 2024
8604dbf
link to codeowners
BekahHW Jan 10, 2024
f85a6ce
Remove teams that weren't already detailed
BekahHW Jan 10, 2024
b372a61
Move section to provide more context up front
BekahHW Jan 10, 2024
d52513e
Simplify copy
BekahHW Jan 10, 2024
08322c7
Add conclusion
BekahHW Jan 10, 2024
c5afcb2
Update headings
BekahHW Jan 10, 2024
807e7dd
Merge branch 'main' of https://github.com/open-sauced/maintainer-intr…
adiati98 Jan 12, 2024
e4a7bbc
fix: spacing
adiati98 Jan 12, 2024
a6348bd
Update your-team.md
BekahHW Jan 19, 2024
0a24e70
Update your-team.md
BekahHW Jan 19, 2024
99dcb8f
Update your-team.md
BekahHW Jan 19, 2024
5f1f56b
Update your-team.md
BekahHW Jan 19, 2024
fc534d6
Add consistent caps for Insights Page
BekahHW Jan 19, 2024
b713683
Remove unnecessary sections
BekahHW Jan 19, 2024
f9c6fb2
Remove unnecessary sections
BekahHW Jan 19, 2024
2eaf92e
Update your-team.md
BekahHW Jan 19, 2024
952f169
Remove chapter ref
BekahHW Jan 19, 2024
825f1ef
Merge branch 'feature/your-team' of https://github.com/open-sauced/ma…
BekahHW Jan 19, 2024
ac009e9
Add headings to list about new members
BekahHW Jan 19, 2024
2c79d22
Fix conflicts in sidebar
BekahHW Jan 19, 2024
3afced6
Fix merge conflicts in readme
BekahHW Jan 19, 2024
579dc76
Update your-team.md
BekahHW Jan 19, 2024
bec3e78
Add info on core team
BekahHW Jan 19, 2024
4716765
Reformat permissions list
BekahHW Jan 19, 2024
6613201
Fix Typo
BekahHW Jan 19, 2024
c26b11d
Clarify documentation needds
BekahHW Jan 19, 2024
056f714
Update your-team.md
BekahHW Jan 19, 2024
c3831d4
Update your-team.md
BekahHW Jan 19, 2024
96306d7
Update your-team.md
BekahHW Jan 19, 2024
e099606
Update your-team.md
BekahHW Jan 19, 2024
c1003a7
Update your-team.md
BekahHW Jan 19, 2024
8e09152
Merge in changes directly made from PR review
BekahHW Jan 19, 2024
e7879f2
Merge in changes directly made from PR review
BekahHW Jan 19, 2024
f00d30d
fix: bold core team note and capitalize word team for consistency
adiati98 Jan 19, 2024
0f58948
minor fixes: bold sentences and add double quotes
adiati98 Jan 19, 2024
7531581
fix: capitalization
adiati98 Jan 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ The course is divided into X chapters, each covering a different aspect of being

### [Chapter X: Issues and Pull Requests](/issues-and-pull-requests.md)

### [Chapter x: Setting Up & Maintaining Your Team](/your-team.md)

### Additional Information

As this is the beginning of your open source maintainer journey, we've also provided additional information in these chapters:
Expand Down
2 changes: 2 additions & 0 deletions _layouts/sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
- [What is an Open Source Maintainer?](/intro.md)
- [Setting Up Your Project](/how-to-setup-your-project.md)
- [Issues and Pull Requests](/issues-and-pull-requests.md)
- [Setting Up Your Team](/your-team.md)

Binary file added assets/docs-team.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/list-from-insight.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/org-permissions.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/org-permissions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
140 changes: 140 additions & 0 deletions your-team.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
# Chapter X: Building Your Open Source Dream Team
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

Managing a project in open source requires clear communication, empathy, and technical understanding. You might find that initially you can do all or most of the work by yourself. That's great! If you want your project to grow and thrive, cultivating a diverse, motivated, and effective team around you can help you do that. This chapter looks at how to effectively collaborate with your team and offers guidance on identifying, onboarding, and empowering your open source squad.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

## Types of Teams
Creating teams on GitHub allows you to grant more permissions to a group of people depending on their team status. Here are some common team types and why a maintainer might find them beneficial:

### Triage Team

Triage teams help to efficiently handle incoming issues and pull requests. A triage team categorizes, prioritizes, and assigns issues to appropriate maintainers or contributors, reducing the maintainer's workload and ensuring timely attention to important matters.

**Benefits**: Faster response to users, improved issue tracking, and better allocation of resources.

### Maintainer Team

The maintainer team shares responsibility for code reviews, bug fixes, and feature development. A team of maintainers with specialized skills can handle larger projects, provide broader expertise, and ensure better code quality and consistency.

**Benefits**: Reduced individual workload, faster development cycles, and more diverse perspectives on code and decisions.


### Documentation (Docs) Team

The Docs team creates and maintains high-quality documentation for users and contributors. A dedicated documentation team ensures clear and up-to-date information is readily available, reducing support requests and confusion.

**Benefits**: Improved user experience, easier onboarding for new contributors, and less time spent answering basic questions.

### Other Team Variations
- Security Team
- Design Team
- Community Team
- Marketing Team
- Core Team
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

## Assembling Your A-Team: Adding New Members
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

Now that you understand a little but about teams, let's look at how to identify new members for your team.

**Recognizing the Need:** Just like a superhero team expands to face escalating threats, your project might reach a point where additional team members are needed. This could be when the workload starts to overwhelm you if you're a solo maintainer or your existing team, or when taking on complex challenges requires specialized expertise. Identifying these challenging points is important for ensuring your project's continued momentum.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

**Scouting for Superpowers:** Your search for new teammates should be deliberate and thoughtful. Look for contributors who have consistently showed their commitment and skills through active involvement in your project. Their contributions to issues, pull requests, and community discussions can help you to determine if they understand the project and your vision. Having enthusiasm, a collaborative spirit, and alignment with your project's goals are other things to consider. Open source projects thrive on passion and shared purpose.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

**Inviting Your Team:** Once you've identified potential team members, extend a formal invitation. This public acknowledgment of their contributions not only shows your appreciation but also serves as an inspiration to other community members. Platforms like GitHub offer streamlined mechanisms for adding team members, making it a seamless process to officially welcome your new team members.

## Granting Team Permissions
Each team should have a specific set of permissions that allow them to do what they need to for the team to be successful. Here are some common permissions that teams might need:
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

### Repository-Specific Permissions

- Read: Allow members to view code, issues, and pull requests. Suitable for stakeholders, external collaborators, or those needing general visibility.
- Triage: Grant permission to manage issues and pull requests (assign, label, comment, close), but not directly modify code. Ideal for triage teams and community managers.
- Write: Allow members to push code, create branches, and open pull requests. Necessary for developers and maintainers actively contributing to the codebase.
- Maintain: Grant broader management permissions, including deleting branches, editing protected files, and managing releases. Suitable for core maintainers responsible for project health.
- Admin: Provide full control over the repository, including sensitive actions like deleting the repository or changing its visibility. Reserved for trusted individuals or those with specific administrative needs.
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

To access your team's permissions, navigate to your team's page on GitHub and click on the "Settings" tab. From there, you can update your team's permissions in the Member priviledges section.
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

Here's what it will look like in GitHub:

![team permissions](/assets/org-permissions.png)

### Additional Permissions to Consider

- Project Permissions (if using GitHub Projects): Grant access to manage projects, tasks, and milestones within a repository.
- Organization-Wide Permissions: For organization-wide teams, consider granting permissions to manage members, billing, security settings, and other organization-level features.

### Best Practices for Team Permissions

- Start with restrictive permissions: Grant the minimum permissions necessary for a team to perform its tasks.
- Review permissions regularly: As projects evolve and team needs change, revisit permissions to ensure they remain appropriate.
- Utilize code owners: Assign specific people or teams as code owners for different parts of the codebase to ensure appropriate oversight and review using the special [CODEOWNERS](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) file.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

### Specific Examples

- Triage Team: Grant "Triage" permission to the triage team's primary repository.
- Maintainer Team: Grant "Write" or "Maintain" permissions to repositories they actively contribute to.
- Documentation Team: Grant "Write" permission to the documentation repository, potentially "Read" access to other relevant repositories.

You can see some of the options here:

![team permissions](/assets/org-permissions.gif)

## Expanding the Horizons: Enlisting Additional Maintainers

### Specialization: The Key to Scale

As your project grows in complexity, the need for specialized attention in specific areas might arise. Documentation might require someone who can write for a variety of audiences or help contributors to understand audience, while community engagement might need a charismatic presence. Identifying these needs and recruiting contributors with relevant expertise allows you to delegate ownership and ensure all aspects of your project receive the dedicated care they deserve.
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

### Recruiting Maintainers & Team Members

It is certainly possible that there's no contributor with the right skills and passion to take on a specific role. In those cases, you might need to look outside your existing community. Reach out to other projects or communities that might have individuals with the necessary expertise.

One way to look for potential maintainers is to create an [Insight page](https://docs.opensauced.pizza/features/insights/) with projects with a similar tech stack. This will allow you to see who is contributing to those projects on a regular basis, their most used languages, and more. From there, you can narrow down your search to individuals who are already familiar with your project's stack and have a proven track record of contributions by adding them to a [List](https://docs.opensauced.pizza/features/lists/). Lists will allow you to see more about where they're contributing, their timezone, their activity level, and more.
adiati98 marked this conversation as resolved.
Show resolved Hide resolved

#### Creating an Insight Page & List

To track repositories, click the "Insights" tab on the dashboard. You will be redirected to a page where you can create your new Insight Page.

There are two ways to add repositories to your Insight Page:

1. Sync GitHub organization. Syncing your GitHub organization is a good idea if you want a unified view of your project activities and the list of contributors to your project.
2. Add individual repositories. Adding individual repositories is a good idea if you want to look at similar repositories to recruit team members.

From there, you can create a list of contributors you're interesting in learning more about or connecting with by selecting them from the contributors tab and creating a new list.

![team insights gif](/assets/list-from-insight.gif)

## Adding Team Members

Once you've identified potential team members, reach out to them, let them know why you're asking them to become a team member, and provide them with a clear understanding of what you expect if they accept the role. This will help them to make an informed decision and ensure that they're able to meet your expectations.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

To learn how to add them to your team on GitHub, check out [this guide](https://docs.github.com/en/organizations/organizing-members-into-teams/adding-organization-members-to-a-team).

## Onboarding New Team Members
To ensure that your new team members are set up for success, it's important to have an onboarding process. This will help them to understand their responsibilities, the project's goals, and how they can contribute.

Here are some things to consider:

- **Roles & Responsibilities:** Clearly define the team member's role and responsibilities. This will help them to understand what they're responsible for and what they can expect from you.
- **Communication:** Establish clear communication channels and expectations. This will help to ensure that everyone is on the same page and that you're able to communicate effectively.
- **Goals:** Clearly define the project's goals and how the team member can contribute to them. This will help them to understand how they can contribute to the project's success.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved
- **Timeline:** Set clear expectations for the timeline. This will help them to understand what they need to do and when they need to do it by.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

## Keeping Track of Your Team

### Team Health

As your team grows, it's important to keep track of your team's participation and contributions. Depending on how many people are on your team, you might want to consider creating a [List](https://docs.opensauced.pizza/features/lists/) to keep track of your team's contributions. This will allow you to see who is contributing to your project and how often and to identify when it's time to remove someone from your team.

![docs team list](/assets/docs-team.gif)

## Saying Farewell: Handling Team Departures

**Parting Ways Gracefully:** As time goes on and people's lives change, you'll find that even the most dedicated teams might face departures. Inactivity, discord with project values, or mutual agreement can lead to changes in your team. It's important to approach these situations with respect and understanding. Privately communicate the reasons behind the decision, acknowledge the individual's contributions, and express gratitude for their time and effort. Remember, fostering a positive and supportive environment, even during departures, contributes to the overall well-being of your project community.
BekahHW marked this conversation as resolved.
Show resolved Hide resolved

To remove the person from your team in GitHub, check out [this guide](https://docs.github.com/en/organizations/organizing-members-into-teams/removing-organization-members-from-a-team).


## Conclusion

Remember, the team is there to support you and the project and to help you achieve your goals. As you grow your team, keep in mind that you're not just adding people to your project, you're adding people to your community. Make sure that you're adding people who are aligned with your project's values and goals and who will be a positive addition to your community.