Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
On 17 March 2011 12:26, Peter Bex peter@xs4all.nl wrote:
 I haven't had time to digest this fully, but here are some initial remarks:

 Your proposal ignores one of the main design goals of the distributed egg
 proposal; it is not backwards compatible; from what I understood, you want
 to modify chicken-install.

Correct.

 The other remark I have is that it would require substantial rethinking
 and recoding of our tools, including making a full-fledged package manager
 from chicken-install complete with user-overlaid local patches.  Felix has
 said before he doesn't want that, and I support him in that; OSes have
 package managers, and chicken-install should stay simple.

With a one-stop egg install tool, which also manages dependencies (as
chicken-install currently does), there needs to be smarts somewhere in
the system. At what point does one draw the line and call it an
overblown package manager, I'm not sure :)

At its essence, this portage-like system:
* keeps the maintained tree simple. You can see everything at a
glance, and sources are kept out.
* keeps the load on egg authors as low as possible (you can keep your
existing dev workflow, and submit new versions of eggs just by
updating a single symbol in one file - and pushing that to the tree
maintainers)
* pushes the complexity into a single tool. This next-gen
chicken-install can start out simple, and functionality can be added
over time.
* makes it a simple one-liner if you want access to the sources (with
full history).
* we don't have to deal with the complexities of integrating outside
repo's with our repo, etc.


 Finally, I think your approach also requires people to submit their
 finished eggs somewhere as a tarball once they've tagged a release?
 That also ignores the design goal no extra hassle.

Not exactly (see (5  6) Making it easier for egg authors from the
previous mail). (get-files) and (get-docs) can use any or all of the
following:

