Skip to content

Commit 9598e8b

Browse files
committed
Update DEVELOPMENT_CYCLE.md to work with [patch.crates-io]
1 parent 061f15a commit 9598e8b

File tree

5 files changed

+126
-50
lines changed

5 files changed

+126
-50
lines changed

.github/ISSUE_TEMPLATE/release.md

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
name: Release
3+
about: Create a new release [for release managers only]
4+
title: 'Release MAJOR.MINOR.PATCH'
5+
labels: 'release'
6+
assignees: ''
7+
8+
---
9+
10+
Create a new release.
11+
12+
**Summary**
13+
14+
<--release summary to be used in announcements-->
15+
16+
**Commit**
17+
18+
<--latest commit ID to include in this release-->
19+
20+
**Changelog**
21+
22+
<--add notices from PRs merged since the prior release, see ["keep a changelog"]-->
23+
24+
**Checklist**
25+
26+
Release numbering must follow [Semantic Versioning]. These steps assume the
27+
current `master` branch **development** version is **MAJOR.MINOR.0**.
28+
29+
On the day of the feature freeze for the current development **MAJOR.MINOR.0**
30+
release, create a new release branch and release candidate tag:
31+
32+
- [ ] Double check that your local `master` is up-to-date with the upstream repo.
33+
- [ ] Create a new branch called `release/MAJOR.MINOR` from `master`.
34+
- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch.
35+
- The tag name should be `vMAJOR.MINOR.0-RC.1`
36+
- Use message "Release MAJOR.MINOR.0 RC.1".
37+
- Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
38+
- [ ] Push the `release/MAJOR.MINOR` branch and new tag to the `bitcoindevkit/bdk` repo.
39+
- Use `git push --tags` option to push the new `vMAJOR.MINOR.0-RC.1` tag.
40+
41+
Change `master` branch version to next development **MAJOR.MINOR+1.0** release:
42+
43+
- [ ] Switch back to the `master` branch.
44+
- [ ] Create a new PR branch called `bump_dev_MAJOR_MINOR+1`, eg. `bump_dev_0_18`.
45+
- [ ] Bump the `bump_dev_MAJOR_MINOR+1` branch to the next development MAJOR.MINOR+1 version.
46+
- Change the `Cargo.toml` version value to `MAJOR.MINOR+1.0`.
47+
- The commit message should be "Bump version to MAJOR.MINOR+1.0".
48+
- [ ] Create PR and merge the `bump_dev_MAJOR_MINOR+1` branch to `master`.
49+
- Title PR "Bump dev version to MAJOR.MINOR+1.0".
50+
51+
If any issues need to be fixed before the **MAJOR.MINOR.0** version is released:
52+
53+
- [ ] Merge fix PRs to the `master` branch.
54+
- [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR` branch.
55+
- [ ] Verify fixes in `release/MAJOR.MINOR` branch.
56+
- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch.
57+
- The tag name should be `vMAJOR.MINOR.0-RC.x+1`, where x is the current release candidate number.
58+
- Use tag message "Release MAJOR.MINOR.0 RC.x+1".
59+
- Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
60+
- [ ] Push the new tag to the `bitcoindevkit/bdk` repo.
61+
- Use `git push --tags` option to push the new `vMAJOR.MINOR.0-RC.x+1` tag.
62+
63+
On the day of a **MAJOR.MINOR.0** release:
64+
65+
- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch.
66+
- The tag name should be `vMAJOR.MINOR.0`
67+
- The first line of the tag message should be "Release MAJOR.MINOR.0".
68+
- In the body of the tag message put a copy of the **Summary** and **Changelog** for the release.
69+
- Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
70+
- [ ] Wait for the CI to finish one last time.
71+
- [ ] Push the new tag to the `bitcoindevkit/bdk` repo.
72+
- [ ] Publish **all** the updated crates to crates.io.
73+
- [ ] Create the release on GitHub.
74+
- Go to "tags", click on the dots on the right and select "Create Release".
75+
- Set the title to `Release MAJOR.MINOR.0`.
76+
- In the release notes body put the **Summary** and **Changelog**.
77+
- Use the "+ Auto-generate release notes" button to add details from included PRs.
78+
- Until we reach a `1.0.0` release check the "Pre-release" box.
79+
- [ ] Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs].
80+
- [ ] Announce the release, using the **Summary**, on Discord, Twitter and Mastodon.
81+
- [ ] Celebrate :tada:
82+
83+
On the day of a **MAJOR.MINOR.PATCH+1** release:
84+
85+
- [ ] Merge fix PRs to the `master` branch.
86+
- [ ] Git cherry-pick fix commits to the `release/MAJOR.MINOR` branch to be patched.
87+
- [ ] Verify fixes in `release/MAJOR.MINOR` branch.
88+
- [ ] Add a tag to the `HEAD` commit in the `release/MAJOR.MINOR` branch.
89+
- The tag name should be `vMAJOR.MINOR.PATCH+1`
90+
- The first line of the tag message should be "Release MAJOR.MINOR.PATCH+1".
91+
- In the body of the tag message put a copy of the **Summary** and **Changelog** for the release.
92+
- Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
93+
- [ ] Wait for the CI to finish one last time.
94+
- [ ] Push the new tag to the `bitcoindevkit/bdk` repo.
95+
- [ ] Publish **all** the updated crates to crates.io.
96+
- [ ] Create the release on GitHub.
97+
- Go to "tags", click on the dots on the right and select "Create Release".
98+
- Set the title to `Release MAJOR.MINOR.PATCH+1`.
99+
- In the release notes body put the **Summary** and **Changelog**.
100+
- Use the "+ Auto-generate release notes" button to add details from included PRs.
101+
- Until we reach a `1.0.0` release check the "Pre-release" box.
102+
- [ ] Make sure the new release shows up on [crates.io] and that the docs are built correctly on [docs.rs].
103+
- [ ] Announce the release, using the **Summary**, on Discord, Twitter and Mastodon.
104+
- [ ] Celebrate :tada:
105+
106+
[Semantic Versioning]: https://semver.org/
107+
[crates.io]: https://crates.io/crates/bdk
108+
[docs.rs]: https://docs.rs/bdk/latest/bdk
109+
["keep a changelog"]: https://keepachangelog.com/en/1.0.0/

.github/pull_request_template.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
<!-- In this section you can include notes directed to the reviewers, like explaining why some parts
1010
of the PR were done in a specific way -->
1111

12+
### Changelog notice
13+
14+
<!-- Notice the release manager should include in the release tag message changelog -->
15+
<!-- See https://keepachangelog.com/en/1.0.0/ for examples -->
16+
1217
### Checklists
1318

1419
#### All Submissions:
@@ -21,7 +26,6 @@ of the PR were done in a specific way -->
2126

2227
* [ ] I've added tests for the new feature
2328
* [ ] I've added docs for the new feature
24-
* [ ] I've updated `CHANGELOG.md`
2529

2630
#### Bugfixes:
2731

CHANGELOG.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
# Changelog
2-
All notable changes to this project will be documented in this file.
2+
All notable changes to this project prior to release **0.22.0** are documented in this file. Future
3+
changelog information can be found in each release's git tag and can be viewed with `git tag -ln100 "v*"`.
4+
Changelog info is also documented on the [GitHub releases](https://github.com/bitcoindevkit/bdk/releases)
5+
page. See [DEVELOPMENT_CYCLE.md](DEVELOPMENT_CYCLE.md) for more details.
36

47
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
58
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
69

7-
## [Unreleased]
8-
- Add capacity to create FeeRate from sats/kvbytes and sats/kwu.
9-
- Rename `as_sat_vb` to `as_sat_per_vb`. Move all `FeeRate` test to `types.rs`.
10-
- Add custom Harware Wallet Signer `HwiSigner` in `src/wallet/harwaresigner/` module.
11-
1210
## [v0.21.0] - [v0.20.0]
1311

1412
- Add `descriptor::checksum::get_checksum_bytes` method.
@@ -22,7 +20,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2220
- New `RpcBlockchain` implementation with various fixes.
2321
- Return balance in separate categories, namely `confirmed`, `trusted_pending`, `untrusted_pending` & `immature`.
2422

25-
2623
## [v0.20.0] - [v0.19.0]
2724

2825
- New MSRV set to `1.56.1`
@@ -496,4 +493,3 @@ final transaction is created by calling `finish` on the builder.
496493
[v0.19.0]: https://github.com/bitcoindevkit/bdk/compare/v0.18.0...v0.19.0
497494
[v0.20.0]: https://github.com/bitcoindevkit/bdk/compare/v0.19.0...v0.20.0
498495
[v0.21.0]: https://github.com/bitcoindevkit/bdk/compare/v0.20.0...v0.21.0
499-
[unreleased]: https://github.com/bitcoindevkit/bdk/compare/v0.21.0...HEAD

DEVELOPMENT_CYCLE.md

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,16 @@
11
# Development Cycle
22

3-
This project follows a regular releasing schedule similar to the one [used by the Rust language](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html). In short, this means that a new release is made at a regular cadence, with all the feature/bugfixes that made it to `master` in time. This ensures that we don't keep delaying releases waiting for "just one more little thing".
3+
This project follows a regular releasing schedule similar to the one [used by the Rust language]. In short, this means that a new release is made at a regular cadence, with all the feature/bugfixes that made it to `master` in time. This ensures that we don't keep delaying releases waiting for "just one more little thing".
4+
5+
This project uses [Semantic Versioning], but is currently at MAJOR version zero (0.y.z) meaning it is still in initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable. Until we reach version `1.0.0` we will do our best to document any breaking API changes in the changelog info attached to each release tag.
46

57
We decided to maintain a faster release cycle while the library is still in "beta", i.e. before release `1.0.0`: since we are constantly adding new features and, even more importantly, fixing issues, we want developers to have access to those updates as fast as possible. For this reason we will make a release **every 4 weeks**.
68

7-
Once the project will have reached a more mature state (>= `1.0.0`), we will very likely switch to longer release cycles of **6 weeks**.
9+
Once the project reaches a more mature state (>= `1.0.0`), we will very likely switch to longer release cycles of **6 weeks**.
810

911
The "feature freeze" will happen **one week before the release date**. This means a new branch will be created originating from the `master` tip at that time, and in that branch we will stop adding new features and only focus on ensuring the ones we've added are working properly.
1012

11-
```
12-
master: - - - - * - - - * - - - - - - * - - - * ...
13-
| / | |
14-
release/0.x.0: * - - # | |
15-
| /
16-
release/0.y.0: * - - #
17-
```
18-
19-
As soon as the release is tagged and published, the `release` branch will be merged back into `master` to update the version in the `Cargo.toml` to apply the new `Cargo.toml` version and all the other fixes made during the feature freeze window.
20-
21-
## Making the Release
22-
23-
What follows are notes and procedures that maintainers can refer to when making releases. All the commits and tags must be signed and, ideally, also [timestamped](https://github.com/opentimestamps/opentimestamps-client/blob/master/doc/git-integration.md).
24-
25-
Pre-`v1.0.0` our "major" releases only affect the "minor" semver value. Accordingly, our "minor" releases will only affect the "patch" value.
13+
To create a new release a release manager will create a new issue using the `Release` template and follow the template instructions.
2614

27-
1. Create a new branch called `release/x.y.z` from `master`. Double check that your local `master` is up-to-date with the upstream repo before doing so.
28-
2. Make a commit on the release branch to bump the version to `x.y.z-rc.1`. The message should be "Bump version to x.y.z-rc.1".
29-
3. Push the new branch to `bitcoindevkit/bdk` on GitHub.
30-
4. During the one week of feature freeze run additional tests on the release branch.
31-
5. If a bug is found:
32-
- If it's a minor issue you can just fix it in the release branch, since it will be merged back to `master` eventually
33-
- For bigger issues you can fix them on `master` and then *cherry-pick* the commit to the release branch
34-
6. Update the changelog with the new release version.
35-
7. Update `src/lib.rs` with the new version (line ~43)
36-
8. On release day, make a commit on the release branch to bump the version to `x.y.z`. The message should be "Bump version to x.y.z".
37-
9. Add a tag to this commit. The tag name should be `vx.y.z` (for example `v0.5.0`), and the message "Release x.y.z". Make sure the tag is signed, for extra safety use the explicit `--sign` flag.
38-
10. Push the new commits to the upstream release branch, wait for the CI to finish one last time.
39-
11. Publish **all** the updated crates to crates.io.
40-
12. Make a new commit to bump the version value to `x.y.(z+1)-dev`. The message should be "Bump version to x.y.(z+1)-dev".
41-
13. Merge the release branch back into `master`.
42-
14. If the `master` branch contains any unreleased changes to the `bdk-macros` crate, change the `bdk` Cargo.toml `[dependencies]` to point to the local path (i.e. `bdk-macros = { path = "./macros"}`)
43-
15. Create the release on GitHub: go to "tags", click on the dots on the right and select "Create Release". Then set the title to `vx.y.z` and write down some brief release notes.
44-
16. Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
45-
17. Announce the release on Twitter, Discord and Telegram.
46-
18. Celebrate :tada:
15+
[used by the Rust language]: https://doc.rust-lang.org/book/appendix-07-nightly-rust.html
16+
[Semantic Versioning]: https://semver.org/

src/lib.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@
4343
//! blockchain data and an [electrum](https://docs.rs/electrum-client/) blockchain client to
4444
//! interact with the bitcoin P2P network.
4545
//!
46-
//! ```toml
47-
//! bdk = "0.21.0"
48-
//! ```
49-
//!
5046
//! # Examples
5147
#![cfg_attr(
5248
feature = "electrum",
@@ -81,6 +77,7 @@ fn main() -> Result<(), bdk::Error> {
8177
//!
8278
//! ## Generate a few addresses
8379
//!
80+
//! ### Example
8481
//! ```
8582
//! use bdk::{Wallet};
8683
//! use bdk::database::MemoryDatabase;

0 commit comments

Comments
 (0)