* Timothy S. Nelson (wayl...@wayland.id.au) [090529 12:02]:
> On Fri, 29 May 2009, Mark Overmeer wrote:
> * CPAN6; this is a piece of software for managing an archive network (such as
>   Pause6, below).  This is not specified in this document; see
>   http://cpan6.org/

Yes.  It facilitates organization of archives: exchanging releases
(f.i. software distributions), without the knowledge about the internal
organization of the archive.  This layer ensures that various servers do
not need to run the same version of the archiving software: alternative
implementations can exist as long as they have a minimal subset of

It contains things like
  . protocol negotiation
     . XML, YAML, Data::Dumper syntax?
     . packaged with tar, cpio, zip, none?
     . compressed with gzip, bzip2, none?
     . transport protocol http, ftp, rsync, ..
  . release addresses: archive name (URI), product name, version name

Quite simple.

> * PAUSE6; this is an actual network based on the CPAN6 software (see
>   above).  It also is not documented here.

Pause6 is one implementation of archive maintenance software.  In the
first version written in Perl5, it implements things like
  . archive maintenance rules
  . uploaded release inspection
  . actual storage on disk
  . trust, licenses, authors
  . sub-setting and merging archives
  . mirror synchronization
  . simple meta-data searches
  . end-user downloads
These are all server-side things: the client code is very small!  Client-
side, it is more like ftp (downloads are done via ftp, http, etc.

The simplest CPAN6 client is this:
  wget http://cpan6.org/perl5/get?product=XML-LibXML
which gives you a copy of the seperate files in the last version
of XML-LibXML without packaging or compression via http from a mirror
nearby you.  Then
  cd XML-LibXML-0.69/payload/; make install
Something like that.

So: Pause6 is the logic behind our current Pause upload interface plus
all the maintenance tasks from CPAN maintainers.

> * CPAN6.pm; this is a piece of software that starts with what it can get
>   on PAUSE6, and attempts to give you an installed perl module (this is a
>   replacement for CPANPLUS/cpan2dist)

Well, in my current implementation, CPAN6.pm is a faint layer on top
of CPAN.pm.  It will search a little differently (search on the web or
local disk when using a CD, no 02packages.details), but downloads are
still managed by LWP.

>> I think that package managers are not a "CPAN" related problem at all.
>> The Perl install tool decides which files it wants to have within some
>> file-system tree and versioned environment, and then package managers
>> distribute those files and meta-data.
> The terms you've used here are so general that they could describe any  
> one of a number of things.  I'd like some concretification or something.  
> Example?

CPAN archive and Perl install tools are fields of the software author:
his/her attempt to get software from the own disk usable on someone else's
system. Package managers are used by the end-user to have control over
their system.  This is a different problem, each OS(-version) has other

> Have you seen Software::Packager?  It's a Perl5 module that's designed  
> to create a "source package"* for any supported package manager.  

What I see in the module is two-fold:
  . some meta-data
  . some wrapping (tar)

On the meta-data side, it is much too UNIX oriented and far too little.
It totally lacks any support for platform dependent problems like
  . which charsets are supported by filesystems
  . which characters have a special meaning on various OSes, and
    how do install tools work around encountered problems.
    (for instance a ':' in a name, unicode package names, ...)
  . all kinds of important additional meta-data are missing, like
    license.  The Meta.YML is much more complete.
  . the implementation is very UNIX centric

As indicated before, I think the transport wrapper, like tar, is totally
unimportant: it should be abstracted as a transport layer, hidden on
the application level of installation tools.

> Just for the record, I'm interested in having a Software::Packager  
> port/rewrite be part of the installation tool; overlapping what you're 
> calling CPAN6.pm.

My CPAN6.pm implementation transports a directory of files from the
source (author) to the end-user, without knowledge about the content
of that directory: whether it is one perl5.tar.gz or a dozen pictures.
In parallel, it uses a meta-data file for such release, which contains
cpan6, pause6, and release specific meta-data. For Perl5, it will capture
all of the Meta.YML info and more.  For instance, it will add checksums
for all files, and crypto-signatures.

>       I'd like to suggest a further terminology split:
> -     6PAN: command-line install tool
The term 6pan has also been claimed before.
I would say "pause6" or "cpan6" (no capitals)

> -     CPAN6.pm: Module relied upon by 6PAN for interactions with Pause6
As my idea of CPAN6.pm is just a layer on top of CPAN.pm, the 6PAN
simply is the current CPAN.pm shell.

> -     Software::Packager: Module relied upon by 6PAN for interactions with
>       the local packaging system, and for installing files.
No, that is far from sufficient.
Each packaging system has some special needs: pre-install scripts, after-
install scripts, apply delta, platform dependent bug-fixes and work-arounds.
That is the work of the package builder. This package builder, just like
other service builders, like search.cpan.org, cpants and cpan-testers,
need access to as much strictly defined meta-data as they can, to extract
their specific needs.

IMO, it should go like this:

  DEB service:
       foreach newly arrived distribution in $perl5_archive (1 wget)
          download distribution                             (1 wget)
          try to deb it automatically
             or ask deb-admin to help creating a deb; next
          upload generated deb to $perl5_deb_archive        (1 wget)
       sleep some time

The system(s) with (a copy of the) $perl5_deb_archive on it can offer
a standard deb interface (ftp) via the Pause6 "Store" (being files on
disk)  Minimal effort!

Again, instead of the Perl people trying to generate as many different
package wrappers for linux brands to publish Perl software, I think
we should focus on simplifying that delicate task for the package
specialists. But leave that task to them.  When we collect detailed
meta-data, then they have a light job.

> Having clarified the terms, I'd urge people not to use the term "CPAN"  
> without qualifiers in the discussion any more, as it conflates things.

Very welcome!

>> IMO, that discussion should go in the direction of additional services:
>> the CPAN archive distributes what authors publish.  The install tools
>> (CPAN.pm/CPANPLUS/successors) make that code fit in specific operating
>> systems. As a service, other people can publish the results of their
>> specific module installation via package-managers to the world, such
>> that those people can use they platform native software management
>> tools.  Just like search.cpan.org is an independent additional service
>> on the CPAN archive.
> Are you arguing here for eg. a yum/apt/whatever repository on Pause6?

Any collection can be kept in a Pause6 implementation, so also a whole
OpenSuSE repository.  When a new version is released by them, they
can distribute the packages under embargo to the mirrors.  Then, at a
certain moment of time, the embargo is lifted (by time, appearance of some
specific other module in the archive or by changing the archive rules)
Very simple!

Currently, ftp-server maintainers get a special email from SuSE that a
new release can be downloaded on some closed spot.  Then, on a certain
moment, the ftp-server maintainer has to move this tree by hand to the
right spot... really that primitive!

>> To help package builders do their job simple and correctly, we have to
>> supply them with as good metadata as we can.  Which means:
>       Am I right in presuming you mean "As good a metadata format?

The format is unimportant: syntax can be converted.  It is about well-
definedness of the meta-data structure and interpretation.

>>  . added with minimal hassle for the (often lazy) authors of
>>    the code (usability)
>       Masak was suggesting a tool to generate it.

Partially you can, partially you cannot.  For instance, it cannot
automatically guess a license.

>>  . extensible meta-data structure (future grow path by design)
> This is one reason I'm suggesting Software::Packager.

Software::Packager implements access to meta-data.  That is always simple.
Interpretation is difficult.  Give me any meta-data, and I can parse it
into Perl hashes... but don't ask me to interpret the content

       Mark Overmeer MSc                                MARKOV Solutions
       m...@overmeer.net                          soluti...@overmeer.net
http://Mark.Overmeer.net                   http://solutions.overmeer.net

Reply via email to