Extensions Platform: Version 1 (alpha launch) #117286

Closed
opened 2024-01-18 15:41:13 +01:00 by Dalai Felinto · 5 comments

This is the lay of the land for getting the extensions project ready for a public alpha launch. Some tasks may get a dedicated issue if needs more details. Learn more: #106254

Road to Alpha

Blender-side:

  • Update (enabled) repositories upon launch.
    • It can be a user preference (enabled by default).
  • Show confirm pop-up every time you try to enable a repository.
  • Consider to support only extensions.blender.org (and fallbacking to https://).
  • Pass blender_version=<blender_version> when querying the API.
    implementation #117936.
  • The undocumented (advanced) Online Local Repositories should point to a .json, not to a folder.
  • Provide guidance for where extensions should store presets (existing conventions for add-ons may not make sense).
  • Bugs/paper-cuts:
    • Local cache still stores .zip files (reported by user need to investigate)
    • Disabling "Local Cache" should remove local cache when running an update. blender/blender-addons-contrib@a1b0f1b1f4.
    • Renaming a module should rename the directory.
    • Removing an extension should remove it's local cache.

Add-ons Legacy Migration:

  • Bring UV Tools to core.
  • Bring Cycles to core.
  • To be continued.

Server-side:

  • Makes sure OpenAPI shows the correct scheme (right not it includes is_listed, ...).
  • Redirects to different API entry points depending on the blender_version argument.
  • Support delete extensions.

UI:

  • Splash screen: Add option to enable online repositories on when opening a new Blender.
    (the option will be already created by default, just disabled).
  • Add Online Repository: Add the option to enable the new repo with a disclaimer.

Miscellaneous

  • Move a few handful of add-ons to the website.

    • Import Images as Planes
    • Amaranth
    • Node Wrangler
    • Rigify
    • 3DS format
    • Dependency Graph
  • Command line:

    • Commands to enable/disable extensions.
    • Ability to sync named repositories (currently all repos sync).

No-targets for now:

  • There is no way to roll back to a previous version.
  • There are no tracks for versions of extension (e.g., for LTS updates while a main version goes on).
  • Support for 'icons' for the extensions.
  • New fancy UI with rich-text and a dedicated editor.
  • Disable/enable themes.

Release Targets (not for Alpha):

  • Opt-in option to let Blender connect to remote repository.

Archived (done) tasks

Blender-side:

Server-side:

  • Handle id/slug to conform to Blender's expectations.
  • Get more information from the manifest (and purge bl_info from the code).
  • Implement a "Beta" mode (global setting with warnings around the site).
  • Making download less-prominent.
  • Support top-level extensions listing (e.g., http://extensions.blender.org/?format=json).
  • Support OpenAPI
  • Remove (again) null entries from the JSON.
  • Check if we are handling licenses correctly and add more licenses.
  • Add more tags and document them.
  • Add sponsor_link to model (not to the manifest).
  • Check if download count is working
  • Make blender version max fully optional (upload form requires it at the moment).
  • Hide alpha/beta badge when on mobile.
  • Analytics: Add code snippet to templates..

Documentation:
https://projects.blender.org/dfelinto/blender-manual/src/branch/extensions/manual/editors/preferences/extensions.rst

  • How to install/use.
  • How to create extensions.
  • Manifest template.
This is the lay of the land for getting the extensions project ready for a public alpha launch. Some tasks may get a dedicated issue if needs more details. Learn more: #106254 ## Road to Alpha ### Blender-side: - [ ] Update (enabled) repositories upon launch. - It can be a user preference (enabled by default). - [ ] Show confirm pop-up every time you try to enable a repository. - [ ] Consider to support only `extensions.blender.org` (and fallbacking to https://). - [ ] Pass blender_version=<blender_version> when querying the API. implementation #117936. - [ ] The undocumented (advanced) Online Local Repositories should point to a .json, not to a folder. - [ ] Provide guidance for where extensions should store presets (existing conventions for add-ons may not make sense). - Bugs/paper-cuts: - [x] Local cache still stores `.zip` files (reported by user need to investigate) - [x] Disabling "Local Cache" should remove local cache when running an update. blender/blender-addons-contrib@a1b0f1b1f4ee807c09f278de2c08ff0a1afe8821. - [ ] Renaming a module should rename the directory. - [x] Removing an extension should remove it's local cache. ### Add-ons Legacy Migration: - [ ] Bring UV Tools to core. - [ ] Bring Cycles to core. - [ ] To be continued. ### Server-side: - [ ] Makes sure OpenAPI shows the correct scheme (right not it includes is_listed, ...). - [ ] Redirects to different API entry points depending on the blender_version argument. - [ ] Support delete extensions. ### UI: - [ ] Splash screen: Add option to enable online repositories on when opening a new Blender. (the option will be already created by default, just disabled). - [ ] Add Online Repository: Add the option to enable the new repo with a disclaimer. ### Miscellaneous - [ ] Move a few handful of add-ons to the website. - Import Images as Planes - Amaranth - Node Wrangler - Rigify - 3DS format - Dependency Graph - [ ] Command line: - [ ] Commands to enable/disable extensions. - [ ] Ability to sync named repositories (currently all repos sync). ## No-targets for now: - There is no way to roll back to a previous version. - There are no tracks for versions of extension (e.g., for LTS updates while a main version goes on). - Support for 'icons' for the extensions. - New fancy UI with rich-text and a dedicated editor. - Disable/enable themes. ## Release Targets (not for Alpha): - Opt-in option to let Blender connect to remote repository. ## Archived (done) tasks Blender-side: - [x] Move the add-on to experimental (so all someone needs to test is enabling it in Experimental). blender/blender-addons-contrib@d5ec3dd4c5248c46aafbcef012686d9f587c15a3 - [x] Implement the new initial User Interface #117285. - [x] Support manifest (instead of bl_info). 8841990764a152fc98d385bfbf36e9c00bdd6fc1. - [x] Support themes blender/blender-addons-contrib@0074de8fdd469e329daa833a235cdeef9f6694a1. - [x] Simplify repositories setup (handle local directory and module name by itself - users only need to set an URL, and optionally use a custom name & directory). - [x] Separate Local and Remote repositories. - [x] Support .zip files. - [x] Support .zip files where the files are inside a folder. - [x] Find a replacement for `fcntl` (it doesn't work on Windows). blender/blender-addons-contrib@123650e11b5bbb7b61e5c8a6ae1609018b0487d7. - [x] By default let `https://extensions.blender.org` be added (blender/blender@01b1864604a6be79771be9c39c91cce3646e7a76). - [x] Also add an empty Local Repo - [x] Support dragging text from Google Chrome under X11. blender/blender@3de35c62b4f81714836280dc005aeca9db5f1a38. - [x] Install via Drag and Drop #117843 (blender/blender@f7927faa34babee199080e1f5cf63c342cee1b6b, blender/blender-addons-contrib@bb01791286227b277365a74bf6db00a7582b7b3e) - [x] Show non-installed add-ons checkboxes as disabled https://projects.blender.org/blender/blender-addons-contrib/pulls/25 - [x] Use Blender notifications (instead of custom dismissible ones). - [x] Need to stop warning about missing folders on launch #118564 - [x] Pass User-Agent: Blender/... https://projects.blender.org/blender/blender-addons-contrib/pulls/26 (blender/blender-addons-contrib@b13a5c130ac802997228dc2af9c82817ff7bae7c) - [x] Expose package creation to `./blender.exe --extension` command-line args.<br>Proposal for general - [x] List of technical directives of what add-ons cannot do: - Cannot enable other extensions. - Namespace. - ... </details> Server-side: - [x] Handle `id/slug` to conform to Blender's expectations. - [x] Get more information from the manifest (and purge bl_info from the code). - [x] Implement a "Beta" mode (global setting with warnings around the site). - [x] Making download less-prominent. - [x] Support top-level extensions listing (e.g., http://extensions.blender.org/?format=json). - [x] Support OpenAPI - [x] Remove (again) null entries from the JSON. - [x] Check if we are handling licenses correctly and add more licenses. - [x] Add more tags and document them. - [x] Add sponsor_link to model (not to the manifest). - [x] Check if download count is working - [x] Make blender version max fully optional (upload form requires it at the moment). - [x] Hide alpha/beta badge when on mobile. - [x] Analytics: Add code snippet to templates.. </details> Documentation: https://projects.blender.org/dfelinto/blender-manual/src/branch/extensions/manual/editors/preferences/extensions.rst - [x] How to install/use. - [x] How to create extensions. - [x] Manifest template. </details>
Dalai Felinto added the
Type
To Do
label 2024-01-18 15:41:14 +01:00
Dalai Felinto added this to the Python API project 2024-01-18 15:41:16 +01:00
Dalai Felinto changed title from Extensions Platform: Tasks to Extensions Platform: Version 1 2024-01-18 15:54:34 +01:00
Dalai Felinto changed title from Extensions Platform: Version 1 to Extensions Platform: Version 1 (beta launch) 2024-01-19 09:35:50 +01:00

There are some parts of this proposal which I think need some more planning & consideration.

  • ./blender.exe --extension is becoming close to running operators from the command line. We could consider a generic way to add sub-commands to Blender in a way that doesn't add a lot of overhead to the CLI. I'm wary of adding a lot of options here although command line access is useful, I have some thoughts on how this can be implemented.

By default let https://extensions.blender.org/add-ons/?format=json be added (enabled even).

I have a patch ready for this but as the URL doesn't resolve right now, I'll hold off until it can be used. Note that the term add-ons in the URL is confusing when there are non-add-on extension types.

There are some parts of this proposal which I think need some more planning & consideration. - `./blender.exe --extension` is becoming close to running operators from the command line. We could consider a generic way to add sub-commands to Blender in a way that doesn't add a lot of overhead to the CLI. I'm wary of adding a lot of options here although command line access is useful, I have some thoughts on how this can be implemented. > By default let https://extensions.blender.org/add-ons/?format=json be added (enabled even). I have a patch ready for this but as the URL doesn't resolve right now, I'll hold off until it can be used. Note that the term `add-ons` in the URL is confusing when there are non-add-on extension types.
Author
Owner

I have a patch ready for this but as the URL doesn't resolve right now, I'll hold off until it can be used. Note that the term add-ons in the URL is confusing when there are non-add-on extension types.

  • The server will need to support top-level extensions listing.
  • If tricky, we embrace add-ons as the main URL, and doversion it later.
> I have a patch ready for this but as the URL doesn't resolve right now, I'll hold off until it can be used. Note that the term add-ons in the URL is confusing when there are non-add-on extension types. * The server will need to support top-level extensions listing. * If tricky, we embrace add-ons as the main URL, and doversion it later.
Author
Owner

For the records, since this was just referenced from another task, I moved the CLI command examples out of here.

./blender.exe tools.extension validate-manifest <blender_manifest.toml>
./blender.exe tools.extension create

For the records, since this was just referenced from another task, I moved the CLI command examples out of here. ./blender.exe tools.extension validate-manifest <blender_manifest.toml> ./blender.exe tools.extension create <folder-name-with-manifest/>
Author
Owner

Task updated with the following new tasks:

  • Find a replacement for fcntl (it doesn't work on Windows).
  • Pass blender_version=<blender_version> when querying the API.
  • Use Blender notifications (instead of custom dismissible ones).
  • Show confirm pop-up every time you try to enable a repository.
  • Manifest changes: optional field: permissions: ['network', 'files']
  • Redirects to different API entry points depending on the blender_version argument.
  • Add sponsor_link to model (not to the manifest).
  • Check if download count is working
  • Hide alpha/beta badge when on mobile.
  • Analytics: Add code snippet to templates..
  • Splash screen: Add option to enable online repositories on when opening a new Blender.
  • Add Online Repository: Add the option to enable the new repo with a disclaimer.
  • Package and upload Amaranth :)
  • Terms and condition page.
  • Privacy page.
  • About page.

Not mentioned/covered here yet is the documentation updates I'm currently doing and the plans regarding legacy add-ons.

Task updated with the following new tasks: * Find a replacement for fcntl (it doesn't work on Windows). * Pass blender_version=<blender_version> when querying the API. * Use Blender notifications (instead of custom dismissible ones). * Show confirm pop-up every time you try to enable a repository. * Manifest changes: optional field: permissions: ['network', 'files'] * Redirects to different API entry points depending on the blender_version argument. * Add sponsor_link to model (not to the manifest). * Check if download count is working * Hide alpha/beta badge when on mobile. * Analytics: Add code snippet to templates.. * Splash screen: Add option to enable online repositories on when opening a new Blender. * Add Online Repository: Add the option to enable the new repo with a disclaimer. * Package and upload Amaranth :) * Terms and condition page. * Privacy page. * About page. Not mentioned/covered here yet is the documentation updates I'm currently doing and the plans regarding legacy add-ons.
Dalai Felinto changed title from Extensions Platform: Version 1 (beta launch) to Extensions Platform: Version 1 (alpha launch) 2024-02-16 09:46:27 +01:00
Author
Owner

The alpha release is already out, so it is time to close this task.

I shuffled things around so everything that was done is mentioned in the second part of this task. While everything that was not done, is still listed as opened.

I think this is to be expected since we had to prioritize what would be possible given the time-frame we gave ourselves.

The work continues on this task:
#119521

The [alpha release is already out](https://devtalk.blender.org/t/extensions-platform-alpha-launch/33342), so it is time to close this task. I shuffled things around so everything that was done is mentioned in the second part of this task. While everything that was *not* done, is still listed as opened. I think this is to be expected since we had to prioritize what would be possible given the time-frame we gave ourselves. The work continues on this task: https://projects.blender.org/blender/blender/issues/119521
Blender Bot added the
Status
Archived
label 2024-03-15 15:26:36 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#117286
No description provided.