Module Library - aka CPAN

2009-05-31 Thread Richard Hainsworth
Before joining in the previous CPAN threads, here are some personal wish 
lists regarding what the perl6 version of CPAN should do. But in order 
to get some distance from CPAN, I want to call it the Module Library 
system. Some of the debate threads impact on the internal software 
environment, and here I think the internal and external environments 
must be designed in harmony.


A library paradigm is different from an archive paradigm, although a 
library is a form of archive. However, a library is a single place to go 
to obtain information. It is set up to enhance searching and finding. An 
archive is a place where things are stored; the users of an archive know 
what and where they are storing. Hence the difference between an archive 
and a library is a set of assumptions about what a user knows. Archives 
are essential for large libraries (often called stacks), but there must 
be standardised metadata about what is in each archive for it to be 
useful for a library.


So my wish list. I would like:

1) a single place to go for modules that will help me solve programming 
problems;
2) a variety of ways to look through modules and the information on them 
- reviews, documentation, dependencies - so that I can choose between 
them and know what a choice entails;
3) a variety of classifications of modules and module contents that can 
lead me to modules which may achieve what I want but are named in a 
manner I did not expect, or contain functionality I could use in another 
context;
4) a means to extract from the library the module(s) I want, (better 
still only the parts of the module) and all their dependencies;

5) the ability to access existing CPAN perl software.

Extending the library paradigm, there are generalist libraries, which 
only contain commonly requested books, and specialist libraries and also 
libraries in other languages. However, good libraries share systems for 
requesting books from other libraries, even if they are not stored 
locally. The difference between libraries then boils down to the 
metadata available to the user, eg., more accessible user catalogs, 
librarians who know about subjects and can point to related books, etc.


The library paradigm breaks down somewhat for software because there is 
an intimate link between my environment and the software I choose. 
Hence, it is important to consider the internal environment (my 
computer) as well as the external environment (the module libraries).


Not only is there the problem of different operating systems (*ix, 
windows*, mac, etc), there is also the possibility of outdated software 
installed, eg., different versions of languages, such as perl 5.8, perl 
5.10.


Within my environment, there are multiple possible locations for 
different aspects of software, eg. binaries, configuration data (which 
can be global to all users and local for a single user), documentation, 
data, results. In a corporate environment, these locations may exist 
across a network. For example, documentation may be on a server, 
binaries and local configuration data on the local computer, results 
posted to a web site, input data taken from a database.


My wish list for the internal environment; I would like:

1) a single system to manage all my software modules;
2) a method to see where different aspects of software are located, and 
to change them;
3) an ability to manage in parallel different dependency hierarchies 
(such as might result from a need to use modules from different 
generations (eg. perl 5.8 and 5.10).
4) a comprehensive method to determine what my local environment is, so 
that I can see whether it matches the environment required by software 
that I want to download, and if not, what I need in addition to be able 
to run the software.


Some commentary on the above:
I use the CPAN archive, CPANPLUS, and synaptic (a GUI frontend to the 
apt tools) for perl since I use Ubuntu/Gnome. In some cases I have to 
load binaries using synaptic because I cant get the sources to compile 
properly from CPAN. I do not have the time or inclination to discover 
why. The result is a mishmash of dependencies. Moreover, I cannot get 
updated software without breaking something. This occurred when the one 
Ubuntu generation was distributed with perl5.8 even though perl5.10 was 
out, and I really wanted to use some of the new software.


The result was that I had both 5.8 and 5.10 modules. Although most 
things worked, perldoc wasnt recognised by some Configure scripts. I am 
not interested now in discovering the reason. I use this simply as an 
example about how multiple distribution channels that make different 
assumptions can lead to problems. But because there is no single method 
for monitoring the perl environment, it is difficult to solve some of 
the problems.


The current setup works extremely well, except when it doesnt. My 
difficulty is finding out how to solve the problems that occur. So I 
think there should be a system that 

Re: Module Library - aka CPAN

2009-05-31 Thread John M. Dlugosz

Richard Hainsworth richard-at-rusrating.ru |Perl 6| wrote:


Once a module has been decided on, you look to see if there is a 
binary that matches your internal environment. If not, you have to 
roll your own from source.




Why not have it generate the binary for you, and safe it for future 
users?  It can cross-compile things if needed, or draw upon a network of 
different kinds of machines that are registered to allow that.  
Something similar is used for testing modules, right?


--John



Re: Module Library - aka CPAN

2009-05-31 Thread Richard Hainsworth
Dont think this is workable. If the local environment is non-standard, 
requiring your own solution, then where would you store the binary? And 
how would you inform future users sufficiently about the local 
environment for them to access the binary.


Besides for most binaries, it is not really a time or space issue to 
create the binary locally.


Mind you, the mindset for a unix person is different to a Windows 
person. There is a form of linux - gentoo - in which everything is 
compiled from scratch. In windows, compilation of modules is extremely rare.


Richard

John M. Dlugosz wrote:

Richard Hainsworth richard-at-rusrating.ru |Perl 6| wrote:


Once a module has been decided on, you look to see if there is a 
binary that matches your internal environment. If not, you have to 
roll your own from source.




Why not have it generate the binary for you, and safe it for future 
users?  It can cross-compile things if needed, or draw upon a network 
of different kinds of machines that are registered to allow that.  
Something similar is used for testing modules, right?


--John