Silverlight is een relatief jong platform voor het ontwikkelen van zogenaamde Rich Internet Applicaties op basis van .NET. De komst van een nieuw applicatieplatform is veelal het begin van de opkomst van Open Source projecten en Silverlight is hier geen uitzondering op. Er zijn inmiddels een aantal waardevolle Open Source projecten voor Silverlight beschikbaar. In dit artikel wordt een overzicht geschetst van deze projecten en worden er suggesties gedaan voor het zelf opzetten en beheren van een Open Source project.
Op codeplex.com, een Open Source Project community, zijn inmiddels een kleine 600(!) Open Source projecten te vinden die gerelateerd zijn aan Silverlight. Dit artikel biedt bij lange na geen volledig overzicht, maar geeft een korte beschrijving van een tiental populaire Open Source projecten. De geselecteerde projecten zijn opgedeeld in de categorieën Controls, Design Patterns, Graphics Engines en Runtime extensies.
Op codeplex.com zijn inmiddels een kleine 600(!) Open Source projecten te vinden die gerelateerd zijn aan Silverlight
Controls
De Silverlight runtime bevat een verzameling controls als een button, combo, list, tab, enz. Naast deze basisverzameling zijn er in verschillende Open Source projecten andere controls beschikbaar, variërend in functionaliteit van eenvoudig tot zeer complex.
Deep Earth
http://deepearth.codeplex.com
Wanneer je een interactieve kaart van de wereld op wilt nemen in je applicatie, is het zeker de moeite waard om te kijken naar Deep Earth. Dit project maakt gebruikt van Deep Zoom en Virtual Earth om een map control op te bouwen, vergelijkbaar met Google Maps. De control is volledig aan te passen, en biedt mogelijkheden voor het toevoegen van eigen navigatie controls en layers waarop de ontwikkelaar zelf visuele elementen kan tekenen.

Fig. 1: DeepEarth control
Microsoft Silverlight Toolkit
http://silverlight.codeplex.com
De Microsoft Silverlight Toolkit is zonder twijfel het meest bekende Silverlight Open Source project. Het project wordt beheerd door een team van Microsoft ontwikkelaars en bevat een uitgebreide verzameling controls en professionele UI themes. De controls bestaan onder andere uit een AutoCompleteBox, DockPanel, TreeView, ViewBox en Charting controls. De populaire controls die uitontwikkeld zijn, worden uiteindelijk opgenomen in de Silverlight runtime.
De Silverlight Toolkit is een must-have
De Silverlight Toolkit is een must-have; naast de Silverlight SDK is elke Silverlight developer min of meer verplicht om ook de Toolkit te gebruiken.
Silverlight Extensions
http://slextensions.codeplex.com
Silverlight Extensions is een zeer uitgebreid Open Source project en bevat vele controls en andere hulpmiddelen. Silverlight Contrib, een vergelijkbaar project, is recentelijk samengevoegd met Silverlight Extensions en het resultaat is een API met honderden bruikbare classes. Het project bestaat onder andere uit een color picker, menu, virtueel stack panel, zip functionaliteit, dynamic imaging en tekst parsers. Naast de controls biedt het project ook design-time hulpmiddelen als ReSharper templates en Visual Studio code snippets.
Silverlight Extensions wordt onderhouden door een aantal prominente developers in de Silverlight community.
Silverlight Video Player
http://sl2videoplayer.codeplex.com
Ben je op zoek naar een kant en klare video speler voor Silverlight, dan is de Silverlight Video player zeer waarschijnlijk een goede kandidaat. De Player is een relatief eenvoudige user control die naar eigen inzichten visueel aangepast kan worden met behulp van styles en templates.
Slide.Show 2
http://slideshow2.codeplex.com
Slide.Show 2 is een control voor het publiceren van foto- en video-presentaties. De oorspronkelijke versie was ontwikkeld voor Silverlight 1.0 maar deze is nu volledig herschreven voor Silverlight 2. Slide.Show 2 is volledig configureerbaar en biedt standaard ondersteuning voor XML-data en de fotosite Flickr. De control is uit te breiden met eigen ontwikkelde foto- en video-providers.

