I think much of this can be tackled by Maven plugins during the
build already. I can very well imagine
tycho-p2-repository:archive-repository
learning to compress the update site with zx as well.
Of course. We have to weight what has to be done on the client side and on the server side. However, for things that we want to enforce, I think this is much easier to do it on the server side.
Same thing goes for mirror and stats URIs.
Yes, on the server side we can implement some checks and reject repos
that don't meet the criteria instead of doing the actual work.
However, I think that everybody will more than happy if the server
does most of the hurdle and they don't have to change their build to
do it. Moreover, improvements on the server side are much easier to
deploy than to convince everybody to use a new version of a Maven
plugin ;)
Implementing the checks on the server (web-service) side and rejecting
if the quality criteria (no mirror URIs, no index.html, whatever) are
not met sounds reasonable.
I would just prefer if much of the actual metadata would be filled in
on the client/build side, not by the server/publisher. In particular,
this makes it much easier to test things locally; just look at the
artifacts.xml and check whether the stats URI is set, for example.
Also, you would not need to pass so many arguments to the publisher
server (like stats URI, mirror URI, project description). All that
IMHO should be required is the desired location on
download.eclipse.org.
I envision this to be a bit like Maven Central. You upload your
JAR+POM, it gets checked, and then published at a certain location of
all quality criteria are met.
In fact, I think Tycho by default already produces the perfect
artifact to upload to a publishing web service: the zipped update site.
What do you think?