diff --git a/lib/datasource/crate/index.ts b/lib/datasource/crate/index.ts
index 807a28c0f0196d99c07f01f8fa99040e4adf822e..19d55fcc2d058731208f909b162bf3c13252af94 100644
--- a/lib/datasource/crate/index.ts
+++ b/lib/datasource/crate/index.ts
@@ -7,10 +7,12 @@ import * as memCache from '../../util/cache/memory';
 import * as packageCache from '../../util/cache/package';
 import { privateCacheDir, readFile } from '../../util/fs';
 import { Http } from '../../util/http';
+import * as cargoVersioning from '../../versioning/cargo';
 import { GetReleasesConfig, Release, ReleaseResult } from '../common';
 
 export const id = 'crate';
 export const defaultRegistryUrls = ['https://crates.io'];
+export const defaultVersioning = cargoVersioning.id;
 export const registryStrategy = 'first';
 
 const http = new Http(id);
diff --git a/lib/datasource/docker/index.ts b/lib/datasource/docker/index.ts
index a0b85421e7ada061e4e05db99cfdf2be9e8e13ed..5f77fc0fc924f20ffedf177201ba1ad258e333c9 100644
--- a/lib/datasource/docker/index.ts
+++ b/lib/datasource/docker/index.ts
@@ -11,6 +11,7 @@ import { ExternalHostError } from '../../types/errors/external-host-error';
 import * as packageCache from '../../util/cache/package';
 import * as hostRules from '../../util/host-rules';
 import { Http, HttpResponse } from '../../util/http';
+import * as dockerVersioning from '../../versioning/docker';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 // TODO: add got typings when available
@@ -18,6 +19,7 @@ import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'docker';
 export const defaultRegistryUrls = ['https://index.docker.io'];
