For technical people, collaborating is a solved problem: we use modern distributed version control systems to capture and share changes; the basis of that is that the code we're working on is textual.
But when tasked with writing a presentation, we've all had to deal with Microsoft PowerPoint or the OpenOffice / LibreOffice equivalent, Impress. It's not very much fun. You're need to come to grips with a massive kludgy program to author the slides. You're somewhat forced to use their drawing tools and if you do use external graphics you can't edit them once imported. And most of all, the presentation file is a single opaque binary blob on disk [no matter that Open Document Format is XML; the XML is a) really ugly and b) compressed].
There's good news and bad news here. On the one hand we almost always want to
publish our slides so that people can look at the presentation later; trying to
.odp to HTML is messy. So
using a web-based presentation tool is a natural fit for that. The problem is,
of course we're back to fighting the browser wars; while I can be sure the
presentation works for me I have no idea whether or not it'll look right
or even load for you. That is of course the problem that exporting your
slide deck to a PDF solves, something that's a lot harder to do in a web
On the balance, though, HTML is the lingua franca of the information age, and being able to use CSS for styling and positing is at least no worse than having to fight the style mechanism in Office. And to the good, we're authoring in a textual environment and we can individually version files and graphical assets making for a much better writing experience.
Many many choices
Having taken the plunge to write a presentation in HTML, you need to select a presentation engine to take care of turning your code into a presentation. Forget standards; everyone has re-invented the wheel and made choices according to their own aesthetic. There are some great tools out there; the original W3C Slidy was widely used. Reveal, Deck, and the most excellent Shower are modern, sexy choices. And there's always the slightly insane Sozi which takes a single SVG and zooms and pans it around the screen.
All great fun, but they're all a bit too focused on transitions and effects and can be a little cumbersome to actually write your presentation in; speaking for myself, I prefer to concentrate on the content I'm delivering and ensuring the slides support and illustrate what I'm trying to say; fighting forward and back through animations and incrementally revealing slides isn't all that fun to watch and can be a serious distraction for the presenter.
The experience writing the presentation is also tremendously important,
and that also was a bit lacking in the above mentioned tools. The frustration
of having to work in a single huge
.html document in particular
was a significant motivation. And that has led me to Projection
Text based file format (that's a given working in HTML).
Each slide in its own
.htmlfragment, rather than the entire presentation in one monster file.
Sensible defaults. No transistion animations and minimal bling (you can always add some, but I find it detracts from the person speaking. Slides are there as a visual aide; you're not making a movie).
Works on mobile devices (a bit optimistic given the state of mobile browsers, but we can try).
Presentation engine and presentation theme separate. You shouldn't have to read a single line of the engine code if you're not interested.
Stable URLs so people can link to an individual slide
An overview mode, whereby you can see a set of thumbnails of the slides (the office suites would have this as a "slide sorter", but we aren't even close to implementing drag and drop here. It's just a list).
The ability to embed a single slide on another page, for example in order to show the title slide from the deck (I used to do that by taking a screenshot. What a pain).
Projection was heavily inspired by Vadim Makeev's Shower. Much of the voodoo involved in scaling and handling key events is directly adapted from there.