Fig. 2: Slide.Show 2
Slide.Show 2 is een Open Source project van Vertigo, een bedrijf met een goede reputatie op het gebied van WPF- en Silverlight-applicaties.
Design Patterns
Wanneer je een serieuze applicatie ontwikkelt is het goed om bij het ontwerp en de ontwikkeling van de applicatie gebruik te maken van beproefde design patterns. Een design pattern biedt een oplossing voor een veel voorkomend probleem wat, mits goed toegepast, de onderhoudbaarheid van de applicatie ten goede komt. Verschillende Open Source projecten definiëren design patterns die specifiek voor Silverlight bedoeld zijn.
Prism
http://compositewpf.codeplex.com
Prism (ook wel Composite Application Guidance genoemd) is oorspronkelijk ontwikkeld voor WPF, en biedt nu ook hulpmiddelen voor het ontwikkelen van Silverlight-applicaties. Prism komt uit de hoek van Microsoft patterns & practices, waar beproefde praktijk oplossingen worden aangeboden voor de verschillende aspecten binnen software ontwikkeling. Prism richt zich op de ontwikkeling van modulaire applicaties. In het project worden onder andere de Command, Adapter en Facade design patterns toegepast. Prism is een project wat zeer bruikbaar kan zijn voor het ontwerp en de ontwikkeling van grote en complexe business applicaties.
Het Prism Open Source project bestaat uit een referentie implementatie, een library en uitgebreide documentatie.
Silverlight.FX
http://projects.nikhilk.net/SilverlightFX
Een project wat zeker niet onvermeld mag blijven is Silverlight.FX van Nikhil Kothari. Nikhil is een software architect in de Microsoft Developer Divisie en is onder andere bekend van zijn Script# project (een C# compiler die JavaScript genereert). Silverlight.FX is een applicatieframework voor het ontwikkelen van Rich Internet Applicaties met Silverlight. Het framework voorziet in een applicatiemodel, UI componenten, declaratieve views en UI effects.
Silverlight.FX past verschillende bekende design patterns toe als Model-View-ViewModel, MVC, IoC containers, enz.
Graphics Engines
Op grafisch gebied zijn de mogelijkheden van Rich Internet Applicatie platformen, zoals Silverlight, superieur aan HTML. Met Silverlight kunnen complexe grafische 2D en 3D applicaties ontwikkeld worden. Voor de ontwikkeling van deze applicaties wordt vaak gebruik gemaakt van zogenaamde grafische engines. Een grafische engine biedt de ontwikkelaar via een model een hulpmiddel voor het tekenen van entiteiten. In de Silverlight Open Source wereld is een aantal grafische engines beschikbaar.
Farseer Physics Engine
http://farseerphysics.codeplex.com
De Farseer Physics Engine is een eenvoudig te gebruiken 2D physics engine. Een physics engine zorgt ervoor dat objecten in een virtuele wereld zich realistisch gedragen. De engine berekent welke krachten, zoals bijvoorbeeld de zwaartekracht, een object beïnvloeden en beweegt het object overeenkomstig deze krachten. Een physics engine berekent ook of objecten met elkaar in botsing komen (object collision) en biedt de ontwikkelaar de mogelijkheid om daar op in te haken. De Farseer Physics engine is de meest uitgebreide Open Source physics engine die nu beschikbaar is voor Silverlight. De engine is oorspronkelijk ontworpen voor het XNA platform (XBOX 360 en Windows) maar is herschreven voor Silverlight.
Kit3D
http://kit3d.codeplex.com
Kit3D is een 3D grafische engine met een API die overeenkomt met de 3D API van Windows Presentation Foundation, zoals deze in de System.Windows.Media.Media3D namespace is gedefinieerd. Kit3D is nog niet productierijp, maar biedt een goede indruk van wat de mogelijkheden zijn voor het ontwikkelen van 3D applicaties. Met Kit3D kunnen meer geavanceerde 3D applicaties ontwikkeld worden dan mogelijk is met de beperkte perspective 3D transformaties van Silverlight 3.

