2024-05-23 - Extensions Project

Attendees:

  • Campbell Barton
  • Dalai Felinto

Recent changes

  • Offline mode got committed.
  • 4.1 add-ons bundle is online.

Feedbacks

  • There seem to be mostly three kinds of feedback regarding the addons-core changes:
    • People are concerned about long term maintaince of extensions.
    • People want to work 100% offline.
    • People want a way to pre-install Blender with add-ons/extensions for a quicker setup.

The two last topics are been actively considered. See the notes about “Offline Mode” and “Out of the box experience” respectively. Those are not new topics, but they have simply not being priorited at first. The feedbacks have been very helpful to make the use cases more clear and get them prioritized and fleshed out.

The topic about long term maintaince of extensions vs core-add-ons is a complex one. On one hand it is based on assumptions about the future, and often missing on some aspects such as:

  • Mostly no add-on has been added to Blender in the past 5 years. The exceptions are the ones created/maintained by a core developer.
  • Add-ons which shipped with Blender didn’t get as much maintaince as people may expect.
  • There are plenty of add-ons which people don’t even know they miss, just because they never got shipped with Blender.

With the “out of the box experience” tackled, (and part of this is people being able to bundle their favourite extensions), I think this discussion will be less relevant.

On the other hand …

“Blender doesn’t require add-ons to work”. That has always being one of the mantras of the development team. However if we are honest about it, there are plenty of functionalities which only exists as add-ons at the moment, which could have been made “core”.

There are simple case (image as planes), not so simple ones (node wrangler), and really complicated ones (rigify).

The reasons vary. There was never a need (until now?) to address the simple cases if they were bundled with Blender anyways. But even for thte simple ones it is time consuming to make these decisions (what should become core?) and even raise the code quality or the usability to match Blender’s. So it boils down to a mix of prioritization, needs and pure simple inertia (a powerful force on its own).

So while I believe the extensions platform will be a big new chapter on Blender’s community history, the Blender development team is fully aware that we need to be sharp on what should still be made core (or shipped with Blender, one way or another).

– Dalai

Topics

  • :ballot_box_with_check: Web: Download links don’t work on https://extensions.blender.org
  • ☐ Web: Download URL’s are directories, prevents recognizing file-type.
  • ☐ Auto-refresh the extensions list when visiting Preferences > Extensions.
  • :ballot_box_with_check: Offline (see own section)
  • ☐ Image as Planes
    • ☐ Make images-as-planes built-in operator (not a core add-on)
    • ☐ Include in “Add Image” menu: “Mesh Plane”
    • ☐ Rename warning: “Only supports EEVEE (legacy)”
    • ☐ Poke (Clément) about it supporting EEVEE Next …
  • ☐ Blender out of the box experience (see own section) #122147.
  • :ballot_box_with_check: BlenderBIM: Propose “stub wheel”. Dalai will reply to Dion, and Campbell can do a technical follow up.
  • ☐ Follow ups from last meeting:
    • ☐ Dalai to ask Animation module about Rigify again.
    • :ballot_box_with_check: Dalai to test new build cmd on Mac.

Out of the box experience

Copied over to #122147.

There is an (old) idea of allowing people to easily enhance their Blender experience “off the box”. Originally this was thinking about assets, but the same could be said about add-ons and themes.

As a matter of fact, the online functionality brought by the extensions platform (and in the future remote asset repositories) address just that. The downside is, you still need internet connection.

Given some of the feedback on the extensions platform for people who want (or need) to work 100% offline, it is interesting to provide an option for them as well. And even more anyone should be able to create their own bundle and share around.

To better leverage the extensions platform these extensions should be seen as a quick-start, and still be treated as any other extensions downloaded from the same repository. That means they can still be updated afterwards.

Features/tasks:

  • (Updatable) bundle downloaded separated.
  • It should support either individual or multiple draggable .zip files.
  • Repository: add “repository” to the manifest.
    • The manifest would have a repository URL prefix, e.g. https://extensions.blender.org/ which would match against Blender’s list of online repos. If it matches, it installs to that repo, otherwise install to disk.
    • schema: repository_url: "https://extensions.blender.org/" (Blender matches it by pre-fix).
    • Install multiple will not enable the add-ons (the option will be disabled)
      This is done because users will likely want to install a “pack” without enabling them all.
      Further, any errors are likely to be difficult to troubleshoot if there are many at once.
    • It should be part of the server-side validation.

To-be decided:

  • Do we ship some more essential extensions (node wrangler, rigify, …) as:
    • Core Add-ons;
    • As pre-installed extension;
    • Leave them only in a separate downloadable bundle together with the other 100 4.1 extensions;
  • Whatever solution we go with, it still be decided on a case-by-case basis.

Offline Mode

The main changes were already committed. Proposed next steps:

  • :ballot_box_with_check: Splashscreen: “Offline Mode” message.

    • If --offline-mode was used, or “Allow Online Access” is off, it should say “Offline mode” on the splashscreen (clickable unless I launched with --offline-mode, and in this case tooltip to tell why is not clickable) (refer to !121994).
    • It is okay to NOT show anything on the splash if: online and there are no installed remote extension.
  • :ballot_box_with_check: 4.1 > 4.2 splashscreen: no need to show “Allow Online Access”

  • :ballot_box_with_check: Preferences:

    • :ballot_box_with_check: extensions.blender.org on by default.
    • :ballot_box_with_check: Don’t show the welcome message on preferences if:
      • Blender is online.
      • The message was dismissed.
      • The "extensions.blender.org` repository is disabled.
    • In other words, if the message was NOT dismissed and Blender is offline, always shows the welcome message.
    • :ballot_box_with_check: The welcome message should be:
         Welcome! Access community-made add-ons and themes from the extensions.blender.org repository.
         
         This requires online access which must be enabled in "System" preferences.
         [x Dismiss] [ Go to System ]
    
13 Likes

Manual is not yet updated with the latest manifest schema on repository_url.

When it will get updated, my hope that it will clarify which one of these values will be valid:

  • https://extensions.blender.org/
  • https://extensions.blender.org - missing slash
  • http://extensions.blender.org - http protocol
  • extensions.blender.org - protocol omitted

Ouch. I just did a pass on the documentation and replaced all the extensions.blender.org http with https. Thanks for spotting this.

Missing slash or missing the protocol is less relevant though, so I left as it is. I think it is common enough to ommit these when pointing people to a site.

1 Like

Why not just to ADD Extensions instead of Replacing Addon UX?
A lot of users immediately confused with no addons UI and only “dev team made” extensions.

Glad I was able to help! But that wasn’t quite what I was asking. :sweat_smile:

The new manifest item: repository_url what values would be considered valid?

In provided example full website url is used:

But what would happen if I used full url but with no trailing slash? Or without protocol?

You mentioned:

Blender matches it by pre-fix

Does that mean that value like this https://extensions.ble would also be valid? Technically it is prefix.

I haven’t posted an update on this but today we decided to drop the idea of the new repository_url field.

Instead we will give the option when installing from disk (by dragging and drop or the Install from Disk button) to choose on which repository it should go.

For the drag and drop case we can even look at the .zip and try to set the expected deposit as the default option.

2 Likes

Im not 100% sure if this is the right post to comment on. But I found on the doc page for extensions the link to the “Host a sing JSON file” link leads to a 404 page. Is this supposed to be the inteded link?

1 Like

Thanks for your report. I fixed it on the site now.