(unpack some_archive 'type_of_archive)

(fetch-from-git 'tag)

(fetch-from-mercurial 'tag)

The egg author must:
1. have his code available somewhere, either within a repository, or
as an archive which is publically accessible.
2. give us instructions on:
  * how to compile (setup ...)
  * how this egg fits into the tree of eggs (meta ...)
  * how to fetch the code (get-files), (get-docs)

No matter how you look at it, this is the bare minimum for an egg
author to do - no matter how we install eggs. A portage-like system
doesn't add to this bare minimum - it just arranges things differently
(hopefully, in an easier to use manner than we have now).

--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
On 17 March 2011 17:56, Felix fe...@call-with-current-continuation.org wrote:
 Please take a moment to appreciate the
 excessively careful tone of this reply, something that is quite
 untypical for me. :-)

I'm taking the liberty of responding to each issue in a seperate mail.
I must cut down on these War and Peace novels I'm spamming this
thread with :)

(and apologies if I'm taking this thread too far from the original topic)

--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
 Imran said:
 Why a local tree? Because this makes it easier to overlay a personal
 tree on top. In ~/.chicken-install, I can define a local overlay to be
 applied on top of the official tree. I can pop my new egg recipes in
 this local tree, and try them out, before submitting them upstream.

 Felix said:
 When mixing trees that way, how do you ensure the combination of them
 is consistent?

The global tree. I can't write to this.

+ networking/
  + zmq/
+ recipe-zmq-1.0
+ recipe-zmq-2.0
+ patches/

I want to add some of my own changes to zmq, which haven't been
accepted upstream by the zmq egg authors yet - but I need them for my
locally deployed chicken scheme codebase. I want to use the benefits
of the egg infrastructure for deploying this modified zmq lib locally
(possibly across multiple machines)

The local tree is empty, and I just add the following:

+ networking/
  + zmq/
+ recipe-zmq-2.0.1
+ patches/
  + my-changes-1
  + my-changes-2

If I run `chicken-install zmq-1.0` or `chicken-install zmq-2.0`, then
chicken-install finds the recipes for these in the global tree, so it
ignores the local tree *entirely*.

If I run `chicken-install zmq-2.0.1`, then chicken-install doesn't
find any matching recipes in the global tree, so it looks in the local
tree before throwing an error. It finds a recipe for zmq-2.0.1, so it
procedes to use the local tree. For patches, it looks in the
local_tree/networking/zmq/patches , and then also in
global_tree/networking/zmq/patches (so you can avoid needlessly
duplicating some patches from the global tree that you might still be
using). Or we can just use the patches/ dir from the tree we're using,
if that makes things clearer.


--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
 Imran said:
 chicken-install first looks in *local-pkgs* and then *pkgs* to see if
 my-wonderful-egg-2.0.tgz exists. If it doesn't, then chicken-install
 looks upstream (from upstream-pkgs). If chicken-install had to fetch
 something from upstream-pkgs, then this is automatically copied to
 *local-pkgs*. This gives rise to a number of possibilities:

 Felix said:
 How can we be sure the system where the egg is to be installed
 has tar/gunzip? (a pure mingw32 build doesn't have this).

Good point.

('ci' = 'chicken-install')

ci is used in 2 different contexts:

1. To populate a tree. Use `ci --fetch-only` on a range of eggs, to
grab the upstream files, and populate *local-pkgs*. This would be how
the global tree maintainers ensure that *pkg* is populated (as
described in my first mail).

   In this context, our ci tool is dependent upon certain local
infrastructure being present. If we want to be able to pull from an
upstream git repo (fetch-from-git), then we need git installed.
Similarly with other VCS's we're supporting pulling from. Same with
tar, and any other archive formats we want to allow egg authors to
submit their work in.

2. To install eggs. By regular users, on their machines, on different
architectures. Where we're making no assumptions on whats available
locally.

   Well, in this instance, no matter what instructions the recipe file
contains, we're assuming that the global *pkgs* already has the stuff.
ci looks there first. (no outside deps once *pkgs* has been seeded, as
explained in the first mail)

   So, no matter what type of archive/source tree we obtained in
context (1), ci is free to write the cached copy of that content (in
*local-pkgs*) in our own format. And in this context (2), thats the
format ci is going to use.

   The only assumption we're going to make about the host system is
that we have the base chicken-scheme distribution already installed
and available. So our archive format is something which we can easily
unpack just using the tools the base distribution provides.

--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
 Imran said:
 * we can have recipe-my-wonderful-egg-latest, where chicken-install
 grabs the sources from the upstream repos HEAD.

 * we can have recipe-my-wonderful-egg-felix-2.0, pointing to Felix's
 forked version of my egg (different info for upstream)

 Felix said:
 Forking eggs brings up the consistency problem again. I don't want
 to fork, there should be no forks, I'd say.

I disagree. We may be talking about different things here.

Lets assume a new egg, dynamite, is added to the tree. Becuase of the
new freedoms this system allows, dynamite's author keeps his repo and
workflow on github, and just submits a recipe which specifies the repo
details, and tag for each version of dynamite he wants to release.

Dynamite is popular, and gets repeatedly forked on github. Many of
these forks result in patches flowing back to dynamites author. But
there are 2 other forks (by Peter and Felix) where a fundamental
architectural difference exists in how some backend stuff is done.

To any user of dynamite, any of the 3 are perfect drop-in replacements
for each other. The exact same API, etc. The only difference is that
they have different performance characteristics in certain situations.
Both Peter and Felix endeavour to remain API compatible with the main
dynamite.

How do you handle this in the official egg tree?

We could have 3 seperate eggs, dynamite, dynamite-peter and
dynamite-felix. If there were any API differences at all, that would
be the cleanest way to handle it.

But in this instance, one could consider that its really 3 different
flavours of the same egg. So, perhaps this might be a better way to do
it?

dynamite/
  recipe-dynamite-1.0
  recipe-dynamite-1.0-felix
  recipe-dynamite-1.0-peter

If dynamite is getting auto-installed as part of a dependency, by ci,
then it installs dynamite-1.0. But if *I* am explcitly deciding which
dynamite I want, I can choose:

chicken-install dynamite
chicken-install dynamite-1.0-felix
chicken-install dynamite-1.0-peter

All 3 recipes provide the same symbol to the dependency tree (dynamite).

This may never come up, or we may prefer to have 3 eggs all doing
exactly the same thing. But the point is, its possible (as opposed to
impossible, with the current setup) and easily manageable.

--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Peter Bex
On Fri, Mar 18, 2011 at 08:59:10AM +, Imran Rafique wrote:
  Felix said:
  When mixing trees that way, how do you ensure the combination of them
  is consistent?
 
 The global tree. I can't write to this.
 
 + networking/
   + zmq/
 + recipe-zmq-1.0
 + recipe-zmq-2.0
 + patches/
 
 I want to add some of my own changes to zmq, which haven't been
 accepted upstream by the zmq egg authors yet - but I need them for my
 locally deployed chicken scheme codebase. I want to use the benefits
 of the egg infrastructure for deploying this modified zmq lib locally
 (possibly across multiple machines)

I don't see why chicken-install needs to be bloated with all this stuff.
Why not maintain a mercurial patch queue or use quilt.  You could also
just have a local clone of a repo with your own changes?

Adding all this stuff to chicken-install needlessly complicates an
intentionally simple tool.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Peter Bex
On Fri, Mar 18, 2011 at 09:00:20AM +, Imran Rafique wrote:
 Dynamite is popular, and gets repeatedly forked on github.

Forking's bad, mmmkay?

 How do you handle this in the official egg tree?
 
 We could have 3 seperate eggs, dynamite, dynamite-peter and
 dynamite-felix. If there were any API differences at all, that would
 be the cleanest way to handle it.
 
 But in this instance, one could consider that its really 3 different
 flavours of the same egg.

To me that seems to be a completely hypothetical situation and unlikely
to happen in the real world.  Let's keep the discussion grounded in
reality, okay?

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
On 18 March 2011 09:15, Peter Bex peter@xs4all.nl wrote:
 On Fri, Mar 18, 2011 at 08:59:10AM +, Imran Rafique wrote:
  Felix said:
  When mixing trees that way, how do you ensure the combination of them
  is consistent?

 The global tree. I can't write to this.

 + networking/
   + zmq/
 + recipe-zmq-1.0
 + recipe-zmq-2.0
 + patches/

 I want to add some of my own changes to zmq, which haven't been
 accepted upstream by the zmq egg authors yet - but I need them for my
 locally deployed chicken scheme codebase. I want to use the benefits
 of the egg infrastructure for deploying this modified zmq lib locally
 (possibly across multiple machines)

 I don't see why chicken-install needs to be bloated with all this stuff.
 Why not maintain a mercurial patch queue or use quilt.  You could also
 just have a local clone of a repo with your own changes?

Right. Till you have a situation where you've added customisations to
a dozen eggs (perhaps your org is deploying scheme on some
non-standard environment, necessitating these changes), and you need
to manage deploying all these customised eggs to multiple hosts.

And you end up wishing you could use the regular chicken egg
installation processes ...

I don't agree with the bloat assesment. If ci can read a global
tree, it can read a local one which has exactly the same format. If it
only looks in the local tree if it can't find the requested egg in the
global tree, then it doesn't get in the way of anything - until you
*need* this functionality and then create your local tree.


 Adding all this stuff to chicken-install needlessly complicates an
 intentionally simple tool.

Going back to your previous comment regarding not wanting to touch
chicken-install. If that is really the case, then everything I've said
here is moot anyway. I'm just wasting everyone's bandwidth.

--
Regards,
   Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Peter Bex
On Fri, Mar 18, 2011 at 09:53:19AM +, Imran Rafique wrote:
  I don't see why chicken-install needs to be bloated with all this stuff.
  Why not maintain a mercurial patch queue or use quilt.  You could also
  just have a local clone of a repo with your own changes?
 
 Right. Till you have a situation where you've added customisations to
 a dozen eggs (perhaps your org is deploying scheme on some
 non-standard environment, necessitating these changes), and you need
 to manage deploying all these customised eggs to multiple hosts.

First, that way of working creates more problems than it's worth; this
will make it a pain in the ass to maintain.  But let's say you do this.

Chicken-install already supports this; just point it at a directory to
install.  You can even run your own in-house henrietta from which you
distribute your modified egg tree.  Chicken-install is *not* the place
to fix this.

  Adding all this stuff to chicken-install needlessly complicates an
  intentionally simple tool.
 
 Going back to your previous comment regarding not wanting to touch
 chicken-install. If that is really the case, then everything I've said
 here is moot anyway.

It's not cast in stone, but I don't think anyone's willing to take the
effort to add this to chicken-install, or maintain the resulting pile
of code when you would.  If you're willing to implement this *and* take
up maintenance of chicken-install, I suppose there's no problem.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
On 18 March 2011 09:20, Peter Bex peter@xs4all.nl wrote:
 On Fri, Mar 18, 2011 at 09:00:20AM +, Imran Rafique wrote:
 Dynamite is popular, and gets repeatedly forked on github.

 Forking's bad, mmmkay?

Are you lecturing me, or the denizens of github?

--
Regards,
       Imran Rafique

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Peter Bex
On Fri, Mar 18, 2011 at 10:02:17AM +, Imran Rafique wrote:
 On 18 March 2011 09:20, Peter Bex peter@xs4all.nl wrote:
  On Fri, Mar 18, 2011 at 09:00:20AM +, Imran Rafique wrote:
  Dynamite is popular, and gets repeatedly forked on github.
 
  Forking's bad, mmmkay?
 
 Are you lecturing me, or the denizens of github?

It's long been general wisdom that forking should be avoided at all
costs, not because of technical reasons but because of social reasons.

So yes, I think the way github's promotes rampant forking is bad.
See also http://sheddingbikes.com/posts/1299555462.html  and
http://producingoss.com/en/forks.html

If a fork is made that's okay, but *only* as long as that fork is
short-lived and integrated back into the mainline tree.  And in the
long run that means you probably want to wait for that event before
starting to use that code, generally.  If not, you will only have
to use the forked repo temporarily.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread Imran Rafique
On 18 March 2011 10:08, Peter Bex peter@xs4all.nl wrote:
 On Fri, Mar 18, 2011 at 10:02:17AM +, Imran Rafique wrote:
 On 18 March 2011 09:20, Peter Bex peter@xs4all.nl wrote:
  On Fri, Mar 18, 2011 at 09:00:20AM +, Imran Rafique wrote:
  Dynamite is popular, and gets repeatedly forked on github.
 
  Forking's bad, mmmkay?

 Are you lecturing me, or the denizens of github?

 It's long been general wisdom that forking should be avoided at all
 costs, not because of technical reasons but because of social reasons.

 So yes, I think the way github's promotes rampant forking is bad.
 See also http://sheddingbikes.com/posts/1299555462.html  and
 http://producingoss.com/en/forks.html

 If a fork is made that's okay, but *only* as long as that fork is
 short-lived and integrated back into the mainline tree.  And in the
 long run that means you probably want to wait for that event before
 starting to use that code, generally.  If not, you will only have
 to use the forked repo temporarily.

Well, its all down to the social aspects of open-source, as you
pointed out. The key reason why I thought of translating something
portage-like to chicken eggs is I really think it offers maximum
flexibility (with not too much overhead in tooling - the original
portage tooling was a *lot* simpler than it is today). These points
regarding forking were just illustrations of just how much additional
flexibility it could give, if you really wanted to push it but still
stay within the confines of (as Felix called it) The System :)

They're not the main selling points of a portage-like architecture,
which really are:
* clean seperation between upstream sources, and the framework needed
to organise and distribute them
* but still have easy access to upstream repos (the tool just makes it
easy for you to clone, provided you have the necessary local VCS tools
to do so)
* require as little bookkeeping work as possible to submit eggs
* ensure no broken deps, once *pkgs* is seeded.
* make it easy to fix broken eggs at the global tree level, if we
can't wait for the fixes to be propogated upstream and then pushed
back in the normal manner.

But now I'm just repeating myself again, and clogging up this thread
from perhaps more closer debate on your specific proposal :)

(and btw, the generally accepted scenario where the main chicken devs
patch a number of eggs which are trivially broken by a new chicken
update - thats also a fork from upstream)

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-18 Thread John Cowan
Peter Bex scripsit:

 It's long been general wisdom that forking should be avoided at all
 costs, not because of technical reasons but because of social reasons.

Well, not at *all* costs.  Some forks are essential, like gcc/egcs and
XFree86/X.org.  The list of stable forks is very small, maybe a dozen:
FreeBSD/NetBSD, NetBSD/OpenBSD, byacc/bison, Emacs/XEmacs are the ones
that come to mind right away.

-- 
Si hoc legere scis, nimium eruditionis habes.

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-17 Thread Imran Rafique
Its been interesting reading through this thread. I'd like to suggest
some amendments to Peter's proposals, addressing some of the concerns
highlighted. Specifically:

Felix:
 WE DON'T WANT BROKEN LINKS. As you correctly point out, a non-existent deep
 dependency will be horrible indeed (catastrophic, actually).  How to avoid
 broken links or missing eggs without a centralized repository I can't say.

= Back to basics =
In essence, we're trying to provide a single blessed tree of eggs.
In itself, this doesn't have to be in a VCS (although thats a useful
tool to maintain the tree in). All thats relevant is that, at the end,
we have a central, blessed tree which allows us to install eggs and
their respective docs - without potentially breaking because some
upstream repo's are offline.

