/podium

A Markdown-based native presentation tool

Primary LanguageJavaScriptBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

https://beeware.org/project/projects/applications/podium/podium.png

Podium

https://travis-ci.org/beeware/podium.svg?branch=master

A markup-based slide presentation tool.

Why?

Developers go to conferences. And when they do, they need slide decks.

Unfortunately, while presentation tools like Keynote and PowerPoint are great for business presentations, they aren't well suited to the needs of developers. The mainstay of developer presentations -- code samples -- are generally painful to add to a Keynote presentation.

These presentation tools also come from a WYSIWYG (What You See Is What You Get) tradition. This can be powerful, because it makes it easy to put anything you want onto a slide. But it can also be painful, because you end up spending all your time pushing pixels into the right place, instead of focussing on the content of your talk. And if you want to make a style change, you may need to apply that change manually to every slide. The lessons of separating content from markup can't be applied to a WYSIWYG world.

On top of all that, the document formats for Keynote and Powerpoint are binary blobs -- they don't lend themselves to version control, collaborative editing, and so on.

The developer response to this has been to use HTML5. Recent years have seen the development of a number of HTML-based presentation tools, like prezi, deck.js, keydown and showoff. These tools exploit the power of HTML5 to make full screen presentations.

However, by using browser technology as the basis for these tools, they miss one very important feature of WYSIWYG presentation tools: presenter mode.

One of the big features of Keynote and Powerpoint is that they aren't just decks of slides -- they have presenter notes and timing tools, and the display shown to the audience isn't the same as the display shown to the presenter.

Many of these tools also assume that you have a good WiFi connection, and will be able to display your content live off the internet... which if you've ever been to a developer conference, you'll know is a risky proposition.

Podium attempts to bridge the gap between these two poles. It is comprised of:

  • A simple, text-based markup format, focussed on the needs of developer presentations.
  • A graphical presentation tool that has a presenter display independent of the slide display.

Quickstart

Use Briefcase to package this repository as a macOS application:

$ python setup.py macos

This will create a folder macOS with an app Podium.app, which you can install in your Applications folder.

From here, launch Podium and open the examples/example.podium sample deck.

This will pop up 2 GUI windows, both displaying a test pattern. Controls from here are keyboard based:

  • CMD-P - Enter presentation mode; or, if in presentation mode, Pause timer
  • Esc - Exit presentation mode
  • CMD-Tab - Switch displays
  • Right/Left arrows - Next/previous slide
  • Down/Up arrows - Next/previous slide
  • Enter - Next slide
  • Home/End - first/last slide
  • CMD-A - Switch aspect ratio between 16:9 and 4:3
  • CMD-R - Reload slide deck
  • CMD-T - Reset timer

An example slide deck can be found in the examples directory of this repository.

Debugging

If you need to debug the CSS for a slide, you can enable the "inspect element" menu option by running the following in the console:

defaults write org.beeware.podium WebKitDeveloperExtras True

Documentation

Documentation for Podium can be found on Read The Docs.

Community

Podium is part of the BeeWare suite. You can talk to the community through:

We foster a welcoming and respectful community as described in our BeeWare Community Code of Conduct.

Contributing

If you experience problems with Podium, log them on GitHub. If you want to contribute code, please fork the code and submit a pull request.