Monolithic vs fine-grained crates


I tried to make fine grained crates for winapi. In particular I made a -sys crate for each library in the Windows SDK. That resulted in me having over 400 crates to individually maintain and publish and keep track of. I am currently in the process of switching away from that model to a simple monolithic winapi.


Why go from one extreme to another? Maybe there is a way to group libraries into larger groups using some criteria?

And what in your opinion hardest part of maintaining large number of small crates? It seems what publishing can be done using a simple script tool, while maintaining and tracking cost will not be that different as you already store all crates in one repository, thus migration to one monolithic crate will be essentially equivalent to reorganizing folder structure of your project.


Maybe this is calls for a new feature: “collection” crates or some such.
They contain no actual code, but can depend on other crates. So the
OP’s question would be answered by “make a bunch of small crates and put
them in a single collection crate”.

That sounds a bit like @aturon’s Metapackages proposal to me.

If they became a thing I think would need to make it easy to find them and see what they’re bundling up.