Development/SlideHack

    From The Document Foundation Wiki

    SlideHack

    Brainstorming a way for people to manage, version and share multiple presentations across their sales / enterprise.

    Requirements

    Quick mashup of deck from existing content

    Corporate presentation power user needs to come up with slide deck for event XYZ quickly, wants to reuse as much as possible from other people's slides.

    Keep slide decks up-to-date automagically

    Corporate presentation power user has re-used other people's slides, and always wants the latest, published version from that for his deck. Corporate presentation power user always wants the latest corporate branding on all of his decks (further complicated by our multiple brands, and shared roles).

    Breakdown into features

    • A. ability to tag and up-load groups of slides on a similar topic.
      • ability to edit / amend deck and slide meta-data after up-loading
      • pre-fill / mine those details out of the slide text / names etc.
    • B. ability to search, discover, select alternatives:
              "the short 1 slide FooProduct pitch, or the 3 slide one"
    
    • C. ability to merge such slides into a local deck for presentation.
    • D. ability to push selected changes back to the server / distribute to others (with versioning). ie. slides remember where they came from.
    • E. ability to check for updates, incorporate them and/or choose a different alternative: "make the BaaProduct section longer"
      • Choose between "always update" and "manual update" for slide groups
    • F. random to-web-publishing, access controls, multi-user management, centralised corporate-branding updates, etc.
      • Ability to choose different branding: SUSE vs. NetIQ eg.

    Implementation thoughts

    • needs a server side (or we go for some git / distributed version control and other cleverness) - potentially this could look like a simple file-system perhaps (?)
    • rendering tons of slide thumbnails fast is not Impress' strong point (sadly); so potentially doing that server-side and browsing images in a 'Slide Sorter' type tab would work better.
    • Storing chunks of .fodp on the server for each slide-group, and versioning them seems to make sense; with a thumbnail cache.
    • Perhaps a new task-pane on the right with notifications of changes in the elements that are incorporated so we can merge and update to them (or not).
    • Needs some work to the left-hand 'Slides' view to add some grouping, and misc. actions on groups if/when they're present.

    code

    Some initial hackery in feature/slidehack.

    some restful api for the server

    resource hierarchy

    
    api/topics/
              <topic>/ (plus ?search="" for keywords inside topic)
    
    api/users/
              <user>/  (plus ?search="" for keywords inside topic)
    
                       <deckname>/ (plus ?search="" for keywords inside topic)
    
                                  <revision>/ (plus ?search="" for keywords inside topic)
                                  <revision>/checkinDate
                                  <revision>/checkinComment
                                  <revision>/deck.fodp
    
                                             <slide_num>/thumbnail.png
                                             <slide_num>/slide.fodp
                                             <slide_num>/keywords.json