+export const defaultVersioning = dockerVersioning.id;
 export const registryStrategy = 'first';
 
 export const defaultConfig = {
diff --git a/lib/datasource/gradle-version/index.ts b/lib/datasource/gradle-version/index.ts
index 2492dbf3486ed7bacee92f9d4199f33da5f71ece..346231f12cb2ae8c22d547fd2c40e7ec8307c2f8 100644
--- a/lib/datasource/gradle-version/index.ts
+++ b/lib/datasource/gradle-version/index.ts
@@ -1,10 +1,12 @@
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import { Http } from '../../util/http';
 import { regEx } from '../../util/regex';
+import * as gradleVersioning from '../../versioning/gradle';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'gradle-version';
 export const defaultRegistryUrls = ['https://services.gradle.org/versions/all'];
+export const defaultVersioning = gradleVersioning.id;
 export const registryStrategy = 'merge';
 
 const http = new Http(id);
diff --git a/lib/datasource/hex/index.ts b/lib/datasource/hex/index.ts
index 530740f49cab932bf9541cc9b309c8554458758a..55f102fa4e7a5ff19f94ba0859ce3789bb843aad 100644
--- a/lib/datasource/hex/index.ts
+++ b/lib/datasource/hex/index.ts
@@ -1,9 +1,11 @@
 import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import { Http } from '../../util/http';
+import * as hexVersioning from '../../versioning/hex';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'hex';
+export const defaultVersioning = hexVersioning.id;
 
 const http = new Http(id);
 
diff --git a/lib/datasource/maven/index.ts b/lib/datasource/maven/index.ts
index 9ef3ea4c20a6926c42ea25a878ae9482e6cfd510..ff97ff8d33557dbc1f20f0f8eea19975a33543a1 100644
--- a/lib/datasource/maven/index.ts
+++ b/lib/datasource/maven/index.ts
@@ -5,6 +5,7 @@ import { XmlDocument } from 'xmldoc';
 import { logger } from '../../logger';
 import * as packageCache from '../../util/cache/package';
 import mavenVersion from '../../versioning/maven';
+import * as mavenVersioning from '../../versioning/maven';
 import { compare } from '../../versioning/maven/compare';
 import { GetReleasesConfig, Release, ReleaseResult } from '../common';
 import { MAVEN_REPO } from './common';
@@ -13,6 +14,7 @@ import { downloadHttpProtocol, isHttpResourceExists } from './util';
 export { id } from './common';
 
 export const defaultRegistryUrls = [MAVEN_REPO];
+export const defaultVersioning = mavenVersioning.id;
 export const registryStrategy = 'merge';
 
 function containsPlaceholder(str: string): boolean {
diff --git a/lib/datasource/npm/index.ts b/lib/datasource/npm/index.ts
index d0c7d10a70fed9698f6e18f90a5c3897b244d956..673b2843cd445d8255bc7b1cda8d7d498072a7d3 100644
--- a/lib/datasource/npm/index.ts
+++ b/lib/datasource/npm/index.ts
@@ -1,4 +1,7 @@
+import * as npmVersioning from '../../versioning/npm';
+
 export { resetMemCache, resetCache } from './get';
 export { getReleases } from './releases';
 export { getNpmrc, setNpmrc } from './npmrc';
 export { id } from './common';
+export const defaultVersioning = npmVersioning.id;
diff --git a/lib/datasource/nuget/index.ts b/lib/datasource/nuget/index.ts
index 3d90c560ca5cd84c1eb291dd8504865420ed504d..ce6dbed0e29affbfc4e5930a18a7b67ef73c046e 100644
--- a/lib/datasource/nuget/index.ts
+++ b/lib/datasource/nuget/index.ts
@@ -1,5 +1,6 @@
 import urlApi from 'url';
 import { logger } from '../../logger';
+import * as nugetVersioning from '../../versioning/nuget';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 import * as v2 from './v2';
 import * as v3 from './v3';
@@ -7,6 +8,7 @@ import * as v3 from './v3';
 export { id } from './common';
 
 export const defaultRegistryUrls = [v3.getDefaultFeed()];
+export const defaultVersioning = nugetVersioning.id;
 export const registryStrategy = 'merge';
 
 function parseRegistryUrl(
diff --git a/lib/datasource/packagist/index.ts b/lib/datasource/packagist/index.ts
index 175914a9c69d180288f1f7f3b9f3c7899acf514d..b673ac994b44f14ce6466da383520976cfaefe50 100644
--- a/lib/datasource/packagist/index.ts
+++ b/lib/datasource/packagist/index.ts
@@ -7,10 +7,12 @@ import * as memCache from '../../util/cache/memory';
 import * as packageCache from '../../util/cache/package';
 import * as hostRules from '../../util/host-rules';
 import { Http, HttpOptions } from '../../util/http';
+import * as composerVersioning from '../../versioning/composer';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'packagist';
 export const defaultRegistryUrls = ['https://packagist.org'];
+export const defaultVersioning = composerVersioning.id;
 export const registryStrategy = 'hunt';
 
 const http = new Http(id);
diff --git a/lib/datasource/pypi/index.ts b/lib/datasource/pypi/index.ts
index 19bee498cf3445b956f88a81cafe29a05a2aef80..4e60a1b72026f2854c06f9fd0ca1e22030818e2b 100644
--- a/lib/datasource/pypi/index.ts
+++ b/lib/datasource/pypi/index.ts
@@ -4,7 +4,6 @@ import { logger } from '../../logger';
 import { parse } from '../../util/html';
 import { Http } from '../../util/http';
 import { ensureTrailingSlash } from '../../util/url';
-import { matches } from '../../versioning/pep440';
 import * as pep440 from '../../versioning/pep440';
 import { GetReleasesConfig, Release, ReleaseResult } from '../common';
 
@@ -12,6 +11,7 @@ export const id = 'pypi';
 export const defaultRegistryUrls = [
   process.env.PIP_INDEX_URL || 'https://pypi.org/pypi/',
 ];
+export const defaultVersioning = pep440.id;
 export const registryStrategy = 'merge';
 
 const githubRepoPattern = /^https?:\/\/github\.com\/[^\\/]+\/[^\\/]+$/;
@@ -50,7 +50,7 @@ function compatibleVersions(
       if (!release.requires_python) {
         return true;
       }
-      return matches(constraints.python, release.requires_python);
+      return pep440.matches(constraints.python, release.requires_python);
     })
   );
 }
