Re: CPAN -- moving forward

2009-06-09 Thread Timothy S. Nelson

On Sat, 30 May 2009, Daniel Ruoso wrote:


1) A package format.


This is supposed to be a source format, but different from current model
used in CPAN, it's pretty clear already that it can't include a "build
system", like ExtUtils::MakeMaker or Module::Install.

There's already some consensus that this "source package" format should
describe what it contains, not how it should be built or installed. For
instance, it should only say something like "in the lib directory
there's a set of STD Perl 6 modules that don't require any low-level
integration".


	Would it be accurate to describe this as specifying where things 
should be installed, but only at a high enough level that it's platform 
independent?


Thanks,


-
| Name: Tim Nelson | Because the Creator is,|
| E-mail: wayl...@wayland.id.au| I am   |
-

BEGIN GEEK CODE BLOCK
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V- 
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI D G+ e++> h! y-

-END GEEK CODE BLOCK-



Re: CPAN -- moving forward

2009-06-03 Thread Patrick R. Michaud
On Mon, Jun 01, 2009 at 06:34:02PM +0200, Daniel Carrera wrote:
> I am in IRC  
> working with Rakudo folk on how Rakudo is going to store modules on the  
> disk. Once that is done, one can begin talking about a package format  
> and an installer, and then go from there.
>
> So far the discussion has been productive and we have some code written  
> that we can experiment with. So I feel encouraged.

"Rough concensus and running code."  +1

Pm


Re: CPAN -- moving forward

2009-06-01 Thread Daniel Carrera

Parrot Raiser wrote:

One of the common factors that has contributed to the longevity of
Unix (in the generic sense), and the Internet, is their layered
architectures.


+1 for layered architectures.


If this discussion can be split into clear layers,  (what gets stored,
where, how, &c.) it might be easier to produce results.


I feel similar. I attempted to do something like that with my wiki page, 
but that didn't work so well. Now I'm trying a new approach: I am in IRC 
working with Rakudo folk on how Rakudo is going to store modules on the 
disk. Once that is done, one can begin talking about a package format 
and an installer, and then go from there.


So far the discussion has been productive and we have some code written 
that we can experiment with. So I feel encouraged.


Daniel.


Re: CPAN -- moving forward

2009-06-01 Thread Parrot Raiser
Part of the tension here may be coming from the attempt to debate too
many levels of structure at once.

One of the common factors that has contributed to the longevity of
Unix (in the generic sense), and the Internet, is their layered
architectures. The kernel does its thing, the shell sits on top, shell
tools and applications attend to their matters, and as long as they
abide by some standard conventions, revolutions can occur at one level
without disturbing others. Similarly, co-ax, twisted pair, power
lines, fibre-optics and pigeons can all carry IP packets for UDP or
TCP, that might be VoIP or HTTP, and apart from some latency issues
with the pigeons, the various layers don't care what's happening
either side of them.

If this discussion can be split into clear layers,  (what gets stored,
where, how, &c.) it might be easier to produce results.


Re: CPAN -- moving forward

2009-05-30 Thread Larry Wall
On Sun, May 31, 2009 at 12:22:31AM +0200, Daniel Carrera wrote:
> Mark Overmeer wrote:
>> A pity you didn't want to read the paper.
>
> I have better things to do with my life than read your 30-page paper.  
> I'd rather participate in a consensus process where I feel I can make a  
> difference.

What is this, a contest to see who can be snippier?

>> Please clarify ... how would you specify that?   And how
>> would you denote ranges of conflicting packages?  Well, maybe start
>> with putting that in your wishlist.
>>
>> And conflicting/dependencies in licenses?
>> How would you resolve dependency conflicts? Design human intervention
>> in this process of dependency processing.
>> [big snip]
>
> My wiki page was purposely only an initial step. I don't believe in  
> working in isolation for days or weeks and then handing down a massive  
> ready-made solution to the masses. I offer a small, incremental step on  
> top of Synopsis 22 and hope that it is useful.

People have different work styles.  Part of consensus building is
not expecting everyone to think the same way you do.  We try to put
both the tortoises and hares to work here, but each has to work at
their own pace, and some temporal displacement necessarily results.

A healthy community can put up with a certain amount of tension
and compression.  It's called "tensegrity" when it helps hold us
all together.  It's probably called something else when it drives
us apart.  Please aim for the tensegrity, because I don't want to
figure out what to call the other.

Larry


Re: CPAN -- moving forward

2009-05-30 Thread Daniel Carrera

Daniel Ruoso wrote:

The leap you make from the source package to the different binary
formats is overlooking a lot of details. It would be interesting if you
could take a look in the previous discussions on the matter.


I'll be happy to. I was just trying to make a small iterative step on 
Synopsis 22. I know that there is a wide gap between that and binary 
formats. But I wouldn't do anyone any favours if I spend a lot of time 
on my own trying to make a complete solution. At least now you can point 
me to the relevant discussion and I'll be happy to read it. I just need 
a URL link.





1) A package format.


This is supposed to be a source format, but different from current model
used in CPAN, it's pretty clear already that it can't include a "build
system", like ExtUtils::MakeMaker or Module::Install.

