Why and How to publish in the 21st century?

Author
Affiliation

Miquel Perello Nieto

University of Bristol

Why new ways of publishing?

Lots of specialised tools

  • Authoring file formats: Microsoft Word documents, OpenDocument format (ODF), LaTeX, Markdown, slides, posters, videos, …
  • Authoring tools: Overleaf, Microsoft Office, and other text editors.
  • Storage: Overleaf, Dropbox, Microsoft One Drive, Google Drive, Mega, …
  • Publication systems: Microsoft Word, pdfLaTeX, XeLaTeX, RStudio, …
  • Each with one output format in mind (e.g., device, size, color, …)

Common publication workflow

Workflow to create one type of publication

flowchart LR
  
    I1("Source code") & I3("Analysis") --> M1["Storage 1"]
    M1 --> I3
    I3 --> M2
    I3 --> I2
    I4["Other sources"] --> I2
    I2("Figures") --> M2["Storage 2"]
    M1 -.-> MS["Common storage 1"]
    M2 -.-> MS
    MS --> A1["Authoring tool"]
    A1 --> MS
    MS --> P1["Publication system"]
    P1 --> O1["Output 1"]
    style MS fill:#fca
    style O1 fill:#faa

Workflow to adapt and produce other types of publications

flowchart LR
  
    MS["Common storage 1"] --> M2["Common storage 2"]
    MS --> I2("Figures")
    I2 --> M2
    M2 --> A1["Authoring tool"]
    A1 --> M2
    M2 --> P1["Publication system 2"]
    P1 --> O1["Output 2"]
    style MS fill:#fca
    style O1 fill:#faa

Duplication and scatter of files

%%{ init : { "flowchart" : { "curve" : "stepBefore" }}}%%

flowchart LR
  
    dummy1[ ]:::empty -.-> I1
    dummy1 -.-> I2
    dummy1 -.-> I3
    dummy1 -.-> I4
    I1("Text + Figures + \n Code + ..."):::input --> O1["Published \n Paper \n (PDF)"]
    I2("Text + Figures + \n Code + ..."):::input --> O2["Presentation \n Slides \n (PPTX/PDF)"]
    I3("Text + Figures + \n Code + ..."):::input --> O3["Poster \n (PPTX/PDF)"]
    I4("Text + Figures + \n Code + ..."):::input --> O4["Computational \n Notebook \n (Colab)"]
    style O1 fill:#fca
    style O2 fill:#ffb
    style O3 fill:#f99
    style O4 fill:#bfb
    classDef empty width:0px,height:0px,fill:#000;

What are possible solutions?

A new publication paradigm

Version controlled and in a single location

%%{ init : { "flowchart" : { "curve" : "stepBefore" }}}%%

flowchart LR
    I1("Text + Figures + \n Code + ..."):::input --- dummy2( ):::empty
    dummy2 --> O1["Published \n Paper \n (PDF)"]
    dummy2 --> O2["Presentation \n Slides \n (PPTX/PDF)"]
    dummy2 --> O3["Poster \n (PPTX/PDF)"]
    dummy2 --> O4["Computational \n Notebook \n (Colab)"]
    style O1 fill:#fca
    style O2 fill:#ffb
    style O3 fill:#f99
    style O4 fill:#bfb
    classDef empty width:0px,height:0px,fill:#000;

Existing technologies

  • Authoring tools: Visual Studio + Quarto, Jupyter Lab + Jupyter Book, Posit Workbench, …
  • Standard authoring formats: LaTeX, Markdown, MyST Markdown, reStructuredText, …
  • Storage solutions: GitHub, BitBucket,
  • Publication systems: Jupyter Book, Quarto, Bookdown, D2L book, Sphinx, R Markdown
  • Online collaboration: team collaboration networks, project management tools, online meeting tools,

What next?

We are not there yet

  • Current multipurpose publishing systems are under development
  • Using them may be more difficult than more established methods
  • Lack of stability and missing functionalities
  • Lack of standards

New paradigms

  • Storage in one or multiple locations by types of files
  • A composition toolkit to mix

%%{ init : { "flowchart" : { "curve" : "stepBefore" }}}%%

flowchart LR
    I1("<center>Text</center>"):::input --- dummy1( ):::empty
    I2("Figures"):::input --- dummy1
    I3(Code):::input --- dummy1
    I4(...):::input --- dummy1
    dummy1 --> C:::foo
    C{{"Composition"}} --- dummy2( ):::empty
    dummy2 --> O1["Published \n Paper \n (PDF)"]
    style C fill:#f9f
    dummy2 --> O2["Presentation \n Slides \n (PPTX/PDF)"]
    dummy2 --> O3["Poster \n (PPTX/PDF)"]
    dummy2 --> O4["Computational \n Notebook \n (Colab)"]
    style O1 fill:#fca
    style O2 fill:#ffb
    style O3 fill:#f99
    style O4 fill:#bfb
    classDef empty width:0px,height:0px,fill:#000;

In this workshop

  • 14:00 – 14:30 Introduction
    • MPN Why and How to publish in the 21st Century
    • DDSN Technologies and use cases
  • 14:30 – 15:00 Use cases
    • PF Reveal.js examples
    • DDSN IAI Hub
    • MPN Quarto website with MOOC + video + Shiny
  • 15:00 – 15:30 Break
  • 15:30 – 16:00 Technologies
    • RDN Quarto
    • Grant Obsidian
    • DDSN Jekyll integration with GitHub + Bristol AI
  • 16:00 – 16:30 Design Hackathon
  • 16:30 – 16:40 Closing session