Skip to content

16.0.0 Release plan #2860

Closed
Closed
@IvanGoncharov

Description

@IvanGoncharov

Goals

  1. Convert source code to idiomatic TypeScript
  2. Remove Flow-specific workarounds and pre-ES6 JS artifacts
  3. Support Deno
  4. Support ESM
  5. Switch master to main.

Planned breaking changes

  1. Legacy SDL syntax (deprecated 2year ago) and other deprecated APIs and flags
  2. Drop native IE support by removing built-in polyfills and switching the output to ES6. It would be still possible to support IE with core-js + babel.
  3. Drop TS before 3.7 since we need to support recursive types.
  4. Maybe we will have some unexpected breaking changes to TS types due to migration

Post 16.0.0 goals

  1. Convert test suite to Jest
  2. Experiment with TS types to provide better typings for resolvers

P.S. We need to target 04/31/2021 for 17.0.0 release at that point we need to do a breaking release anyway to drop Node v10.

Steps

  • 1. Branch out 15.x.x release line and release 15.5.0 (Jan 8th)
  • 2. Switch master to main and update scripts & CI
  • 3. Move commits from https://github.com/graphql/graphql-js/tree/16.x.x to main
  • 4. Remove last few polyfills
  • 4. Release 16.0.0-alpha.1 with all expected breaking changes but still from Flow sources (Jan 12th)
  • 5. Rebase Convert flow types to TS #2828 and merge it (no squash, keep separate commits) (Jan 15th)
  • 6. Fix tests, CI, and release scripts but disable tsc and TS-specific ESLint checks (Jan 18th)
  • 7. Mark tsc errors with @ts-ignore and fix them in separate PRs by volunteers
  • 8. Enable TS-specific ESLint rules in separate PRs by volunteers
  • 9. Release new 16.0.0-alpha.3 and gather feedback (finish until Feb WG)
  • 10. Work on ESM and Deno support in parallel
  • 11. Release 16.0.0-rc.1 and gather feedback
  • 12. Generate basic docs with tsdoc
  • 13. Release 16.0.0 🎉
  • 14. Wait couple weeks and gather feedback.
  • 15. Switch main to the 17.0.0-alpha.0 branch and have a setup that will automatically release package after every merge.
  • 16. Start accepting breaking/experimental PRs for 17.0.0.

How I can help?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions