1- Context
2- =======
1+ # Context
32
43We build and release software by massively consuming and producing software
54packages such as NPMs, RPMs, Rubygems, etc.
65
76Each package manager, platform, type or ecosystem has its own conventions and
87protocols to identify, locate and provision software packages.
98
10-
11- Problem
12- =======
9+ # Problem
1310
1411When tools, APIs and databases process or store multiple package types, it is
1512difficult to reference the same software package across tools in a uniform way.
@@ -48,9 +45,7 @@ differences in syntax, naming and conventions:
4845- Sonatype Lifecycle uses a format id followed by format specific coordinates.
4946 https://links.sonatype.com/products/nxiq/doc/component-identifier
5047
51-
52- Solution
53- ========
48+ # Solution
5449
5550A ` purl ` or package URL is an attempt to standardize existing approaches to
5651reliably identify and locate software packages.
@@ -62,17 +57,14 @@ packaging conventions, tools, APIs and databases.
6257Such a package URL is useful to reliably reference the same software package
6358using a simple and expressive syntax and conventions based on familiar URLs.
6459
65-
6660Check also this short ` purl ` presentation (with video) at FOSDEM 2018
6761https://fosdem.org/2018/schedule/event/purl/ for an overview.
6862
69-
70- purl
71- ~~~~~
63+ ## purl
7264
7365` purl ` stands for ** package URL** .
7466
75- A `purl ` is a URL composed of seven components::
67+ A ` purl ` is a URL composed of seven components:
7668
7769 scheme:type/namespace/name@version?qualifiers#subpath
7870
@@ -94,20 +86,14 @@ The definition for each components is:
9486- ** subpath** : extra subpath within a package, relative to the package root.
9587 Optional.
9688
97-
9889Components are designed such that they form a hierarchy from the most significant component
9990on the left to the least significant component on the right.
10091
101-
10292A ` purl ` must NOT contain a URL Authority i.e. there is no support for
10393` username ` , ` password ` , ` host ` and ` port ` components. A ` namespace ` segment may
10494sometimes look like a ` host ` but its interpretation is specific to a ` type ` .
10595
106-
107- Some `purl ` examples
108- ~~~~~~~~~~~~~~~~~~~~
109-
110- ::
96+ ## Some ` purl ` examples
11197
11298 pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c
11399
@@ -138,23 +124,19 @@ Some `purl` examples
138124
139125(NB: some checksums are truncated for brevity)
140126
141-
142- Specification details
143- ~~~~~~~~~~~~~~~~~~~~~
127+ ## Specification details
144128
145129The ` purl ` specification consists of a core syntax definition and independent
146130type definitions:
147131
148132- ` Package URL core <PURL-SPECIFICATION.rst> ` _ : Defines a versioned and
149133 formalized format, syntax, and rules used to represent and validate ` purl ` .
150134
151- - `Type definitions <PURL-TYPES.rst >`_: Defines `purl ` types (e.g. maven, npm,
135+ - ` Type definitions <PURL-TYPES.md > ` _ : Defines ` purl ` types (e.g. maven, npm,
152136 cargo, rpm, etc) independent of the core specification. Definitions also
153137 include types reserved for future use.
154138
155-
156- Known implementations
157- ~~~~~~~~~~~~~~~~~~~~~
139+ ## Known implementations
158140
159141- .NET: https://github.com/package-url/packageurl-dotnet
160142- Erlang / Elixir: https://github.com/erlef/purl
@@ -170,14 +152,6 @@ Known implementations
170152- Rust: https://github.com/package-url/packageurl.rs
171153- Swift: https://github.com/package-url/packageurl-swift
172154
173-
174- Users, adopters and links
175- ~~~~~~~~~~~~~~~~~~~~~~~~~
155+ ## Users, adopters and links
176156
177157See the ` dedicated adopters list <ADOPTERS.md> ` _ .
178-
179-
180- License
181- ~~~~~~~
182-
183- This document is licensed under the MIT license
0 commit comments