There's already some consensus that this "source package" format should
describe what it contains, not how it should be built or installed. For
instance, it should only say something like "in the lib directory
there's a set of STD Perl 6 modules that don't require any low-level
integration".


Ok. Thanks for the info. Notice that I didn't assume anything one way or 
the other on the page I wrote. Just some additions to S22 (mainly the 
manifest file). I tried not to make many assumptions precisely because I 
don't know the previous discussion.




2.0) Build tool

Before installing it, you need to create a "installable package", or
"binary package" (that's what CPAN plus does today). The thing here is
that the process of transforming the "source package" into an
"installable package" will be specific to the Perl implementation, to
the Operating System and to the vendor of the Operating system.

That basically means "it's implementation specific", and each
implementation should do its best to provide that support. For instance,
rakudo might want to compile the modules to Parrot Bytecode, while
mildew might want to compile down some things to C.


Seems logical.




If you're in an OS that provides a rich package management system, it
means you can generate native packages, otherwise you need to implement
the next step as well, which is:

2.5) Install tool

In systems where we don't generate native packages, we need a package
manager on our own. It should be capable of taking any "installable
package" and making it available in the system, checking all
dependencies and other requirements..


Yes, certainly.


3) A high-level install tool, analogous to yum or apt, that uses the 
CPAN network and resolves dependencies.


I do think this is very much implementation-specific, for instance, in
Debian, with little work you could simply use apt-build to get your
packages built and available for installation with apt-get.


In Debian there is both apt-get and aptitude. Two different 
implementations of a high-level package manager wrapped around dpkg. In 
the RPM world there is yum and urpmi as well.




In summary,

The part 1 is really the critical issue, 2.0, 2.5 and 3 are mostly
implementation specific and are considerably easier to adapt than the
things in the part 1. We do need to find a very solid way of describing
what the package contains in order that implementation-specific build
tools can make them work.


Yes, indeed.

Most of what I put in the wiki page is an iterative step on the package 
format described in Synopsis 22. Should we start talking about the 
package format then?



Daniel.


Re: CPAN -- moving forward

2009-05-30 Thread Daniel Ruoso
Em Sáb, 2009-05-30 às 22:54 +0200, Daniel Carrera escreveu:
> In the hopes of helping the CPAN discussion move forward, in the 
> direction of tangible work, I have made a wiki page with a proposal:
> Please read the "Basics" section, which is quite short. The main point 
> of this section is to divide the issue into three parts:

Daniel,

The leap you make from the source package to the different binary
formats is overlooking a lot of details. It would be interesting if you
could take a look in the previous discussions on the matter.

> 1) A package format.

This is supposed to be a source format, but different from current model
used in CPAN, it's pretty clear already that it can't include a "build
system", like ExtUtils::MakeMaker or Module::Install.

There's already some consensus that this "source package" format should
describe what it contains, not how it should be built or installed. For
instance, it should only say something like "in the lib directory
there's a set of STD Perl 6 modules that don't require any low-level
integration".

> 2) A low-level install tool, analogous to rpm or dpkg, that converts the 
> package (2) into a local package format (rpm, deb, ebuild).

2.0) Build tool

Before installing it, you need to create a "installable package", or
"binary package" (that's what CPAN plus does today). The thing here is
that the process of transforming the "source package" into an
"installable package" will be specific to the Perl implementation, to
the Operating System and to the vendor of the Operating system.

That basically means "it's implementation specific", and each
implementation should do its best to provide that support. For instance,
rakudo might want to compile the modules to Parrot Bytecode, while
mildew might want to compile down some things to C.

If you're in an OS that provides a rich package management system, it
means you can generate native packages, otherwise you need to implement
the next step as well, which is:

2.5) Install tool

In systems where we don't generate native packages, we need a package
manager on our own. It should be capable of taking any "installable
package" and making it available in the system, checking all
dependencies and other requirements..

> 3) A high-level install tool, analogous to yum or apt, that uses the 
> CPAN network and resolves dependencies.

I do think this is very much implementation-specific, for instance, in
Debian, with little work you could simply use apt-build to get your
packages built and available for installation with apt-get.

In summary,

The part 1 is really the critical issue, 2.0, 2.5 and 3 are mostly
implementation specific and are considerably easier to adapt than the
things in the part 1. We do need to find a very solid way of describing
what the package contains in order that implementation-specific build
tools can make them work.

daniel



Re: CPAN -- moving forward

2009-05-30 Thread Daniel Carrera

Mark Overmeer wrote:

A pity you didn't want to read the paper.


I have better things to do with my life than read your 30-page paper. 
I'd rather participate in a consensus process where I feel I can make a 
difference.




Please clarify ... how would you specify that?   And how
would you denote ranges of conflicting packages?  Well, maybe start
with putting that in your wishlist.

And conflicting/dependencies in licenses?
How would you resolve dependency conflicts? Design human intervention
in this process of dependency processing.
[big snip]


