[Haskell-cafe] Ticking time bomb

Kevin Quick quick at sparq.org
Fri Feb 1 03:32:52 CET 2013


> Git has the ability to solve all of this.
...
> 2. Uploads to hackage either happen through commits to the git  
> repository,
> or an old-style upload to hackage automatically creates a new anonymous
> branch in the git repository.
> 3. The git repository is authorative.  Signing releases, code reviews  
> etc.
> all happens through the git repositories.  This gives us all the
> flexibility of a git-style trust model.
...
> 5. Who owns which package names can be held in a separate meta-tree git
> repository, and can have consensus requirements on commits.
> 6. This special meta-tree can also contain suggested verification keys  
> for
> commits to the other hackage git trees.  It can even contain keys that
> protect Haskell namespaces in general, so that no hackage package can
> overwrite a protected Haskell namespace.
> 7. As backward compatibility, the meta-tree can sign simple hashes of
> already existing packages on hackage.
...
> 1. There could be some git magic script that downloads the signed git tag
> objects only (small data set).  Then another script would generate a
> git-compatible SHA1 of the extracted tarball, given that the tarball was
> fetched from hackage.
> 2. Or cabal-install could fetch directly from git repositories and use
> standard git verification.
> 3. Or a trusted machine creates tarballs from the git repositories, signs
> them and uploads them to hackage.

Without details of git's trust/verification model, it's difficult to see  
how this particular SCM tool provides the trust capabilities being  
discussed any better than a more focused solution.  Additionally, the use  
of git is also difficult for many Windows users (80MB installed footprint,  
last I tried).  git has a much broader solution space than simply ensuring  
the integrity of package downloads, especially when "there could be some  
git magic script" that is still not identified and appears to have the  
same insecurities as the package download/upload itself.

Instead of using the "git" solution and looking for problems to solve with  
it, IMHO we should work from clearly defined problem to solution in  
general terms as our class, and then determine what specific tools  
represent an instance of that  solution class.

-- 
-KQ



More information about the Haskell-Cafe mailing list