(By upstream, I mean egg author's own repos, where the main
development of their egg occurs)

Requirements:
1. if you just want to install an egg (any version), you only need the
official blessed tree.
2. if you want to track development, where do I go so I can see the
full version history?
3. if you want to add some contributions, where do I go?
4. if some emergency bugfixes are needed, where do they go?
5. how easily can I submit an egg for addition
6. how easily can I update an existing egg

2 and 3 are effectively the same, solved by:
  * a pointer to a repo somewhere
  * a convenient one-liner to check out a working-copy or clone from that repo
  * a link to someone who owns that repo (hey, I've got a great
patch. Can I have commit access / email it to you / chat about it?)

3 and 4 are *NOT* the same. Consider what happens when we have a new
chicken release, which might (hypothetically) break a dozen eggs
(messy in real life too!). Felix (or other dev) knows what the
breakages are, and knows what simple fixes are required, and where
(salmonella to the rescue).

With our current setup, he can just commit the fixes directly in the
svn egg repo. That solves the immediate problem. But he has to make
sure that those fixes also travel upstream to the main dev repo for
each egg (or else a new egg release will potentially re-introduce the
same problem, if those devs were still working with the previous
chicken version).

This is sort of manageable now, where everyone knows everybody. But
we're talking about building a system which can handle many many more
eggs from many many more contributors. This just won't scale.

