NumeRe v1.1.8 "Chamberlain" is available!
For quite some time now, there has been a package repository containing a selection of packages and plugins for NumeRe. The management system via SourceForge is functional and allows for features such as version control, but collaboration has remained severely limited to this day.
We have now finally phased out this repository and switched to a repository on GitHub, with the stated aim of facilitating easier collaboration and also federating various package repositories from which users can pick and choose what suits them best.
Under various names (sometimes referred to as ‘plugins’, sometimes as ‘packages’), the (official) package repository was part of a sub-project within the NumeRe project and was hosted on SourceForge. General availability was acceptable, meaning that packages could almost always be downloaded and installed. There was also version control, although SVN is comparatively slow.
What, on the other hand, didn’t work very well – or not at all – was collaboration. There were two possible approaches:
Send the package to be uploaded by email and hope that we would upload it
Set up a SourceForge account, get access granted to our repository, and then have to struggle with SVN
As was to be expected, nobody made any significant contributions. And that’s a real shame, because we firmly believe that there is code out there that would actually be ideal for sharing via a proper repository.
Even though there is some controversy surrounding GitHub, this platform is still excellent for collaboration. In particular, because GitHub still provides a very ‘generous’ REST API, which allows us to interact with the package manager without having to rely on Git straight away. In any case, we have decided to host the ‘official’ package repository on GitHub from now on, thereby creating a significantly better opportunity for collaboration.
We have also made some changes to the structure of the repository, drawing inspiration from the WinGet repository. Consequently, the packages are sorted into their respective folders, which in turn contain folders for the version numbers. These in turn contain the actual package file as well as a meta.json manifest. The manifest summarises all the meta-information about the packages and is a much smaller file than the actual package. This allows us to save on bandwidth and keep access times to the repository to a minimum.
Incidentally… there’s a good reason why we want the packages to be stored directly in the repository: this allows us to actually verify the contents and ensure that only secure packages are published and downloaded. Even though we check for security, our checks do not cover the functional correctness of the package. It is therefore still possible that packages may contain errors.Of course, one might think it makes no sense to create version number folders when using Git. In fact, however, Git isn’t actually required anywhere, and there’s a good reason for that. And that lies in the fact that there can be more than one package repository. We are aiming for the democratisation or federalisation of various package repositories. Some will be private or in-house (which is perfectly legitimate), others will have a thematic focus, and then there will be repositories containing alternative or better implementations of the ‘official’ repository. Each user will be able to decide for themselves which repositories they wish to use. To do this, they simply need to copy the relevant repository configuration (which the respective repositories should provide) into the ‘/remotes’ folder.
Although we do not require Git for a package repository, we do require that it provides a REST API such as GitHub or GitLab. At the time of writing, Codeberg unfortunately does not yet do this. Bitbucket might work, but issues could arise.
For those who download packages occasionally, nothing is likely to change in the short term. A few more repositories may be added, but for the most part, downloading and installing packages will work exactly the same as before.
For anyone wishing to publish a package, however, everything changes:
Everyone is free to choose the repository in which they publish.
Anyone can create their own repository, which can be shared if they wish, or simply kept private.
For the official repository,
a GitHub account is required;
there is a clear process for contributing.
To make it easy to contribute to a package repository of this kind, we have released dedicated tools. To install them, run
install plgn_packaging_tools_plugin@NumeRe::Packages
in the terminal. This will make the plugin and the necessary tools available to you (the @NumeRe::Packages at the end of the package identifier specifies which repository the package should be fetched from).
You will then need to create an API token, but using the plugin’s packaging command, you can conveniently automate the entire process of forking, committing and submitting a pull request, leaving you only to respond to our feedback.