Skip to content

Merge release/0.2.0 into master #243

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

Merged
merged 8 commits into from
Dec 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
[package]
name = "bdk"
version = "0.1.0"
version = "0.2.1-dev"
edition = "2018"
authors = ["Alekos Filini <[email protected]>", "Riccardo Casatta <[email protected]>"]
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk"
description = "A modern, lightweight, descriptor-based wallet library"
keywords = ["bitcoin", "wallet", "descriptor", "psbt"]
readme = "README.md"
license-file = "LICENSE"

[dependencies]
bdk-macros = { version = "0.1.0-beta.1", path = "./macros" }
bdk-macros = "0.2"
log = "^0.4"
miniscript = "4.0"
bitcoin = { version = "^0.25.2", features = ["use-serde"] }
Expand Down Expand Up @@ -57,8 +64,8 @@ test-electrum = ["electrum"]
test-md-docs = ["base64", "electrum"]

[dev-dependencies]
bdk-testutils = { version = "0.1.0-beta.1", path = "./testutils" }
bdk-testutils-macros = { version = "0.1.0-beta.1", path = "./testutils-macros" }
bdk-testutils = "0.2"
bdk-testutils-macros = "0.2"
serial_test = "0.4"
lazy_static = "1.4"
rustyline = "6.0"
Expand Down
46 changes: 46 additions & 0 deletions DEVELOPMENT_CYCLE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Development Cycle

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".

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**.

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**.

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.

```
master: - - - - * - - - * - - - - - - * - - - * ...
| / | |
release/0.x.0: * - - # | |
| /
release/0.y.0: * - - #
```

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.

## Making the Release

What follows are notes and procedures that maintaners 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).

Pre-`v1.0.0` our "major" releases only affect the "minor" semver value. Accordingly, our "minor" releases will only affect the "patch" value.

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.
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".
3. Push the new branch to `bitcoindevkit/bdk` on GitHub.
4. During the one week of feature freeze run additional tests on the release branch
5. If a bug is found:
- If it's a minor issue you can just fix it in the release branch, since it will be merged back to `master` eventually
- For bigger issues you can fix them on `master` and then *cherry-pick* the commit to the release branch
6. 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".
7. 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.
8. Push the new commits to the upstream release branch, wait for the CI to finish one last time.
9. Publish **all** the updated crates to crates.io.
10. 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".
11. Merge the release branch back into `master`.
12. Make sure the new release shows up on crates.io and that the docs are built correctly on docs.rs.
13. Announce the release on Twitter, Discord and Telegram.
14. Celebrate :tada:
8 changes: 7 additions & 1 deletion macros/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
[package]
name = "bdk-macros"
version = "0.1.0-beta.1"
version = "0.2.0"
authors = ["Alekos Filini <[email protected]>"]
edition = "2018"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk-macros"
description = "Supporting macros for `bdk`"
keywords = ["bdk"]
license-file = "../LICENSE"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

Expand Down
10 changes: 8 additions & 2 deletions testutils-macros/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
[package]
name = "bdk-testutils-macros"
version = "0.1.0-beta.1"
version = "0.2.0"
authors = ["Alekos Filini <[email protected]>"]
edition = "2018"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk-testutils-macros"
description = "Supporting testing macros for `bdk`"
keywords = ["bdk"]
license-file = "../LICENSE"

[lib]
proc-macro = true
Expand All @@ -11,7 +17,7 @@ name = "testutils_macros"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
syn = { version = "1.0", features = ["parsing"] }
syn = { version = "1.0", features = ["parsing", "full"] }
proc-macro2 = "1.0"
quote = "1.0"

Expand Down
8 changes: 7 additions & 1 deletion testutils/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
[package]
name = "bdk-testutils"
version = "0.1.0-beta.1"
version = "0.2.0"
authors = ["Alekos Filini <[email protected]>"]
edition = "2018"
homepage = "https://bitcoindevkit.org"
repository = "https://github.com/bitcoindevkit/bdk"
documentation = "https://docs.rs/bdk-testutils"
description = "Supporting testing utilities for `bdk`"
keywords = ["bdk"]
license-file = "../LICENSE"

[lib]
name = "testutils"
Expand Down