Re: CPAN6 (was: A Semi-Public Version Control Repository for Your CPAN Modules)

2006-06-26 Thread Mark Overmeer
> Sam Vilain wrote:
>> If you are in Europe in August, you might like to come to YAPC and see
>> the announcement of cpan6, this concern is included in the design
>> requirements and making small changes to other's code will be natural
>> and safe.

* Randy W. Sims ([EMAIL PROTECTED]) [060626 06:12]:
> Has there been any public discussion of cpan6? I've only seen vague 
> references and wishful posting. Will the design requirements be open to 
> public review and comment before it's implemented?

Sam and I work on the CPAN6 idea for a few months now.  It goes much further
than simply security and multi-developer extensions to Pause. You can use it
to create, distribute, and merge CPAN-like archives; on a meta-archiving
level.  Especially this requires new terminology, which we now try to freeze
in the YAPC-paper and other design documents.  Public discussion on this
moment would eat all our time.  Of course, we hope it will grow into a
community project after the YAPC.
-- 
Regards,
   MarkOv


   Mark Overmeer MScMARKOV Solutions
   [EMAIL PROTECTED]  [EMAIL PROTECTED]
http://Mark.Overmeer.net   http://solutions.overmeer.net



Re: CPAN6 (was: A Semi-Public Version Control Repository for Your CPAN Modules)

2006-06-26 Thread Leon Brocard

On 6/26/06, Randy W. Sims <[EMAIL PROTECTED]> wrote:


Has there been any public discussion of cpan6? I've only seen vague
references and wishful posting. Will the design requirements be open to
public review and comment before it's implemented?


Of course not - but in the usual Perl way, if you don't like it, you
can build your own cpan6!
And release it to, errr, CPAN.

Sorry, slightly tongue in cheek.

But as with most Perl 6 projects, I have to ask: Why do we have to
wait for Perl 6 before we get a better CPAN?

Or is this getting too meta and should I wait until your yapc talk
instead... Leon


Re: A Semi-Public Version Control Repository for Your CPAN Modules

2006-06-26 Thread Shlomi Fish
On Monday 26 June 2006 08:54, Sam Vilain wrote:
> Shlomi Fish wrote:
> > Now, Adam Kennedy recently made an interesting step of making commit
> > access to a Subversion repository with the source code for most of his
> > modules to anyone with a valid PAUSE login:
> >
> > http://use.perl.org/~Alias/journal/29327
> >
> > My suggestion is for you to do something similar. What do you think? Is
> > there any reason for you not to do so?
>
> Shlomi,
>
> Another option is to just upload the distribution with your changes
> using your own PAUSE ID to cpan.  It will not get indexed, but succeeds
> in that users who don't know about or trust some external repository can
> still access your changes via the CPAN network.

I really don't want to do that, because it's not a real solution. This mailing 
list, modules@perl.org and other forums are inundated with such requests for 
gaining maintainership of authors who disappeared. Now Damian did not 
disappear - he's still alive and kicking - he just doesn't have the time to 
apply all patches or fix all bugs. 

Once a FOSS project becomes popular and the author becomes busy, then having 
only one person able to commit changes to such a project, scales less and 
less. That's what version control and multiple commiters (or alternatively or 
complementarily distributed version control) is for. 

I could release a module I have changed for with patch A, and then patch B, 
and then patch C, etc. I've already done it with 
http://www.shlomifish.org/open-source/bits-and-bobs/gringotts-patch/ which is 
written in C. However, I'd rather take advantage of Audrey Tang's and Adam 
Kennedy's lead and simply commit changes directly to their version control 
system so they'll eventually be available upstream.

>
> If you are in Europe in August, you might like to come to YAPC and see
> the announcement of cpan6, this concern is included in the design
> requirements and making small changes to other's code will be natural
> and safe.
>
> http://www.birmingham2006.com/cgi-bin/yapc.pl?act=talk-item&talkid=51
>
> Sam.

Well cpan6 aside, I've thought about an idea for Park ( 
http://www.shlomifish.org/park-lisp-fooware/park-lisp-informal-spec/ ) which 
I have yet to put in writing in the slowly-progressing informal spec, but 
it's doable for other languages too:

What happens is that everyone can register a "vendor tag" in CPAN, which is an 
alphanumeric name. He can also make other people co-maintainers of this 
vendor tag. Then new versions of modules of an existing author can be 
released under a vendor tag that they belong to. And the user can specify to 
install modules that belong to a certain vendor tag. 
(e.g: "install --vendor=ShlomiFish Parse::RecDescent").

Naturally, it introduces some problems, and probably not a perfect solution 
but worth thinking of. Note that I hope to see some of the non-Perl6-related 
improvements to Perl6 back-ported to CPAN (or to CPAN 2.0 - ;-)).

Another improvement I thought is a list of secondary sources, each one with 
its own list of mirrors. This will allow:

1. For projects to set up secondary sources of modules, where they have more 
control of (or alternatively are of a non-free license).

2. For organisations to set up CPAN-like sources of in-house 
(so-called "proprietary") packages for the entire organisation, to be 
installable and updatable from a central location.

Regards,

Shlomi Fish

-
Shlomi Fish  [EMAIL PROTECTED]
Homepage:http://www.shlomifish.org/