diff --git a/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap b/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap
index 892c5e38502a825ee52889a9fc084c1e62527dea..7ee07cfb1b4fdc37762a3bbc0cd29393dd9baa50 100644
--- a/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap
+++ b/lib/datasource/ruby-version/__snapshots__/index.spec.ts.snap
@@ -74,6 +74,11 @@ Object {
       "releaseTimestamp": "2007-03-12",
       "version": "1.8.6",
     },
+    Object {
+      "changelogUrl": "https://www.ruby-lang.org/en/news/2008/08/11/ruby-1-8-7-p72-and-1-8-6-p287-released/",
+      "releaseTimestamp": "2008-08-11",
+      "version": "1.8.7-p72",
+    },
     Object {
       "changelogUrl": "https://www.ruby-lang.org/en/news/2009/04/18/ruby-1-8-7-p160-and-1-8-6-p368-released/",
       "releaseTimestamp": "2009-04-18",
@@ -114,11 +119,6 @@ Object {
       "releaseTimestamp": "2013-06-27",
       "version": "1.8.7-p374",
     },
-    Object {
-      "changelogUrl": "https://www.ruby-lang.org/en/news/2008/08/11/ruby-1-8-7-p72-and-1-8-6-p287-released/",
-      "releaseTimestamp": "2008-08-11",
-      "version": "1.8.7-p72",
-    },
     Object {
       "changelogUrl": "https://www.ruby-lang.org/en/news/2008/05/31/ruby-1-8-7-has-been-released/",
       "releaseTimestamp": "2008-05-31",
diff --git a/lib/datasource/ruby-version/index.ts b/lib/datasource/ruby-version/index.ts
index 8f14c5054e1d26bebf3b4b219a98f136b58b3772..53852ebd4d4ff1dfbecc7b43d98b50ffbafc16e0 100644
--- a/lib/datasource/ruby-version/index.ts
+++ b/lib/datasource/ruby-version/index.ts
@@ -2,10 +2,11 @@ import { ExternalHostError } from '../../types/errors/external-host-error';
 import * as packageCache from '../../util/cache/package';
 import { parse } from '../../util/html';
 import { Http } from '../../util/http';
-import { isVersion } from '../../versioning/ruby';
+import { isVersion, id as rubyVersioningId } from '../../versioning/ruby';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'ruby-version';
+export const defaultVersioning = rubyVersioningId;
 
 const http = new Http(id);
 
diff --git a/lib/datasource/rubygems/index.ts b/lib/datasource/rubygems/index.ts
index 336ffdae7c8a1e263b26595ab00704b49d2851cc..f0af4c8b625e4ff09c99612c44bd7dea57294931 100644
--- a/lib/datasource/rubygems/index.ts
+++ b/lib/datasource/rubygems/index.ts
@@ -1,4 +1,7 @@
+import * as rubyVersioning from '../../versioning/ruby';
+
 export { getReleases } from './releases';
 export { id } from './common';
 export const defaultRegistryUrls = ['https://rubygems.org'];
+export const defaultVersioning = rubyVersioning.id;
 export const registryStrategy = 'hunt';
diff --git a/lib/datasource/sbt-package/index.ts b/lib/datasource/sbt-package/index.ts
index 37f0144404afdc70ac137b1d330c5ec33eaa9f6c..eaf84a511ebfc304ba2cb9475e5637914d05e48e 100644
--- a/lib/datasource/sbt-package/index.ts
+++ b/lib/datasource/sbt-package/index.ts
@@ -1,5 +1,6 @@
 import { XmlDocument } from 'xmldoc';
 import { logger } from '../../logger';
+import * as ivyVersioning from '../../versioning/ivy';
 import { compare } from '../../versioning/maven/compare';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 import { MAVEN_REPO } from '../maven/common';
@@ -7,8 +8,8 @@ import { downloadHttpProtocol } from '../maven/util';
 import { parseIndexDir } from '../sbt-plugin/util';
 
 export const id = 'sbt-package';
-
 export const defaultRegistryUrls = [MAVEN_REPO];
+export const defaultVersioning = ivyVersioning.id;
 export const registryStrategy = 'hunt';
 
 const ensureTrailingSlash = (str: string): string => str.replace(/\/?$/, '/');
diff --git a/lib/datasource/sbt-plugin/index.ts b/lib/datasource/sbt-plugin/index.ts
index ac2b4579877c9906fa3b450ae0cd0796392e678e..e7920f037d28f59263e7e3751dd61f98e737a2e4 100644
--- a/lib/datasource/sbt-plugin/index.ts
+++ b/lib/datasource/sbt-plugin/index.ts
@@ -1,4 +1,5 @@
 import { logger } from '../../logger';
+import * as ivyVersioning from '../../versioning/ivy';
 import { compare } from '../../versioning/maven/compare';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 import { downloadHttpProtocol } from '../maven/util';
@@ -11,8 +12,8 @@ import {
 import { SBT_PLUGINS_REPO, parseIndexDir } from './util';
 
 export const id = 'sbt-plugin';
-
 export const defaultRegistryUrls = [SBT_PLUGINS_REPO];
+export const defaultVersioning = ivyVersioning.id;
 export const registryStrategy = 'hunt';
 
 const ensureTrailingSlash = (str: string): string => str.replace(/\/?$/, '/');
diff --git a/lib/datasource/terraform-module/index.ts b/lib/datasource/terraform-module/index.ts
index c4a866a686cea60687b57b08dd1e71f54c2ddc59..df7e5c5d3cea09f5ce2ce12c52cc180ab9ef05b0 100644
--- a/lib/datasource/terraform-module/index.ts
+++ b/lib/datasource/terraform-module/index.ts
@@ -2,10 +2,12 @@ import { logger } from '../../logger';
 import { ExternalHostError } from '../../types/errors/external-host-error';
 import * as packageCache from '../../util/cache/package';
 import { Http } from '../../util/http';
+import * as hashicorpVersioning from '../../versioning/hashicorp';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 
 export const id = 'terraform-module';
 export const defaultRegistryUrls = ['https://registry.terraform.io'];
+export const defaultVersioning = hashicorpVersioning.id;
 export const registryStrategy = 'first';
 
 const http = new Http(id);
diff --git a/lib/datasource/terraform-provider/index.ts b/lib/datasource/terraform-provider/index.ts
index 5a9b7fe1b2cc4691972f749e4a7b95456684b45b..c41de0dfef43a9386d94ecf202ccdf19060c3a13 100644
--- a/lib/datasource/terraform-provider/index.ts
+++ b/lib/datasource/terraform-provider/index.ts
@@ -2,6 +2,7 @@ import URL from 'url';
 import { logger } from '../../logger';
 import * as packageCache from '../../util/cache/package';
 import { Http } from '../../util/http';
+import * as hashicorpVersioning from '../../versioning/hashicorp';
 import { GetReleasesConfig, ReleaseResult } from '../common';
 import { getTerraformServiceDiscoveryResult } from '../terraform-module';
 
@@ -10,6 +11,7 @@ export const defaultRegistryUrls = [
   'https://registry.terraform.io',
   'https://releases.hashicorp.com',
 ];
+export const defaultVersioning = hashicorpVersioning.id;
 export const registryStrategy = 'hunt';
 
 const http = new Http(id);