How to register your VMOD¶
To get your VMOD listed on the Varnish Project homepage you need to create a small JSON file which describes it and submit a pull request to our homepage github repos
There are a lot of JSON files there already, but they are machine generated based on older registrations, so they are not indicative of what we would like them to look like.
There are some examples at the bottom of this page.
At some point in the future we would like to be able to offer some continuous integration facilities to help VMOD authors maintain their code. (A volunteer to implement this would be more than welcome)
The JSON file should have a single object (“dictionary”) and it should have members as described below.
All VMODS¶
All VMODs MUST have these members:
name¶
This is the name in the “import FOOBAR;” VCL statement.
date¶
Format “YYYY-MM-DD”, date entry was last revised.
desc¶
Description, compact one-line description of what the VMOD does. (Don’t repeat the VMOD name here, it looks silly in the table.)
license¶
We prefer “FreeBSD”, “Apache2”, “GPLv2” in that order, but we are not going to pass judgement, it’s your choice.
status¶
Allowed values:
“included” – those included in the varnish distro
“prototype” – Just playing around here…
“development” – API still subject to change
“mature” – We’re trying to be serious here
Additionally the following optional members are possible:
maintainer¶
Email address of VMOD maintainer
support¶
List of companies which will support this VMOD on commercial terms.
product¶
URL to product description web-page for commercial offerings
Github projects¶
Since the majority of VMODs are github projects, we have tried to make that very easy.
In the toplevel object add a object member called “github” with these members:
user¶
Github username
project¶
Github project name
vcc_path¶
Relative path to the VCC file for the VMOD
doc_path¶
Relative path of the file documenting the VMOD (default: the VCC file)
branches¶
An object mapping Varnish version to github branches.
If your github project has multiple branches corresponding to varnish versions, it could look like this:
"branches": {
"3.0": "3.0",
"4.0": "4.0",
"4.1": "master"
},
If your VMOD only supports Varnish 3.0 from the github projects master branch:
"branches": {
"3.0": "master"
},
Non Github projects¶
You must these two members:
repos¶
URL of the repository
rev¶
An object mapping Varnish version to URL where the VCC and documentation files can be found.
For instance:
"rev": {
"3.0": {
"url_vcc": "http://myvmod.example.com/source/3.0/vmod.vcc",
"url_doc": "http://myvmod.example.com/docs/3.0/vmod.txt"
},
"4.1": {
"url_vcc": "http://myvmod.example.com/source/4.1/vmod.vcc",
"url_doc": "http://myvmod.example.com/docs/4.1/vmod.txt"
}
}
Examples¶
A github project:
{
"date": "2016-04-14",
"desc": "Murphy Field Calibrator",
"github": {
"branches": {
"3.0": "3.0"
"4.1": "master"
},
"project": "libvmod-murphy-cal",
"user": "ACME engineering",
"vcc_path": "src/vmod_murphy.vcc"
"doc_path": "doc/vmod_murphy.rst"
},
"license": "FreeBSD",
"name": "murphy",
"status": "prototype",
"support": [ "ACME VMODs and Explosives Inc." ],
"maintainer": "Samuel.B.Nobody@example.com"
}
A VMOD not on github:
{
"date": "1999-12-31",
"desc": "Y2K fixer",
"license": "BeerWare",
"name": "Y2K",
"repos": "https://example.com/we/are/so/hosed",
"url_doc": "https://sales.example.com/QuantumMurphyCompensator",
"rev": {
"4.1": {
"url_vcc": "https://example.com/we/are/so/hosed/vmod.vcc",
"url_doc": "https://example.com/we/are/so/hosed/README"
}
},
"status": "prototype"
}