Open main menu

CDOT Wiki β

Changes

DPS909 and OSD600 Fall 2012 Weekly Schedule and Notes

6,044 bytes added, 12:33, 5 November 2012
Weeks 8-10, Common Parser, Common Tests
*** git push
** Github, Pull Requests
 
* WebVTT
** [http://dev.w3.org/html5/webvtt/ WebVTT Spec]
** Intros to Track element and WebVTT:
*** http://www.youtube.com/watch?v=RoYvr-KXvLs
*** http://blog.gingertech.net/2011/03/29/webvtt-explained/
*** http://html5doctor.com/video-subtitling-and-webvtt/
*** http://dev.opera.com/articles/view/an-introduction-to-webvtt-and-track/
*** http://www.delphiki.com/webvtt/
** [https://twitter.com/webvtt WebVTT on Twitter]
** [http://quuz.org/webvtt/ Online WebVTT Validator]
** [https://github.com/rillian/webvtt Initial work on WebVTT Parser]
*** [https://github.com/rillian/webvtt/issues Initial bugs filed on Parser]
** [https://bugzilla.mozilla.org/show_bug.cgi?id=629350 Initial work on track Element]
 
* 0.1 Release
** As a group we need to write all the tests for the parser. To do this well, we'll have to divide and conquer, manage who is doing what, and not duplicate effort. We'll co-ordinate it all here:
** [[0.1 Release 2012 WebVTT Test Suite]]
** Conformance Tests: https://github.com/rillian/webvtt/issues/7
** Fuzz Tests: https://github.com/rillian/webvtt/issues/8
** We need a comprehensive set of good and bad test files to match the spec
** We need a test harness runnable from the build system (i.e., `make check`)
* '''Readings/Resources'''
** Learn git!: '''Watch''' video tutorials and/or '''Read''' chapters 1 and 2 of [http://progit.org/book/ Pro Git], etc.
** '''Install''' and '''Setup''' git locally
** '''Clone''' the WebVTT Parser github repo for your project(s)** Learn about WebVTT!: '''Watch''' video and '''Read''' introductory articles** '''Blog''' about your project:WebVTT and track*** What is it?
*** What are you doing for 0.1?
*** What does it involve in the way of technologies?
*** What do you need to learn in order to do it, how will you learn it?
*** What fears or concerns do you have?
** Get going on your 0.1 Release, see [[0.1 Release 2012 WebVTT Test Suite]]
** Setup [https://help.github.com/articles/generating-ssh-keys ssh keys on matrix] for your github account
 
== Weeks 5-7, Toward a Parser ==
 
* We have ~300 tests, now to put them to use!
* What we have in the way of existing implementations:
** C implementation (Ralph's WIP), see https://github.com/rillian/webvtt/blob/master/webvtt.c
** C++ (WebKit) implementation, see WebVTT*.{cpp|h} in https://github.com/WebKit/webkit/tree/master/Source/WebCore/html/track
** JS (validator) implementation, see https://github.com/humphd/node-webvtt/blob/master/lib/parser.js
 
* What we need:
** Complete C implementation, done to spec. We'll have a few teams work on this in parallel, and then take the best of what we've learned from each to use in our final implementation:
*** Convert parsing rules into code, see https://github.com/rillian/webvtt/issues/5
*** Need to break this up into a few major sections so people can write different parts (e.g., timestamps, cue options, text, header, etc.)
*** Build HTML from cue text, see https://github.com/rillian/webvtt/issues/6
*** Deal with UTF-8, see https://github.com/rillian/webvtt/issues/2
** Build system, test harness, Travis CI to drive our work
** Fuzz Testing, see https://github.com/rillian/webvtt/issues/8 (example of what fuzzing can uncover: https://bugzilla.mozilla.org/show_bug.cgi?id=803924#c7)
** Test the WebKit parser using our test files, file/fix bugs, see https://github.com/WebKit/webkit/tree/master/LayoutTests/media/track and https://github.com/WebKit/webkit/tree/master/LayoutTests/media/track/captions-webvtt for WebKit vtt tests
** Opera has just donated tests to the working group, too: http://w3c-test.org/html/tests/submission/Opera/media/track/webvtt/
** Bug fixes for JS implementation, based on our tests
** More tests, fixes for existing tests, discussions with W3C to hand our tests over to spec working group
** Rework and Move http://kyle.barnhart.ca/2012/10/web-video-text-tracks-webvtt.html to proper home: MDN, WebPlatform docs, etc.
 
* How we'll work:
** Everyone needs to own something. You can help each other as much as you need/want, but you must own something in the process above. Multiple parallel implementations of the C parser will be done in a sprint, and we'll [http://c2.com/cgi/wiki?PlanToThrowOneAway plan to throw one away]. See also Dave Mandelin's great post, https://blog.mozilla.org/dmandelin/2012/10/16/did-you-write-that-code-three-times/ (Dave is the owner of Mozilla's JS engine, SpiderMonkey).
** File bugs on github where appropriate, use the wiki for things that don't belong there.
** Be present in class, on irc, in bugs, in your blogging
** Help each other.
** Ask lots of questions, don't get stuck and stop. Get stuck and make some noise, keep at it, don't give up.
 
* '''TODO'''
** 0.2 is due Monday Oct 29th (note: I've moved this from Oct 18th).
** By 0.2 we need to have a working parser and be on to bug fixing
** Blog weekly about what you're working on, how it's going, what you're learning
** Be active on irc
** In class we'll be discussing code, asking people to show their progress, give demos, help one another, do reviews
** '''You need to come to class so we can co-ordinate'''
 
 
== Weeks 8-10, Common Parser, Common Tests ==
 
* We have a solid base for a parser now (multiple in fact), and can push forward
* 0.3 due Nov 15, 0.4 due Dec 7-14th
* Everyone needs to own something in 0.3--your 0.3 needs to be a code deliverable, no "learning" only outcomes
* Things we need done:
** Many things still to do on the parser: https://github.com/humphd/webvtt/tree/seneca#todo
** Autotools (autoconf, automake, libtool) style build system, book is [http://www.sourceware.org/autobook/ here] and guide is [http://www.freesoftwaremagazine.com/books/autotools_a_guide_to_autoconf_automake_libtool here].
** All current validation tests need to get converted to Unit Tests. What about WebKit/Opera tests, can we "steal" those too?
** Test Harness
*** JS bindings for C implementation: [https://github.com/rbranson/node-ffi node-ffi], tutorial is [https://github.com/rbranson/node-ffi/wiki/Node-FFI-Tutorial here]
*** Unit Test Framework: [https://github.com/caolan/nodeunit nodeunit] for unit testing, tutorial is [http://caolanmcmahon.com/posts/unit_testing_in_node_js/ here]
*** build system integration for `make check`
*** TravisCI integration
 
* No class Nov 8th, 12th. Use these as work periods for your 0.3 release, get on irc, help each other.
* If you're feeling lost or confused, make sure you do something about it. Don't wait, be proactive. Ask for help, try things, experiment.