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 obnam#111 to document what Obnam's subplot needs.
Alexander intends to work on obnam#112, obnam#114, and obnam#117, and also on obnam#115 if we reach a consensus on what to do.
Meeting participants
- Alexander Batischev
- Lars Wirzenius