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.
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.
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.
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.
What It Is: YAML is a human friendly data serialization standard for all programming languages.
From my side I want to define a more formal goals for the spec.
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
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.
Name of the recipe.
string(full-date notation as defined by RFC 3339, section 5.6, for example, 2017-07-21)
time: (optional) How long the recipe would take.
author: (optional) Author of the recipe.
servings: (optional) How many servings the recipe is sized for (eg: a tomato soup with 4 servings means is for 4 people, but chocolate cookies with 20 servings means is going to make 20 cookies).
description: (optional) A more detailed description about the recipe.
rating: (optional) Rating of the recipe.
name: Mrs Fields Choc-Chip Cookies date: 2011-09-21 time: 25 minutes serves: 1 makes: 25 tags: - cookies - chocolate