ScreencastsInUbuntuSpec

Revision 6 as of 2007-11-01 14:36:44

Clear message

Summary

This spec describes Screencasts In Ubuntu whose aim is to develop an infrastructure to allow tutorial videos (screencasts) to be easily accessed from the Ubuntu desktop, and directly from within applications.

Rationale

The goal here is to make tuition video content directly available in Ubuntu. This content would be produced by the Ubuntu Screencasts team and it would be made available inside applications and the wider desktop. This could be available by clicking Help->Tutorial Videos and then browsing a range of videos that help the user with various aspects of using that application. We would also have a general purpose set of videos for using the Ubuntu desktop and other aspects of system. This way we could have application specific video tutorials and general system videos.

I believe that this needs to feel as embedded as possible inside Ubuntu - in other words, if you click the Help->Tutorial Videos link and it just links to a wiki page, that would be the wrong approach. I feel we need to include a small PyGTK application that would browse available videos and stream the video content from the server and play it back. It would also be useful if we stored/cached these screencasts in a folder on the disk so they can be retrieved at a later date without a network connection. This would provide the Ubuntu desktop with video on demand teaching various aspects of the system.

Use Cases

  • John buys a new Ubuntu system from Dell and wants to get started. When he logs in, a little notification bubble pops up telling him tutorial videos are available by clicking System->Tutorial Videos. He clicks the menu and a little program appears with a range of general purpose tuition videos.

  • Paul wants to learn how to use OpenOffice.org Writer - he clicks Help->Tuition Videos and the window appears with a range of videos for different tasks in that application.

  • Daniel is keen to learn how to contribute to Ubuntu. He clicks System->Contribute->Tuition Videos. Here the window appears and has a number of videos for packaging, bug triage, translations etc are available. He can now get started learning how to contribute easily.

  • Sarah is installing Ubuntu. When she boots from the CD and the desktop starts, a small window appears offering her a video tutorial of how to install Ubuntu.

Scope

Due to the nature of the spec, the scope reaches into a number of distinct areas:-

  • Client
    • Design and development of a client side search and playback tool
  • Application integration
    • The 'Help' menu in many popular applications should be modified to contain a contextual link to the client player for direct access to screencasts
  • Server side hosting and management
    • Deployment of videos to server infrastructure
    • Streaming technologies

Design

Client

The client application would essentially have two core views:

  • Browse - browse the videos available for that specific application / area / contribution type. This could also include a search feature.
  • Playback - viewing the video with typical transport controls.

This application should be written in PyGTK and use GStreamer, all of which are shipped by default in Ubuntu. Writing this kind of application is trivial, it would just need to talk to a back-end service. In terms of codecs we would need the player to stream the codec, and I feel that Ogg Theora could be a suitable codec and one that is built right into Ubuntu. We would need to determine bandwidth issues for the choice of codec, not only for the client to stream the data effectively, but also the cost of bandwidth to stream these videos to multiple clients from an IS perspective.

The client should download meta data from the server periodically (configurable) or when the user requests a refresh.

Browsing should allow the user to navigate through the library of screencasts and search/filter using terms stored in the meta data.

Possible search scenarios:-

  • Most recently added
  • Most popular
  • All pertaining to application 'foo'
  • All that I have not watched yet
  • All that I have already watched

Playback

A simple interface for playback should be used. Something similar to that used by other media players (such as Totem) [should we indeed _use_ Totem?]

Application Integration

Individual applications should have their "help centre" (most likely a menu item) modified to provide a link to start the screencast playback client. The application should pass to the client it's own name and version to allow the client to pre-filter the list of available screencasts and thus make it context sensitive.

Server hosting

We would need a means to store screencasts somewhere so that the client can request them. Launchpad seems a sensible place here, but any structured filesystem would also be suitable. This is something we would need to discuss in more detail and an area in which timescales would need to be discussed - Launchpad may have a longer lead time for this kind of functionality.

This would also require an investment from IS regarding serving and bandwidth. We would need to determine bandwidth requirements and affordability.

The server should host:-

  • Screencasts in Ogg / Theora / Vorbis format for streaming over http (or perhaps bittorrent?)
  • Screencast meta-data
    • Release of Ubuntu that each screencast pertains to
    • Application(s) and versions of, that each screencast pertains to.
    • Size, date created, popularity, duration, and availability of audio tracks and subtitles

Implementation

Unresolved issues

  • localisation
    • subtitles?
    • alternate audio streams
    • language on the desktop when the recording is made.
    • Full localisation is linear in the number of languages both in effort and diskspace.

Factors in size of vidoes

  • resolution
    • currently 1024x768 -> 1280x720

    • make them the minimum size useful for driving the point down
  • duration
    • currently 5 to 35 minutes
    • codec/bitrate video/audio
      • Flash is a possibility, but is a non-free format.

BoF agenda and discussion

Is there a screencast that shows me how to...?

Try and merge all help sources so that you don't have to know where to look up-front.

Other issues

  • There are possible future formats with video in HTML (possibly in Firefox 4).
  • Launchpad integration for videos, Help -> Video taking users to a launchpad video page for that application

  • Novell has its own mechanism for SuSe tutorial videos

The tools ========= * recording:

  • we want only free tools
  • xvidcap:
    • not in universe, because of legal problems with the parts we don't use (ffmpeg,...)
    • could motu package a clean version?

* all current apps have limitations * editing:

  • avidemux: could motu package this with added ogg theora/vorbis support?

* documented in the wiki * possibility to use xnest and simplify

How to make it easier to contribute:

Comments

[https://wiki.ubuntu.com/Daengbo Daengbo]: I think this would be most easily accomplished by having RSS feeds for each release and category. The video help system would then just be a simple RSS parser which listed, for example, the 8.04 videos tagged with Rhythmbox. If there is a specific order to the videos (basic to advanced), that could easily be set server-side. I guess mousing over the name of the video would bring up a short description, and clicking on it would just open a link to the video with Totem (or preferred player). This is a great idea!! My only complaint is that the screencast team now mispronounces Ubuntu, so the screencasts will need to be a little more professional. Bandwidth could be saved by integrating bittorrent into the download client, but I think that's too much for a Hardy release.

[https://wiki.ubuntu.com/Daengbo Daengbo]: One more thought about bandwidth. The videos could be packaged as part of the documentation, installed upon the first request to view the video. This would solve the problem of bandwidth, since the packages are already mirrored.


CategorySpec