My wiki page was purposely only an initial step. I don't believe in 
working in isolation for days or weeks and then handing down a massive 
ready-made solution to the masses. I offer a small, incremental step on 
top of Synopsis 22 and hope that it is useful.


Daniel.


Re: CPAN -- moving forward

2009-05-30 Thread Mark Overmeer
* Daniel Carrera (daniel.carr...@theingots.org) [090530 20:54]:
> 3) A high-level install tool, analogous to yum or apt, that uses the  
> CPAN network and resolves dependencies.
> Mark O. is most interested in (3).

These are all things which I do *not* play in the layers I want to
build. Although I do have an opinion on these subjects (if you know me: I
have opinions on everything) but they are all not included in my design.
Wrong abstraction layer.  A pity you didn't want to read the paper.

My Archiver implementation defines ways how to specify the meta-data
for dependencies, because that is a common need, but does not resolve
dependencies.  It provide sufficient means of search so you can
investigate the dependency details before you start downloading releases,
but in general, there are nasty application dependent interpretations
in these details.

Interpreting dependency information sometimes requires human intervension.
For instance: do you want to upgrade to a higher version which breaks
api (and triggers the upgrade of a dozen other modules on your system)
or stay in the maintenance track of the older api.  (example is Mail::
SpamAssassin 2 vs 3)  These problems cannot be resolved server-side.

Apt or yum are just like CPAN install tools.  Nothing more.  So outside
my personal scope.  (But important to Perl6)

Please clarify in your spec what you mean with "package" in a dependency.
Is it about a single distributed version (what I call a "release" into
the archive), or a release with a certain product name, or with a
certain tag.  Or any of those: how would you specify that?   And how
would you denote ranges of conflicting packages?  Well, maybe start
with putting that in your wishlist.

And conflicting/dependencies in licenses?
How would you resolve dependency conflicts? Design human intervention
in this process of dependency processing.

How do you handle external dependencies to Linux distribution components
like database software, which change name with each new release of each
linux distribution?  Will we lockin Perl to a few well known distributions,
or do week keep our trandition open mind.  So: please pick from
http://lwn.net/Distributions/ (currently 548 distros listed) which you
want to support... and wait for other people to add more.

Perl is one of the last pure English open source projects.  When you
install a localized KDE or Gnome *everything* (>95%) gets translated.
But not Perl!  You must include description and keywords in various
languages.  Can other people contribute translations?  How will they
add those to CPAN?

The Meta.YML specs are already further than what you propose.  Go to a
Perl QA Hackathon and see how hard people work to get Meta.YML extended!
(last year Oslo, last March in Birmingham)  Reuse that.

> I propose that we work on (1) and (2) first and do (3) later. (3) is  
> quite independent of (1) and (2). Mark might want to check that the  
> package format includes enough meta-data to not conflict with is ideas.

There is no way that it can conflict, as long as it is well defined.
Have a look at the Kwalify module, or use the horribly (but more widely
known) XML Schema's to make it well-defined.

My very extended meta-data design probably gives you enough to shop
for your wishlist.  But I may lack a few things and can add those
easily on this stage of the project.
Or you can put those in the application specific meta-data block
which Pause6/CPAN6 supports.  (Which is a pity: unification of meta-
data has many advantanges)

As examples of how you could adapt your design to my plans:
  . you do not need to organize file signatures, because those
are (far more flexible) already provided on the transport
layer of CPAN6.  (where it fits logically)
  . you do not need any packing or unpacking of trees, because
that is also part of my transport layer: sender and receiver
decide whether they pack temporarily or not.
  . I offer nice standard solutions for identity management
(authors) and licenses.  But these are probably automatically
translatable.

I will keep an eye on your growing list of meta-data needs, and see
whether there appear things which are not covered in my specs yet.

We need more and better meta-data, not a reinvented wheel.
-- 
   MarkOv


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



CPAN -- moving forward

2009-05-30 Thread Daniel Carrera

Hello,

In the hopes of helping the CPAN discussion move forward, in the 
direction of tangible work, I have made a wiki page with a proposal:


http://wiki.github.com/perl6/misc/cpan-and-package-format

Please read the "Basics" section, which is quite short. The main point 
of this section is to divide the issue into three parts:


1) A package format.

2) A low-level install tool, analogous to rpm or dpkg, that converts the 
package (2) into a local package format (rpm, deb, ebuild).


3) A high-level install tool, analogous to yum or apt, that uses the 
CPAN network and resolves dependencies.


I have used the same numeric labels on the wiki. Tim N. is most 
interested in (2) and Mark O. is most interested in (3).


I propose that we work on (1) and (2) first and do (3) later. (3) is 
quite independent of (1) and (2). Mark might want to check that the 
package format includes enough meta-data to not conflict with is ideas.



If we can "mostly" agree on the package (1), we can move to (2). I think 
we can make quick progress with (2):


2.1 Start with a easy&ugly script using the alien and zip commands. Get 
the basic functionality down.


2.2 Gradually port Perl 5 modules (e.g. Software::Packager) and rewrite 
the script to remove dependency on shell commands.


Think of it as a boot-strapping method.

What do you think?

Daniel.