diff --git a/content/_index.md b/content/_index.md index 004ade9..24a78a1 100644 --- a/content/_index.md +++ b/content/_index.md @@ -28,13 +28,18 @@ body = ''' Numerical computing lectures that teach key packages in the scientific Python ecosystem, such as NumPy, SciPy, Matplotlib, scikit-learn, and scikit-image. ''' +[[item]] +type = 'card' +title = 'Community Guide' +link = '/community' +body = ''' +Learn how to manage the community of an open-source project. +''' + {{< /grid >}} diff --git a/content/community/_index.md b/content/community/_index.md index 989d72d..884f882 100644 --- a/content/community/_index.md +++ b/content/community/_index.md @@ -3,11 +3,49 @@ title: "Community Guide" shortcutDepth: 2 --- -Welcome to the Community Managers Guide! Here you will find useful resources that will help you foster your community better. - -- [Community Manager Role](/community/role) -- [Skills and Techniques](/community/skills) -- [Community Meetings](/community/community-meetings) -- [Community Outreach](/community/community-outreach) -- [Onboarding](/community/onboarding) -- [Project Management](/community/project-management) +Welcome to the Community Guide! Here you will find useful resources that will +help you foster your project's community better. + +{{< grid columns="1 2 2 2" >}} + +[[item]] +type = 'card' +title = 'Community Meetings' +link = 'community-meetings' +body = ''' +Learn how to facilitate and run community meetings +''' + +[[item]] +type = 'card' +title = 'Community Outreach' +link = 'community-outreach' +body = ''' +Learn how to outreach to your community +''' + +[[item]] +type = 'card' +title = 'Community Manager' +link = 'role' +body = ''' +Learn about the role of a community manager +''' + +[[item]] +type = 'card' +title = 'Project Management' +link = 'project-management' +body = ''' +Learn how to manage your project +''' + +[[item]] +type = 'card' +title = 'Skills and Techniques' +link = 'skills' +body = ''' +List of non-exhaustive skills and techniques for managing OSS +''' + +{{< /grid >}} diff --git a/content/community/community-meetings.md b/content/community/community-meetings.md index 809b60e..caa2c6c 100644 --- a/content/community/community-meetings.md +++ b/content/community/community-meetings.md @@ -4,75 +4,108 @@ title: "Community Meetings" ## How to initiate a community meeting? -- Before starting the meeting, having a few items and discussion points in the agenda will help kick-start the meeting. These discussion points could be a mix of: +- Before starting the meeting, having a few items and discussion points in the + agenda will help kick-start the meeting. These discussion points could be a + mix of: - Issues or PRs from the GitHub repositories which need attention -- Announcing any upcoming events/conferences to check if someone is going to attend them or is planning to +- Announcing any upcoming events/conferences to check if someone is going to + attend them or is planning to - Important updates: - These could be recent releases/new feature additions - Addition/changes in the maintainer/contributor team - - Convergence of an ongoing discussion - a summary of how the community reached a decision + - Convergence of an ongoing discussion - a summary of how the community + reached a decision - Anything important which needs to be brought up before the community - Let everyone know that the meeting is governed by a CoC ## Ice-breakers -- Ice-breakers are usually effective when the participants are not familiar with each other -- Apart from the general introduction, which is usually name and role, it’s effective to add a fun question (generally non-technical) to ask around; these are: +- Ice-breakers are usually effective when the participants are not familiar with + each other +- Apart from the general introduction, which is usually name and role, it’s + effective to add a fun question (generally non-technical) to ask around; + these are: - Favourite song, movie, dish, sport, game, tourist spot etc. - If you could teach the world one thing, what would it be? - What’s one interesting fact about yourself? ## How to address any critical issues in the project/community -- Sometimes, there are certain matter which needs to be brought up before the community for a more open and inclusive discussion -- This helps in taking into account various perspectives from the community and choosing a solution which is in the best interest of the community +- Sometimes, there are certain matter which needs to be brought up before the + community for a more open and inclusive discussion +- This helps in taking into account various perspectives from the community and + choosing a solution which is in the best interest of the community ## How to keep the conversation going? -- Occasionally, there are situations when the conversation during a community meeting dies, and it feels like you’re in a graveyard 🪦 - - Having a set up of backup discussion points can help remove the awkward silence - - Going around in the audience to ask if they have something interesting to share with the community +- Occasionally, there are situations when the conversation during a community + meeting dies, and it feels like you’re in a graveyard 🪦 + - Having a set up of backup discussion points can help remove the awkward + silence + - Going around in the audience to ask if they have something interesting to + share with the community - What projects are they working on? - Something they learned which could be shared with the community - Asking around if the attendees need any help ## How to conclude the meeting successfully -- The meeting should end on a positive note - if there has been any heated discussion/arguments, try to conclude before the end. And generally, in the end, you should: +- The meeting should end on a positive note - if there has been any heated + discussion/arguments, try to conclude before the end. And generally, in the + end, you should: - Conclude important points - - Revise tabled items - which were supposed to be discussed but didn’t get time + - Revise tabled items - which were supposed to be discussed but didn’t get + time - Tell them about the next meeting ## How to run office hours? -- Office hours are a great way to invite the community and answer their questions, guide them, help them understand any specific about your OSS project etc. - - Usually, the structure of office hours is open, but there are certain tips which could make it run smoother; they are: +- Office hours are a great way to invite the community and answer their + questions, guide them, help them understand any specific about your OSS + project etc. + - Usually, the structure of office hours is open, but there are certain tips + which could make it run smoother; they are: - Greet and acknowledge every participant during the office hours - Try to answer at least 1 question from everyone - - Maintain a document so that everyone can jot down their questions, so it’s easier to go through them + - Maintain a document so that everyone can jot down their questions, so it’s + easier to go through them - Invite them to the community meetings for broader discussions ## How to take meeting notes? -- Every community meeting should have some form of public record which can be stored as an archive - taking meeting notes is one way to do it. There are several ways to take notes efficiently, which is helpful for the community - - Record the essential things, decisions, and resolutions that were discussed during the meeting - - Writing cues during the meeting and then converting them into proper sentences is a helpful thing to do when you’re moderating/running the meeting - - Try to have a TL;DR section at the top - this would help the reader to decide if they want to dive into the full notes or not +- Every community meeting should have some form of public record which can be + stored as an archive - taking meeting notes is one way to do it. There are + several ways to take notes efficiently, which is helpful for the community + - Record the essential things, decisions, and resolutions that were discussed + during the meeting + - Writing cues during the meeting and then converting them into proper + sentences is a helpful thing to do when you’re moderating/running the + meeting + - Try to have a TL;DR section at the top - this would help the reader to + decide if they want to dive into the full notes or not - Example at: https://zarr.dev/community-calls/2023/2023-05-03.html ## Some tips for your meetings - Make time for demos/showcases/presentation - - The community members are always looking for exciting/innovative ways to use OSS projects in their workflow, and making time to showcase the work is a good element of a community meeting - - The demos/showcases could be - how your project is used to solve a problem in a specific domain + - The community members are always looking for exciting/innovative ways to use + OSS projects in their workflow, and making time to showcase the work is a + good element of a community meeting + - The demos/showcases could be - how your project is used to solve a problem + in a specific domain - Make time for newcomers - - New contributors or newcomers are the users who have the potential of becoming future maintainers and helping them in the initial phase is beneficial for both the project and the individual and is in the spirit of open-source + - New contributors or newcomers are the users who have the potential of + becoming future maintainers and helping them in the initial phase is + beneficial for both the project and the individual and is in the spirit of + open-source - Having a dedicated time slot for the newcomers to help them - Make community meetings accessible to the broader community - - Take into account community members in different time zones, differently abled, unavailability etc. + - Take into account community members in different time zones, differently + abled, unavailability etc. - Take notes and upload them to the website - Record the meeting -## Meeting templates (TODO) +## Meeting templates +[Zarr Community Meeting template](https://hackmd.io/tFcffc__QRuo1UdGcGUbsg) [NumPy Community Meeting template](https://hackmd.io/76o-IxCjQX2mOXO_wwkcpg) diff --git a/content/community/community-outreach.md b/content/community/community-outreach.md index dce13ac..089739e 100644 --- a/content/community/community-outreach.md +++ b/content/community/community-outreach.md @@ -6,47 +6,68 @@ title: "Community Outreach" Use various social Media channels for outreach: -- Twitter: +- BlueSky/Mastodon: - - Utilize hashtags relevant to the scientific Python community to increase visibility. - - Engage with users by responding to questions, sharing resources, and participating in discussions. - - Retweet and mention influential users and organizations to foster connections. + - Utilize hashtags relevant to the scientific Python community to increase + visibility. + - Engage with users by responding to questions, sharing resources, and + participating in discussions. + - Reshare and mention influential users and organizations to foster + connections. - Share updates on project releases, new features, and bug fixes. - Highlight community contributions and achievements. - LinkedIn: - - Create a LinkedIn group for the project to facilitate networking and discussions among professionals. + - Create a LinkedIn group for the project to facilitate networking and + discussions among professionals. - Share project updates, news, and job opportunities. - - Encourage community members to share their experiences and insights related to the project. - - Connect with other professionals and organizations in the scientific Python field. + - Encourage community members to share their experiences and insights related + to the project. + - Connect with other professionals and organizations in the scientific Python + field. -## Tools for community outreach(TODO) +## Tools for community outreach + +- [Buffer](https://buffer.com/) + - Buffer can be used to create, schedule and organise scoial media posts + across various platforms + - Atmost 3 social media accounts can be connected in the free tier ## Speaking at Conferences and Events: -- Submit proposals to relevant conferences, emphasizing the project's unique features and benefits. -- Prepare engaging presentations that demonstrate the project's capabilities and use cases. +- Submit proposals to relevant conferences, emphasizing the project's unique + features and benefits. +- Prepare engaging presentations that demonstrate the project's capabilities and + use cases. - Provide live demos or tutorials to showcase the project in action. -- Connect with attendees during and after the event, answer their questions, and collect feedback. +- Connect with attendees during and after the event, answer their questions, and + collect feedback. ## Teaching Tutorials -- Organize regular online tutorials or sprints to educate the community about using the project. +- Organize regular online tutorials or sprints to educate the community about + using the project. - Cover various skill levels, from beginners to advanced users. - Provide clear documentation and code examples. - Encourage community members to share their own tutorials and best practices. ## Writing Blog Posts: -- Keep the community updated on important news, such as project milestones, partnerships, and funding. +- Keep the community updated on important news, such as project milestones, + partnerships, and funding. - Announce major releases, highlighting new features and improvements. - Share technical insights, tips, and tutorials related to the project. +- Collaborative blog posts with institutions, reseachers, groups to highlight + use-cases, e.g. [Zarr x NASA](https://zarr.dev/blog/nasa-power-and-zarr/) - Recognize and appreciate community contributors through dedicated blog posts. ## Creating content -- Create video tutorials, screencasts, or live coding sessions to demonstrate the project's usage. +- Create video tutorials, screencasts, or live coding sessions to demonstrate + the project's usage. - Develop interactive Jupyter notebooks showcasing practical applications. - Produce podcasts or interviews with community members or domain experts. -- Collaborate with other scientific Python projects for joint content creation, such as tutorials or blog posts. -- Create illustrations on how your project works: https://github.com/zarr-developers/zarr-illustrations-falk-2022 +- Collaborate with other scientific Python projects for joint content creation, + such as tutorials or blog posts. +- Create illustrations on how your project works: + https://github.com/zarr-developers/zarr-illustrations-falk-2022 diff --git a/content/community/onboarding.md b/content/community/onboarding.md deleted file mode 100644 index 5f7559d..0000000 --- a/content/community/onboarding.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Onboarding" ---- - -{{< admonition warning >}} -This is a draft document. -{{< /admonition >}} - -- Organizing sprints - - Organising sprints are an excellent way to invite new collaborators, solve issues, gather contributions and broaden the project community. Some helpful tips for organising a sprint efficiently: - - Have a list of issues from the issue tracker that can be worked on. The issues should have a mix of code (bugs, features, fixes) and no-code (documentation) tasks so that they can accommodate a diverse set of participants -- Handling a storm of new contributors during peak season (GSoC, Outreachy, GSOD etc.) diff --git a/content/community/oss_wheel.png b/content/community/oss_wheel.png new file mode 100644 index 0000000..4dc4012 Binary files /dev/null and b/content/community/oss_wheel.png differ diff --git a/content/community/project-management.md b/content/community/project-management.md index 4a36476..56acf71 100644 --- a/content/community/project-management.md +++ b/content/community/project-management.md @@ -4,22 +4,26 @@ title: "Project Management" ## Project management -As a community manager, you might need to onboard contributors who may not contribute in technical ways. +As a maintainer/dedicated CM, you might need to onboard contributors who may not +contribute in technically. -- Send a personalized welcome message expressing gratitude and introducing the project. +- Send a personalized welcome message expressing gratitude and introducing the + project. - Provide an overview of the project's mission, values, and community culture. -- Highlight non-technical contribution opportunities like documentation, user support, translations, design, and community management. -- Create clear contribution guidelines with step-by-step instructions and templates. +- Highlight non-technical contribution opportunities like documentation, user + support, translations, design, and community management. +- Create clear contribution guidelines with step-by-step instructions and + templates. - Maintain regular communication to share updates and opportunities. - Recognize and appreciate all contributions, both technical and non-technical. - Foster a welcoming and inclusive community environment. -- Ensure adherence to the project's code of conduct. +- Ensure adherence to the project's Code of Conduct. -### OSS management (TODO) +### GitHub triaging - Overview of issues and PRs among several repositories - Reviewing PRs or assigning reviewers to the PRs - - Solving the issues/responding to the issues - - Responding - to maintain communication with the author + - Responding to the unattended issues to keep conversation going - Closing stale PRs and old issues - - Labelling issues + - Assiging appropriate labels to issues & PRs + - Archiving repositories that are no longer actively maintained diff --git a/content/community/role.md b/content/community/role.md index c5de943..df91877 100644 --- a/content/community/role.md +++ b/content/community/role.md @@ -4,27 +4,57 @@ title: "Community Manager Role" ## Who’s a community manager? -A community manager for an Open Source scientific Python project is a dedicated and enthusiastic contributor who plays an important role in building and nurturing a thriving community. They act as a bridge between the project and its community members, creating an inclusive and collaborative environment. -This person has a strong understanding of scientific Python and open source principles. They actively engage with community members, address their needs, offer support, and encourage their active participation. By organizing community events, facilitating discussions, and promoting knowledge-sharing, they ensure that the project's community remains vibrant and connected. The community manager is passionate about Python programming and committed to promoting diversity and inclusion in the scientific open source software community. +A community manager for an Open Source scientific Python project is a dedicated +and enthusiastic contributor who plays an important role in building and +nurturing a thriving community. They act as a bridge between the project and +its community members, creating an inclusive and collaborative environment. +This person has a strong understanding of scientific Python and open source +principles. They actively engage with community members, address their needs, +offer support, and encourage their active participation. By organizing +community events, facilitating discussions, and promoting knowledge-sharing, +they ensure that the project's community remains vibrant and connected. The +community manager is passionate about Python programming and committed to +promoting diversity and inclusion in the scientific open source software +community. ## What is the role of a community manager? - Designate time for engaging community. (Social media, hosting events) - Empowering others to become leaders.(Setting example, having initiatives) - Guidance for conflict resolution. -- Making the community "Welcoming". (Having resources that make people want to stay, Good communication) -- Being a communication channel between users and developers (Understanding the user's needs to be able to participate in the road map.) +- Making the community "Welcoming". (Having resources that make people want to + stay, Good communication) +- Being a communication channel between users and developers (Understanding the + user's needs to be able to participate in the road map.) ## Why do you need a community manager? -1. A community manager acts as a bridge between the project and its community members. They facilitate communication, engagement, and collaboration, ensuring that users feel heard, valued, and supported. By fostering a sense of belonging and inclusivity, a community manager helps to create a strong and loyal user community. -2. A community manager plays a critical role in building and sustaining an active and vibrant community around the project. They organize and promote community events, facilitate discussions, and encourage knowledge-sharing. This helps to foster connections, drive participation, and create a positive and collaborative atmosphere within the community. -3. A community manager serves as a trusted resource for community members, offering support, answering questions, and resolving conflicts. They act as a point of contact, providing guidance, feedback, and assistance when needed. -4. A community manager helps to promote the project's values, goals, and mission. They advocate for the project and its benefits, both within the existing user community and to potential new users. This can lead to increased visibility, growth, and adoption of the project. -5. A community manager plays a crucial role in gathering user feedback and insights. They act as the voice of the community, conveying user needs, preferences, and concerns to the project team. - -## How to find the best community manager for your project? (TODO) - -- Find what do you need exactly (Determine scope) -- Understanding of science (how much understanding of the domain area) -- Word of mouth for spreading the word +- A community manager acts as a bridge between the project and its community + members. They facilitate communication, engagement, and collaboration, + ensuring that users feel heard, valued, and supported. By fostering a sense + of belonging and inclusivity, a community manager helps to create a strong + and loyal user community. +- A community manager plays a critical role in building and sustaining an active + and vibrant community around the project. They organize and promote community + events, facilitate discussions, and encourage knowledge-sharing. This helps + to foster connections, drive participation, and create a positive and + collaborative atmosphere within the community. +- A community manager serves as a trusted resource for community members, + offering support, answering questions, and resolving conflicts. They act as a + point of contact, providing guidance, feedback, and assistance when needed. +- A community manager helps to promote the project's values, goals, and mission. + They advocate for the project and its benefits, both within the existing user + community and to potential new users. This can lead to increased visibility, + growth, and adoption of the project. +- A community manager plays a crucial role in gathering user feedback and + insights. They act as the voice of the community, conveying user needs, + preferences, and concerns to the project team. + +## How to find community manager for your project? + +- Find what do you need exactly - Determine scope, figuring out roles and + responsibilities for the role +- Familiarity with the domain of the project and science +- Outreach in adjacent OS communities, conferences and events for potential + candidates +- Exploring the possibility of delegating the responsibilites to maintainers diff --git a/content/community/skills.md b/content/community/skills.md index ff04083..87da937 100644 --- a/content/community/skills.md +++ b/content/community/skills.md @@ -2,7 +2,10 @@ title: "Skills and Techniques" --- -The OSS Management Skills Wheel describes 24 skills, divided into 4 core competencies, used by OSS community managers. It was initiated by Inessa Pawson and Sanket Verma during the 2023 Scientific Python Project Developer Summit (Seattle, WA). +The OSS Management Skills Wheel describes 24 skills, divided into 4 core +competencies, used by OSS community managers. It was initiated by Inessa Pawson +and Sanket Verma during the 2023 Scientific Python Project Developer Summit +(Seattle, WA). **Interpersonal** @@ -40,12 +43,21 @@ The OSS Management Skills Wheel describes 24 skills, divided into 4 core compete - Advocacy - Social media + + **Other useful skills** - Scaffolding - - Removing barriers/making it easy for the new contributors to join - could like the scientific python guide here (https://learn.scientific-python.org/contributors/) + - Removing barriers/making it easy for the new contributors to join - could + like the scientific python guide here + (https://learn.scientific-python.org/contributors/) - Removing barriers/making it easy for the maintainers to work - - Removing barriers/making it easy for the users to discover the documentation/tutorials + - Removing barriers/making it easy for the users to discover the + documentation/tutorials - And removing barriers and helping wherever necessary - Dealing with conflicts in the community - Between developers/maintainers