Assessment of the iteration that has ended

The goal of the previous iteration was:

Change the Obnam client to use async Rust for making backups.

This was not quite achieved. Lars has done the basic changes for this, but has not yet submitted them. He was trying to add concurrency to chunk checksum computation, but didn’t manage that. He failed to remember that it’s better to make some progress than to fail to achieve perfection. (See his blog post about this philosophy for more.)

Lars had intended to do a bunch of smaller things as well, but mostly didn’t, though he did finish #118 (“Lacks way to expand a geneneration reference (”latest“) as a generation id”).

Discussion

Performance

The Obnam client is almost there as far as using async to achieve concurrency. It still needs to make chunk checksum computing concurrent. Once we have that, it’s time to start doing benchmarks and profile the code to see where time is spent.

However, the basic async work needs to be finished and proven in use before further performance improvements.

Minimum supported Rust version

The discussion in #137 about minimum supported Rust version is still open, though it’s been quiet. No decision has yet been made. Further input most welcome.

Goals

Goal for 1.0 (not changed this iteration)

The goal for version 1.0 is for Obnam to be an utterly boring backup solution for Linux command line users. It should just work, be performant, secure, and well-documented.

It is not a goal for version 1.0 to have been ported to other operating systems, but if there are volunteers to do that, and to commit to supporting their port, ports will be welcome.

Other user interfaces is likely to happen only after 1.0.

The server component will support multiple clients in a way that doesn’t let them see each other’s data. It is not a goal for clients to be able to share data, even if the clients trust each other.

Goal for the next few iterations (not changed for this iteration)

The goal for next few iterations is to have Obnam be performant. This will include, at least, making the client use more concurrency so that it can use more CPU cores to compute checksums for de-duplication.

Goal for this iteration (new for this iteration)

Finish the work to change the Obnam client to use async Rust for making backups. Once this works and is merged, make a new release.

Commitments for this iteration

Lars intends to change the obnam backup command to use async (#113). After this is done, the client should be entirely async.

  • #56 – SQLite databases for generations have no metadata about themselves (1h)
  • #113 – Client is not async (4h)
  • #121 – Release process needs review, update (1h)
    • should probably make at least a trial release
  • #133 – Test suite assumes location of binary (1h)

That’s a total of about 7 hours, rough estimate, for Lars.

Meeting participants

  • Lars Wirzenius