2024-06-14 Extensions Platform

Attendees:

  • Campbell Barton
  • Dalai Felinto
  • Oleg Komarov

Meeting to discuss multi-OS support. This was inspired by the feedback obtained during the Molecular Nodes review and submission process.

Making long short: we will support multiple builds for a single version.

Json Listing

  • Nothing changes, it already expects single entries for unique combination of extension_id + version + platforms

Build

  • New option for the build command to spit out individual packages per needed platform.
    • --platform_builds
    • Take wheels + platforms into consideration.
    • New field added as part of the build pipeline that overrides the platforms tag.
    • platform_builds = ["windows-x64", "windows-arm64"]

Data Model

  • Change version to file relation, making it one-to-many.
  • Multiple files can point to the same version.

Upload

  • Version Edit page
    • Reference: /add-ons/<slug>/manage/versions/<pk>/update/.
    • List all available platform builds, with info about their respective platforms.
    • This is assymetric with how this will be presented to users (with individual per-platform links, which may point to the same place).
    • If there is a platform missing still, button to Upload new Platform Build.

API

  • Rename /api/v1/extensions/<extension_id>/versions/new/ → /api/v1/extensions/<extension_id>/versions/upload/
  • Override Release Notes
  • Throw sensitive error if platform is already “taken”.

Download

  • Main download

    • If there is a single file (for all platforms), nothing changes.
    • Else …
      • Show a list of available platforms to pick from.
      • Followed by what we have now (Drag & Drop + “download” link).
      • Changing the platform, changes the links.
    • <noscript> always list all the dowload links.
  • Version History

    • Reference: /add-ons/<extension_id>/versions/.
    • If there is a single platform, business as usual.
    • If there are multiple platforms, show a dropdown.
      • Multiple platforms may point to the same build.
    • Needs a fallback listing for <noscript>.

Review

  • If there is a single platform, business as usual (single download button, no checkboxes to pick build).
  • If there are multiple platforms, follow what we do for version edit.
    • List all available platform builds, with info about their respective platforms.

Future design if needed:

  • Per-build approval status
    • Each build can show their individual approval state.
    • For status change the moderator and maintainer should specify which builds it applies to.This text will be hidden
5 Likes