One of the great pleasures, and total terrors of documenting this open-source application is that occasionally I have to offer up some half-baked ideas that risk displaying how little I know about a particular topic, but which are necessary to generate discussion. Caveat: this is such an entry. I could have put this into the project documentation but I saw an opportunity to widen the audience on a topic that is important to Silverlight Programmers, even if not part of Silverlight itself.
We want the modules in the Silverlight HVP to be as flexibile as possible. Towards that end we’ve adopted two strategies:
- Using the Managed Extensibility Framework (MEF) to make every module composable and extensible.
- Using XML files to provide Just In Time configuration for each module.
It will greatly simplify everyone’s work if we have agreed upon schemas, at least for the configuration files we know about:
- slhvpInit.xml – initialize the application
- slhvpTOC.xml – create a table of contents for a video
- slhvpLinks.xml – establish which links will appear while a video runs and what to do when the user clicks on each
As a necessary first step, I’ve sketched out examples of slhvpTOC.xml and slhvpLinks.xml – these are not intended to be complete, but to generate discussion. They are posted here as a way to invite more folks into that discussion.
slhvpTOC.xml (draft example)
The file consists of a header (lines 2-4) and two major sections – the meta-data (lines 5-19) and the listing of the (abridged) Table of Contents entries (lines 22 – 48). Notice that the final TOC entry (lines 38-47) is visible only if the condition “Advanced” is set to true, which it is in the Conditions section int eh meta-data (lines 15-18.
You can see that this format is quite similar to the TOC format, and one open question is whether we need an inclusive schema.
In this file, each Link has a type, where some of the possible values are
- HyperLink (link to a URL)
- Animation (link to a frame that supports animation
- Text (link to a frame that displays non-html text)
Purpose of this posting
To reiterate, briefly, I have two goals with this posting:
- Generate discussion about what needs to be in the configuration files and whether this is a reasonable starting point and
- Follow through on the implications of my thinking about markers, links, etc.
Note that this topic is also under discussion here which is a great place to continue the discussion.