[isabelle-dev] Future and maintainance of ~isabelle/contrib_devel at TUM NFS

Alexander Krauss krauss at in.tum.de
Fri Jun 29 01:05:55 CEST 2012

On 06/29/2012 12:27 AM, Jasmin Christian Blanchette wrote:

>> Since our component store grows monotonically,
> The way I see it, obsolete components should be removed, so as to
> minimize confusion.

No reason for confusion here, since Admin/components tells you what you 
need (and I am assuming there is a little script that will download it 
for you if you are not sitting on NFS).

Removing "obsolete" (wrt. to what? The repository tip? The latest 
release?) versions raises the question of how to easily retrieve the 
matching revisions for older Isabelle versions. There must be a formal 
link to the matching revision in the component repository.

So here is another implementation alternative for all this:
- This assumes universal components.
- Instead of Admin/components as a file with references, there is a hg 
repository (using the largefiles extension), which evolves along with 
Isabelle and always contains exactly the components that would now be 
mentioned in Admin/components.
- The Isabelle repository contains a file with the hash of the matching 
revision in the component repository, which serves as a formal link.
- Thus, to get a fully working installation for a given Isabelle 
revision, it is enough to update the component repository to the 
matching revision, which will automatically download the relevant files.

This looks pretty much equivalent to the other proposed solutions, at 
least at this late hour. But it needs some testing with real data to get 
some experience with the largefile extension. Moreover, I am not sure if 
Mercurial 2.0+ can really be assumed to be available everywhere. My 
Debian stable installation still has 1.6.4. Currently, Isabelle 
development works just fine even with very old Mercurial.

>> there is no benefit from largefiles, since the size of the tip
>> revision basically equals the size of the whole repository. In
>> practice, this means that a pull would be cheap, but an update
>> would be prohibitively expensive.
> I'm not sure I'm following this part about "pull" vs. "update". Sure,
> the components are really big and should arguably live in a different
> Mercurial repository than Isabelle, but how is "pull" vs. "update"
> more expensive than copying files around using "scp"?

This was assuming that we do not remove old components.

>> All this is just the conceptual difference between a source code
>> repository such as Mercurial and build artifact repositories such
>> as Sonatype Nexus or Artifactory. These basically implement a
>> monotonic file store (plus integration with certain build
>> frameworks which is quite irrelevant for us).
> How easy are these to use? Are they worth learning in addition to
> Mercurial?

They are easy to use, since there are not many ways how we would use 
them: Component upload can be done via a web interface, and download is 
via http, following some path conventions. Not sure about installation 
and maintenance. They do impose some conventions and strange terminology 
on you though, which come from the Maven way of organizing stuff.

> What are the arguments in favor of a monotonic store as
> opposed to removing obsoleted components?

Well, in the end these are different implementations of the same thing, 
so the question is which one is simpler to use and maintain in the 
end... I don't know.


More information about the isabelle-dev mailing list