Moo-Ack-Productions / bpy-build

A build sytem to make building Blender addons 10 times easier
BSD 3-Clause "New" or "Revised" License
5 stars 2 forks source link

Extension Support #18

Open StandingPadAnimations opened 3 weeks ago

StandingPadAnimations commented 3 weeks ago

Blender 4.2 introduces the new Extensions System, which supersedes the old system for addons. As such, there is now a need for BpyBuild to adopt extension support, and work has started on https://github.com/Moo-Ack-Productions/bpy-build/tree/milestone-4-2.

Some things to consider:

StandingPadAnimations commented 3 weeks ago

Tagging @TheDuckCow

StandingPadAnimations commented 2 weeks ago

Ok, there might be a way around this, but it's a bit complicated. Basically, we'd create some sort of wrapper (that itself would be GPL licensed) with a custom interface that can be accessed with a more permissive license, such as through files or stdout. Since program output is not bound to GPL, this would be possible to use in BpyBuild without requiring a relicense. This doesn't solve redistribution though.

StandingPadAnimations commented 1 week ago

To make development faster, I'm just going to base what the docs say about extensions. I'm not going through a 4000 line that mixes HTML generation and creating a server, with building zip files and verifying the manifest.

I've already opened an issue as there are known requirements for the manifest that are missing from the docs. The way I see it though, if the docs don't mention it, it's not important for me to implement, and if it is important, IMO it's on the Blender Foundation to provide complete documentation (especially when extensions are brand new, they should be documented well).

TheDuckCow commented 1 week ago

Most free plugins will just use the legacy / offline install method, so I'm not overly concerned about this being the way to install MCprep. We can still adopt the extension format though.

If anything,I'm more likely expecting that we'd end up listing MCprep for free on the Blender Market, since they are planning to be an extension hsot for all plugins. I'd have to start paying for the minimum tier (need to double check how much that is) which is their offset for free products/to be a creator, but I don't think it's that much. It would not make really any sense imo to set up our own server, because then users just spend the extra time configuring this extensions server in blender for just a single plugin, when they could have already done the legacy install by that point (which is what will be realistic when first starting anyways).

StandingPadAnimations commented 1 week ago

It would not make really any sense imo to set up our own server, because then users just spend the extra time configuring this extensions server in blender for just a single plugin, when they could have already done the legacy install by that point (which is what will be realistic when first starting anyways).

Yeah BpyBuild won't be implementing server-side components (that would be a nightmare), just extension building and manifest verification. The main thing is BpyBuild won't have 100% feature parity, because we're now going purely off of documentation (eg. BpyBuild won't cap strings at 64 characters for example, because that's not a stated restriction in the docs). Granted, it'll cause some headaches, but the Blender Extension CLI script is extremely verbose...

StandingPadAnimations commented 1 week ago

Alright, pushed some basic manifest verification (https://github.com/Moo-Ack-Productions/bpy-build/commit/cd7faf726a68334e0e1a6344b163bae6212b93e5). Much less then what Blender does, but is technically correct based purely on the docs.

StandingPadAnimations commented 1 week ago

Pushed what is basically a finished extension building library (https://github.com/Moo-Ack-Productions/bpy-build/commit/9edaadbc6e9ef268c77a4823e5400f6563c94551), for addons at least

It's technically correct based on the docs, with these known parity issues (due to not being documented):

StandingPadAnimations commented 6 days ago

That's one parity issue down, several more to go: https://projects.blender.org/blender/blender-manual/pulls/104844