[RFC] tech_stack - Canister Metadata Standard extension

I was expecting dfx canister metadata [canister_name] tech_stack, and also dfx canister metadata [canister_name] tech_stack:cdk, dfx canister metadata [canister_name] tech_stack:lanuage, etc

There is a limit on the number of metadata sections. So in dfx, we deliberated to group all dfx-specific metadata into a “dfx” metadata which has a JSON content.

Then the clients can get the JSON content and extract interesting value from it.

In CLI, you can:

dfx canister metadata [canister_name] dfx | jq ".tech_stack.cdk"
2 Likes

For anyone reading @lwshang and I had a call, and the situation is not perfect but due to the various constraints on Wasm metadata, the current solution should work fine.

I still think a name other than dfx would be nice, but at least we have a standard that should work well. We can always create our own custom metadata sections and standards if we’d really like to, but this is fine for now.

3 Likes

FYI, icpp-pro 3.15.3 was released, which adds the custom section dfx.tech_stack to the .wasm file according to the standard spec.

I am not using dfx to do this addition, but just add it to the wasm as part of the build process, using LLVM.

3 Likes

The next versions of Azle and Kybra will both have this implemented, waiting on releases, possibly waiting for a stable version of dfx extensions with custom canister type.

2 Likes

@icpp @lastmjs could you share a canister id with tech_stack metadata?