Should we make package bundles, test, and document them?

I’ve played some Minecraft modpacks and found some insights.
First, why does it matter? Because Julia and Minecraft modpacks share many structures, independent modules working together, and the same module in different contexts can feel and behave completely differently.
While it’s possible to add individual mods to your playthrough, you would usually take a pre-packaged modpack, usually with a few tweaks to glue them together, and with a guidebook.

Back to Julia, there are many packages, and composed together, they can do great things, this is opposed to a few large, tightly coupled packages other ecosystems use. However, this comes with many issues, for example, if package A documents itself with package B as some examples, the documentation might be incomplete when using it with package C. The code might not even work as intended. This is a possible solution to the correctness and documentation issue while maintaining the generic nature of the code. The Minecraft modpack community offers an insight. People use packs, not individual mods.

Make package bundles. Julia is composable, but it doesn’t mean the user always want to be the one who does the composition. Maybe even write some codes to glue everything together.

Test package bundles, The package behavior might not be tested on all possible contexts, but you can test them on cases, for this reason, even when the individual packages are tested, the complete bundle must be tested again.

Document package bundles. It’s not enough to document individual packages, but how they’re used together.

For example, a data science bundle might include a Dataframe package, Flux, with certain selected backends, and so on.

Since packages can be composed together in a variety of non-trivial ways, maybe documentation and correctness issue is solved by test and documentation of particular combination instead.

This solution, however, does have its negatives. It’s more work to be done, for example, even if they aren’t necessarily works from package authors.

1 Like

It seems people aren’t really interested in Minecraft modpack insight, changed the topic name.

I agree that “bundles” would be a really neat thing to have. Not for use in packages, where more fine-grained control of dependencies is needed, but for every-day use in scripts and testing.

Using Reexport.jl it would only take a few lines of code to create a bundle, so anyone could do it.

1 Like

Isn’t it a bundle any package that (with minimal new code) specializes other packages for a new combined use?

Do you envision some additional support from the language or the package manager?

I imagine you’d also want to add some tests for the kinds of use cases you’re envisioning

The lesson suggests documenting both individual packages and bundles. Bundles might contain a bunch of compatibility patches and so on. (Would some such patches be considered type piracy? Maybe we’d then have to have package tweaks…) They’d need to be tested and documented, that adds a lot of effort too.