-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: a doc to help us run a code and learn event #292
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
# Workshop: ExpressJS - Code & Learn | ||
|
||
NOTE: this doc is for CityJS Medellin, but hosted here as an example for future events folks in the ecosystem might run. | ||
|
||
Join us for a hands-on workshop where you’ll learn how to get involved and contribute to the ExpressJS repository and organization. We’ll walk through the best ways to participate, | ||
from joining the Security Working Group to the Triage team and engaging in discussions. You’ll also gain insights into the structure of the modules and priorities for the future. | ||
Get ready for a practical session where we’ll triage real issues and even open a pull request, giving you a direct path to becoming an ExpressJS contributor! | ||
|
||
--- | ||
## Introduction (5 min) | ||
|
||
Introduce the folks running it, give a general overview of how we will spend the time. Ask people how much the know about the project and their technical skill levels. | ||
|
||
## Introduction to Express (10-15 min) | ||
|
||
Express is the original Node.js server framework. The [first commit was in 2009 by TJ | ||
Holowaychuk](https://github.com/expressjs/express/commit/9998490f93d3ad3d56c00d23c0aa13fac41c3f6b) and since has gon through a few different eras of leadership. These days, Express | ||
is an OpenJS Impact project, and is governed by an open model with a Technical Committee and many opportunities to get involved depending on your skills and available time. In | ||
today's Code and Learn we are going to go through some of those ways to get involved and help you all make meaningful contributions to the project. | ||
|
||
The project is composed of 43 repos in 3 github orgs: | ||
|
||
- `expressjs`: The primary org where the `express` repo lives. The other repos in this org are all directly part of `express` or dependent on `express` api's | ||
- `pillarjs`: This org is where generic but high level server components are hosted. Things like the `router` and `path-to-regexp` which can be used outside of `express` but are | ||
still high level. | ||
- `jshttp`: This org is where lower level `http` and protocol level packages are hosted. Things like `cookie` and `mime-db`. | ||
|
||
Because we are so spread out, we use a repo in the `expressjs` org called `discussions` to have cross-cutting or project wide discussions. Often when deciding what to work on, this | ||
is the best place to start. More on that to come. | ||
|
||
Lets talk a little bit about the project governance and leadership. We have a few roles which are great ways to start onboarding to the project: | ||
|
||
- The triage team: this team focuses on helping answer the many questions which come into the project issue tracker, as well as how to best organize answers and update docs | ||
- The security working group: this group is in charge of helping us define and maintain our security model, docs, and reporting | ||
|
||
Additionally we have roles for folks who are making technical contributions: | ||
|
||
- Contributor: these are folks who have made a few contributions to code and are given commit access to land PRs and their own work | ||
- Repo Captains: these are folks who where contributors on a given repo but have demonstrated strong judgement and reliability who are also given publish permissions and more | ||
responsibility within the given repo | ||
|
||
And finally we have the leadership group, which is the Technical Committee or as we call it, the TC. This group oversees the larger project direction and is there to help resolve conflicts or make | ||
important decisions. | ||
|
||
## Questions | ||
|
||
Does anyone have questions on the structure of the project? | ||
|
||
## Project Goals (10 - 15 min) | ||
|
||
Because the project is made up of individual volunteers with many different skills, we attempt to organize the priorities and work with a distributed consensus model. This means | ||
the goals are yours to set. That said, currently because the project is undergoing a revitalization effort, we are maintaining a central list of goals in the `discussions` | ||
repository. | ||
|
||
### General Goals | ||
|
||
https://github.com/expressjs/discussions | ||
|
||
### Express 5 Goals | ||
|
||
https://github.com/expressjs/discussions/issues/266 | ||
|
||
### Express 6 Goals | ||
|
||
https://github.com/expressjs/discussions/issues/267 | ||
|
||
### Questions | ||
|
||
Anyone have questions before we start contributing? | ||
|
||
## Lets Start Contributing (1-1.5h) | ||
|
||
We picked out three specific goals the project has which we think will make simple yet very helpful contributions today: | ||
|
||
1. Documentation updates for v5: https://github.com/expressjs/expressjs.com/ | ||
1. Updating dependencies to use `^`: ranges: https://github.com/expressjs/discussions/pull/290 https://github.com/pillarjs/router/pull/133/files | ||
1. Adding engines fields to packages https://github.com/expressjs/discussions/pull/289 | ||
1. Remove compat deps: ex. https://github.com/pillarjs/router/blob/master/package.json | ||
1. Triage issues: https://github.com/expressjs/express/blob/master/Triager-Guide.md | ||
|
||
|
||
### Demo one of each | ||
|
||
1. Update a dep, show how to test it locally, then show how to push it up and open a PR. | ||
- (router -> parseurl) https://github.com/pillarjs/router/blob/878b0e02365047f34c66b4a252e91597f8056635/package.json | ||
|
||
2. Update an engines field. Opening the PR and testing already demo'd. | ||
- (router) https://github.com/pillarjs/router/blob/master/package.json | ||
|
||
3. Update a doc. Show how to run locally. Open a PR and show the preview URL. | ||
- https://github.com/expressjs/expressjs.com?tab=readme-ov-file#local-setup-using-docker | ||
|
||
4. Triage an issue. | ||
- (bad) https://github.com/jshttp/cookie/pull/202 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you mean by bad? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In this specific case, it's a PR that was meant for their own fork, and mistakenly was sent to the source repo. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I should clean up the language here. I was just hurrying to push what I had so that we would have something to share even if incomplete. The consequence of working on it right before the event. :P |
||
- (spam) https://github.com/expressjs/express/pull/6083 | ||
- (self resolved) https://github.com/expressjs/express/issues/6085 | ||
- (typescript errors) https://github.com/expressjs/express/issues/6022 | ||
- (maybe related?) https://github.com/expressjs/express/issues/6022 | ||
- (java !== javascript) https://github.com/expressjs/express/issues/6022 | ||
|
||
### Working time | ||
|
||
@TODO | ||
|
||
## Wrapping up | ||
|
||
@TODO? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that this opens the collaboration for a long term, as the people can keep engaging with us after the event :)