We have the worst of both worlds right now. We're sort-of forcing all
egg contributors to use the existing svn repo - with all the hassle
that entails (getting commit access, importing sources, etc), while
also having to deal with more than 1 place for a bugfix to be pushed
to (so having that central repository doesn't really help, in the long
run).


= An amendment to Peter's proposal =
I've taken the gentoo portage system (in its simplest form), and tried
to see how a similar concept might translate to chicken's eggs.
Explaining in a little detail, for those who may be unfamiliar with
portage ...


== The tree ==
A blessed tree of 'recipes', subdivided into categories (as we have
now), dictates how every egg is installed.

Our install tool, chicken-install, operates on a LOCAL copy of this
tree, which is first fetched (from the offical egg tree repo at
call-cc.org) by:

chicken-install --update-tree

Every time chicken-install is run, it should check if the local tree
is up to date, and warn if not.

The tree looks like this:

eggs/
  + networking/
+ my-wonderful-egg/
  + recipe-my-wonderful-egg-1.0
  + recipe-my-wonderful-egg-2.0
  + patches/
+ fix-for-chicken-4.9.patch

We have 1 recipe FOR EACH version of the egg. This tree, once obtained
- works 'as is' for all versions of all eggs. You don't need to rewind
your local working copy of this tree just to install an older version
of an egg. You always want the latest version of the official tree. So
we have 1 recipe *for each* version of the egg, containing setup 
meta s-expr's, and additional info (see below).

Why a local tree? Because this makes it easier to overlay a personal
tree on top. In ~/.chicken-install, I can define a local overlay to be
applied on top of the official tree. I can pop my new egg recipes in
this local tree, and try them out, before submitting them upstream.

Also, in certain circumstances, like re-installing an egg where all
the dependencies are now available locally - you don't need network
access. So why enforce that need?

As you read on, please remember that at no time are we importing
sources (or tarballs) from upstream into this tree. Thats not
necessary in order to avoid broken dependencies.


= (1) Installing an egg =
chicken-install takes the recipe, and from that knows where to get the
files for that version. Wait a minute. Outside dependency?

Well, no. We have 2 stores (lets say *pkgs* and *local-pkgs*). *pkgs*
points to somewhere on call-cc.org, and *local-pkgs* (default #f) can
be redefined to 

Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-17 Thread Peter Bex
On Thu, Mar 17, 2011 at 12:16:19PM +, Imran Rafique wrote:
 Its been interesting reading through this thread. I'd like to suggest
 some amendments to Peter's proposals, addressing some of the concerns
 highlighted.

I haven't had time to digest this fully, but here are some initial remarks:

Your proposal ignores one of the main design goals of the distributed egg
proposal; it is not backwards compatible; from what I understood, you want
to modify chicken-install.

The other remark I have is that it would require substantial rethinking
and recoding of our tools, including making a full-fledged package manager
from chicken-install complete with user-overlaid local patches.  Felix has
said before he doesn't want that, and I support him in that; OSes have
package managers, and chicken-install should stay simple.

Finally, I think your approach also requires people to submit their
finished eggs somewhere as a tarball once they've tagged a release?
That also ignores the design goal no extra hassle.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-17 Thread Felix
Hi, Imran!

Many thanks for this detailed information. I'm personally not overly
familiar with portage, but what you suggest is very interesting and
sounds like an approach that could be made to work.

Please allow me to bring up the problems I see with this approach (or
with every future proposal). It's not intended to blindly bash your
suggestions, but to simply show up things that we should take into
account when thinking about... THE SYSTEM.

 In essence, we're trying to provide a single blessed tree of eggs.
 In itself, this doesn't have to be in a VCS (although thats a useful
 tool to maintain the tree in). All thats relevant is that, at the end,
 we have a central, blessed tree which allows us to install eggs and
 their respective docs - without potentially breaking because some
 upstream repo's are offline.

