SlideShare a Scribd company logo
menneskene utgjør forskjellen
Systemdokumentasjon med
Markdown og
Asciidoctor.
Michael Gfeller
menneskene utgjør forskjellen
Systemdokumentasjon med
Markdown og
Asciidoctor.
Michael Gfeller
FORFATTER
INNHOLD
LESER
FORFATTER
INNHOLD
LESER
FORFATTER
INNHOLD
LESER
LIVSLØP
FORMAT
VERKTØY
8
MARKDOWN
“HTML is a publishing
format; Markdown is a
writing format.”
John Gruber
9
GitHub-flavored
pandoc
Asciidoctor
ASCIIDOCTOR
maven
VERKTØY
Asciidoctor
Maven
Mercurial
Jenkins
Nginx
IntelliJ
Brackets
OPPSUMMERING
TAKK FOR OPPMERKSOMHETEN!
mgf@computas.com
@michaelgfeller
http://no.linkedin.com/in/michaelgfeller

More Related Content

Featured

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
DevGAMM Conference
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
Erica Santiago
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Saba Software
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
Simplilearn
 

Featured (20)

How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 
Barbie - Brand Strategy Presentation
Barbie - Brand Strategy PresentationBarbie - Brand Strategy Presentation
Barbie - Brand Strategy Presentation
 
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them wellGood Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
Good Stuff Happens in 1:1 Meetings: Why you need them and how to do them well
 
Introduction to C Programming Language
Introduction to C Programming LanguageIntroduction to C Programming Language
Introduction to C Programming Language
 

