You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
3.7 KiB

  1. # Breaking Changes
  2. This document describes QMK's Breaking Change process. A Breaking Change is any change which modifies how QMK behaves in a way that in incompatible or potentially dangerous. We limit these changes so that users can have confidence that updating their QMK tree will not break their keymaps.
  3. The breaking change period is when we will merge PR's that change QMK in dangerous or unexpected ways. There is a built-in period of testing so we are confident that any problems caused are rare or unable to be predicted.
  4. ## What has been included in past Breaking Changes?
  5. * [2020 May 30](ChangeLog/20200530.md)
  6. * [2020 Feb 29](ChangeLog/20200229.md)
  7. * [2019 Aug 30](ChangeLog/20190830.md)
  8. ## When is the next Breaking Change?
  9. The next Breaking Change is scheduled for Aug 29, 2020.
  10. ### Important Dates
  11. * [x] 2020 May 30 - `develop` is created. It will be rebased weekly.
  12. * [ ] 2020 Aug 1 - `develop` closed to new PR's.
  13. * [ ] 2020 Aug 1 - Call for testers.
  14. * [ ] 2020 Aug 27 - `master` is locked, no PR's merged.
  15. * [ ] 2020 Aug 29 - Merge `develop` to `master`.
  16. * [ ] 2020 Aug 29 - `master` is unlocked. PR's can be merged again.
  17. ## What changes will be included?
  18. To see a list of breaking change candidates you can look at the [`breaking_change` label](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Abreaking_change+is%3Apr). New changes might be added between now and when `develop` is closed, and a PR with that label applied is not guaranteed to be merged.
  19. If you want your breaking change to be included in this round you need to create a PR with the `breaking_change` label and have it accepted before `develop` closes. After `develop` closes no new breaking changes will be accepted.
  20. Criteria for acceptance:
  21. * PR is complete and ready to merge
  22. * PR has a ChangeLog
  23. # Checklists
  24. This section documents various processes we use when running the Breaking Changes process.
  25. ## Rebase `develop` from `master`
  26. This is run every Friday while `develop` is open.
  27. Process:
  28. ```
  29. cd qmk_firmware
  30. git checkout master
  31. git pull --ff-only
  32. git checkout develop
  33. git rebase master
  34. git push --force
  35. ```
  36. ## Creating the `develop` branch
  37. This happens immediately after the previous `develop` branch is merged.
  38. * `qmk_firmware` git commands
  39. * [ ] `git checkout master`
  40. * [ ] `git pull --ff-only`
  41. * [ ] `git checkout -b develop`
  42. * [ ] Edit `readme.md`
  43. * [ ] Add a big notice at the top that this is a testing branch.
  44. * [ ] Include a link to this document
  45. * [ ] `git commit -m 'Branch point for <DATE> Breaking Change'`
  46. * [ ] `git tag breakpoint_<YYYY>_<MM>_<DD>`
  47. * [ ] `git tag <next_version>` # Prevent the breakpoint tag from confusing version incrementing
  48. * [ ] `git push origin develop`
  49. * [ ] `git push --tags`
  50. ## 4 Weeks Before Merge
  51. * `develop` is now closed to new PR's, only fixes for current PR's may be merged
  52. * Post call for testers
  53. * [ ] Discord
  54. * [ ] GitHub PR
  55. * [ ] https://reddit.com/r/olkb
  56. ## 1 Week Before Merge
  57. * Announce that master will be closed from <2 Days Before> to <Day of Merge>
  58. * [ ] Discord
  59. * [ ] GitHub PR
  60. * [ ] https://reddit.com/r/olkb
  61. ## 2 Days Before Merge
  62. * Announce that master is closed for 2 days
  63. * [ ] Discord
  64. * [ ] GitHub PR
  65. * [ ] https://reddit.com/r/olkb
  66. ## Day Of Merge
  67. * `qmk_firmware` git commands
  68. * [ ] `git checkout develop`
  69. * [ ] `git pull --ff-only`
  70. * [ ] `git rebase origin/master`
  71. * [ ] Edit `readme.md`
  72. * [ ] Remove the notes about `develop`
  73. * [ ] Roll up the ChangeLog into one file.
  74. * [ ] `git commit -m 'Merge point for <DATE> Breaking Change'`
  75. * [ ] `git push origin develop`
  76. * GitHub Actions
  77. * [ ] Create a PR for `develop`
  78. * [ ] Make sure travis comes back clean
  79. * [ ] Merge `develop` PR