Giter VIP home page Giter VIP logo

open-source-playbook's Introduction

$PROJECT_NAME README

Congrats, project leads! You got a new project to grow!

This stub is meant to help you form a strong community around your work. It's yours to adapt, and may diverge from this initial structure. Just keep the files seeded in this repo, and the rest is yours to evolve!

Introduction

Orient users to the project here. This is a good place to start with an assumption that the user knows very little - so start with the Big Picture and show how this project fits into it. It may be good to reference/link the broader architecture in the collaboration repo or the developer site here.

Then maybe a dive into what this project does.

Diagrams and other visuals are helpful here. Perhaps code snippets showing usage.

Project leads should complete, alongside this README:

  • CODEOWNERS - set project lead(s)
  • CONTRIBUTING.md - Fill out how to: install prereqs, build, test, run, access CI, chat, discuss, file issues

The other files in this template repo may be used as-is:

Project Resources

Resource Description
CODEOWNERS Outlines the project lead(s)
CODE_OF_CONDUCT.md Expected behavior for project contributors, promoting a welcoming environment
CONTRIBUTING.md Developer guide to build, test, run, access CI, chat, discuss, file issues
GOVERNANCE.md Project governance
LICENSE Apache License, Version 2.0

open-source-playbook's People

Contributors

alrubinger avatar

Stargazers

 avatar

Watchers

Nick DeJesus avatar Adewale Abati avatar  avatar

open-source-playbook's Issues

Release Process

Considerations:

  • Lead time for downstream projects/platforms to consume
  • Versioning (as detailed in #4)
  • Prep branches and deploy previews (either as interim releases for acceptance testing or, for sites/sandboxes, Netlify)
  • Tagging, release to repos and distribution
  • Security vulnerabilities (and dependency scanning)
  • Coverage?
  • Static analysis?
  • API Docs

These will likely look different for platforms (ie. tbDEX, Web5) and component projects (where fewer guidelines will apply and project leads take more autonomy).

Commit Message Conventions

The audit trail of a commit log is a helpful tool for knowing what's changed, and why. Messages like "fix" with a non-trivial diff make it difficult to know the author's reasoning, and more importantly, how future devs should proceed. Often, commits are the result of some discussion in issue trackers or on Discord.

There are some slim approaches we can take to connect the dots.

Recommending we consider across TBD-stewarded projects a light convention to point commits to that extra context.

There are some easy approaches:

Building relationships amongst community member

We want to help foster that, so the tagging in method, introducing members with similar interest, etc
I've started taking note of what topics/interest specific members seem to be drawn to so i can make those introductions and move it away from us answering the community all the time to the community answering one another and developing those conversations on their own.

This is something that can happen organically over time but we should be finding a way to help

Contributor mentorship program

This will help alleviate some of that new contributor anxiety, and get people to their first commit faster and create that deep attachment to the project

We can work on creating a mentorship cycle where a new contributor gets paired with one person for x amount of time a (something short maybe just until you get your first commit up?) and during that time they are being taught how to mentor themselves, so eventually they will provide that mentorship for the next person.

this isn't super fleshed out but i think this would be a cool idea for us to work on

Needs:
mentor COC
mentor guidelines/styles: how to answer questions? empowering etc
mentorship to be time boxed (1month/first commit)
checkins: scheduled? or just when a question arrises
maybe every mentee agrees to become mentor? or leave it organic idk

TBD Versioning Scheme

Provide guidelines to projects for versioning guidelines:

  • Branching and pre-release for acceptance testing
  • Tagging
  • Repositories (Go, JS/TS, etc)
  • Do we need/want a repo manager (ie. JFrog)?
  • Naming conventions
    • ie. 0.x.y can be not back-compat
    • After 1.x.y, back-compat
    • x, minor number, includes API additions
    • y, patch number, includes bug fixes
    • Major number breaks back-compat
    • How does wire compatibility fit in?
  • How much of Semantic Versioning guidelines would we like to adopt?

Meetings with community members

Essentially putting a feedback loop in place, starting the week of the 15th (may need to move to accommodate BTC Miami) I'm going to have one on one feedback sessions with active members. However having an automated or designated place for the community to constantly give feedback is important

option for anonymous feedback as well

Bill of Materials

I don't have a firm grasp yet on what this section should be, except to outline that natural dependencies exist. When we don't inventory them, we're crunched at the end of a platform release as we discover new things that need updates or releases.

Platform releases are composed from a set of dependencies.

Develop some light guidance outlining all TDB-stewarded components and the releases and lead times those infer to deliver comprehensive docs and general OSS availability.

For instance, in the case of Web5:

Engaging External Contributors

As the Web5 ecosystem grows, there will be an influx of more contributors and participates in our open source space.

We should think about how we engage with them based on several things:

  • Priority (how do we determine what users input gets higher priority? Library feedback, fixing issues, etc etc)
  • Who should be responding? Is it based on project owners, maybe a rotating schedule of respondents?
  • Welcoming people to make contributions
  • Recognizing those that have been helpful

cc @EbonyLouis

Roadmap Communication

How do we want to communicate a unified vision for what our roadmap is? It's one thing to track tasks and more low-level items, but how do we want to paint a bigger picture for the community? Where will that picture live?

Define remit for API Docs

Deliverable: a template from DevRel providing guidance on info needed by OSE in the request.

OSE to provide an example, @frankhinek notes that TypeScript helps with lot of this. And it'll have to be iterative; ask OSE and well evolve the handoff process as we go.

General outline:

  • Primary remit within DevRel
  • Requirement of OSE to create a ticket, outlining docs request. Contains type definition and enough info about it to make docs.

Some of these may be implicit in a statically-typed language.

For instance from: https://developer.mozilla.org/en-US/docs/Web/API/Clipboard

image

DevRel is primary remit for delivery, including prose like:

image

Code Reviewers

Create a pathway so an active community member can become a code reviewer on a project
this will help spread out that responsibility, and also empower community members as well

We can have maybe just marks they have to hit: made x commits, etc

Create Standard Issue Templates for Projects

@EbonyLouis raised: "Can we create issue templates for all projects"?

Issue templates are done in GitHub by simple Markdown files in .github/ISSUE_TEMPLATE. We could add some starter ones to the https://github.com/TBD54566975/tbd-project-template repo, and issue PRs into existing projects.

Example of issue template:

Definition of Done

Encompass:

  • For platforms (ie. tbDEX, Web5): Docs on dev site, API docs, Tests, Quickstart, Build and Learn, Supporting Examples, Sandboxes, releases for dependencies for platforms, QA, stakeholder identification and signoff
  • For component projects: API Docs, Tests

Drill into each of these, meet balance between "enough guidance for teams to have autonomy" and "comprehensive approach to delivery that's focused on user value, consistency, and repeatable process".

Contributor Pathways Explained

This can be super elaborate like having pathways written out for different types of contributors

Types:

  • non code
  • code
  • design
  • marketing
  • writing docs
  • translator
  • outreach
  • first issue
  • new to x language
  • new to OS

but also on a smaller scale to start, getting how do I contribute written out in each contributor file, steps to take, labels to pay attention to. I have a task I made in asana for this and this repo we have is a great example

how to communicate: GitHub chat, weekly meetings, discord channel
where does official project talk go vs general conversation around it

Versioning API Docs

  • Versioned docs; right now docs are built and deployed on main for Web5 and DWN JS SDK. They'll show breaking changes which may drift from the docs. Some discussion w/ @frankhinek and I on this here - TBD54566975/web5-js#34 (comment)

AI for this is to propose versioning of docs as part of release process for TBD stewarded projects, so developer.tbd.website can align its docs set with API Docs.

Community landing page

This goes back to getting community members emails which will help with other initiatives mentioned: news letter etc
I also have ideas for reworking the website to be more inviting to new community members and a landing page might be a good idea

Enforcing agreed-upon standards

While the idea of everyone agreeing to and adhering to things in the Open Source Playbook is great, there's definitely things we can do to ensure that these practices are being implemented.

For example, we can use GitHub Actions to confirm the proper naming conventions are being used.

This is more or less a placeholder to come back to as we think about what things are important to us and how we want to make sure they're being respected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.