EasyPlayer is born - the plan
It seems so easy before any code is written. The first tricky task is to name the project. As the aim is to be a small, simple little media player, I go for a 'EasyPlayer'. I was trying to get Silverlight in there somewhere, but, it's not really that important - this is really just a big sample project anyway.
Layout
My initial thoughts for the application is that there will be a list of apps/widgets/channels which provide the main blocks of functionality. For example, there'll be a widget which will allow one to simply download an mp3 file, one to subscribe to a feed (and all the associated checking and downloading associated with this), etc… The layout will likely just be the widgets listed down the left, and then clicking the widget will populate the widget's control in the main body of the application.
The SuperBar
At the top I was thinking of some kind of 'super bar': similar to the address bars in recent browsers where they show things from your history, favourites, a configured search engine, as well as actually entering a url. In EasyPlayer, the bar could enable searching of all the media items (extracting the meta data for example - perhaps in the case of RSS feeds, there is also some additional meta data that could be attached to a media item).
Also, each widget could be polled to see if it can handle a particular string entered into the bar. For example, if a URL of an mp3 file was entered, the mp3 widget would load and start downloading the file.
In summary, I'm hoping I can create a small 'core' and then allow each widget to extend and enhance the functionality. I'm not yet sure if I will go down the MEF route to support this kind of extensibility. For a straight-forward IOC tool, unfortunately the one I've used for sometime, StructureMap, doesn't appear to have a version for Silverlight, so I'll look at an alternative, possibly AutoFac.
Keeping on track
Even more interesting may be the ability to dynamically add and remove widgets in a plugin model style. But I fear I may be getting carried away all ready and I've not even written any code yet!
Next time I'll actually start writing some XAML and getting the rough structure in place.
