Presenting with Sozi 14

This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

One size does not fit all when it comes to presentation software. Although LibreOffice Impress is probably the most well-known free-software presentation application, there are a number of alternatives, each offering its own distinct experience for building a presentation—and which may be a better fit for the talk or speaker at hand. One of those alternatives, Sozi, recently underwent the transition from an Inkscape extension to a stand-alone application. Previews for the upcoming Sozi 14 release have now been made available for download, as has an online demo.

A different kind of presentation

Sozi takes an entirely different approach to presentation content than the familiar one used by Impress, Powerpoint, and similar slide-deck–style applications. In previous releases, a Sozi presentation was an SVG document: each element in the document had an id attribute; "playing" the presentation was a matter of Sozi re-centering the display from one element in the document to the next. In other words, the entire presentation is a single (perhaps extremely large) image, and each successive frame is merely panning or zooming over to focus on one small piece of the whole.

For the presenter, the process of presenting is the same—left-click or hit the appropriate arrow key to advance—but the audience gets a different experience: zooming out, rotating, then zooming back in to focus on the next slide; it is a bit kaleidoscopic. The concept is not for everyone, to be sure, but it is a unique take on how to arrange a presentation, and in the right hands can be quite fun for the audience as well.

The Sozi 13.11 release from late 2013, though, was the last version of the application to stick to this approach. The newly announced Sozi 14 sticks with the same basic concept, but it completely separates the slide-arrangement and playback functionality from the creation of the SVG document.

In older releases, the user would build the presentation within Inkscape, then construct a series of invisible rectangles to serve as the slide elements: draw a box around the first thing you want to show and give it the id "frame1", then draw the next box and name it "frame2", etc. In the Sozi extension, you would select the frame elements in order, and the extension would generate the JavaScript required to hop between them and save it within the SVG file (e.g., binding mouse clicks and keyboard events to "forward" and "back" functions).

But generation of that JavaScript really had nothing to do with the design and construction of the SVG; the steps were connected only because they both took place in Inkscape. In fact, the user could create the entire SVG in some other SVG editor and only open it in Inkscape to perform the Sozi linking.

Sozi 14 takes that exact approach. It has completely decoupled itself from Inkscape, and now serves solely as a standalone slide-markup tool. It saves its presentations in HTML format—with both the SVG file data and necessary JavaScript incorporated into the file in-line. Any browser that understands SVG and JavaScript should be able to open the file, and there are no external files or folders to worry about misplacing.

In the announcement, lead developer Guillaume Savaton notes that by retooling Sozi as a standalone application, he made the user interface cleaner and could reuse code from the presentation player in the presentation editor—thus providing a more accurate preview experience. It is also far easier to package the standalone tool for Windows and Mac systems. The new builds come in two forms: a desktop client (based on node-webkit) and a hosted web application, currently running as a demo at the Sozi site.

Presenting Sozi 14

With Sozi 14, the user creates an SVG document in some other application (and, naturally, Inkscape is a prime choice for such an editor), then opens it in Sozi. From that point on, developing a presentation involves only zooming in and re-centering Sozi's viewport onto the desired portions of the SVG and clicking the add-a-frame button (marked with the + sign).

The process is reminiscent of editing a video timeline, albeit in much simpler form. The Sozi window contains the viewport displaying the SVG document in the top-left portion of the window. To the right is the Frame pane, which lists the attributes of the current frame. Sozi automatically creates a generic id attribute for each frame à la frame5458 , but the user can change the id to something more memorable. Each frame can also be assigned a separate timeout value, after which the presentation will automatically advance to the next frame, and the speed of the transition between frames can be adjusted.

In a strip along the bottom of the window is the timeline, which shows the full sequence of frames in the presentation. Clicking on a frame's tab jumps to that frame. Perhaps the only tricky aspect to working with Sozi 14 is the fact that it might not be immediately obvious how to compose a frame, since there is not much on the screen that resembles a tool.

In practice, though, what one does is click on a frame (or on the add-a-frame button), then use the mouse in the viewport, panning around and zooming in or out to frame the contents as desired. At the top of the timeline there is an easy-to-overlook radio button that switches the mouse mode between zoom, pan, and rotate functions.

There are a few other tools that provide assistance. For example, the Frame pane has a field labeled "Reference element Id." This shows the id attribute of the largest SVG element currently visible in the viewport. Assuming the "reference element" is the one that you care about, clicking the "Fit to element" button will automatically zoom in and rotate correctly to focus just on that element. It helps to choose meaningful element id s; Inkscape, like Sozi, automatically generates generic id s that are easy to forget.

Another feature that might surprise some new users is the fact that there is an "Aspect ratio" field in the editor, but no mention of screen resolution. This is because Sozi uses SVGs, which are rendered sharply at whatever screen resolution is used on the display. That is an advantage in its own right, but Sozi takes the display independence even further: because Sozi frames are (in essence) targets in the document, any aspect ratio can be supported. If the user sets the aspect-ratio setting to a different value, Sozi simply shows a viewport at the requested dimensions: no editing of the file is required. Nevertheless, an SVG file can also embed raster graphics or audio and video files (assuming the SVG editor used supports that feature); Sozi will show this content, but without the resolution-independence of vector graphics.

Present and future

On the whole, Sozi 14 is remarkably simple to use. The real work, naturally, is in creating the content that goes into the SVG file to begin with. But after that, marking up the document as a presentation with Sozi borders on trivial. The application automatically saves changes as you work. Unlike the last release of Sozi (the output of which might confuse some browsers without support for JavaScript inside SVG), Sozi 14's HTML output can be opened and played in almost any modern browser.

That said, there are still aspects of presentation-building in Sozi that require adjustment on the user's part. For example, it is quite easy to accidentally hit the scroll wheel of the mouse and inadvertently resize the image in whatever frame happens to be selected at the moment. Since Sozi automatically saves changes—and, at least for now, has no undo/redo—such a slip means accidentally messing up the frame. The "Fit to element" button also rotates the canvas to match the orientation of the "reference element," which might not always be the expected behavior. It might have been more helpful to have separate "zoom to fit element" and "rotate to element" options.

Finally, the preview builds demonstrate support for multiple layers, but at present it is not clear how layer functionality is intended to work. Sozi detects layers in the SVG file and creates a separate timeline "track" for each one, but there does not seem to be much per-layer functionality. Each layer's visibility can be toggled on or off independently, but only for the presentation as a whole and not (for example) as an action to show or hide a layer for any particular frame.

Some of the kinks in the Sozi 14 preview will, no doubt, get ironed out before the final release (which Savaton hopes to make before the end of the year). Other quirks will probably seem less quirky once the documentation catches up to the software itself. In all likelihood, though, some users will not find Sozi to be their cup of tea at all—presentation styles are as individual as presenters, and what format seems the most natural often relates directly to the subject matter at hand.

But hopefully the Inkscape-free reincarnation of Sozi will entice speakers to take a fresh look even if they stayed away from past releases. No Inkscape experience is required in Sozi 14; an SVG document can be produced (or converted) through other means. But the advantages of Sozi remain: presentations can be viewed in almost any browser, file sizes are small (and compress well), and the output is resolution-independent SVG.

