VideoWiki – A Open-Book Design-To-Delivery Silverlight 3 Project

VideoWiki Project and Meta-Project – Launch

I am pleased to announce a new long term project that I am launching here on Silverlight.net, principally on my blog, but that will reach into my videos and beyond.

This note is the entry point to the project; whenever you are joining us, this is the place to start.

In this note,  I will provide the initial goals and the general approach.

A Project and a Meta-Project

The Project is to build a meaningful, useful, exciting application in Silverlight 3, from design to delivery, demonstrating a wide range of Silverlight techniques, best practices, and more.

The Meta-project is to demonstrate and document this entire process as openly as possible;  maintaining a running commentary on the project and documenting the process and the lessons learned, including design, meetings, new techniques,  mistakes, victories, changes in direction, improvements, distractions, and all the other issues that arise.

Keeping Your Eyes On The Prize

The Motto of this project, which will appear frequently is this:

The VideoWiki Project:  Our Goal Is not to create a great product, our goal is to create great programmers.

This key distinction will drive some potentially controversial decisions along the way (e.g., to stub out some areas that might be important in a final product but are not immediately relevant to learning something new).

It happens that I believe what I want to build is exciting and interesting enough that it may make sense to bring all the way to completion, in this forum or another; but that is not the proximate goal this effort.  That said, the closer we stay to a spec-driven real-world scenario, the more valuable the experience will be.

The VideoWiki Project

We will be building what we believe to be the world’s first VideoWiki.  A VideoWiki allows you to associate keywords with every moment of a video, and links with every keyword. More, a VideoWiki allows you to have multiple sets of such associations, built by different sets of people and targeted at different audiences.

VideoWiki

We start with Hyper-video: Imagine that you are watching one of our videos and as you watch, a list of all the topics being mentioned is scrolling by in an adjoining window. If you click on a topic ,the video pauses while a list of links appears in a new window. Click on a link and you are taken to related videos or blog entries or tutorials for additional information.  

Extending Hyper-Video to the VideoWiki

The markers will be added at run time. The links will be loosely coupled to the markers. This flexibility means that a given video can have more than one set of markers, and a given set of markers can have more than one set of links.  For now, I’ve coined the word Wick for the combination of a set of markers with a set of links, and the key difference between hyper-video and a videoWiki is that anyone can create a Wick for any Video. Over time, Wicks might be differentiated in any number of ways:

  • Targeted at skill level
  • Targeted at domain (animation for game programmers vs. animation for business programmers)
  • Good Wick creation is a skill and an art, some Wick creators might have a following

Successive Approximation

I will approach the creation of the VideoWiki project from the “get it working and keep it working” school of programming,  with an eye on finding those aspects of the project that are most likely to bring out interesting aspects of RIA in general, and Silverlight 3 in particular.

In the short term at least, some areas will be fully developed, others will be stubbed out and only returned to if the project’s momentum carries us there.  Similarly, depending on the availability of people with certain skills (most especially the availability of folks from the Expression group) we will explore various areas as opportunities arise (I have a couple guest collaborators lined up who will add great value as we go).

High Priority Areas.

Among the skills and techniques that I hope to demonstrate in the first few months are:

  • Silverlight 3 Layout controls
  • Media Player, Expression Encoder, Markers, Injection
  • Rich controls and new  Silverlight Toolkit controls
  • Animation (both storyboard and procedural) and the Silverlight Layout System
  • Out of Browser Experience
  • Data Validation
  • Templating, and the VSM
  • Custom controls, Dependency properties and the States and Parts model
  • Effects, Pixel Shading, 3-D, 3-D Animation, PlaneProjections
  • Save file and Isolated Storage
  • Messaging
  • Various new Data techniques including aspects of the Entity Framework and Data Services

A Special Role for How-Do-I Videos

A key feature on our site is the rapidly growing set of How Do I videos that typically run about 20 minutes and cover a specific topic in either a single video or a short set of 2-3 videos. I will incorporate videos into this project, but in a way that has not been attempted before: creating videos that work both as stand-alone single-topic videos and as illustrations for the project. 

Done properly, readers who are following the project should find the videos to be an integral part of the documentation, and users who are not following the project should find the videos stand on their own with no need to be aware of any aspect of the project at all. That is the theory, but as my old boss, Pat Johnson used to say: “In theory, theory and practice are the same, but in practice they never are.”

Following (and ignoring)  the Project in my blog

The dual nature of the videos will be brought into my blog so that those who are interested can follow along easily and those who are not interested in the project can find the information they want without feeling that the project has “taken over.”

I’ll do this not by segregating the project but by by adding two links in the sidebar: VideoWiki Start (which will bring you to this entry ) and Videowicki Latest which will bring you to the latest entry in the project

and by leveraging two innovations; one already in place, and one new.  

Each entry will have Next and Previous links, so that those who want to follow the project can thread their way through to the related messages easily.

 

 

Dual Purpose Mini-Tutorials

Much as the videos will be called upon to serve both those following the project and those who are not, so will the project’s mini-tutorials. To accomplish this, I’ll divide each of these into three easily distinguished parts:

Part I – Project Motivation– What we’re up to, what our goal is, how what we’re about to do fits into the project

Part II Tutorial – A stand alone mini-tutorial on a useful Silverlight skill that one can read without following the project (an example of what I mean by a mini-tutorial can be found here and here, though these were not part of the project).

Part III Project Integration – fitting what was shown in the tutorial  into the project

(Not every entry will be this rigid, but you can see that my goal is that, as with the videos, the blog entries can stand on their own for those who are not following the project.)

Frequency

While I don’t want to lock myself into a specific schedule,  if this project is going to maintain its momentum I would expect that Project-related entries will be fairly frequent. That said, there are many other topics to blog about and flexibility will be essential.

Participating

I can imagine some developers wanting to participate in this in various ways.  Let me start by saying that I’m eager for feedback, suggestions and constructive criticism at all times and will read these promptly and respond as diligently as I can.

That said, just reviewing code suggestions and submissions can quickly become a full time job, and I don’t envision this as an open-source project (I simply don’t have the bandwidth to manage that).  As the project evolves, I can imagine that some folks might want to take on implementing some part of it, and I look forward to figuring out how to make that work.

Next Steps

Rather than risk being caught in design paralysis, look for an entry very soon that implements one or more small parts of this project. I’m a big believer in overcoming the high resistance to new projects by building something. I understand the value of design, and the risk of coding yourself into a corner, but I also know the risks of too much hand-wringing, and, especially in this case, I will almost certainly err o the side of “build it to throw it away” rather than “measure twice, cut once.”

On a personal note, this is a project I’ve been thinking about for a very long time; it is the first major addition to my efforts as Silverlight Geek in a while and I’m quite excited about it. But it is an experiment: if it meets the needs of the community, then we’ll build on it; if not, then we’ll kill it and try something else. For now, I look forward to the opportunity this affords to tackle larger and more complex problems within a more realistic context.

                                                   Next: Step 0


This work is licensed under a Creative Commons Attribution By license.

About Jesse Liberty

Jesse Liberty has three decades of experience writing and delivering software projects and is the author of 2 dozen books and a couple dozen online courses. His latest book, Building APIs with .NET will be released early in 2025. Liberty is a Senior SW Engineer for CNH and he was a Senior Technical Evangelist for Microsoft, a Distinguished Software Engineer for AT&T, a VP for Information Services for Citibank and a Software Architect for PBS. He is a Microsoft MVP.
This entry was posted in z Silverlight Archives. Bookmark the permalink.