class CephReleases(Directive):
has_content = False
- required_arguments = 1
+ required_arguments = 2
optional_arguments = 0
option_spec = {}
def run(self):
filename = self.arguments[0]
+ current = self.arguments[1] == 'current'
document = self.state.document
env = document.settings.env
rel_filename, filename = env.relfn2path(filename)
tgroup += thead
row_node = nodes.row()
thead += row_node
- row_node.extend(nodes.entry(h, nodes.paragraph(text=h))
- for h in ["Version", "Initial release", "Latest", "End of life (estimated)"])
+ row_node.extend(
+ nodes.entry(h, nodes.paragraph(text=h))
+ for h in ["Name", "Initial release", "Latest",
+ "End of life (estimated)" if current else "End of life"])
releases = releases.items()
releases = sorted(releases, key=lambda t: t[0], reverse=True)
rows = []
for code_name, info in releases:
actual_eol = info.get("actual_eol", None)
- if actual_eol and actual_eol <= datetime.datetime.now().date():
- continue
+
+ if current:
+ if actual_eol and actual_eol <= datetime.datetime.now().date():
+ continue
+ else:
+ if not actual_eol:
+ continue
+
trow = nodes.row()
entry = nodes.entry()
- para = nodes.paragraph(text="`{}`_".format(code_name))
+ para = nodes.paragraph(text=f"`{code_name.title()} <{code_name}>`_")
sphinx.util.nodes.nested_parse_with_titles(
self.state, para, entry)
#entry += para
entry = nodes.entry()
para = nodes.paragraph(text="{}".format(
- oldest_release["released"].strftime("%b %Y")))
+ oldest_release["released"]))
entry += para
trow += entry
trow += entry
entry = nodes.entry()
- para = nodes.paragraph(text="{}".format(
- info.get("target_eol", "--")))
+ if current:
+ para = nodes.paragraph(text=info.get("target_eol", '--'))
+ else:
+ para = nodes.paragraph(text=info.get('actual_eol', '--'))
entry += para
trow += entry
class CephTimeline(Directive):
has_content = False
- required_arguments = 12
+ required_arguments = 7
optional_arguments = 0
option_spec = {}
for col in columns:
entry = nodes.entry()
if col.lower() in ["date", "development"]:
- para = nodes.paragraph(text=col)
+ para = nodes.paragraph(text=col.title())
else:
- para = nodes.paragraph(text="`{}`_".format(col))
+ para = nodes.paragraph(text=f"`{col.title()} <{col}>`_".format(col))
sphinx.util.nodes.nested_parse_with_titles(
self.state, para, entry)
row_node += entry
trow = nodes.row()
entry = nodes.entry()
- para = nodes.paragraph(text=row_info[0].strftime("%b %Y"))
+ para = nodes.paragraph(text=row_info[0])
entry += para
trow += entry
.. toctree::
:maxdepth: 1
-.. _active-releases:
-
-Active stable releases
-----------------------
-
-.. ceph_releases:: releases.yml
-
Understanding the release cycle
-------------------------------
Starting with the Nautilus release (14.2.0), there is a new stable release cycle
-every year, targeting March 1st. Each stable release series will receive a name
+every year, targeting the month of March. Each stable release series will receive a name
(e.g., 'Mimic') and a major release number (e.g., 13 for Mimic because 'M' is
the 13th letter of the alphabet).
Release candidates (x.1.z)
^^^^^^^^^^^^^^^^^^^^^^^^^^
-There is a feature release roughly eight (8) weeks prior to the planned
+There is a feature freeze roughly two months prior to the planned
initial stable release, after which focus shifts to stabilization and
bug fixes only.
Once the initial stable release is made (x.2.0), there are
semi-regular bug-fix point releases with bug fixes and (occasionally)
-small feature backports. Bug fixes are accumulated and included in
+feature backports. Bug fixes are accumulated and included in
the next point release.
* Stable point release every 4 to 6 weeks
* Intended for production deployments
-* Bug fix backports for two full release cycles.
+* Bug fix backports for 2 full release cycles (2 years).
* Online, rolling upgrade support and testing from the last two (2)
stable release(s) (starting from Luminous).
* Online, rolling upgrade support and testing from prior stable point
In the case of Jewel and Kraken, the lifetime was slightly different than
described above. Prior to Luminous, only every other stable release was an "LTS"
-release. Therefore,
-
-* Upgrade scenarios "Jewel -> Kraken -> Luminous" and "Jewel -> Luminous" were
- expected to work.
-* Upgrades from Jewel or Kraken must upgrade to Luminous first before proceeding
- further (e.g., Kraken -> Luminous -> Mimic but not Kraken -> Mimic).
-* Jewel was maintained until Mimic was released (June 2018).
-* Kraken is no longer maintained.
+release.
Detailed information on all releases, past and present, can be found at :ref:`ceph-releases-index`
-Release timeline
-----------------
-
-.. ceph_timeline:: releases.yml development octopus nautilus mimic luminous kraken jewel infernalis hammer giant firefly
-
-.. _Pacific: ../pacific
-.. _16.2.0: ../pacific#v16-2-0-pacific
-
-.. _Octopus: ../octopus
-.. _15.2.7: ../octopus#v15-2-7-octopus
-.. _15.2.6: ../octopus#v15-2-6-octopus
-.. _15.2.5: ../octopus#v15-2-5-octopus
-.. _15.2.4: ../octopus#v15-2-4-octopus
-.. _15.2.3: ../octopus#v15-2-3-octopus
-.. _15.2.2: ../octopus#v15-2-2-octopus
-.. _15.2.1: ../octopus#v15-2-1-octopus
-.. _15.2.0: ../octopus#v15-2-0-octopus
-
-.. _Nautilus: ../nautilus
-.. _14.2.14: ../nautilus#v14-2-14-nautilus
-.. _14.2.13: ../nautilus#v14-2-13-nautilus
-.. _14.2.12: ../nautilus#v14-2-12-nautilus
-.. _14.2.11: ../nautilus#v14-2-11-nautilus
-.. _14.2.10: ../nautilus#v14-2-10-nautilus
-.. _14.2.9: ../nautilus#v14-2-9-nautilus
-.. _14.2.8: ../nautilus#v14-2-8-nautilus
-.. _14.2.7: ../nautilus#v14-2-7-nautilus
-.. _14.2.6: ../nautilus#v14-2-6-nautilus
-.. _14.2.5: ../nautilus#v14-2-5-nautilus
-.. _14.2.4: ../nautilus#v14-2-4-nautilus
-.. _14.2.3: ../nautilus#v14-2-3-nautilus
-.. _14.2.2: ../nautilus#v14-2-2-nautilus
-.. _14.2.1: ../nautilus#v14-2-1-nautilus
-.. _14.2.0: ../nautilus#v14-2-0-nautilus
-
-.. _Mimic: ../mimic
-.. _13.2.10: ../mimic#v13-2-10-mimic
-.. _13.2.9: ../mimic#v13-2-9-mimic
-.. _13.2.8: ../mimic#v13-2-8-mimic
-.. _13.2.7: ../mimic#v13-2-7-mimic
-.. _13.2.6: ../mimic#v13-2-6-mimic
-.. _13.2.5: ../mimic#v13-2-5-mimic
-.. _13.2.4: ../mimic#v13-2-4-mimic
-.. _13.2.3: ../mimic#v13-2-3-mimic
-.. _13.2.2: ../mimic#v13-2-2-mimic
-.. _13.2.1: ../mimic#v13-2-1-mimic
-.. _13.2.0: ../mimic#v13-2-0-mimic
-
-.. _Luminous: ../luminous
-.. _12.2.13: ../luminous#v12-2-13-luminous
-.. _12.2.12: ../luminous#v12-2-12-luminous
-.. _12.2.11: ../luminous#v12-2-11-luminous
-.. _12.2.10: ../luminous#v12-2-10-luminous
-.. _12.2.9: ../luminous#v12-2-9-luminous
-.. _12.2.8: ../luminous#v12-2-8-luminous
-.. _12.2.7: ../luminous#v12-2-7-luminous
-.. _12.2.6: ../luminous#v12-2-6-luminous
-.. _12.2.5: ../luminous#v12-2-5-luminous
-.. _12.2.4: ../luminous#v12-2-4-luminous
-.. _12.2.3: ../luminous#v12-2-3-luminous
-.. _12.2.2: ../luminous#v12-2-2-luminous
-.. _12.2.1: ../luminous#v12-2-1-luminous
-.. _12.2.0: ../luminous#v12-2-0-luminous
-
-.. _11.2.1: ../kraken#v11-2-1-kraken
-.. _11.2.0: ../kraken#v11-2-0-kraken
-.. _Kraken: ../kraken#v11-2-0-kraken
-
-.. _11.0.2: ../kraken#v11-0-2-kraken
-
-.. _10.2.11: ../jewel#v10-2-11-jewel
-.. _10.2.10: ../jewel#v10-2-10-jewel
-.. _10.2.9: ../jewel#v10-2-9-jewel
-.. _10.2.8: ../jewel#v10-2-8-jewel
-.. _10.2.7: ../jewel#v10-2-7-jewel
-.. _10.2.6: ../jewel#v10-2-6-jewel
-.. _10.2.5: ../jewel#v10-2-5-jewel
-.. _10.2.4: ../jewel#v10-2-4-jewel
-.. _10.2.3: ../jewel#v10-2-3-jewel
-.. _10.2.2: ../jewel#v10-2-2-jewel
-.. _10.2.1: ../jewel#v10-2-1-jewel
-.. _10.2.0: ../jewel#v10-2-0-jewel
-.. _Jewel: ../jewel#v10-2-0-jewel
-
-.. _10.1.2: ../jewel#v10-1-2-jewel-release-candidate
-.. _10.1.1: ../jewel#v10-1-1-jewel-release-candidate
-.. _10.1.0: ../jewel#v10-1-0-jewel-release-candidate
-.. _10.0.5: ../jewel#v10-0-5
-.. _10.0.3: ../jewel#v10-0-3
-.. _10.0.2: ../jewel#v10-0-2
-.. _10.0.1: ../jewel#v10-0-1
-.. _10.0.0: ../jewel#v10-0-0
-
-.. _9.2.1: ../infernalis#v9-2-1-infernalis
-.. _9.2.0: ../infernalis#v9-2-0-infernalis
-.. _Infernalis: ../infernalis#v9-2-0-infernalis
-
-.. _9.1.0: ../infernalis#v9-1-0
-.. _9.0.3: ../infernalis#v9-0-3
-.. _9.0.2: ../infernalis#v9-0-2
-.. _9.0.1: ../infernalis#v9-0-1
-.. _9.0.0: ../infernalis#v9-0-0
-
-.. _0.94.10: ../hammer#v0-94-10-hammer
-.. _0.94.9: ../hammer#v0-94-9-hammer
-.. _0.94.8: ../hammer#v0-94-8-hammer
-.. _0.94.7: ../hammer#v0-94-7-hammer
-.. _0.94.6: ../hammer#v0-94-6-hammer
-.. _0.94.5: ../hammer#v0-94-5-hammer
-.. _0.94.4: ../hammer#v0-94-4-hammer
-.. _0.94.3: ../hammer#v0-94-3-hammer
-.. _0.94.2: ../hammer#v0-94-2-hammer
-.. _0.94.1: ../hammer#v0-94-1-hammer
-.. _0.94: ../hammer#v0-94-hammer
-.. _Hammer: ../hammer#v0-94-hammer
-
-.. _0.93: ../hammer#v0-93
-.. _0.92: ../hammer#v0-92
-.. _0.91: ../hammer#v0-91
-.. _0.90: ../hammer#v0-90
-.. _0.89: ../hammer#v0-89
-.. _0.88: ../hammer#v0-88
-
-.. _0.87.2: ../giant#v0-87-2-giant
-.. _0.87.1: ../giant#v0-87-1-giant
-.. _0.87: ../giant#v0-87-giant
-.. _Giant: ../giant#v0-87-giant
-
-.. _0.86: ../giant#v0-86
-.. _0.85: ../giant#v0-85
-.. _0.84: ../giant#v0-84
-.. _0.83: ../giant#v0-83
-.. _0.82: ../giant#v0-82
-.. _0.81: ../giant#v0-81
-
-.. _0.80.11: ../firefly#v0-80-11-firefly
-.. _0.80.10: ../firefly#v0-80-10-firefly
-.. _0.80.9: ../firefly#v0-80-9-firefly
-.. _0.80.8: ../firefly#v0-80-8-firefly
-.. _0.80.7: ../firefly#v0-80-7-firefly
-.. _0.80.6: ../firefly#v0-80-6-firefly
-.. _0.80.5: ../firefly#v0-80-5-firefly
-.. _0.80.4: ../firefly#v0-80-4-firefly
-.. _0.80.3: ../firefly#v0-80-3-firefly
-.. _0.80.2: ../firefly#v0-80-2-firefly
-.. _0.80.1: ../firefly#v0-80-1-firefly
-.. _0.80: ../firefly#v0-80-firefly
-.. _Firefly: ../firefly#v0-80-firefly
-
-.. _0.79: ../firefly#v0-79
-.. _0.78: ../firefly#v0-78
-.. _0.77: ../firefly#v0-77
-.. _0.76: ../firefly#v0-76
-.. _0.75: ../firefly#v0-75
-.. _0.74: ../firefly#v0-74
-.. _0.73: ../firefly#v0-73
-
-.. _0.72.2: ../emperor#v0-72-2-emperor
-.. _0.72.1: ../emperor#v0-72-1-emperor
-.. _0.72: ../emperor#v0-72-emperor
-.. _Emperor: ../emperor#v0-72-emperor
-
-.. _0.71: ../dumpling#v0-71
-.. _0.70: ../dumpling#v0-70
-.. _0.69: ../dumpling#v0-69
-.. _0.68: ../dumpling#v0-68
-
-.. _0.67.11: ../dumpling#v0-67-11-dumpling
-.. _0.67.10: ../dumpling#v0-67-10-dumpling
-.. _0.67.9: ../dumpling#v0-67-9-dumpling
-.. _0.67.8: ../dumpling#v0-67-8-dumpling
-.. _0.67.7: ../dumpling#v0-67-7-dumpling
-.. _0.67.6: ../dumpling#v0-67-6-dumpling
-.. _0.67.5: ../dumpling#v0-67-5-dumpling
-.. _0.67.4: ../dumpling#v0-67-4-dumpling
-.. _0.67.3: ../dumpling#v0-67-3-dumpling
-.. _0.67.2: ../dumpling#v0-67-2-dumpling
-.. _0.67.1: ../dumpling#v0-67-1-dumpling
-.. _0.67: ../dumpling#v0-67-dumpling
-.. _Dumpling: ../dumpling#v0-67-dumpling
.. toctree::
:maxdepth: 1
-Active Releases
+.. _active-releases:
+
+Active releases
---------------
The following Ceph releases are actively maintained and receive periodic backports and
.. toctree::
:maxdepth: 1
+ :hidden:
Pacific (v16.2.*) <pacific>
Octopus (v15.2.*) <octopus>
Nautilus (v14.2.*) <nautilus>
+.. ceph_releases:: releases.yml current
+
+
Archived Releases
-----------------
The following older Ceph releases are no longer maintained (do not
receive bug fixes or backports).
+.. ceph_releases:: releases.yml eol
+
.. toctree::
- :maxdepth: 1
+ :maxdepth: 1
+ :hidden:
Mimic (v13.2.*) <mimic>
Luminous (v12.2.*) <luminous>
Cuttlefish (v0.61.*) <cuttlefish>
Bobtail (v0.56.*) <bobtail>
Argonaut (v0.48.*) <argonaut>
+
+Release timeline
+----------------
+
+.. ceph_timeline:: releases.yml dev pacific octopus nautilus mimic luminous
+
+
+.. _Pacific: pacific
+.. _16.2.0: pacific#v16-2-0-pacific
+
+.. _Octopus: octopus
+.. _15.2.10: octopus#v15-2-10-octopus
+.. _15.2.9: octopus#v15-2-9-octopus
+.. _15.2.8: octopus#v15-2-8-octopus
+.. _15.2.7: octopus#v15-2-7-octopus
+.. _15.2.6: octopus#v15-2-6-octopus
+.. _15.2.5: octopus#v15-2-5-octopus
+.. _15.2.4: octopus#v15-2-4-octopus
+.. _15.2.3: octopus#v15-2-3-octopus
+.. _15.2.2: octopus#v15-2-2-octopus
+.. _15.2.1: octopus#v15-2-1-octopus
+.. _15.2.0: octopus#v15-2-0-octopus
+
+.. _Nautilus: nautilus
+.. _14.2.19: nautilus#v14-2-19-nautilus
+.. _14.2.18: nautilus#v14-2-18-nautilus
+.. _14.2.17: nautilus#v14-2-17-nautilus
+.. _14.2.16: nautilus#v14-2-16-nautilus
+.. _14.2.15: nautilus#v14-2-15-nautilus
+.. _14.2.14: nautilus#v14-2-14-nautilus
+.. _14.2.13: nautilus#v14-2-13-nautilus
+.. _14.2.12: nautilus#v14-2-12-nautilus
+.. _14.2.11: nautilus#v14-2-11-nautilus
+.. _14.2.10: nautilus#v14-2-10-nautilus
+.. _14.2.9: nautilus#v14-2-9-nautilus
+.. _14.2.8: nautilus#v14-2-8-nautilus
+.. _14.2.7: nautilus#v14-2-7-nautilus
+.. _14.2.6: nautilus#v14-2-6-nautilus
+.. _14.2.5: nautilus#v14-2-5-nautilus
+.. _14.2.4: nautilus#v14-2-4-nautilus
+.. _14.2.3: nautilus#v14-2-3-nautilus
+.. _14.2.2: nautilus#v14-2-2-nautilus
+.. _14.2.1: nautilus#v14-2-1-nautilus
+.. _14.2.0: nautilus#v14-2-0-nautilus
+
+.. _Mimic: mimic
+.. _13.2.10: mimic#v13-2-10-mimic
+.. _13.2.9: mimic#v13-2-9-mimic
+.. _13.2.8: mimic#v13-2-8-mimic
+.. _13.2.7: mimic#v13-2-7-mimic
+.. _13.2.6: mimic#v13-2-6-mimic
+.. _13.2.5: mimic#v13-2-5-mimic
+.. _13.2.4: mimic#v13-2-4-mimic
+.. _13.2.3: mimic#v13-2-3-mimic
+.. _13.2.2: mimic#v13-2-2-mimic
+.. _13.2.1: mimic#v13-2-1-mimic
+.. _13.2.0: mimic#v13-2-0-mimic
+
+.. _Luminous: luminous
+.. _12.2.13: luminous#v12-2-13-luminous
+.. _12.2.12: luminous#v12-2-12-luminous
+.. _12.2.11: luminous#v12-2-11-luminous
+.. _12.2.10: luminous#v12-2-10-luminous
+.. _12.2.9: luminous#v12-2-9-luminous
+.. _12.2.8: luminous#v12-2-8-luminous
+.. _12.2.7: luminous#v12-2-7-luminous
+.. _12.2.6: luminous#v12-2-6-luminous
+.. _12.2.5: luminous#v12-2-5-luminous
+.. _12.2.4: luminous#v12-2-4-luminous
+.. _12.2.3: luminous#v12-2-3-luminous
+.. _12.2.2: luminous#v12-2-2-luminous
+.. _12.2.1: luminous#v12-2-1-luminous
+.. _12.2.0: luminous#v12-2-0-luminous
+
+.. _Kraken: kraken
+.. _11.2.1: kraken#v11-2-1-kraken
+.. _11.2.0: kraken#v11-2-0-kraken
+.. _11.0.2: kraken#v11-0-2-kraken
+
+.. _Jewel: jewel
+.. _10.2.11: jewel#v10-2-11-jewel
+.. _10.2.10: jewel#v10-2-10-jewel
+.. _10.2.9: jewel#v10-2-9-jewel
+.. _10.2.8: jewel#v10-2-8-jewel
+.. _10.2.7: jewel#v10-2-7-jewel
+.. _10.2.6: jewel#v10-2-6-jewel
+.. _10.2.5: jewel#v10-2-5-jewel
+.. _10.2.4: jewel#v10-2-4-jewel
+.. _10.2.3: jewel#v10-2-3-jewel
+.. _10.2.2: jewel#v10-2-2-jewel
+.. _10.2.1: jewel#v10-2-1-jewel
+.. _10.2.0: jewel#v10-2-0-jewel
+
+.. _10.1.2: jewel#v10-1-2-jewel-release-candidate
+.. _10.1.1: jewel#v10-1-1-jewel-release-candidate
+.. _10.1.0: jewel#v10-1-0-jewel-release-candidate
+.. _10.0.5: jewel#v10-0-5
+.. _10.0.3: jewel#v10-0-3
+.. _10.0.2: jewel#v10-0-2
+.. _10.0.1: jewel#v10-0-1
+.. _10.0.0: jewel#v10-0-0
+
+.. _Infernalis: infernalis
+.. _9.2.1: infernalis#v9-2-1-infernalis
+.. _9.2.0: infernalis#v9-2-0-infernalis
+
+.. _9.1.0: infernalis#v9-1-0
+.. _9.0.3: infernalis#v9-0-3
+.. _9.0.2: infernalis#v9-0-2
+.. _9.0.1: infernalis#v9-0-1
+.. _9.0.0: infernalis#v9-0-0
+
+.. _0.94.10: hammer#v0-94-10-hammer
+.. _0.94.9: hammer#v0-94-9-hammer
+.. _0.94.8: hammer#v0-94-8-hammer
+.. _0.94.7: hammer#v0-94-7-hammer
+.. _0.94.6: hammer#v0-94-6-hammer
+.. _0.94.5: hammer#v0-94-5-hammer
+.. _0.94.4: hammer#v0-94-4-hammer
+.. _0.94.3: hammer#v0-94-3-hammer
+.. _0.94.2: hammer#v0-94-2-hammer
+.. _0.94.1: hammer#v0-94-1-hammer
+.. _0.94: hammer#v0-94-hammer
+.. _Hammer: hammer
+
+.. _0.93: hammer#v0-93
+.. _0.92: hammer#v0-92
+.. _0.91: hammer#v0-91
+.. _0.90: hammer#v0-90
+.. _0.89: hammer#v0-89
+.. _0.88: hammer#v0-88
+
+.. _0.87.2: giant#v0-87-2-giant
+.. _0.87.1: giant#v0-87-1-giant
+.. _0.87: giant#v0-87-giant
+.. _Giant: giant
+
+.. _0.86: giant#v0-86
+.. _0.85: giant#v0-85
+.. _0.84: giant#v0-84
+.. _0.83: giant#v0-83
+.. _0.82: giant#v0-82
+.. _0.81: giant#v0-81
+
+.. _0.80.11: firefly#v0-80-11-firefly
+.. _0.80.10: firefly#v0-80-10-firefly
+.. _0.80.9: firefly#v0-80-9-firefly
+.. _0.80.8: firefly#v0-80-8-firefly
+.. _0.80.7: firefly#v0-80-7-firefly
+.. _0.80.6: firefly#v0-80-6-firefly
+.. _0.80.5: firefly#v0-80-5-firefly
+.. _0.80.4: firefly#v0-80-4-firefly
+.. _0.80.3: firefly#v0-80-3-firefly
+.. _0.80.2: firefly#v0-80-2-firefly
+.. _0.80.1: firefly#v0-80-1-firefly
+.. _0.80: firefly#v0-80-firefly
+.. _Firefly: firefly
+
+.. _0.79: firefly#v0-79
+.. _0.78: firefly#v0-78
+.. _0.77: firefly#v0-77
+.. _0.76: firefly#v0-76
+.. _0.75: firefly#v0-75
+.. _0.74: firefly#v0-74
+.. _0.73: firefly#v0-73
+
+.. _0.72.2: emperor#v0-72-2-emperor
+.. _0.72.1: emperor#v0-72-1-emperor
+.. _0.72: emperor#v0-72-emperor
+.. _Emperor: emperor
+
+.. _0.71: dumpling#v0-71
+.. _0.70: dumpling#v0-70
+.. _0.69: dumpling#v0-69
+.. _0.68: dumpling#v0-68
+
+.. _0.67.11: dumpling#v0-67-11-dumpling
+.. _0.67.10: dumpling#v0-67-10-dumpling
+.. _0.67.9: dumpling#v0-67-9-dumpling
+.. _0.67.8: dumpling#v0-67-8-dumpling
+.. _0.67.7: dumpling#v0-67-7-dumpling
+.. _0.67.6: dumpling#v0-67-6-dumpling
+.. _0.67.5: dumpling#v0-67-5-dumpling
+.. _0.67.4: dumpling#v0-67-4-dumpling
+.. _0.67.3: dumpling#v0-67-3-dumpling
+.. _0.67.2: dumpling#v0-67-2-dumpling
+.. _0.67.1: dumpling#v0-67-1-dumpling
+.. _0.67: dumpling#v0-67-dumpling
+.. _Dumpling: dumpling
+