Jevko: simply encode data

tree emoji

Jevko (jeff-ko /ˈd͡ʒef.kəʊ/) is a versatile minimal syntax for encoding tree-structured information as human- and machine-friendly text.

globe emoji

It can be used as a building block for simple formats, languages, and notations across a variety of domains.

For researchers, designers, minimalists, hackers, enthusiasts

technologist emoji

Jevko is for you if you are a researcher, hacker, minimalist, language or format designer, or are just looking for an extremely minimal and simple text-based representation for trees.

Comparison

finger pointing down emoji

Here is how Jevko compares to the most popular syntaxes often used for representing trees as text.

1

Jevko

XML

S-expression

JSON[1]

Features

Just text and [square brackets]

letter T in square brackets

Plain Jevko is just Unicode text in which nested square brackets create a hierarchical tree structure. In addition, there is syntax to escape the brackets, so they can also be part of text, and some syntax sugar useful when we don’t want to worry about escaping. That’s it!

backtick in square brackets

Jevko simply captures the concept of a generic tree of text in the most minimal reasonable way. The only significant characters in Jevko are two square brackets and one escape character: the backtick.

Square brackets in text

backtick followed by an opening square bracket

To treat a square bracket as text, precede it with the backtick.

`[ [
`] ]
`` `
opening square bracket followed by a backtick followed by an apostrophe

Alternatively text can be fenced, like in Markdown, in which case no escaping is needed at all.

[```'
this text is fenced
it can contain [`] 
without escaping
'```]

Whitespace-agnostic

placeholder for space

Jevko is completely whitespace-agnostic: it treats whitespace as any other character. It doesn’t ignore it or use it as a separator or anything like that. All whitespace is preserved in the tree verbatim.

all␣whitespace␣is␣preserved␣[⏎
␣␣no whitespace␣is␣lost⏎
]

Good for all kinds of formats

slash in angle brackets

Due to its simplicity and generic nature, Jevko is the perfect building block for formats that work well not only for representing data, but also for text markup. We can even do both in one format, as Jevko Data And Markup Language demonstrates.

Jevko is like…

…simplified XML/HTML

XML logo

Jevko can be thought of as a very stripped down XML where we only have:

  1. Text nodes.
  2. Anonymous, tagless elements without attributes.
  3. A more flexible and convenient CDATA in the form of fenced text.

All in an extremely lean syntax.

finger pointing up emoji

In Jevko the root element is implicit.

…simplified S-expressions

capital S in parentheses

Jevko can be thought of as a minimal version of S-expressions where we only have:

  1. Strings.
  2. Lists.
finger pointing up emoji

However:

  1. Jevko strings (text nodes) can span multiple lines and are not quoted (but can be fenced like in Markdown to include square brackets without having to escape them).

  2. Instead of round brackets Jevko uses square brackets to delimit the lists (subjevkos).

…simplified JSON

JsonHilo logo, based on the JSON logo

Jevko can be thought of as simplified JSON where we only have:

  1. Strings.
  2. Arrays.
finger pointing up emoji

However Jevko strings (text nodes) can span multiple lines and are not quoted (but can be fenced like in Markdown to include square brackets without having to escape them).

Status of Jevko

checkmark in a box emoji
Jevko is thoroughly battle-tested, has a stable formal specification (it can be implemented in any programming language), and a reference implementation in JavaScript (it can be used in any JavaScript runtime).

The Jevko Idea

timer emoji

Jevko is designed to be so simple that implementing a basic Jevko parser by an experienced programmer is a matter of a few hours at most. Thanks to this, it can be introduced very quickly in any environment and programming language.

The Jevko Vision

crystal ball emoji

Jevko Vision: Total Intercommunication Of All Software Systems describes the historical motivation and the possible futures for Jevko, from ridiculously ambitious to more down-to-earth.

Implementing Jevko

Formal specification

document emoji

The Jevko Syntax: Standard Grammar Specification is a stable formal specification of the basic syntax. No breaking changes shall be introduced to this specification.

Interactive railroad diagrams

railroad emoji

The Jevko interactive railroad diagrams complement the specification, together providing a convenient reference for implementing parsers and other Jevko processors.

Extensions specification

battery emoji

The Jevko Syntax: Extensions Specification is a formal specification of two backwards-compatible extensions to Jevko. These extensions introduce fenced text a’la Markdown and tagged text a’la heredocs.

Reference implementation

scroll emoji

jevko.js is the official reference implementation of Jevko in JavaScript.

Research

scientist emoji

You may also want to have a look at the current and proposed research projects based on Jevko. Some of these need support and funding!

Jevko Data And Markup Language

test tube emoji

One of these projects is Jevko Data And Markup Language (JDAML), an experimental XML-like format built on Jevko that works equally well for data interchange, configuration, and text markup.

mage emoji

It is meant to be a minimal and simple complement or an alternative to formats and syntaxes such as HTML, XML, JSX, JSON, YAML, TOML, etc.

More resources and projects

filing cabinet emoji

There are more resources available about Jevko, such as examples, user implementations, projects and formats based on Jevko, articles about Jevko, Jevko-based software, syntax highlighting for code editors, social media, and more.

Etymology and pronunciation

person speaking emoji

The name Jevko is pronounced jeff-ko /ˈd͡ʒef.kəʊ/. It is derived from Polish drzewko /ˈdʐɛf.kɔ/, meaning small tree.

Availability and licenses

FREE emoji

Jevko is intended as a universal, free and open syntax, to be used without restriction in any software, for any purpose.

For legal purposes, if not specified otherwise, official implementations related to Jevko are under the MIT License.

The content of this site and official Jevko-related materials is licensed under CC BY 4.0.

finger pointing up emoji

In short, these licenses allow you to freely use the materials, also for commercial purposes, provided that you include information about the author and the license. The author gives no warranties and is not responsible for the results.

Copyright (c) 2021-2024 Jevko.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

TAO logo

Jevko is a part of TAO, a project to cultivate simplicity in software.

Support Jevko

red heart

You can support Jevko in various ways:

flying money emoji

If you think that Jevko is a valuable project and you are willing and able to support it, you can do so by clicking below:

Donate directly via Stripe   or   Buy Me a Coffee at ko-fi.com   Postaw mi kawę na buycoffee.to

I appreciate all support!

Thank you,
Darius J Chuck

Thank you for visiting.