# `espflash` Roadmap ## Projects ### v3 There are a number of semver incompatible changes which are required, so we need to identify as many of these issues as possible and then begin working on a new major release. The [JS Bindings](#js-bindings) project below may or may not be part of this major release. If it is not included, an additional major release will likely be required to acommodate it in the future. We should discuss whether or not we plan to backport bug fixes to the `2.x.x` releases once `3.x.x` is available; I'm generally not in favour of doing this, but if there is some explosion in popularity of the tool by the time we get to this point then it may be a requirement. There is a [milestone for this release](https://github.com/esp-rs/espflash/milestone/2): - [x] [Improve public API to make it more extensible](https://github.com/esp-rs/espflash/issues/474) - [x] [Verify flash contents after writing](https://github.com/esp-rs/espflash/issues/259) - [x] [Improve flash speed by skipping bootloader and partition tables when possible](https://github.com/esp-rs/espflash/issues/479) - [x] [Add an optional `--chip` argument to the `flash` and `write-bin` subcommands](https://github.com/esp-rs/espflash/issues/475) - [x] [Allow for a user to specify the minimum supported revision number for a target device](https://github.com/esp-rs/espflash/issues/370) - [x] [CLI argument structs are not marked `#[non_exhaustive]`](https://github.com/esp-rs/espflash/issues/473) - [x] Any deprecated functions should be removed - Currently, there are no deprecated methods - [x] [Use `esp-flasher-stub` instead of the C-based stubs](https://github.com/esp-rs/espflash/issues/480) - [x] Add contributions that require breaking changes - https://github.com/esp-rs/espflash/pull/455 - https://github.com/esp-rs/espflash/pull/461 - [x] Add the changes that were initially planned for `v2.2.0`: - https://github.com/esp-rs/espflash/pull/493 - [x] [Unix tight reset](https://github.com/esp-rs/espflash/pull/487) (multiple issues) - [x] [Document `defmt` usage](https://github.com/esp-rs/espflash/issues/508) - [x] [RFC: Removing `cargo-espflash`](https://github.com/esp-rs/espflash/issues/505) - [x] [RFC: Remove support for ESP8266](https://github.com/esp-rs/espflash/issues/519) - [x] [Put `serialport` behind a feature](https://github.com/esp-rs/espflash/issues/500) - [x] [Support 26 MHz bootloaders](https://github.com/esp-rs/espflash/issues/526) - [x] [SHA-256 comparison failed: [...] attempting to boot anyway...](https://github.com/esp-rs/espflash/issues/206) - [x] [Add `read-flash` subcommand](https://github.com/esp-rs/espflash/pull/558) - [x] Support `--before` and `--after` reset args. - [x] [RFC: Rework configuration methods](https://github.com/esp-rs/espflash/issues/507) - [ ] [Improve testing](https://github.com/esp-rs/espflash/issues/509) - HIL is WIP, the rest need to be done - [ ] Remove ESP8266 support - Remove DirecBoot Support so we can simplify `image_format` mod (only IDF bootloader would be supported) ### HW Testing - esptool HIL testing for reference: - [Source](https://github.com/espressif/esptool/blob/master/test/test_esptool.py) - [Docs](https://docs.espressif.com/projects/esptool/en/latest/esp32/contributing.html#automated-integration-tests) - `elf2image` and `merge_bin` are not HIL releated, other integration tests can be added - Document with our VM runners: https://espressifsystems.sharepoint.com/sites/Platform/Lists/Brno%20Office%20machines%20inventory/AllItems.aspx?env=WebViewList&useFiltersInViewXml=1&isAscending=true&sortField=LinkTitle&viewid=709958ca%2D450a%2D4177%2D8af5%2Df7ff565e2b99&FilterField1=Runner&FilterValue1=GitHub%20runner%20RUST&FilterType1=MultiChoice&FilterOp1=Eq ### Miscellaneous notes/thoughts - There are tools for checking semver compatibility at release time, maybe we should look into adding one of these to our release process? - Maybe https://crates.io/crates/cargo-semver-checks? --- # ARCHIVE ## 2.1.0 Release(s) It would be nice to release either a `2.0.2` or `2.1.0` release, whichever is appropriate, by Friday, September 22nd. This is **not** a hard deadline, just a suggestion. - [x] Merge any open PRs that we can - It's fine to push these back to the next release(s), too - Some PRs require only changes to the CLI argument structs (+ review/testing): - https://github.com/esp-rs/espflash/pull/462 - [x] Update any dependencies that we can - The `crates` extension has a command to do this automagically (Cmd + Shift + P -> 'Crates: update all dependencies of the Cargo.toml') - Still run `cargo update` after this anyway to update `Cargo.lock` - [x] If able, fix binary releases for Raspberry Pi - https://github.com/esp-rs/espflash/issues/454 - Hopefully just a matter of changing the OS in the workflow - [x] Update version numbers and `CHANGELOG.md`, publish to `crates.io` - Look at the git history, there's always a subsequent commit updating the versions to have the `-dev` suffix and updating `CHANGELOG.md` ### 2.x.x Release(s) **NOTE:** After some discussion, we will start working towards a `3.x.x` release since most of this issues required a major SemVer upgrade. #### For release `2.2.0`: **TODO:** Determine additional issues/features for `2.2.0` release - [x] The `SpiSetParams` command is not sent when writing - https://github.com/esp-rs/espflash/issues/453 - [x] Print `esp-println` generated `defmt` messages - https://github.com/esp-rs/espflash/pull/466 - [x] `defmt` support being behind a feature sucks; if we're able to do so in a semver-compatible way we should use a flag or something instead - Having to re-install your tools every time you want to switch formats is terrible UX - [ ] ??? #### For release `2.x.x`: **NOTE:** After some discussion, maybe this is not all necessary and should just be part of a `3.x.x` release? - [ ] Improve public API to make it more extensible - https://github.com/esp-rs/espflash/issues/474 - [ ] Verify flash contents after writing - https://github.com/esp-rs/espflash/issues/259 - Blocked by #474 - [ ] Add an optional `--chip` argument to the `flash` and `write-bin` subcommands - https://github.com/esp-rs/espflash/issues/475 - Blocked by #474 - [ ] Allow for a user to specify the minimum supported revision number for a target device - https://github.com/esp-rs/espflash/issues/370 - Blocked by #474 In addition to the above linked issues, all currently open issues should be triaged and assessed; any which are easy to fix should be fixed. There are likely some duplicate issues as well, so we can note such and close as many as possible. We can publish as many releases as make sense. I prefer more, smaller release over infrequent, large releases with many changes, anyway.