Fig. 3: Kit3D in actie
Runtime extensies
Microsoft neemt Open Source serieus en dat is goed te merken aan de hoeveelheid grote Open Source projecten voor Silverlight die afkomstig zijn van Microsoft zelf. Silverlight Toolkit en Prism zijn daar mooie voorbeelden van, maar Microsoft gaat nog veel verder door een aantal runtime extensies als Open Source ter beschikking te stellen.
Microsoft neemt Open Source serieus
Silverlight Dynamic Languages SDK
http://sdlsdk.codeplex.com
Met behulp van de Silverlight Dynamic Languages SDK kunnen Silverlight applicaties ontwikkeld worden met dynamische programmeertalen als Ruby en Python. Een dynamische programmeertaal kenmerkt zich door de mogelijkheid om tijdens het draaien aanpassingen aan het programma te doen. Variabelen hoeven niet gedeclareerd te worden en code en objecten kunnen runtime worden aangepast. Bij de huidige versies van statische talen als C# en VB.NET is dit onmogelijk of niet eenvoudig te doen. Dynamische talen staan tegenwoordig steeds meer in de belangstelling.
De SDK implementeert een koppeling tussen Silverlight en de Dynamic Language Runtime (DLR). De DLR is ook volledig Open Source.
Hebrew & Arabic Language support
http://silverlightrtl.codeplex.com
De Silverlight runtime biedt geen ondersteuning voor talen die van rechts naar links (RTL) geörienteerd zijn. Wil je deze taalondersteuning toch in je applicatie aanbieden, dan kun je gebruik maken van dit Open Source project. Het project bevat een verzameling controls en helper functies voor het correct tekenen van tekst die zowel links-naar-rechts (LTR) als de rechts-naar-links (RTL) georiënteerd is.
Open Source software ontwikkelen
Het is vrij eenvoudig om zelf een Open Source project te starten en te beheren. Er bestaat een aantal gerenommeerde sites die Open Source projecten hosten, zoals sourceforge.net en codeplex.com. Deze Open Source sites bieden een uitgebreid scala aan beheerfuncties. Zaken als source control, versiebeheer, discussieforum, wiki en statistieken zijn in de meeste gevallen uitstekend geregeld.
Open Source sites bieden een uitgebreid scala aan beheerfuncties
Kijk goed om je heen voor je een Open Source project start. Wellicht kun je participeren in een bestaand project. Neem daartoe contact op met het betreffende projectteam en in de meeste gevallen zul je een zekere reputatie opgebouwd moeten hebben, wil je worden toegelaten.
Licentie
Het bespreken van de voors en tegens van de verschillende Open Source licenties valt buiten de scoop van dit artikel. Het is wel verstandig om goed na te denken over de licentie waaronder je de source code wilt vrijgeven. Met de licentie geef je aan wat een ontwikkelaar wel en niet met de source code mag doen. Een aantal licenties leggen soms verregaande restricties op aan de applicatie die wordt ontwikkeld met behulp van het Open Source project. Zo kan het zijn dat een Open Source licentie de ontwikkelaar dwingt om zijn eigen applicatie ook als Open Source te distribueren.
Het opstellen van een eigen licentie is meestal niet nodig, Open Source hosting sites bieden een ruime keuze uit een aantal standaard licenties die in de meeste gevallen voldoen.
Conclusie
Er is inmiddels een groot aantal waardevolle en bruikbare Open Source projecten voor Silverlight beschikbaar. Ervaren en enthousiaste ontwikkelaars uit de Silverlight community en van Microsoft, maken zich sterk voor de ontwikkeling van kwalitatief hoogwaardige Open Source projecten. Wanneer je een applicatie in Silverlight wilt bouwen, is het verstandig om op de hoogte te zijn van wat er in de Open Source wereld te koop is. Het is immers goed mogelijk dat de functionaliteit die je wilt ontwikkelen al beschikbaar is. In dit artikel zijn slechts een beperkt aantal projecten besproken, er bestaan vele honderden Open Source projecten die gerelateerd zijn aan Silverlight. De hoeveelheid projecten is een indicatie dat de Silverlight Open Source community groeit en bloeit.
Wanneer je zelf een Open Source project wilt opstarten, bieden sites als codeplex.com uitstekende hulpmiddelen om je project succesvol te beheren.