Marco Pessotto (melmothX)

Publishing with Amusewiki

Oslo, Nordic Perl Workshop 2018

September 6, 2018

About me: Marco Pessotto

PAUSE id

MELMOTHX

IRC

melmothX on Libera Chat and irc.perl.org

E-mail

melmothx@gmail.com

Homepage

https://amusewiki.org

IRC channel

irc://irc.libera.chat/#amusewiki

GitHub

https://github.com/melmothx

Background

Humanities (history and translations)

Main features

Flat file storage, under Git

Each text is stored in a single, self-contained, text file

Rich range of output formats (PDF, Epub, HTML)

Don't lock the users in: high decoupling (single text / archive / application)

A comprehensive test suite

Packaged for Debian: http://packages.amusewiki.org

Overview

Sample page

Sample imposed PDF (more schemas available)

Sample EPUB (on Firefox, Epubreader plugin)

Sample Slides

Amusewiki can be used to produce slides as well

You are looking at them :-)

Upload a text (with an HTML importer)

Editing

Ready to publish?

Checking

Publish (tailing a background daemon)

Done

Source sample

Borrowed from Emacs Muse https://www.gnu.org/software/emacs-muse/index.html

Supported (read/write) by Pandoc https://pandoc.org/

#title My title
#author John Doe
#lang en

** Chapter one

And **here** the *text* starts

 1. Foo
 2. Bar

Modules and offline tools

Text::Amuse

The parser

Text::Amuse::Preprocessor

Typographical filters (muse-preprocessor.pl) and HTML importer (html-to-muse.pl)

Text::Amuse::Compiler

The compiler (muse-compile.pl)

PDF::Imposition

The PDF imposer (pdf-imposer.pl)

PDF::Cropmarks

Add cropmarks to the PDF (pdf-cropmarks.pl)

Web Frontend

Framework

Catalyst

Layout

Bootstrap

Multisite

on one instance you can run as many sites you want

Database

DBIx::Class (SQLite, MySQL, PostgreSQL) and DBIx::Class::DeploymentHandler for automatic upgrades

Templating

Template Toolkit

Localization

Danish, German, English, Spanish, Finnish, French, Serbo-Croatian, Italian, Macedonian, Dutch, Russian, Albanian, Swedish

Powerful and fast faceted search, powered by Xapian

Static but functional mirror

wget -q -O - https://amusewiki.org/mirror.txt | \
     wget -x -N -q -i -

Bookbuilder

Tutorial available at https://amusewiki.org/library/bookbuilder-tutorial

Imposer

Fine tuning for formats

Any time left? Debian packages

Instead of running the app from the git tree on a dedicated home, with a local::lib tree or with a perl installed in the home, now you can visit http://packages.amusewiki.org/ and follow the instructions there (import the key, add the repository, and install the package).

Minimum requirement: Debian Jessie and Ubuntu 16.04 LTS.

https://github.com/melmothx/amusewiki-debian-packages

Debian packages cons

More burden on the developer

Trivial changes require a package rebuild

Needs to ship about 25 new packages (fonts and perl modules)

Can't use fresh code from the module used without being too invasive.

Debian people usually don't like private repositories

Debian packages pros

Installation is straightforward

Maintenance for the administrator is integrated in the regular apt-get routine

Much smaller installation footprint (mostly because the texlive installation is optimized and shared)

Improved security

code is installed and owned by root, not by the user running the application

debian is taking care of the security updates of the dependencies (not only the perl dependencies, but also the libraries used by LaTeX, cgit and other utilities)

0 downtime upgrades out of the box

Predictability of locations and module versions (so gets more live testing)

Questions?

Thanks!