Rand Stats

Task::Popular

github:finanalyst

Task::Popular

Introduction
Module Listing
Date of Compilation
Problems
Updates and Algorithm

Introduction

The developers of Perl6 decided that the implementation of the language (eg. Rakudo) would be available with a bare minimum of "core" modules. Some modules are essential, such as Test, or the module manager (previously panda, currently zef).

The intention is for users / user groups to contribute distributions that meet a specific topic area. Rakudo itself is available in a package called Rakudo Star with a minimal number of modules.

This distribution list takes another, data driven, approach.

Modules are intended to provide common functionality, and so are used or cited by other modules in the Ecosystem. A set of modules that are frequently used can be fairly safely assumed will be regularly maintained. Failures in these modules will affect many other modules, and there will be pressure to get them fixed.

This list uses Citation Indices to identify the 30 modules most recursively popular modules in the Ecosystem.

Modules in this distribution

Module NameRecursive Citation IndexModule Description
JSON::Fast37.87OOps description not found, please file issue at github repository of p6-task-popular
URI31.56A URI implementation using Perl 6 grammars to implement RFC 3986 BNF
MIME::Base6428.9Encoding and decoding Base64 ASCII strings
File::Directory::Tree26.58Port of File::Path::Tiny - create and delete directory trees
File::Temp25.91Create temporary files & directories
HTTP::Status23.59Get the text message associated with an HTTP status code
JSON::Tiny18.94OOps description not found, please file issue at github repository of p6-task-popular
OpenSSL17.94OpenSSL bindings
JSON::Name16.28Provides a trait to store an alternative JSON Name
Encode15.61Character encodings in Perl 6
DateTime::Parse15.28DateTime parser
JSON::Unmarshal15.28Turn JSON into objects
HTTP::UserAgent14.95Web user agent
JSON::Marshal14.95Simple serialisation of objects to JSON
Terminal::ANSIColor14.95Colorize terminal output
JSON::Class14.29role to provide simple serialisation/deserialisation of objects to/from JSON
HTML::Escape12.96Utility of HTML escaping
LibraryMake11.96An attempt to simplify native compilation
META611.63Work with Perl 6 META files
File::Find11.3File::Find for Perl 6
Digest10.96Pure perl6 implementation of digest algorigthms.
XML10.63A full-featured, pure-perl XML library (parsing, manipulation, emitting, queries, etc.)
Test::META10.3Test a distributions META file
IO::Socket::SSL9.97IO::Socket::SSL for Perl 6 using OpenSSL
PSGI9.3A PSGI helper library.
URI::Encode8.97Encode and decode URIs according to RFC 3986
File::Which8.31Cross platform Perl 6 executable path finder (aka which on UNIX)
Digest::HMAC7.97Generic HMAC implementation
HTTP::Easy7.31HTTP servers made easy, including PSGI
JSON::Pretty7.31A minimal JSON (de)serializer that produces easily readable JSON

Date of Compilation

This list was compiled on 2018-01-01.

Problems

Inevitably for commonly needed functionality, there may be multiple modules that provide the same functionality. An example is JSON::Tiny and JSON::Fast. J/Fast was designed to be a drop-in replacement for J/Tiny, which was first written to demonstrate how to use Perl6 and not as a workhorse module. However, for some reason J/Tiny has a lot of support, although J/Fast is taking over (see the ModuleCitation page to trace the historical change).

So the Task::Popular list may have alternate modules for the same functionality. But for a newcomer to the Ecosystem that might in fact be interesting as it provides a choice, and the opportunity to compare coding styles.

Updates and Algorithm

The aim is to update the list regularly (eg. monthly).

The algorithm for generating the distribution list is implemented as a method in the ModuleCitation class.