(constantly #t)

 We have the worst of both worlds right now. We're sort-of forcing all
 egg contributors to use the existing svn repo - with all the hassle
 that entails (getting commit access, importing sources, etc), while
 also having to deal with more than 1 place for a bugfix to be pushed
 to (so having that central repository doesn't really help, in the long
 run).

It's actually working quite fine. That patches will not flow quickly
enough to upstream is indeed right, but I don't see that as a critical
point. It is more important that the egg tree is in a working state:
there are many more users than contributors and it has to scale into
that direction as well. Communicating patches upstream is more a
problem of the responsiveness of the original maintainer, not so
much of the system that stores our eggs, IMHO.

 Why a local tree? Because this makes it easier to overlay a personal
 tree on top. In ~/.chicken-install, I can define a local overlay to be
 applied on top of the official tree. I can pop my new egg recipes in
 this local tree, and try them out, before submitting them upstream.

When mixing trees that way, how do you ensure the combination of them
is consistent?

 chicken-install first looks in *local-pkgs* and then *pkgs* to see if
 my-wonderful-egg-2.0.tgz exists. If it doesn't, then chicken-install
 looks upstream (from upstream-pkgs). If chicken-install had to fetch
 something from upstream-pkgs, then this is automatically copied to
 *local-pkgs*. This gives rise to a number of possibilities:

How can we be sure the system where the egg is to be installed
has tar/gunzip? (a pure mingw32 build doesn't have this).

 * we can have recipe-my-wonderful-egg-latest, where chicken-install
 grabs the sources from the upstream repos HEAD.
 
 * we can have recipe-my-wonderful-egg-felix-2.0, pointing to Felix's
 forked version of my egg (different info for upstream)

Forking eggs brings up the consistency problem again. I don't want
to fork, there should be no forks, I'd say.

 Now its much easier to track the real source history of any egg:
 
 chicken-install --upstream-checkout
 
 So, without going through the hassle of forcing egg authors to push
 their sources to an egg svn repo (and either abandoning their existing
 VCS, or keeping their personal VCS in sync with the egg svn), we still
 have easy immediate access to the entire history of their egg's source
 code.

How would that be working? Would this require the VCS that holds the
code to be installed?

 Felix (who has unfettered write access to the entire tree) adds a
 patch to the patches/ dir, creates a new 2.0-r1 (or 2.0.1, as long as
 we're consistant) recipe copied from 2.0, and adds the following:
 
 (get-files
   ...
   (apply-patches fix-for-chicken-4.9.patch))
 
 chicken-install will look under patches/ for
 fix-for-chicken-4.9.patch, and apply it to the sources it already
 got.

That will require a patch tool on the client system, if this is
done by chicken-install.

 
 We can get far beyond simple patches here, and maybe add other rules, like:
 * (apply-rename ) which will do a search  replace from one deprecated
 function name to a new one.

I'm not sure this can be reliably implemented, in the face of syntax
and modules.

A final note: Such a system as you describe (or the many possible
variations of it) will be of considerably complexity and will need a
long testing phase. This is not a point of criticism (any reasonably
smart system will be complex anyway), but we should be aware of the
fact that it will require manpower, and developers who are willing to
put a significant time into making this work - on all platforms. Do we
have the resources for that?

Thanks again for your input. Please take a moment to appreciate the
excessively careful tone of this reply, something that is quite
untypical for me. :-)


cheers,
felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread John Cowan
Felix scripsit:

 I like the idea of tgz-submission (did John suggest it? I can't
 remember, it's already 60 seconds later). How about a central store
 that accepts tgz's and external clients, that keep their own
 infrastructure (and DVCS's), who regularly pull repos from the actual
 contributors and have a simple tool to upload the egg? That way we
 could decouple the DVCS-Egg process from the infrastructure that
 stores and serves the egg.

The bad bit, as I was saying on #chicken, is that making and publishing
tarballs automatically isn't very easy unless you run a server.
For example, if you host on Google Code, there's no way to persuade it
to construct a tarball for the central site to pull.  So either I have
to generate a tarball by hand and upload it somewhere else (my web site,
say), or I have to run my own server, which I'm not set up to do.

-- 
John Cowan co...@ccil.org http://www.ccil.org/~cowan
Today an interactive brochure website, tomorrow a global content
management system that leverages collective synergy to drive outside of
the box thinking and formulate key objectives into a win-win game plan
with a quality-driven approach that focuses on empowering key players
to drive-up their core competencies and increase expectations with an
all-around initiative to drive up the bottom-line. --Alex Papadimoulis

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Jim Ursetto

On Mar 14, 2011, at 10:12 PM, John Gabriele wrote:

 2. *Documentation*. Python's
 [Cheeseshop](http://cheeseshop.python.org) has a neat feature where,
 if your project has html documentation, you can (manually) upload it
 directly to http://packages.python.org/project-name . This way,
 contributors aren't forced to use any particular source format for
 their docs -- as long as they can generate html from it before
 uploading [^1].

Availability of *all* documentation via the wiki, chicken-doc and chickadee is 
a huge selling point and is important to Chicken.

Python has docstrings, Chicken doesn't.

Jim
___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Jim Ursetto
On Mar 15, 2011, at 12:55 AM, John Gabriele wrote:

 My point was that, if you tell prospective egg contributors that they
 can optionally supply their own html docs, they can use whatever tools
 they want to generate that html (even write it by-hand, if they like).
 [...] you could offer them the option of just providing their
 own raw html and you could install it and host it for them at
 something like http://eggdocs.call-cc.org/package-name.

Sounds like a huge *dis*advantage to me.
Jim


___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Peter Bex
On Tue, Mar 15, 2011 at 02:19:20AM -0400, John Cowan wrote:
 Felix scripsit:
 
  I like the idea of tgz-submission (did John suggest it? I can't
  remember, it's already 60 seconds later). How about a central store
  that accepts tgz's and external clients, that keep their own
  infrastructure (and DVCS's), who regularly pull repos from the actual
  contributors and have a simple tool to upload the egg? That way we
  could decouple the DVCS-Egg process from the infrastructure that
  stores and serves the egg.
 
 The bad bit, as I was saying on #chicken, is that making and publishing
 tarballs automatically isn't very easy unless you run a server.

Did you even read the proposal?  There's a section that mentions how to
work around that for subversion and other tools that don't offer tarballs
but do offer a way to obtain the raw files.  Google code offers raw
access to files.

 For example, if you host on Google Code, there's no way to persuade it
 to construct a tarball for the central site to pull.  So either I have
 to generate a tarball by hand and upload it somewhere else (my web site,
 say), or I have to run my own server, which I'm not set up to do.

I agree that manually uploading tarballs would be a nuisance.  One of the
design goals is *no extra work* for egg authors (I suppose this other guy
didn't read the proposal either; apparently we're just bikeshedding here)
and manual egg submission is extra work.  We used to work like this about 6
years ago, before we had the svn tree.  It was annoying.

Also, for tarball submission we'd also need to write extra code, unless we
*really* want to revert to what we had 6 years ago, where people were
expected to mail their tarballs to felix directly for him to publish on the
web.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music.
-- Donald Knuth

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Mario Domenech Goulart
Hi John,

On Mon, 14 Mar 2011 23:12:06 -0400 John Gabriele jmg3...@gmail.com wrote:

  1. *Lower Barriers to Entry*. My guess is that the absolute easiest
 way for potential contributors to contribute a package is to simply
 ask them to upload a tar.gz archive of their project. Supply them with
 a handful of requirements, such as:

   * name format for the tar.gz file {like so},
   * inside the unpacked project dir, its directory structure
 should look {like this},
   * it should contain a package meta-data file named
 {such-and-such}, and the file should contain {the following sorts of
 data}.

 Then the contributor would not even have to know what sort of
 archiving or version control is done on the Chicken/Egg side of
 things. And they could use whatever version control they like.

That's not much different from the approach some egg developers use
nowadays.  The difference is that, instead of submiting a tarball, they
add their new releases to svn.

Best wishes.
Mario
-- 
http://parenteses.org/mario

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Felix
From: John Cowan co...@mercury.ccil.org
Subject: Re: [Chicken-hackers] Distributed egg repo proposal
Date: Tue, 15 Mar 2011 02:19:20 -0400

 Felix scripsit:
 
 I like the idea of tgz-submission (did John suggest it? I can't
 remember, it's already 60 seconds later). How about a central store
 that accepts tgz's and external clients, that keep their own
 infrastructure (and DVCS's), who regularly pull repos from the actual
 contributors and have a simple tool to upload the egg? That way we
 could decouple the DVCS-Egg process from the infrastructure that
 stores and serves the egg.
 
 The bad bit, as I was saying on #chicken, is that making and publishing
 tarballs automatically isn't very easy unless you run a server.
 For example, if you host on Google Code, there's no way to persuade it
 to construct a tarball for the central site to pull.  So either I have
 to generate a tarball by hand and upload it somewhere else (my web site,
 say), or I have to run my own server, which I'm not set up to do.

I don't know what you said on #chicken, but my point was that the
original maintainer is not the one who pushes the tarball. It could be
done by others, possibly automatically. The one who publishes the 
original code is not involved in the whole process other that putting
up his/her code on the internet. Other persons (with access to the
appropriate dvcs) could run a semiautomatic task to pull releases
and submit tarballs to us.


cheers,
felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread Christian Kellermann
* John Cowan co...@mercury.ccil.org [110315 00:45]:
 Christian Kellermann scripsit:
 
   - Automatically *mirror* the contributed archives on call-cc.org,
   maybe after the code has passed N salmonella rounds of master and
   experimental branches.
 
 What is an archive in this context?  Is this a .tar.gz of a whole
 remote repository in some random format (git, hg, bzr, remote svn)?
 
 This is the issue that bothers me.  Using one DVCS would be great.
 Using *every* DVCS at the whim of the egg maintainer is an invitation
 to chaos.  And the magic script will in the nature of things only
 support a subset of all the CVSes out there.

I was indeed talking about the whole repository. And no this does
not have to mean every obscure DVCS that's alive on this planet.
To lower the barrier, we could agree on a set of supported systems.

I am actually against release tarballs, as they throw away the
history. 

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-15 Thread John Gabriele
On Tue, Mar 15, 2011 at 3:06 AM, Jim Ursetto zbignie...@gmail.com wrote:

 On Mar 14, 2011, at 10:12 PM, John Gabriele wrote:

 2. *Documentation*. Python's
 [Cheeseshop](http://cheeseshop.python.org) has a neat feature where,
 if your project has html documentation, you can (manually) upload it
 directly to http://packages.python.org/project-name . {snip}

 {snip}

 Python has docstrings, Chicken doesn't.

Hi Jim,

The Python package docs at packages.python.org/package-name (and not
many packages are actually making use of the doc hosting) are not
generally generated from docstrings (though they could be). Folks in
the Python community often use [Sphinx] to generate html docs from
[ReST] -formatted text files.

[Sphinx]: http://sphinx.pocoo.org/
[ReST]: http://docutils.sourceforge.net/rst.html

I think Ruby has something similar for docs at rubyforge.

Incidentally, Perl's CPAN Search http://search.cpan.org/ is of course
the one that extracts and generates docs from embedded (POD)
documentation. It also allows developers to have straight .pod files
in their package which get rendered as html as well.

---John

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread Christian Kellermann
Hi all,

* Peter Bex peter@xs4all.nl [110303 09:32]:
 I've written up a proposal for switching our egg repository to
 a distributed type of deal:
 
 http://wiki.call-cc.org/distributed-egg-repos
 
 Since many users have indicated they are very much fed up with
 svn and would prefer to use $FAVORITE_VCS  (and some of our existing
 developers are already doing so, mostly ignoring svn) I think this
 deserves some serious consideration.

I have carried around various thoughts on this matter for a long
time now. I hope they are ready for public consumption.

Let's restate the pro's of Peters approach:

* Proper usage of version control
* Distribution of the permission bottleneck
* Lower barrier of entry
* Reducing checkout and repository size

and the cons

* Broken links  dependencies
* Documentation
* Additional complexity

I would like to adress some fears people already expressed and
propose a a bit more than Peter did in his original proposal:

Previously some folks mentioned that a DVCS means looser coupling
between the 'official' egg repo code and the DVCS contributions
with all the risks of being unmaintained, unreachable, converted
to python etc...

In my little world this can be caused by:

* maintainers leaving
* stalled development (either WORKS FOR ME or obsolete-d-by-next-hype)
* collapse of infrastructure, (sourceforge changed policies, github
sold out, etc)
* death of domain (spammers taking over, unpaid bills,...)

I think the only way to get a grip on these issues is to have a
centrally maintained repository or trust other parties to ensure
the availability of code.

Documentation: At least at the moment I cannot see a drawback in
that in either solution. Either the author cares and provides
documentation or he doesn't. We do have poorly documented eggs in
the repo at the moment and we also received nice documentation from
contributors with external main repositories.

Additional Complexity: This is also a no brainer, whichever way we
decide to go, we will have to change things in the long run. Either
to adapt to the larger SVN tree or to the new scheme. Both may be
done without breaking existing stuff (apart from path changes of
course).

So I think the only remaining hard drawback is the looming doom of
unmaintained code that I as another egg author would build on my
own egg or depend on it as a application developer in my job.

So why bother?

Because the good parts are really good.

Lower entry bars is great! Not restricting people to a certain
workflow is also great. I don't mind the checkout size of the repo
that much, maybe we can find ways to deliver a functional checkout
with some technical helper?

But the first two points are the key. I am just not sure if the
solution is the right one because of the BROKEN LINKS[tm] scenario.

What about the following sketch of an alternative:

 - Abstract the installation process through the henrietta script
 as proposed. (I really like this idea).

 - Automatically *mirror* the contributed archives on call-cc.org,
 maybe after the code has passed N salmonella rounds of master and
 experimental branches.

 - Keep the documentation in the wiki as it is.

I envision this mirroring stuff simply as a means of the contributor
adding a repo url or something similar to the repo with a branch
of it being defined as  'release' or 'stable' code. Then the magical
script will pull it in and schedule it for salmonella, mailing back
all rrors it finds. After some rounds it is accepted and actively
mirrored and registered with henrietta.

Of course this also comes with a price tag in terms of our time and
effort to get it up and running smoothly. I do think this allows
us to combine the best of both worlds though. From perliminary
research I beleive that quicklisp works according to this principle.
And if there is something new in the lisp library world, it is a
central archive and distribution channel. We already do have this
advantage, so why not open this up a little for decentral contributions?


Thanks for reading this far. I hope I was able to give you a coherent
dump of my thoughts on this.

May it fertilize the further discussion.

Kind regards,

Christian

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread John Cowan
Christian Kellermann scripsit:

  - Automatically *mirror* the contributed archives on call-cc.org,
  maybe after the code has passed N salmonella rounds of master and
  experimental branches.

What is an archive in this context?  Is this a .tar.gz of a whole
remote repository in some random format (git, hg, bzr, remote svn)?

This is the issue that bothers me.  Using one DVCS would be great.
Using *every* DVCS at the whim of the egg maintainer is an invitation
to chaos.  And the magic script will in the nature of things only
support a subset of all the CVSes out there.

-- 
All Gaul is divided into three parts: the part  John Cowan
that cooks with lard and goose fat, the parthttp://ccil.org/~cowan
that cooks with olive oil, and the part thatco...@ccil.org
cooks with butter. --David Chessler

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread John Gabriele
Hi,

Not sure if I should be posting to this list, however, I thought I'd
take a chance and chime in on 2 points:

 1. *Lower Barriers to Entry*. My guess is that the absolute easiest
way for potential contributors to contribute a package is to simply
ask them to upload a tar.gz archive of their project. Supply them with
a handful of requirements, such as:

  * name format for the tar.gz file {like so},
  * inside the unpacked project dir, its directory structure
should look {like this},
  * it should contain a package meta-data file named
{such-and-such}, and the file should contain {the following sorts of
data}.

Then the contributor would not even have to know what sort of
archiving or version control is done on the Chicken/Egg side of
things. And they could use whatever version control they like.

 2. *Documentation*. Python's
[Cheeseshop](http://cheeseshop.python.org) has a neat feature where,
if your project has html documentation, you can (manually) upload it
directly to http://packages.python.org/project-name . This way,
contributors aren't forced to use any particular source format for
their docs -- as long as they can generate html from it before
uploading [^1].

In fact, you could go one further and require that packages
contain an `html-doc` dir with at least an index.html file in it. Then
you could trivially automate and eliminate the doc upload step.

[^1]: Incidentally, the [Pandoc](http://johnmacfarlane.net/pandoc/)
tool works well for converting various input doc formats to various
output doc formats (including html).

Just my opinion, but if it's as easy as pie to create and upload a
simple tar.gz package with some html docs (even if it's just a
Markdown-formatted readme converted to html), and if there's a culture
that encourages people to do so, then I think they will.

---John

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread Felix
From: John Cowan co...@mercury.ccil.org
Subject: Re: [Chicken-hackers] Distributed egg repo proposal
Date: Mon, 14 Mar 2011 19:45:20 -0400

 Christian Kellermann scripsit:
 
  - Automatically *mirror* the contributed archives on call-cc.org,
  maybe after the code has passed N salmonella rounds of master and
  experimental branches.
 
 What is an archive in this context?  Is this a .tar.gz of a whole
 remote repository in some random format (git, hg, bzr, remote svn)?
 
 This is the issue that bothers me.  Using one DVCS would be great.
 Using *every* DVCS at the whim of the egg maintainer is an invitation
 to chaos.  And the magic script will in the nature of things only
 support a subset of all the CVSes out there.

Actually, *every* version of *every* DVCS. Keeping a central store of
all contributed repos is essential to have a consistent set of
eggs. But it should perhaps only store the raw egg, not the repo (a
tarball, say).


cheers,
felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread Felix
 [^1]: Incidentally, the [Pandoc](http://johnmacfarlane.net/pandoc/)
 tool works well for converting various input doc formats to various
 output doc formats (including html).

We should make sure not to depend on any external tools. Everything
breaks, sooner or later, and we must be able to fix it.


cheers,
felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-14 Thread John Gabriele
On Tue, Mar 15, 2011 at 1:17 AM, Felix
fe...@call-with-current-continuation.org wrote:
 [^1]: Incidentally, the [Pandoc](http://johnmacfarlane.net/pandoc/)
 tool works well for converting various input doc formats to various
 output doc formats (including html).

 We should make sure not to depend on any external tools. Everything
 breaks, sooner or later, and we must be able to fix it.

My point was that, if you tell prospective egg contributors that they
can optionally supply their own html docs, they can use whatever tools
they want to generate that html (even write it by-hand, if they like).
Perhaps I shouldn't have mentioned Pandoc as a specific example tool.
There seem to be some other options listed at
http://wiki.call-cc.org/chicken-projects/egg-index-4.html#doc-tools .

The implication being, if they don't want to document their package in
the wiki (perhaps because they've already written their docs in some
other format), you could offer them the option of just providing their
own raw html and you could install it and host it for them at
something like http://eggdocs.call-cc.org/package-name .

---John

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-04 Thread Felix
 I've written up a proposal for switching our egg repository to
 a distributed type of deal:

Hello!

Thanks again for the thorough proposal. I see that you have put a lot
of thought into it and I also believe to understand your motivations -
it should be as easy as possible for someone to create and maintain an
egg, ideally with the VCS of choice.  I personally am quite happy with
svn, even though merging is painful sometimes (But I am not a
sophisticated VCS user, I quickly get annoyed with tools that try to
force any kind of workflow on me. Commit history I find mostly
uninteresting, I just don't want to lose work).

The current system works and is arguably quite reliable. There are no
broken links, and we can do emergency repairs (like trivial syntax
errors in some deep dependency's .meta file) anytime. Being
centralized, there is always one true HEAD, and having tools like
salmonella running over the whole repo is easy. Users will generally
not be interested in commit-history or where the stuff is located,
they just want to access eggs - anytime, with up-do-date dependencies.
Everything maintained and always available. With Alaric's mirror, we
even can cope with server outages. Doing disruptive updates (say, a
new release branch) can be done (sort of) atomically.

Being distributed just for its own sake doesn't buy us anything.  WE
DON'T WANT BROKEN LINKS. As you correctly point out, a non-existent
deep dependency will be horrible indeed (catastrophic, actually).  How
to avoid broken links or missing eggs without a centralized repository
I can't say.

Having the egg tree in a git or hg repo would be nice (well, for those
that want it, of course). How to map the current layout to (say) git,
I don't know. Making it scale is another thing. Currently, eggs can be
checked out separately, which should be fine for most egg
maintainers. Having a working copy of a whole egg tree or even the
whole repo is not strictly necessary. There are tools and
VCS-extensions that provide some support for moving history from one
VCS to another, so it should be possible to develop in one VCS and
then push changes to the central egg repo is possible as well (I don't
deny that this may be awkward).

If people are uninterested to move eggs or egg releases into our repo,
that is of course bad, and making things easy for real or potential
contributors is important. What about having a mechanism for
automatically importing/updating foreign repos into our tree? Using
the mechanisms you describe, not for individual egg accesses (by
users, funnelled over henrietta), but for grabbing releases, updating
the repo and tagging? That way we could have the best of both worlds:
an egg maintainer doesn't have to bother with our repo and can just
happily develop, while THE SYSTEM checks for new releases (tags or
better: changed release-info files) and pulls the changes. The
complexity would be under our control and centralized and the hassles
of handling all sorts of VCSes could be dealt with in a central place.

So, my opinion is: the current situation is allright for us, good for
the user, but mildly inconvenient for some developers. Making things
more convenient is something I can understand. But, I must insist on
one thing: no broken links. never.


cheers,
felix

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers


Re: [Chicken-hackers] Distributed egg repo proposal

2011-03-04 Thread John Cowan
Felix scripsit:

 So, my opinion is: the current situation is allright for us, good for
 the user, but mildly inconvenient for some developers. Making things
 more convenient is something I can understand. But, I must insist on
 one thing: no broken links. never.

+1, or rather +100.

-- 
John Cowanhttp://ccil.org/~cowanco...@ccil.org
[T]here is a Darwinian explanation for the refusal to accept Darwin.
Given the very pessimistic conclusions about moral purpose to which his
theory drives us, and given the importance of a sense of moral purpose
in helping us cope with life, a refusal to believe Darwin's theory may
have important survival value. --Ian Johnston

___
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
http://lists.nongnu.org/mailman/listinfo/chicken-hackers