Some time ago, talking with a friend we realised that ther is not a “standard” format to save cooking recipes. At that time I was learning React and one of the first projects I tried to do was a recipe management app. I didn’t success on that project (as many others I started and never finished) but on the way I found a draft spec of a recipe format: YumML.

This format was publish at that time on vikingco.de but the site is not available anymore. The only references available are from the Internet Archive and the repository of the page that stills available.

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.

History

The first draft of the YumML format is from September 21 of 2011 made by Paul Jenkins, you can check the original specification here that I rescued from the old archives I found.

From my point of view, this draft it’s really promissing as a format for cooking recipes, so I want to recover it from the forgiven archives of Internet and bring it to live again, adding some extra functionalitios/specifications.

Motivation

As the original author of YumML mentioned on his original blog post, I’ve been investigating a bit about recipe formats for cooking and been clear, most of them sucks. The landscape of recipe interchange formats is quite fragmented, but most of the have one think in common: they are not really humman-friendly.

A lot of cooking-related software come with a format that usually only that software is able to work with an understand. Although some of them can be imported by other programs. Meal-Master is one of these widely supported formats and due to that ther is a huge collection of recipes available online.

But lookint to an example, it doesn’t looks like something well specified:

MMMMM----- Now You're Cooking! v5.65 [Meal-Master Export Format]

      Title: Agua De Valencia
 Categories: beverages, spanish
      Yield: 4 servings

      1    bottle of spanish cava
           -(sparkling wine or; champag
           plenty fresh orange juice
           cointreau
           ice cubes

Put some ice cubes into a large jug and pour over lots of orange juice. Now
add the bottle of cava. Once the fizz subsides, stir in a good dash of the
cointreau and it?s ready to serve.

  Contributor:  Esther P�rez Solsona

  NYC Nutrilink: N0^00000,N0^00000,N0^00000,N0^00000

There are some other “famous” formats like:

But they are mainly XML based formats and it’s impossible for a real human be able to read and understand a recipe written on that format. If you’re interested on find other recipe formats there is a list of software related cooking formats.

It’s worth to mention some formats that came with the age of Internet. The HTML microdata like Google rich snippets and the schema.org microdata, are widely used by commercial recipe sites. Although the main objective of microdata is to make content machine-readable (specially for SEO purposes), but receipes nowdays are thought to be read and executed by a human.

Finally I found pesto that aims to make a more simpler human-readable format, but personally I find difficult to understand for someone that is not used to the syntax.

Original design considerations

The original author of YumML had some considerations in mind during the design of the format:

YumML is based on YAML to create a human and system readable format.

From yaml.org

What It Is: YAML is a human friendly data serialization standard for all programming languages.

Goals

From my side I want to define a more formal goals for the spec.

YumML format:

Basic Example

name: Mrs Fields Choc-Chip Cookies
date: 2011-09-21
time: 25 minutes
ingredients:
  - quantity: 2.5
    unit: cups
    item: plain flour

  - quantity: 0.5
    unit: tsp
    item: bi-carb of soda

instructions:
  - step: Mix flour, bi-carb soda, and salt in a large bowl
  - step: Blend sugars with electric mixer, add margarine to form a grainy paste

Spec

There are three main sections that very recipe must include: the header (that is not formaly defined), the ingredients list and the instructions.

The header is an implicit section where all the attributes are placed at the root level of the file. All the attributes should be placed at the top of the file.

Example

name: Mrs Fields Choc-Chip Cookies
date: 2011-09-21
time: 25 minutes
serves: 1
makes: 25
tags:
  - cookies
  - chocolate