I think the idea of cargo task is great and something we might want to pursue (note that this really comes under the ‘workflow’ heading, so it might not happen soon - I think that is ok - there are a lot of open questions around this thing). What is more interesting to me is how these tasks are written and to what level Cargo understands them. I think if people writing the tasks have to replicate Cargo in various ways, then we just end up with a worse version of today’s plugins.
writing a “small-scale” automation, which is typically written in bash, in Rust, such as it is cross-platform, has access to powerful libraries like serde, and has tests
we certainly want to achieve something this - in the post I talk about scripting and workflows and I think it is an important goal in the quest to make Cargo more flexible. But there are lots of pressures - if the tasks are just Rust, then you end up with problems like build scripts have in terms of making parts of Cargo re-usable or in knowing when to rebuild.
easy distribution for framework-specific automation
again, this is a goal of the scripting/workflows stuff, but the question is so open I don’t think we should prioritise it now. Instead we should do more work to understand the requirements and constraints in this space.
allow to bootstrap a truly generic build system (a-la make/gradle) from Cargo
This is a non-goal for the Cargo project.
the public API Cargo offers. This seems pretty challenging to me, stability wise
a couple of examples I can think of is extracting a Cargo.toml parser or a Cargo metadata parser and serialiser. Both those things exist today but are not used in Cargo, so there is duplication of code and all that goes with it. I would like to make official crates which are used by Cargo and maintained by the team so plugin authors can be sure that their plugins will have the same behaviour as Cargo and not break with new versions.