CommonMark ist eine vereinfachte Auszeichnungssprache, die von einer kleinen Gruppe Entwicklern um John MacFarlane und Jeff Atwood mit dem Versuch entwickelt wurde, die Mehrdeutigkeiten im Parsing von Markdown zu eliminieren, so dass verschiedene, der Spezifikation entsprechende Parser, das gleiche Ergebnis liefern.

CommonMark
Dateiendung: keine
Entwickelt von: John MacFarlane, David Greenspan, Vicent Marti, Neil Williams, Benjamin Dumke-von der Ehe, Jeff Atwood
Erstveröffentlichung: 5. September 2014
Aktuelle Version 0.31.2[1]
(28. Januar 2024)
Art: Vereinfachte Auszeichnungssprache
http://commonmark.org/

Geschichte

Bearbeiten

Markdown, das unter anderem auf Stack Overflow und GitHub zum Verfassen von Beiträgen eingesetzt wird, führt leicht zur Verwirrung – vor allem durch folgende drei Eigenschaften:[2]

  • URLs werden nicht automatisch in Hyperlinks umgewandelt. Stattdessen müssen sie explizit gekennzeichnet werden.
  • Der Unterstrich (_) zur Formatierung von _kursivem_ und __fettem__ Text greift auch innerhalb eines Wortes, was zu unerwarteten Nebeneffekten führen kann, zum Beispiel in Ausdrücken wie „Eine_Datei“ und „Eine_andere_Datei“ (unerwartetes Ergebnis: „EineandereDatei“).
  • Markdown orientiert sich an Absätzen und nicht an Zeilen. Zeilenendmarken (CR/LF) werden nicht automatisch in Zeilenumbrüche umgewandelt. Für einen Absatz werden eine oder mehrere Leerzeilen benötigt.

Ende 2012 riefen David Greenspan und Jeff Atwood ein neues Projekt ins Leben, um eine offizielle Markdown-Spezifikation zu erstellen, deren verschiedene Implementierungen mithilfe einer Standardtestsuite validiert werden können. Damit sollte die Popularität von Markdown weiter gefördert werden, anstatt die Fragmentierung der Sprache fortzusetzen.

Im September 2014 wurde ein erster Entwurf der Syntax zunächst unter dem Namen „Standard Markdown“ veröffentlicht. Nach einer heftigen Reaktion des Markdown-Erfinders John Gruber über Twitter und einer anschließenden Diskussion mit den Verantwortlichen hinter dem Projekt einigte man sich schließlich auf den Namen CommonMark.[3][4]

Im März 2017 veröffentlichte GitHub für den hauseigenen Markdown-Dialekt eine Spezifikation, welche auf CommonMark basiert, und wechselte auf eine neue Implementierung.[5] Kurz darauf wurde auch die Forensoftware Discourse auf eine neue CommonMark-konforme Implementierung von Markdown, welche einige Erweiterungen beinhaltet, umgestellt.[6]

Unterschiede zu Markdown

Bearbeiten

Im Folgenden werden einige Unterschiede zwischen Markdown und CommonMark aufgeführt.

Auszeichnungselement Markdown CommonMark
Verschachtelte Aufzählungen Markdown schreibt hier nur vier Leerzeichen für zu einem Punkt gehörende Folgeabsätze vor. Wie viele für eine verschachtelte Aufzählung benötigt werden, ist nicht explizit geregelt und wurde bisher in verschiedenen Implementierungen unterschiedlich gehandhabt.

Beispiel:

- foo
    - bar
   - baz
In CommonMark muss eine verschachtelte Liste um so viele Zeichen eingerückt werden, wie das auch ein Absatz sein müsste, um zur Liste zu gehören.

Beispiel:

- foo
  - bar
    - baz
Leerzeile vor Überschriften und Blöcken Die meisten Implementierungen benötigen keine Leerzeile, was zu Mehrdeutigkeiten beim Auswerten führt. Eine Leerzeile beendet einen Block
Leerzeile vor eingerücktem Quellcode Wird von einigen Implementierungen benötigt, aber in der Dokumentation nirgends erwähnt Eine Leerzeile wird benötigt, um einen neuen Block zu definieren. Der Quellcode wird um vier Zeichen eingerückt.

Zum Beispiel:

Funktion:
    int test(void) {
        return 42;
    }

Einzelnachweise

Bearbeiten
  1. Release 0.31.2. 28. Januar 2024 (abgerufen am 19. Februar 2024).
  2. Jeff Atwood: Responsible Open Source Code Parenting. Coding Horror: Programming and Human Factors. 29. Dezember 2009, abgerufen am 12. September 2014 (englisch).
  3. Julia Schmidt: Initiative versucht sich an Standard Markdown. heise Developer. 4. September 2014, abgerufen am 12. September 2014.
  4. Julia Schmidt: Standard Markdown in CommonMark umbenannt. heise Developer. 8. September 2014, abgerufen am 12. September 2014.
  5. Julia Schmidt: GitHub stellt eigene, CommonMark-konforme Markdown-Spezifikation vor. heise Developer. 15. März 2017, abgerufen am 28. Mai 2018.
  6. Sam Saffron: Discourse CommonMark migration plans. Discourse Meta. 9. Juni 2017, abgerufen am 29. Mai 2018 (englisch).
Bearbeiten