[ANN] Slipshow!

Dear reader,

I am absolutely thrilled to announce the release of slipshow 0.1.1 on this forum! As you have all noticed, that is a huge leap from the previous version, 0.0.34. (What can have motivated this?)

Recall that Slipshow is a tool to prepare presentation support, that is based on scripted scrolling and zooming (instead of slides).

I’ll use this single thread to announce all future versions of slipshow, to avoid polluting the global namespace, as it makes sense to keep this forum centered around OCaml, and this tool has nothing to do with OCaml …

… well, almost nothing to do with OCaml, since in this version the engine has been fully rewritten in OCaml (hence the bold new version) and works much better! Making it a full OCaml project. Thanks, OCaml developers of open source libraries and language!

To upgrade it, you can do:

$ opam update
$ opam upgrade slipshow

What? Some people don’t have it installed already? For those, it will be:

$ opam update
$ opam install slipshow

Now comes the moment you are all waiting for: the list of new features!

TLDR:

  • Engine rewritten in OCaml
    • Fewer bugs when navigating back
    • Stronger foundation (eg, for subslips)
    • Custom scripts requires minor adjustments
    • Breaking change in subslip HTML
  • Drawing now in SVG
    • No more zoom issues
    • Erasing works “per-stroke”
  • Revamped table of content
    • Now based on title structure rather than subslips
  • New --markdown-output flag for converting to GFM
  • Parser bugfixes
  • License change: Now GPLv3 (previously MIT)
  • npm distribution discontinued.
  • Special thanks to NLNet for their sponsorship!

Dear readers,

I am thrilled to announce the 0.1 release of Slipshow, the slip-based presentation tool!

This is a major minor release. While versions 0.0.1 to 0.0.33 have served well to experiment, this release marks a fresh start, aimed at being a solid foundation for a project with a clear direction. A huge thank you to NLNet for sponsoring this milestone!

So, what is new? Quite a lot, the main change being that the engine has been fully rewritten.

The engine

Started as a single file javascript project, the old engine evolved presentation by presentation – leading to numerous bugs, maintenance challenge or extensibility issue. (In other word, I did all I could not to touch it despite all the bugs)

This release introduces a complete rewrite of the engine in OCaml, with new design choices that improve reliability and expandability. Let’s go over the key benefits and breaking changes.

Navigating Forward… and Backward

One of the greatest weakness of the old engine was handling backward navigation. Since it started as a simple “script scheduler”, going back wasn’t straightforward. The workaround involved taking a snapshot of… everything (the DOM, the state, …), to be able to go back in time.

This had many bugs, in animations (such as the “focus” action), and in its iteraction with other features (such as drawing).

So, what is new in this engine? The engine now records an undo function for each step of the presentation. While this may not sound much, it is a ton better in terms of development. It’s a much stronger foundation to build new features from. It’s also much more
efficient for long presentations.

In most cases, your old presentations will work without modification in the new engine. However, there is one case where it needs modification: when you include the execution of a custom script in your presentation. In this case, you need to return the function undo to undo the executed step: see the documentation! (This is not ideal and better solutions are being experimented)

Writing

Previously, live annotations used the excellent atrament library. While great in many cases, its bitmap-based approach caused blurriness when zooming.

This release introduces a custom SVG-based annotation system, which eliminates zoom issues. Another change: erasing now works stroke-by-stroke instead of pixel-by-pixel.

Table of content

The old table of contents was based on the slip structure, which didn’t work well for presentations that primarily used a single slip (as is often the case with compiled presentations).

The new sidebar-style table of contents is now generated from headers, making it more intuitive and aligned with the presentation’s structure—resulting in a much smoother navigation experience!

Breaking change: Subslips

The HTML structure for subslips has evolved, in particuler to avoid having to provide the scale of your subslips.

Support for subslip in the new engine is not mature and will be announced in the next release, but bear in mind that if your presentation relies on them, you might want to wait a bit before migrating to the new engine!

Compiler

While this release focuses on the engine, the compiler has also seen improvements, including bug fixes (particularly in the parser) and a new feature:

--markdown-output for markdown exports

If you want to print your presentation or host it as a static webpage, the default format can be cluttered with annotations. The new --markdown-output flag lets you generate a clean, GitHub Flavored Markdown (GFM) file without annotations.

Other

A small but maybe important note: the license has changed, the project has transitioned from MIT to GPLv3, aligning better with its values.

Conclusion

Looking forward to your bug reports!

31 Likes

Could you link to a demo presentation done with this tool?

1 Like

Sure!

Here is a presentation of the tool itself, in French. The source file for it is here.

Here is a math presentation using more features (made using a previous version of the engine, which had more features and more bugs).

Here is the historical first presentation made in Slipshow (made with the worst version of the engine).

(I include presentations made with old versions of the engine to give an idea of what you can do, as the new engine is very new I don’t have many examples using it, and it has some breaking changes which makes porting old presentations using too many features hard to port!)

4 Likes

Here is a non-dogfooded one.

4 Likes

Wow, this is beautiful and convenient.
Well cooked, chef panglesd.

Well cooked.
Cheers.

2 Likes