Assessment of the iteration that has ended

The goal of the previous iteration was:

Change the Obnam client to use async Rust to be more concurrent. The result doesn’t need to make optimal use of all cores, but it needs to pass the test suite and needs to work.

This was achieved, at least partly. Lars learned a lot more about async in Rust, and wrote some abstractions for use of async, and added a new command chunkify that reads the files named on the command line, splits them into chunks, and computes SHA256 checksum of the data. This uses most of all the available CPU cycles, and so achieves that part of the week’s goal.

However, this only works for the new command. All the old commands are still strictly linear. It turns out they will all need to be reworked, and possibly rewritten, to make use of async. This will be done in future iterations.

Discussion

The next step in the use of async in the Obnam client is probably going to be using the async with the reqwest crate. Obnam currently uses the crate only in a “blocking” manner.

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 (same as last iteration)

Change the Obnam client to use async Rust to be more concurrent. The result doesn’t need to make optimal use of all cores, but it needs to pass the test suite and needs to work.

Commitments for this iteration

Lars intends to change the obnam get-chunk command to use async HTTP client code.

In addition, Lars intends to work on #111 to document what Obnam’s subplot needs.

Alexander intends to work on #112, #114, and #117, and also on #115 if we reach a consensus on what to do.

Meeting participants

  • Alexander Batischev
  • Lars Wirzenius