Description
Hey Everyone! I hope this issue finds you doing well, it has been a few years since I last posted in the project but it has been on my mind for a while that I wanted to do this. Thanks to some great help from @sheplu and @UlisesGascon (triage team members and folks active in the larger Node.js Ecosystem) we wanted to put forward a plan for the future of the Express project.
As we all know, the project has been in more of a maintenance mode for a long time now. Since the 5.x branch has not shipped despite a concrete plan to do so in 2020 we believe that in order to prevent the ecosystem from having to deal with more drastic measures, that we should make an effort to revive the project starting with a renewed look at the governance to help bring new contributors into the project.
Ideally this plan is uncontroversial and can be quickly acted upon. To do that, we thought that we should schedule a TC meeting with at least the folks last listed as active TC members (@dougwilson @LinusU @blakeembrey @crandmck @wesleytodd) and interested community members to discuss and commit to a direction. So below is the plan we worked out to get us back onto a healthy track, after kicking off this discussion here I would like to open an issue to schedule a TC meeting for some time in the next few weeks.
Plan
The plan comes in phases and focuses on direct tactical steps as opposed to strategic goals. Despite this, most of the tactical goals are backed up by larger strategic goals which we are omitting for brevity. Additionally there are some todo's and areas of ambiguity here. Ideally these would be filled in by collaborators as we move along and should not be blockers to agreeing on the general direction and goals.
Immediate Needs
These are things that we propose be done immediately upon approval of this plan.
- Review and Adopt the Repo Captains Proposal
- Review and make any last changes to wording, then merge
- Immediately give commit access
- Immediately give publish rights on npm
- Setup a fast follow for onboarding more repo captains
- Reform Active TC and open up new TC seats
- Goal of 5 active members at all times going forward
- Add Foundation accounts to all orgs, repos and npm packages
Express 5.0
- Publish bit on all packages shared with the Foundation
- Release ASAP
- Last update thread
- Last PR list from 2020
- Unless we meet and find glaring issues, we should release immediately
- Release ASAP
- Address any remaining issues in patch/minor release as a fast follow
- Change Express-Generator to use express 5 as a default
- Blog and announcements
- This should be shown and shared to have the community aware of the changes and need to update
Express 6.0
- Evaluate Node.js version support
- Better align with Node.js LTS schedules
- This helps accelerate the ability for Express and Node.js to move forward
- It helps folks have a more predictable upgrade schedule for breaking changes
- It helps plan for when folks need to land breaking changes on Express
- This doesn’t mean we would make breaking changes for the sake of it, just that we wouldn’t test or explicitly support non-LTS versions on new major releases made past their EOL
- Automated release process
- Move release auth into GH permissions
- Automate releases across all repositories
- Remove unused middleware
- TODO: assemble list
- Replace middleware by node.js core solution
- TODO: assemble list
- Remove template and rendering from Express
- Move to middleware
- Express as an API first class citizen
- Restructure Github orgs to clarify ownership and focus
- Go through each and decide a fate
- Deprecate actually inactive repos, then archive
@express
scope on npm for sub packages- All new packages under the scope
- Asses if we want to move any existing packages
- Stop using Node.js internals / monkey-patching Node.js
- Officially maintained TypeScript types
- Generated and tested, with docs
- Express Generator revamp
- Target for API only (remove templating for HTML render`)
Express 7.0
- Ecosystem collaboration
- Work with node core on future for many of the express owned modules
- Web Platform things like Request/Response and URL
- Rewrite middleware to be added to node core / rewrite for performance
- Collaborate in the Web Server Frameworks Team
- Stop using Node.js internals / monkey-patching Node.js
- LTS Plan and Release schedule
- Mirror Node.js LTS and setup major release schedule
- Modernization effort
- Directly support meta frameworks, Graphql, and GRPC style usage
- New website
All of this is up for discussion, the goal here is more about rallying people together to help progress happen but we thought coming with a concrete list of items would be more productive so please feel free to discuss individual points. If we need to we can break the discussion up but use this issue as a hub. And ideally the first order of business is getting the TC meeting scheduled and Express 5 out the door, so let's not let perfect be the enemy of the good here and commit to starting and keeping the progress flowing.