Regarding a package manager: I think one of the key features should be a way to handle dependencies between addons.
One example would be the asyncio functionality. Yes, asyncio is already in the standard library, but the loop implementation is not. If there are multiple addons using asyncio it would be a good idea to have them depend on a common asyncio loop. Currently that would mean putting the loop implementation into the main distribution and enabling it by default. Or putting code into both addons and then try to check if one is already running. Another example would be a library with useful functions for addons, for example my blender-vraag library, which isn't all that useful currently, but there could eventually be multiple addons depending on it. They shouldn't have to bring their own copy or even try to load two different versions of the same code. A solution for some addons to use binary extensions would be great, too. But this is, of course, terribly complicated because of multiple platforms. A first step may be to enable cython compiled extensions, because they don't necessarily require linking to outside libraries, and are easiest to write. In general, I recommend looking into the setup tools and packaging solutions in the general Python community. It used to be terrible, but now we believe we have sort of figured it out. PyPI serves binary WHEEL packages for all the major platforms and some minor platforms. Microsoft has released a free compiler for Python extensions. The Conda package manager has also been a big step forward, but it would come with much too high overhead and architectural changes. My proposal regarding the relation between packages and addons: A package may include zero, one or more addons. That way a package could contain an external library in a version that works well in blender (zero addons), a conventional addon (one addon), or a bigger set of add-ons which belong together but can be activated separately. In any case, a package would place some (hopefully very light) code to be run at every blender startup, like it is now with most addons. I'd also like to volunteer to put some effort into an asyncio integration. There are a couple of ways to install an event loop into Blender, and some extra functionality to expose blender's event handling would also be nice. _______________________________________________ Bf-committers mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-committers
