diff --git a/Cargo.toml b/Cargo.toml index 84c1fa531..d10ce59f3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,18 @@ [package] name = "bdk" -version = "0.1.0" +version = "0.2.1-dev" edition = "2018" authors = ["Alekos Filini ", "Riccardo Casatta "] +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"] } @@ -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" diff --git a/DEVELOPMENT_CYCLE.md b/DEVELOPMENT_CYCLE.md new file mode 100644 index 000000000..0f05846d1 --- /dev/null +++ b/DEVELOPMENT_CYCLE.md @@ -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: diff --git a/macros/Cargo.toml b/macros/Cargo.toml index dac85ca95..4dada2de2 100644 --- a/macros/Cargo.toml +++ b/macros/Cargo.toml @@ -1,8 +1,14 @@ [package] name = "bdk-macros" -version = "0.1.0-beta.1" +version = "0.2.0" authors = ["Alekos Filini "] 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 diff --git a/testutils-macros/Cargo.toml b/testutils-macros/Cargo.toml index bbae76e9a..e92d324b7 100644 --- a/testutils-macros/Cargo.toml +++ b/testutils-macros/Cargo.toml @@ -1,8 +1,14 @@ [package] name = "bdk-testutils-macros" -version = "0.1.0-beta.1" +version = "0.2.0" authors = ["Alekos Filini "] 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 @@ -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" diff --git a/testutils/Cargo.toml b/testutils/Cargo.toml index a70550a1a..294acc3d9 100644 --- a/testutils/Cargo.toml +++ b/testutils/Cargo.toml @@ -1,8 +1,14 @@ [package] name = "bdk-testutils" -version = "0.1.0-beta.1" +version = "0.2.0" authors = ["Alekos Filini "] 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"