When panda was first introduced as the first module or package manager, a file containing the meta information for all the modules, located at "http://ecosystem-api.p6c.org/projects.json"; was established.

At the time, the developers said that the meta information file was designed to be agnostic of the package manager.

Consequently, it was possible to study the ecosystem of modules by analysing the meta information. I did this with a module citation index to see which modules were important for the system. The most interesting result was how JSON::Tiny was replaced over time by JSON::Fast. This is actually quite useful for a new developer who wants to know what is the most popular implementation without having to investigate all modules in depth.

To be clear, a file containing the meta information about modules is not the same as specifying where the modules should or should not be located.

Effectively, an Ecosystem began to develop for modules, and the ecosystem is agnostic of location or package manager.

Some time ago cpan6 came on line an began encouraging developers to move modules to cpan6.

But it turned out that cpan6 requires another module meta file, (located at https://raw.githubusercontent.com/ugexe/Perl6-ecosystems/master/cpan.json)

I discovered that that the two lists appear to be different, with JSON::Fast moving off "projects.json" onto 'cpan.json'. This of course broke my ModuleCitation system.

So, in order to modify the ModuleCitation system, I wanted to know how to find the different lists, and whether there would be some transparency about the whole ecosystem.

There was a discussion on IRC perl6, but it was between only three participants and there did not seem to be any attempt to discuss the issue.

It seems to me for the health and development of the perl6 module ecosystem that everyone should be able to find out where all the perl6 modules are located and to get their meta data.

Not all modules will be public, but that is a decision to be made by the developers. Not all the modules will be located in the same location or accessed in the same way, eg. on cpan6 or on a git repository. But the meta data contains all this information.

It seems to me that a single canonical list kept by the perl6 community would be the best option. If in the future, it becomes necessary for health tests to be performed on the modules, for example, to detect viruses, malware, or the like, then the community can itself decide.

By community, I mean the way in which perl6 itself is developed. It is not a free for all, but it is not restrictive. It is simply an effort with coordination.

It is also possible for there to be multiple files containing meta information, but at the very least, there should be some public place where all the lists are themselves listed - a sort of meta meta list.

What seems to be the case at the present is that there are two lists, which a privileged number of perl6 gurus know about, but information which is not generally available. There is no coordination between the lists - that I am aware of.

What is to prevent a situation in which the meta data in each list gets out of sync in some way? It is not unreasonable to presume that this could lead to incompatible dependencies being created.

finanalyst.

Reply via email to