After a few weeks of effort, I've completed the curation of all nimble packages
and I've added extra information to the package descriptions. Particularly,
there are now new optional fields like `long_description`, `code_quality`,
`doc_quality`, `project_quality`, `categories` that can be set in
`packages.json` and used by nimble to search or list packages.
For instance, search all packages related to hash functions. How many of them
mention "hash" in the description or tags?
$ nimble search hash | grep -E "^[-_a-zA-Z0-9]+:$" | wc -l
29
Run
How many of them mention "hash" in the description or tags, or the long
description?
$ nimble search hash --full | grep -E "^[-_a-zA-Z0-9]+:$" | wc -l
41
Run
How many of them have a maturity over 2, meaning that there is minimal
documentation and code is readable?
$ nimble search hash --full --mat=2 | grep -E "^[-_a-zA-Z0-9]+:$" | wc -l
31
Run
Adding these features to nimble forced me to break the structure of the
previous `package.json` file. I've tried to find relevant long descriptions
about packages in the packages documentation, when I did not have to spend a
long time. If it took me too much time, and some package authors are not good
at describing their work, I let it empty, meaning that these packages will be
less searchable than the ones with more descriptions.
Similarly, I've classified the packages into 25 categories: `Algorithms`,
`Audio`, `Cloud`, etc. See the full list in the
[documentation](https://github.com/pmetras/packages/blob/extended_info/README.md).
A package can pertain to multiple categories, and sometimes it was not easy
determining where a package fit.
Here is a list of categories with the number of packages associated with each
category:
Category| Number of packages
---|---
*Dead*| 55
Algorithms| 175
Audio| 35
Cloud| 12
Data science| 20
Database| 50
Development| 91
Education| 5
FFI| 287
Finance| 10
GUI| 60
Games| 51
Hardware| 32
Image| 49
JS| 32
Language| 55
Maths| 54
Miscellaneous| 146
Network| 72
Reporting| 28
Science| 22
System| 70
Tools| 80
Video| 19
Web| 91
Last, I've estimated the maturity of the package based on 3 indicators:
`code_quality`, `doc_quality` and `project_quality`. These indicators are in
the range [1 .. 4], with 1 being the lowest quality and 4 the highest. I've
estimated these values based on a few glances at the code, looking at issues or
contributors, reading the documentations, etc. These indicators are subjective
and depend highly on the mood I was when I looked at a package, even if I tried
to keep a scientific evaluation methodology... Again, see the
[documentation](https://github.com/pmetras/packages/blob/extended_info/README.md)
for the ratings used.
If you, as the author of a nimble package, disagree with the description or the
maturity ratings I gave to your package, you have the opportunity to change
these metadata before I generate the final version of `packages.json`. You are
the best one to know exactly what your package is doing and I expect you can
objectively explain it and rate it. In order to do that, just go to the [Google
Sheet](https://docs.google.com/spreadsheets/d/1HWy2YumMMcgEDHk34ACauuWR5TYDJTRUVQ6B-LuRXCs/edit?usp=sharing)
and change the information. **On September 22, I 'll generate the final
version of** `packages.json` for inclusion into [nimble
packages.](https://github.com/nim-lang/packages).
The Google Sheet is sorted on the `url` field and you should be able to find
your packages from your Github/Gitlab or bitbucket account. Don't change the
sort order while others are editing the file.
Thanks