I only took a brief look at it... It's exciting to see a community open source effort for sure...
That said, while I have not tried things out, I did have a few thoughts:
1. The first thing that I was looking for was an index of available packages, so I could write a premake script to try them out.
I could not find that anywhere on the website.. maybe I misunderstand the idea and an index just isn't available, but that makes it fairly difficult to 'find' available packages.
Basically without an index, we're going to have 5 different forks of zlib with ZPM scripts, all mentioning 1.2.8 as their version number. That is in my opinion just wrong, and single authoritative index like
nuget.org is preferable in my opinion.
For example:
2. the _package.json and _build.json... I like the idea of json...
I very much dislike the _ filenames.... a '.' (dot), no prefix, or support both those two options would be preferable in my opinion.
same kind of goes for the _registries.json, etc... basically there is a 'standard' for 'hidden' files, I would just stick to that.
3. I don't understand what the _build.json is for.. in my opinion a premake5.lua script is what describes how the package is build, so I don't understand why a _build.json is needed?
The documentation almost looks like the _build.json is a json format of a premake5.lua script. I really don't want to learn a secondary scripting api to define premake projects.
The example here:
could and probably should just be written as a premake5.lua script
project 'example'
architecture 'x86_64'
endian 'little'
links { 'mpi', 'pthreads' }
4. The requirement to have a particular folder structure... /extern, /assets etc..
I would like to see that not be a requirement, but rather something defined in the package configuration.
For example, in our system we allow you to setup a local package cache somewhere in a shared location...
our buildfarm builds 50 branches, but they all share the same location for external packages...
In the ZPM system, it looks like all external packages would get downloaded into the 'source tree', which would be expensive in our case (2GB+ of packages per branch).
something as simple as
{
"package_root" : "c:\package_cache",
"asset_root" : "c:\asset_cache",
}
would be really great...
I think most of these things are probably easily 'fixed' if so desired. And I think the rest looks really promising, although fairly similar to
In all honesty, I love efforts like this, but I don't think it be trivial for us to use them as none of these systems provide what we need.
I wish we could all just talk about what to make, and how to make it... before we have 20 competing products...