Editor's Notes

  1. Systemdokumentasjon er en nødvendighet som sjelden vekker stor begeistring hos de som skal skrive den, heller ei hos de som skal lese den.
  2. Hvorfor er det sånn? Det skyldes ikke bare fordi det er morsommere å skrive kode, men også fordi det kan være utfordrende å vite hva dokumentasjonen skal inneholde, hvor mye som er godt nok, og hvordan den skal håndteres og leveres. Å skrive god dokumentasjon er krevende. Det er mye enklere å fokusere på innholdet når format og verktøy er forfattervennlig og resultatet brukervennlig. Jeg heter Michael Gfeller, jeg er utvikler og arkitekt, arbeider i et prosjekt hvor målgruppene av det vi lager også er utviklere og arkitekter. Det er avgjørende at vår systemdokumentasjon er så bra at andre både liker å lese den og lett kan bruke vårt produkt. Confluence, som vi brukte for de fleste delene av systemdokumentasjonen, opplevdes ikke som optimalt. Bl.a . var eksport til PDF  og versjonering alltid en smertefull opplevelse. Vi måtte gjøre noe med dette, og jeg skal i dette foredraget fortelle om hva vi kom fram til og kan anbefale.
  3. Dokumentasjon står på 3 søyler: forfatter, innhold og leser. La oss ta en titt på de.
  4. Her ser vi resultatet av en liten intern spørreundersøkelse om hvilke roller som er relevante ifm systemdokumentasjon.  Forfatter og leser har stort sett de samme teknisk orienterte rollene, som bl.a utvikler, arkitekt, driftansvarlig, og produkteier. Derimot er salg og marketing, kontraktansvarlig og sluttbruker ikke roller som er relevante for systemdokumentasjonen.
  5. Når det gjelder innhold har vi nok en klar idé hva system betyr for oss: det er synonymt med løsning eller produkt. På den andre side er det kanskje ikke så opplagt hvilke typer dokumenter systemdokumentasjon består av. Her vises resultatet av samme intern spørreundersøkelse om innholdet av systemdokumentasjonen, kombinert med informasjon jeg fant på nettet. En interessant forskjell mellom det jeg fant på nettet og det som kom fram internt, var at de fleste definisjoner jeg fant på nettet inkluderte krav som viktig del, men ikke løsningsbeskrivelser. Jeg er nok enig i det. Løsningsbeskrivelser beskriver jo ikke nødvendigvis det som faktisk ble implementert til slutt. Det som ikke finnes i denne listen er salgs- og markedsdokumenter, kontrakter, og oppgaver fra Jira eller lignende smidige verktøy.
  6. Systemdokumentasjonens livsløp følger ganske enkelt livsløpet og livsfaser av våre produkter og løsninger. Livsløpet begynner med kravspesifikasjon, og slutter med avvikling. Livsfaser kan tilsvare sprinter, delleveranser og leveranser.
  7. Velvalgt format, verktøy og infrastruktur gjør det mer gledelig for forfattere å holde dokumentasjonen oppdatert og følge produktets livssyklus. Det skal være enkelt å skrive og produsere dokumentasjon, det skal være enkelt å finne forskjeller mellom versjoner, og det skal være enkelt å kunne verifisere at og når dokumentasjonen har blitt oppdatert. Med andre ord, det skal være mulig for oss å jobbe med dokumentasjon som vi jobber med kode. Formater og verktøy som Word eller Confluence og tilordnet infrastruktur egner seg ikke til dette, mens tekstformat, bygge- og konverteringsskript og versjonskontroll er mye bedre.
  8. Når man begynner å undersøke mulige formater, støter man ganske raskt på Markdown. Det er kanskje mest kjent som GitHub Flavoured Markdown. Markdown ble utviklet i 2004 av John Gruber, og betegner både formatet og et Perl-skript som generer HTML. Hans hovedformål var å skape et tekstbasert format som var enkelt å skrive og lese. Et enkelt Markdown-dokument vises her. Strukturelementene er typiske og de fleste av oss gjenkjenner denne stilen. Det finnes mange varianter og utvidelser av Markdown, men det opprinnelige formatet har ikke endret seg. Markdown er bra, men vi hadde behov for mer. Bl.a. ønkset vi mulighet for å dele opp dokumentasjonen i flere filer, og for å kunne bygge opp nye dokumenter fra slike deldokumenter. Andre krav var automatisk innholdsfortegnelse, callout i kode, admonition blocks, betinget tekst, og overføring av kontekstvariabler til prosesseringsmotoren under publisering av dokumentasjonen, f.eks. for å kunne sette versjonen. Selvsagt måtte det også være bra verktøystøtte, god dokumentasjon, utbredd bruk og et aktivt miljø. Verktøyet skulle passe godt inn i vår utviklingsinfrastruktur, slik at det ikke oppsto behov for installasjon av nye verktøy på utviklermaskinene. Konkret betyr dette bl.a. at Maven skulle kunne brukes for å generere dokumentasjonen, uten at det måtte være nødvendig å installere noe i tillegg.
  9. I evalueringsprosessen så jeg litt nærmere på GitHub flavoured Markdown, som jeg syntes var for enkelt og begrenset for våre formål. Jeg tok også en titt på Pandoc. Pandoc kan oversette mellom mange forskjellige formater, og har også en egen variant av Markdown med mer funksjonalitet enn det opprinnelige formatet. Men det ser ikke ut at Pandoc støtter deldokumenter, eller at det finnes en Pandoc maven-plugin. En viktig aktør i dette landskapet er Asciidoctor. Ifølge Dan Allen, Asciidoctor Project Lead, har Asciidoctor utviklet seg til en kritisk komponent for dokumentasjon, spesielt innen open source software. Asciidoctor er moden, forbedres kontinuerlig og brukes av mange. Asciidoctor tilfredstilte våre behov, og vi valgte det som format og verktøy. Asciidoctor er implementert i Ruby og kan derfor kjøres på JVM’en. Det finnes en oppdatert Maven-plugin som fungerer veldig bra, og ordner alt. Asciidoctor kan publisere i HTML, DocBook, PDF, og deck.js med flere.
  10. På venstre siden ser vi et enkelt Asciidoctor dokument med de elementene jeg nevnte tidliger: innholdsfortegnelse, import av et deldokument, admonition block, kildekode med korrekt syntaksmerking og callout.  På høyre siden vises tilsvarende HTML-side.
  11. Vår verktøykjede ser slik ut: dokumentasjonen skrives i Asciidoctor-format, og prosesseres med tilsvarerende Maven-plugin. Mercurial brukes til versjonskontroll. Jenkins som byggeserver utruller kontinuerlig HTML til en Nginx tjener. Som redigeringsverktøy brukes hovedsakelig IntelliJ og Brackets. Begge støtter Asciidoc og tilbyr mulighet for forhåndsvisning.
  12. Vi har sett at systemdokumentasjon kan eller bør inneholde informasjon fra krav til drift. Den skrives av personer som har teknologinære roller, og leses av personer med lignende roller. Asciidoctor er både et format og et verktøy som passer godt inn i utviklerens infrastruktur, og gjør det enklere og mer gledelig å skrive og vedlikeholde systemdokumentasjon. Ikke alle deler av systemdokumentasjonen må skrives i samme format. Vi har blitt lykkeligere forfattere med Asciidoctor.
  13. Takk for oppmerksomheten!