95% of the programmers consider 95% of the code they did not write, in the
bottom 5%.


Re: A Semi-Public Version Control Repository for Your CPAN Modules

2006-06-26 Thread Sam Vilain
Shlomi Fish wrote:
>> Another option is to just upload the distribution with your changes
>> using your own PAUSE ID to cpan.  It will not get indexed, but succeeds
>> in that users who don't know about or trust some external repository can
>> still access your changes via the CPAN network.
>> 
>
> I really don't want to do that, because it's not a real solution.  This 
> mailing 
> list, modules@perl.org and other forums are inundated with such requests for 
> gaining maintainership of authors who disappeared. Now Damian did not 
> disappear - he's still alive and kicking - he just doesn't have the time to 
> apply all patches or fix all bugs. 
>   

I'm not sure why you say it is not "real" - would you care to elaborate
the failings in this working solution that you see?  I've come across
authors who have thanked me for doing a release for them, and it means
that the *users* of the modules don't have to wait for the upstream
author to do a release if they want to get the modified version.

Sometimes it's just the simplest and most effective way to publish the
changes.

> Once a FOSS project becomes popular and the author becomes busy, then having 
> only one person able to commit changes to such a project, scales less and 
> less. That's what version control and multiple commiters (or alternatively or 
> complementarily distributed version control) is for. 
>
> I could release a module I have changed for with patch A, and then patch B, 
> and then patch C, etc. I've already done it with 
> http://www.shlomifish.org/open-source/bits-and-bobs/gringotts-patch/ which is 
> written in C. However, I'd rather take advantage of Audrey Tang's and Adam 
> Kennedy's lead and simply commit changes directly to their version control 
> system so they'll eventually be available upstream.
>   

A lot of what you say is true, but we should be extremely careful not to
enforce or specifically condone any particular style of development. 
Some prefer the wiki-style/open commit approach and hence use SVN as a
robust filesystem for this, others prefer that changes are reviewed
first and probably use a distributed system like bazaar, git, darcs,
etc, for a cleaner concept of branches.

Consider how this works with savannah.gnu.org.  If you have a patch to a
software package that implements a particular feature, you can just
upload it to the system.  It is then available for all users, not just
the maintainer.  Later, the maintainer can mark the patch as included in
a release, and the patch gets marked done.  Making it easy for these
changes to be available to a given user is just a matter of installation
tool sophistication.

However, if you just commit on an SVN trunk, your trunk becomes a
"ghetto" of features which may or may not work.  Some relish in delight
at the prospect of grokking these new ideas from people, and the success
of pugs is testament to the energy of people like Audrey who actively
engage in this process.  But if the maintainer doesn't do that for all
their modules all the time, the ghetto ends up needing much clean-up
before release, possibly involving a painful process of branching and
cherry picking, which is always painful with svn.

I think the point is that it is not valid to imply that a module author
is not fulfilling their moral duty because they do not embrace the wiki
model and want to adopt your changes.  There are plenty of options - set
up your own VCS, upload to CPAN independently, post a patch to the
module's users' mailing list, etc.

The reason I recommended uploading to CPAN, is because as CPAN to VCS
bridges emerge, your new version will fit in tidily as a separate
branch.  Assuming the author uses this bridge they can then just merge,
then "commit" back via the bridge to CPAN.

> Well cpan6 aside, I've thought about an idea for Park ( 
> http://www.shlomifish.org/park-lisp-fooware/park-lisp-informal-spec/ ) which 
> I have yet to put in writing in the slowly-progressing informal spec, but 
> it's doable for other languages too:
>
> What happens is that everyone can register a "vendor tag" in CPAN, which is 
> an 
> alphanumeric name. He can also make other people co-maintainers of this 
> vendor tag. Then new versions of modules of an existing author can be 
> released under a vendor tag that they belong to. And the user can specify to 
> install modules that belong to a certain vendor tag. 
> (e.g: "install --vendor=ShlomiFish Parse::RecDescent").
>   

This is actually required for Perl 6, to be able to specify a vendor. 
eg, `use Parse::RecDescent-(Any)-cpan:SHLOMI'.  The vendor tag is just
your PAUSE ID, or perhaps a cpan6 archive URL.

It is expected that this functionality will eventually be retrofitted
into Perl 5 via CPAN6.pm.

> Naturally, it introduces some problems, and probably not a perfect solution 
> but worth thinking of. Note that I hope to see some of the non-Perl6-related 
> improvements to Perl6 back-ported to CPAN (or to CPAN 2.0 - ;-)).
>
> Another improvement 

Re: CPAN6

2006-06-26 Thread Sam Vilain
Leon Brocard wrote:
> Of course not - but in the usual Perl way, if you don't like it, you
> can build your own cpan6!
> And release it to, errr, CPAN.
>
> But as with most Perl 6 projects, I have to ask: Why do we have to
> wait for Perl 6 before we get a better CPAN?
>   

We don't, we're building it using Moose :-).  You're waiting on good old
fashioned hubris.

> Or is this getting too meta and should I wait until your yapc talk
> instead... Leon
>   

Yes, come to the talk, it's 98% "meta" free and no added "Schema".

Sam.