<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Elegant Code &#187; Open Source Software</title>
	<atom:link href="http://elegantcode.com/tag/open-source-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Sun, 12 Feb 2012 04:40:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Nancy on Hanselminutes and the awesome community behind it</title>
		<link>http://elegantcode.com/2011/06/18/nancy-on-hanselminutes-and-the-awesome-community-behind-it/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=nancy-on-hanselminutes-and-the-awesome-community-behind-it</link>
		<comments>http://elegantcode.com/2011/06/18/nancy-on-hanselminutes-and-the-awesome-community-behind-it/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 08:21:49 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Nancy]]></category>
		<category><![CDATA[Announcement]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Podcast]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/18/nancy-on-hanselminutes-and-the-awesome-community-behind-it/</guid>
		<description><![CDATA[A week ago I was invited to participate in he Hanselminutes postcast by Scott Hanselman to talk about Nancy and Micro Web Framework. The recording for episode #270 can be found at Nancy, Sinatra and the Explosion of .NET Micro Web Frameworks with Andreas Håkansson I had a great time talking to Scott, who is [...]]]></description>
			<content:encoded><![CDATA[<p>A week ago I was invited to participate in he <a title="Visit the Hanselminutes podcast website" href="http://hanselminutes.com" target="_blank">Hanselminutes postcast</a> by <a title="Visit the blog of Scott Hanselman" href="http://hanselman.com" target="_blank">Scott Hanselman</a> to talk about <a title="Visit the Nancy project site" href="http://nancyfx.org/" target="_blank">Nancy</a> and Micro Web Framework. The recording for episode #270 can be found at <a title="Check out the podcast episode at hanselminutes.com" href="http://hanselminutes.com/default.aspx?showID=290" target="_blank">Nancy, Sinatra and the Explosion of .NET Micro Web Frameworks with Andreas Håkansson</a></p>
<p>I had a great time talking to Scott, who is an excellent host, but one thing I did not get an opportunity to do was to extend my gratitude to the awesome people that are forming up a community around the project, everybody from the people that blog, tweet, screencast or in some other way help Nancy grow into an awesome framework – so <em>thank you to all of you!</em></p>
<p>The following people have all contributed to the Nancy repository and have helped us get many of the awesome features and bug fixes (if your name should be on this list, but it not, please drop me a line and I will get sorted out!)</p>
<p><a href="http://github.com/andypike">Andy Pike</a>, <a href="http://github.com/bjartn">Bjarte Djuvik Næss</a>, <a href="http://github.com/lucisferre">Chris Nicola</a>, <a href="http://github.com/davidhong">David Hong</a>, <a href="http://github.com/GraemeF">Graeme Foster</a>, <a href="http://github.com/gatapia">Guido Tapia</a>, <a href="http://github.com/hgarcia">Hernan Garcia</a>, <a href="http://github.com/innovatian">Ian Davis</a>, <a href="http://github.com/knecke">Jonas Cannehag</a>, <a href="http://github.com/jfromaniello">José F. Romaniello</a>, <a href="http://github.com/karlseguin">Karl Seguin</a>, <a href="http://github.com/lukesmith">Luke Smith</a>, <a href="http://github.com/jameseggers1">James Eggers</a>, <a href="http://github.com/meadiagenic">Jason Mead</a>, <a href="http://github.com/jeremyskinner">Jeremy Skinner</a>, <a href="http://github.com/joaobraganca">João Bragança</a>, <a href="http://github.com/johandanforth">Johan Danforth</a>, <a href="http://github.com/jtdowney">John Downey</a>, <a href="http://github.com/maciejk">Maciej Kowalewski</a>, <a href="http://github.com/mpdreamz">Martijn Laarman</a>, <a href="http://github.com/mmozuras">Mindaugas Mozûras</a>, <a href="http://github.com/patrik-hagne">Patrik Hägne</a>, <a href="http://github.com/pmhsfelix">Pedro Felix</a>, <a href="http://github.com/pwlodek">Piotr Wlodek</a>, <a href="http://github.com/haacked">Phil Haack</a>, <a href="http://github.com/robertthegrey">Robert Greyling</a>, <a href="http://github.com/ssboisen">Simon Skov Boisen</a>, <a href="http://github.com/grumpydev">Steven Robbins</a>, <a href="http://github.com/thedersen">Thomas Pedersen</a>, <a href="http://github.com/troethom">Troels Thomsen</a>, <a href="http://github.com/vidarls">Vidar L. Sømme</a></p>
<p>I would like to extend a special thank you and shout out to my friend and co-conspirator <a title="Visit the blog of Steven Robbins a.k.a GrumpyDev" href="http://www.grumpydev.com/" target="_blank">Steven Robbins</a> a.k.a <a title="Checkout GrumpyDev on Twitter" href="http://twitter.com/#!/grumpydev" target="_blank">@GrumpyDev</a> on Twitter. He is a continuous source of awesome for Nancy and the project is better for having him onboard, that is one thing I am certain on. <em>Thank you buddy!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/18/nancy-on-hanselminutes-and-the-awesome-community-behind-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The value of open-source is the vision not the source code</title>
		<link>http://elegantcode.com/2011/05/28/the-value-of-open-source-is-the-vision-not-the-source-code/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-value-of-open-source-is-the-vision-not-the-source-code</link>
		<comments>http://elegantcode.com/2011/05/28/the-value-of-open-source-is-the-vision-not-the-source-code/#comments</comments>
		<pubDate>Sat, 28 May 2011 19:47:42 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[rant]]></category>
		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/05/28/the-value-of-open-source-is-the-vision-not-the-source-code/</guid>
		<description><![CDATA[It seem that every 3-5 month or so, the discussion on the state of the .NET open-source community flairs up. Some say it’s a dead horse being beaten, other that it’s a vibrant, thriving community. Sound familiar? Who cares?! Seriously, who cares? The right thing to do in either case is the exact same thing; [...]]]></description>
			<content:encoded><![CDATA[<p>It seem that every 3-5 month or so, the discussion on the state of the .NET open-source community flairs up. Some say it’s a dead horse being beaten, other that it’s a vibrant, thriving community. Sound familiar? Who cares?! Seriously, who cares? The right thing to do in either case is the exact same thing; keep injecting more value into it!</p>
<p>If the movement (if you can call it that) is truly dead, then what? Do we just roll over and play dead, or do we add more value to it and help breath new life in to it? If your answer is the former then you are simply not an open-source kind of guy. Now imagine that it’s is, in fact, a vibrant and thriving community, full of goodies to choose from. What should be do then? Stop adding value to it since it’s already doing well, or do we keep on pushing to add even more value into it? We keep adding value, of course, if it wasn’t already obvious that would be my answer.</p>
<p>Alright then, how do we inject move value into it? Contribute to an already active project or start a new one? It truly depends on your visions. First of all let me make it perfectly clear that I think diversity is not only a good thing, but a sign of a healthy community. There is no single “silver bullet” that will solve all problems or in a way that out domain requires them to. It’s very rare for a “all-in-one” solution is the best for your scenario and that’s why I believe opinionated solutions is required.</p>
<p>Everybody won’t agree to a single opinion, it’s just not ever going to happen, so how could a single framework or product be the solution to all problems we face in our industry? It can’t.</p>
<p>The first thing you should get out of your head is that your source code is where the gravy is. Sticking to that story won’t get your very fare. Any decent programmer can probably reproduce any functionality with their own implementation. It might not be as fancy as your solution, but I’ll bet you that it would work well enough to solve the problem they were facing – they’d see to that.</p>
<p>So if the value is not in the source code, that you’ve spent weeks, maybe months, perfecting and to work just the way you wanted it to, with all the fancy solutions and patterns in place, then were is it? It’s in the vision of the source code. The vision is the heart and soul of your project and it’s what will ensure that the project can live on even if you loose interest. It’s your opinions on how things should be done.</p>
<p>Now, of course, if you vision is nearly the same as the next guy and all you do is pinch his source code and call it your own thing, then you’re just being an asshole. I’m sorry, but you are. If you have a clear idea on how you thing a certain set of problems should be solved, that’s when you have the foundation for a nice opinionated solution…that’s the vision of your project.</p>
<p>The vision of the project should be set in stone before you make the first public release. Be careful not to be blinded by the massive amount of suggestions and contributions that you might be getting. If they will lead you down a path that is not true to your vision – ignore them. Send them a “thank you, but this is not for this project” and if they don’t like that then they should distil their visions into their own project. It’s impossible to say which would be the better solution – heck, why can’t both be just as good but suite different people? Diversity.</p>
<p>If you nurture the vision of your project well enough and attract equal minded people then you have started a community and they will make sure the project stays true to the original vision, trust me. Should you suddenly loose interest in the project, or for some other reason not be able to commit to the cause anymore, the community can simply fork and create a new authorities branch. This has happened time and time again in many of the big open-source projects.</p>
<p>I’m happy to say that I keep seeing the diversity in the .NET open-source community grow as we speak. I keep seeing more and more small, opinionated, projects pop up and that they are being embraced by a subset of our community as a whole. Sure, the .NET community has probably quite a bit more to invest in open-source, but it’s getting there and the only way to get there faster is to be part of the ride!</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/05/28/the-value-of-open-source-is-the-vision-not-the-source-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Source Silverlight video players</title>
		<link>http://elegantcode.com/2010/01/22/open-source-silverlight-video-players/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=open-source-silverlight-video-players</link>
		<comments>http://elegantcode.com/2010/01/22/open-source-silverlight-video-players/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 07:28:17 +0000</pubDate>
		<dc:creator>cschuman</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/01/22/open-source-silverlight-video-players/</guid>
		<description><![CDATA[Lately I&#8217;ve been spending a lot of time in the Silverlight video space.&#160; Both with writing the video chapter for my Silverlight 4 book as well as at work.&#160; Creating a basic video player is straight forward (link 1 &#124; link 2), have a button to play, a way to control the volume, a scrubber [...]]]></description>
			<content:encoded><![CDATA[<p><a style="float: right" href="http://elegantcode.com/wp-content/uploads/2010/01/image4.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://elegantcode.com/wp-content/uploads/2010/01/image_thumb4.png" width="150" height="240" /></a> Lately I&#8217;ve been spending a lot of time in the Silverlight video space.&#160; Both with writing the video chapter for my Silverlight 4 book as well as at work.&#160; Creating a basic video player is straight forward (<a href="http://www.85turns.com/2008/04/02/create-a-video-player-silverlight-2-part-1/">link 1</a> | <a href="http://www.85turns.com/2008/04/15/create-a-video-player-silverlight-2-part-2/">link 2</a>), have a button to play, a way to control the volume, a scrubber to show the position of playback, and of course an area to view the video.&#160; </p>
<p>Once you get beyond the basic requirements, the “basic video player” becomes very involved.&#160; A few questions that will need attention are: </p>
<ul>
<li>“How do you handler markers?” </li>
<li>“How is streaming video handled?” </li>
<li>“What do you do an an error?” </li>
<li>“What’s the strategy for buffering?” </li>
<li>“Can the video player support Smooth Streaming content?” (this is a whole different conversation) </li>
<li>“How does the video player handle Closed captioning?” </li>
</ul>
<p>And on and on the list goes.&#160; At some point (hopefully in the analysis phase) you should ask is it better to build or buy.&#160; If you decide to build, give me a call <img src='http://elegantcode.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , but before you do I would encourage you to take a look at the following open-source (free) Silverlight video player options.&#160; If nothing else, these players are great place to start.</p>
<p>I’ll start off with the three best options, then highlight other projects I am less familiar with.</p>
<h3>Silverlight Media Framework (SMF)</h3>
<p><a href="http://smf.codeplex.com/">http://smf.codeplex.com/</a></p>
<p>This is so much more than a video player, it’s an entire framework.&#160; Developed by <a href="http://www.vertigo.com/">Vertigo</a> in coordination with Microsoft, SMF has been used on the largest, most watched, Silverlight video players to date.&#160; Wimbledon, NFL’s Sunday Night Football, PDC live keynote, and the NBC’s Vancouver Olympics video players, to name a few, all use SMF.&#160; To say it’s robust would be an understatement.</p>
<p>Other than the standard video player controls, here are additional highlights of SMF:</p>
<ul>
<li>Smooth Streaming support – includes the <strong>Microsoft.Web.Media.SmoothStreaming.dll</strong> </li>
<li>Great base classes like <strong>MergeableCollection</strong>, <strong>SimpleEventArgs</strong> and <strong>ObservableObject</strong> </li>
<li>A light weight data project </li>
<li>Logging </li>
<li>Blendability – the player is easily skinned </li>
<li>InStream markers </li>
<li>Bitrate – the ability to show bitrate </li>
</ul>
<p>For a more detailed list of features, and the code, check out SMF’s site.</p>
<h3>Silverlight Video Player</h3>
<p><a href="http://slvideoplayer.codeplex.com/">http://slvideoplayer.codeplex.com/</a></p>
<p>If you have ever watched a video on <a href="http://channel9.msdn.com/">Channel 9</a> (if you haven’t check out <a href="http://channel9.msdn.com/shows/SilverlightTV/">Silverlight TV</a>) the player being used is this video player.&#160; It was developed by <a href="http://timheuer.com/blog/">Tim Heuer</a> (Microsoft) and <a href="http://joel.neubeck.net/">Joel Nuebeck</a> (Silverlight MVP).&#160; Although SVP does not the feature set the SMF player has, this is still a solid and proven video player.&#160; It’s is probably the best option for a standard, light weight, feature rich video player.</p>
<h3>Silverlight HyperVideo player (HVP)</h3>
<p><a title="http://slhvp.com/" href="http://slhvp.com/">http://slhvp.com/</a></p>
<p>A new video player to the scene is the Silverlight Hyper-Video Player (HVP).&#160; This offering is from <a href="http://blogs.silverlight.net/blogs/jesseliberty/">Jesse Liberty</a> (Microsoft) and the Community.&#160; Targeting Silverlight 4, HVP takes advantage of the MEF framework and is rooted in best development practices.&#160; Although the project is young, there is a lot of traction and Jesse is doing an amazing job of documenting each step.&#160; Keep on eye on HVP as this maybe the most scalable offering.</p>
<h3>Others</h3>
<p>The above three video players I have personally used, dug through the code, and/or evaluated.&#160; The following projects I am not as familiar with, but could be possible options for your scenario:</p>
<p><strong>Sharepoint video player</strong> &#8211; <a href="http://svp.codeplex.com/">http://svp.codeplex.com/</a></p>
<p><strong>Silverlight Media Player </strong><a href="http://silverlight30.codeplex.com/">http://silverlight30.codeplex.com/</a></p>
<p><strong>xLite player </strong>- <a href="http://xliteplayer.codeplex.com/">http://xliteplayer.codeplex.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/01/22/open-source-silverlight-video-players/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity 1.0 EventBroker Sample CAB Style</title>
		<link>http://elegantcode.com/2008/04/09/unity-10-eventbroker-sample-cab-style/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unity-10-eventbroker-sample-cab-style</link>
		<comments>http://elegantcode.com/2008/04/09/unity-10-eventbroker-sample-cab-style/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 06:55:52 +0000</pubDate>
		<dc:creator>Scott Nichols</dc:creator>
				<category><![CDATA[Esoterica]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Patterns and Practices]]></category>
		<category><![CDATA[Tools and Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/09/unity-10-eventbroker-sample-cab-style/</guid>
		<description><![CDATA[Ok so Unity 1.0 has shipped, or should I say the “Unity Application Block” as Microsoft is terming it now. However, in this post I am not going to talk about the Unity IoC contain but a pretty cool peace of code that comes bundled with Unity’s QuickStart samples, the Event Broker Extension. The Event [...]]]></description>
			<content:encoded><![CDATA[<p>Ok so <a href="http://www.codeplex.com/unity">Unity 1.0</a> has shipped, or should I say the “Unity Application Block” as Microsoft is terming it now. However, in this post I am not going to talk about the Unity <a href="http://en.wikipedia.org/wiki/Inversion_of_Control">IoC</a> contain but a pretty cool peace of code that comes bundled with Unity’s QuickStart samples, the Event Broker Extension.</p>
<p>The Event Broker Extension QuickStart demonstrates how you can extend the Unity container by adding a custom extension. The QuickStart implements an Event Broker for the container as a container extension and demonstrates the new extension using the StopLight QuickStart application sample.</p>
<p>The Event Broker Extension QuickStart contains three projects:</p>
<ul>
<li><strong>EventBroker</strong>. This project implements a simple publish and subscribe mechanism that supports multiple event publishers and multiple subscribers.</li>
<li><strong>EventBrokerExtension</strong>. This project implements the custom container extension that allows applications to publish and subscribe to events using attributes or explicitly using code.</li>
<li><strong>StopLight</strong>. This project is basically the same as that described in the Unity StopLight QuickStart, but it uses the custom container extension to manage the publishing of, and subscription to, two events within the application.</li>
</ul>
<p>Now, why is this Unity EventBroker interesting? Well, if you have ever worked with <a href="http://www.cabpedia.com/index.php?title=Composite_UI_Application_Block">CAB</a> (Composite UI Application Block) or <a href="http://www.cabpedia.com/index.php?title=Smart_Client_Software_Factory">SCSF</a> (Smart Client Software Factory) then you know one of its main pillars was the implementation of a nice Pub/Sub event subscription framework which Microsoft called Event Broker. This was one of the best things about CAB. Unfortunately with CAB it is an all or nothing deal. You really cannot use the CAB Event Broker without using the rest of the CAB underpinnings.</p>
<p>The Unity implementation of the Event Broker is similar to CABs so you should feel right at home if you have any experience with CAB or SCSF. The one huge benefit is that the Unity Event Broker can easily be integrated into any existing WinForm or WPF application where you would like an easy to manage Event bus to handle all your event traffic.</p>
<p>It really is easy to implement, lets take a look at what you need to do in order to integrate the Unity based Event Broker into your application.</p>
<p>1) Download <a href="http://www.codeplex.com/unity">Unity 1.0</a> install it and unzip the “Unity QuickStart” package found in the Unity start menu installation path.</p>
<p>2) Compile the EventBrokerExtention and SimpleEventBroker projects.  Then grab the following DLLs found in the EventBrokerExtention bin folder and reference them in your application.<br />
  EventBrokerExtension.dll<br />
  SimpleEventBroker.dll<br />
  Microsoft.Practices.ObjectBuilder2.dll<br />
  Microsoft.Practices.Unity.dll</p>
<p>3) Now open your WinForm application and modify your entry point usually the Program.cs file which in my demo calls the FormMain.cs using a Unity Container like so.</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Collections.Generic;
<span class="kwrd">using</span> System.Linq;
<span class="kwrd">using</span> System.Windows.Forms;
<span class="kwrd">using</span> EventBrokerExtension;
<span class="kwrd">using</span> Microsoft.Practices.Unity; 

<span class="kwrd">namespace</span> SampleWinApp
{
    <span class="kwrd">static</span> <span class="kwrd">class</span> Program
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// The main entry point for the application.</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        [STAThread]
        <span class="kwrd">static</span> <span class="kwrd">void</span> Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(<span class="kwrd">false</span>); 

            <span class="rem">// Create parent container</span>
            IUnityContainer mainContainer = <span class="kwrd">new</span> UnityContainer()
                  .AddNewExtension&lt;EventBrokerBusExtension&gt;(); 

            Application.Run(mainContainer.Resolve&lt;FormMain&gt;());
        }
    }
}</pre>
<p>The important thing to notice is that I have wired up the EventBrokerExtention class through the Unity AddNewExtention method.  This will cause all the Events that are properly decorated with the correct attributes to be automatically registered in the EventBroker or SimpleEventBroker class.</p>
<p>You will also want to go and modified all the areas in your code where you are opening other forms to use a Unity container as well.  Here is an example opening a Form called FromA.cs </p>
<pre class="csharpcode"><span class="rem">//Create container</span>
IUnityContainer myContainer = <span class="kwrd">new</span> UnityContainer()
           .AddNewExtension&lt;EventBrokerBusExtension&gt;();
<span class="rem">//Open Form</span>
FormA newForm = myContainer.Resolve&lt;FormA&gt;();
newForm.Show();</pre>
<style type="text/css">    .csharpcode, .csharpcode pre  {  	font-size: small;  	color: black;  	font-family: consolas, "Courier New", courier, monospace;  	background-color: #ffffff;  	/*white-space: pre;*/  }  .csharpcode pre { margin: 0em; }  .csharpcode .rem { color: #008000; }  .csharpcode .kwrd { color: #0000ff; }  .csharpcode .str { color: #006080; }  .csharpcode .op { color: #0000c0; }  .csharpcode .preproc { color: #cc6633; }  .csharpcode .asp { background-color: #ffff00; }  .csharpcode .html { color: #800000; }  .csharpcode .attr { color: #ff0000; }  .csharpcode .alt   {  	background-color: #f4f4f4;  	width: 100%;  	margin: 0em;  }  .csharpcode .lnum { color: #606060; }</style>
<p>Oh, make sure you import the proper libraries on all your forms.</p>
<pre class="csharpcode"><span class="kwrd">using</span> Microsoft.Practices.Unity;
<span class="kwrd">using</span> EventBrokerExtension;
<span class="kwrd">using</span> SimpleEventBroker;</pre>
<p>Now you need to setup all the Event publications and triggers. Let’s start simple, say we have a button on our FormMain that is used to force a data refresh in your application. You would need to add a publish event to your page like so.</p>
<pre class="csharpcode"><span class="rem">//Using an attribute register an event in the EventBroker</span>
[Publishes(<span class="str">"RefreshData"</span>)]
<span class="kwrd">public</span> <span class="kwrd">event</span> EventHandler RefreshData ;
<span class="rem">//Method you will call to trigger the event in the EventBroker </span>
<span class="kwrd">public</span> <span class="kwrd">virtual</span> <span class="kwrd">void</span> OnRefreshDataChange(<span class="kwrd">object</span> sender, EventArgs ea)
{
    EventHandler handlers = RefreshData ;
    <span class="kwrd">if</span> (handlers != <span class="kwrd">null</span>)
    {
        handlers(<span class="kwrd">this</span>, EventArgs.Empty);
    }
}</pre>
<p>On your button click trigger the event like so.</p>
<pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">void</span> buttonRefresh_Click(<span class="kwrd">object</span> sender, EventArgs e)
{
    <span class="rem">//Trigger your event </span>
    OnRefreshDataChange(<span class="kwrd">this</span>, e);
}</pre>
<p>Now you need to setup all your Event subscriptions, this is supper easy.  You will need to create a method on all the forms in your application that will handle your refresh command i.e. implements the functionality you wish for each form or control in your application.  So far in this contrived example I have two forms FormMain and FormA.  You would add a method like so to each page.    </p>
<pre class="csharpcode">[SubscribesTo(<span class="str">"RefreshData"</span>)]
<span class="kwrd">public</span> <span class="kwrd">void</span> OnRefreshDataFired(<span class="kwrd">object</span> sender, EventArgs e)
{
         <span class="rem">//Do something, we need to do a data refresh</span>
}</pre>
<style type="text/css">    .csharpcode, .csharpcode pre  {  	font-size: small;  	color: black;  	font-family: consolas, "Courier New", courier, monospace;  	background-color: #ffffff;  	/*white-space: pre;*/  }  .csharpcode pre { margin: 0em; }  .csharpcode .rem { color: #008000; }  .csharpcode .kwrd { color: #0000ff; }  .csharpcode .str { color: #006080; }  .csharpcode .op { color: #0000c0; }  .csharpcode .preproc { color: #cc6633; }  .csharpcode .asp { background-color: #ffff00; }  .csharpcode .html { color: #800000; }  .csharpcode .attr { color: #ff0000; }  .csharpcode .alt   {  	background-color: #f4f4f4;  	width: 100%;  	margin: 0em;  }  .csharpcode .lnum { color: #606060; }</style>
<p>Now anytime the RefreshData button is pushed the event is fired and all objects subscribed to that event in the EventBroker will be triggered. </p>
<p>One important step you will want to do is unregister your subscribed events every time a modal form is closed.  Remember we are using the Unity IoC container to open a form which automatically registers all publisher and subscriber event handles on form_load (opened). </p>
<pre class="csharpcode"><span class="rem">// Unregister your subscription to help prevent runtime errors</span>
<span class="kwrd">private</span> <span class="kwrd">void</span> FormA_FormClosing(<span class="kwrd">object</span> sender, FormClosingEventArgs e)
{
     EventBroker myEB = <span class="kwrd">new</span> EventBroker();
     myEB.UnregisterSubscriber(<span class="str">"RefreshData"</span>, OnRefreshDataFired);
}</pre>
<p>That is about it, I used this to clean up an old legacy application that had Window events thrown everywhere.  The SimpleEventBroker class has several methods you can use to monitor what is going on inside the EventBroker such as GetPublisher, GetSubscribers, etc.</p>
<p>Oh, in my implementation I modified the Dictionary in the SimpleEventBroker class which holds the registered published events to be static, makes it easier if you have lots of modal forms, just make sure the Keys (string values) are unique.</p>
<pre class="csharpcode">

<span class="kwrd">public</span> <span class="kwrd">class</span> EventBroker
    {
        <span class="kwrd">private</span> <span class="kwrd">static</span> Dictionary&lt;<span class="kwrd">string</span>, PublishedEvent&gt; eventPublishers  

        = <span class="kwrd">new</span> Dictionary&lt;<span class="kwrd">string</span>, PublishedEvent&gt;();</pre>
<style type="text/css">    .csharpcode, .csharpcode pre  {  	font-size: small;  	color: black;  	font-family: consolas, "Courier New", courier, monospace;  	background-color: #ffffff;  	/*white-space: pre;*/  }  .csharpcode pre { margin: 0em; }  .csharpcode .rem { color: #008000; }  .csharpcode .kwrd { color: #0000ff; }  .csharpcode .str { color: #006080; }  .csharpcode .op { color: #0000c0; }  .csharpcode .preproc { color: #cc6633; }  .csharpcode .asp { background-color: #ffff00; }  .csharpcode .html { color: #800000; }  .csharpcode .attr { color: #ff0000; }  .csharpcode .alt   {  	background-color: #f4f4f4;  	width: 100%;  	margin: 0em;  }  .csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/09/unity-10-eventbroker-sample-cab-style/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Castle Windsor vs writing your own</title>
		<link>http://elegantcode.com/2008/04/04/castle-windsor-vs-writing-your-own/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=castle-windsor-vs-writing-your-own</link>
		<comments>http://elegantcode.com/2008/04/04/castle-windsor-vs-writing-your-own/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 18:18:57 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Tools and Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/04/castle-windsor-vs-writing-your-own/</guid>
		<description><![CDATA[Earlier this week I was in a meeting were someone stated that it was better to write your own IOC container than just using an existing one (the most excellent Castle Windsor in this case). I was just baffled to hear such statements. The argument for writing your own container was simplicity and the learning [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week I was in a meeting were someone stated that it was better to write your own IOC container than just using an existing one (the most excellent <a TARGET="_blank" HREF="http://www.castleproject.org/container/index.html">Castle Windsor</a> in this case). I was just baffled to hear such statements.</p>
<p>The argument for writing your own container was simplicity and the learning curve for new developers on the team. I strongly disagree.</p>
<p>I can&#8217;t think of anything simpler than downloading an existing IOC container that has a near flat-line learning curve, like the Castle Windsor container. About a year ago, I introduced it into <a TARGET="_blank" HREF="http://elegantcode.com/2008/04/04/about-the-members-of-my-team/">the team</a>. No learning problems whatsoever. Just read <a TARGET="_blank" HREF="http://www.ayende.com/Blog/archive/2007/05/03/Windsor-Patterns.aspx">two blog posts</a> about it and you are on your way</p>
<p>But the main reason I disagree is that I strongly believe that we have to provide business value instead of writing <a TARGET="_blank" HREF="http://vanryswyckjan.blogspot.com/2007/12/why-o-why.html">yet-another-IOC-container</a>. We have to solve the problems of our customers. They simply don&#8217;t care about IOC containers.</p>
<p><a TARGET="_blank" HREF="http://www.hanselman.com/blog/">Scott Hanselman</a> has a nice <a TARGET="_blank" HREF="http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx">list of Dependency Injection Containers</a>. Pick, choose and get over it!</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/04/castle-windsor-vs-writing-your-own/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Inline XML Code Documentation using Sandcastle</title>
		<link>http://elegantcode.com/2008/04/01/inline-xml-code-documentation-using-sandcastle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=inline-xml-code-documentation-using-sandcastle</link>
		<comments>http://elegantcode.com/2008/04/01/inline-xml-code-documentation-using-sandcastle/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 05:12:11 +0000</pubDate>
		<dc:creator>Scott Nichols</dc:creator>
				<category><![CDATA[Esoterica]]></category>
		<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Tools and Utilities]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/01/inline-xml-code-documentation-using-sandcastle/</guid>
		<description><![CDATA[Is it me, or have many people/projects stopped creating good API documentation via Inline XML comments in their source code.  A couple of years ago when nDoc was in full swing it seemed to be taboo if you did not markup your source code with good XML Comments and generate accompanied API documents. For those [...]]]></description>
			<content:encoded><![CDATA[<p>Is it me, or have many people/projects stopped creating good API documentation via Inline XML comments in their source code.  A couple of years ago when nDoc was in full swing it seemed to be taboo if you did not markup your source code with good XML Comments and generate accompanied API documents.</p>
<p>For those of you who many be asking what is he talking about, Inline XML comments in your source?  Well, that would be (in C#) all those /// comments you see from time to time in source code like so.</p>
<pre style="width: 100%; height: 297px" class="csharpcode"><span class="kwrd">namespace</span> TestNamespace
{
<span class="rem">/// &lt;summary&gt; </span>
<span class="rem">///    Tests whether sandcastle can handle all c# tags as defined at </span>
<span class="rem">///    http://msdn2.microsoft.com/en-us/library/5ast78ax.aspx. </span>
<span class="rem">///    Comments of method "Increment (int step)" include almost all tags. </span>
<span class="rem">///    Method "Swap" is used to test generics tags, such as "typeparam". </span>
<span class="rem">///    &lt;threadsafety static="true" instance="false"/&gt; </span>
<span class="rem">/// &lt;/summary&gt; </span>
[Serializable()]
<span class="kwrd">public</span> <span class="kwrd">class</span> StoredNumber
{  

<span class="rem">/// &lt;summary&gt; </span>
<span class="rem">///    Initializes the stored number class with a starting value. </span>
<span class="rem">/// &lt;/summary&gt; </span>
<span class="kwrd">public</span> StoredNumber( <span class="kwrd">int</span> <span class="kwrd">value</span> )
{ number = <span class="kwrd">value</span>; }</pre>
<style type="text/css">    .csharpcode, .csharpcode pre  {  	font-size: small;  	color: black;  	font-family: consolas, "Courier New", courier, monospace;  	background-color: #ffffff;  	/*white-space: pre;*/  }  .csharpcode pre { margin: 0em; }  .csharpcode .rem { color: #008000; }  .csharpcode .kwrd { color: #0000ff; }  .csharpcode .str { color: #006080; }  .csharpcode .op { color: #0000c0; }  .csharpcode .preproc { color: #cc6633; }  .csharpcode .asp { background-color: #ffff00; }  .csharpcode .html { color: #800000; }  .csharpcode .attr { color: #ff0000; }  .csharpcode .alt   {  	background-color: #f4f4f4;  	width: 100%;  	margin: 0em;  }  .csharpcode .lnum { color: #606060; }</style>
<p>However today, I have noticed that many open source projects and a good share of commercial applications do not bother marking up their source code with XML comments. Maybe one contributing factor is that nDoc died, ok you can still download version 1.3 but it is over two years old now and Microsoft’s answer to this solution Sandcastle is not quite as snazzy as nDoc was i.e. Command-line interface, or maybe propel are just not aware of their options. </p>
<p>The following information outlines what you need to install so you can create proper Inline API (MSDN-style) documentation.  Here is a list of programs you need to install.</p>
<p><strong>Sandcastle:</p>
<p></strong>Microsoft home page for <a href="http://www.sandcastledocs.com/Wiki%20Pages/Home.aspx">Sandcastle</a></p>
<p>You can download it from CodePlex <a href="http://www.codeplex.com/Sandcastle">http://www.codeplex.com/Sandcastle</a></p>
<p>Sandcastle, created by Microsoft, is a free tool used for creating MSDN-style documentation from .NET assemblies and their associated XML comment files. It is command-line based and has no GUI front-end, project management features, or an automated build process</p>
<p><strong>SHFB (Sandcastle Help File Builder):</strong></p>
<p>You can download SHFB from CodePlex <a href="http://www.codeplex.com/SHFB">http://www.codeplex.com/SHFB</a></p>
<p>SHFB is a GUI interface that almost looks identical to the NDoc interface so anyone familiar with NDoc should be quite comfortable using it.  It uses the underlining Sandcastle API to generate an HTML 1.x (.CHM) file, an HTML 2.x (.HxS) file, and/or a web site.</p>
<p>SHFB Requirements</p>
<p>In order to use SHFB you will need the following:</p>
<p>- The .NET 2.0 Framework</p>
<p>- The latest version of Sandcastle. <br />
- The HTML Help Workshop for building HTML Help 1.x (.CHM) help files</p>
<p>- The HTML 2.x compiler for building HTML Help 2.x (.HxS) help files</p>
<p>You can obtain the HTML builders by installing the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=30402623-93ca-479a-867c-04dc45164f5b&amp;displaylang=en">Visual Studio 2008 SDK</a> these are the latest builds.</p>
<p><strong>XML Documentation Comments Guide:</strong></p>
<p>Home page <a href="http://www.dynicity.com/downloads/default.aspx">http://www.dynicity.com/downloads/default.aspx</a></p>
<p>Download the “Windows Installer” at <a href="http://www.dynicity.com/downloads/XMLDocCommentsGuide.exe">http://www.dynicity.com/downloads/XMLDocCommentsGuide.exe</a></p>
<p>This is a help file with a very nice collection of information on how to use XML Comment tags properly in your source code, it has lots of links to some good tutorials and examples. </p>
<p><strong>DocProject for 2008:</strong></p>
<p>Home page from CodePlex for <a href="http://www.codeplex.com/DocProject/Release/ProjectReleases.aspx?ReleaseId=8231">DocProject</a></p>
<p>DocProject drives the Sandcastle help generation tools using the power of Visual Studio 2005/2008 and MSBuild. Choose from various project templates that build compiled help version 1.x or 2.x for all project references. DocProject facilitates the administration and development of project documentation with Sandcastle, allowing you to use the integrated tools of Visual Studio to customize Sandcastle&#8217;s output.</p>
<p><strong>Example Links</strong><strong>:</strong></p>
<p>.NET Documentation Guidelines (version 2.5)</p>
<p><a href="http://p3net.mvps.org/downloads/docs/DocGuidelines.doc">http://p3net.mvps.org/downloads/docs/DocGuidelines.doc</a> </p>
<p>XML Documentation in C# (Anson Horton, C# Compiler Program Manager)</p>
<p><a href="http://cyrino.members.winisp.net/9112006/XMLDocs.doc">http://cyrino.members.winisp.net/9112006/XMLDocs.doc</a></p>
<p>C# XML Documentation (Alan Dean)</p>
<p><a href="http://thoughtpad.net/alan-dean/cs-xml-documentation.html">http://thoughtpad.net/alan-dean/cs-xml-documentation.html</a></p>
<p><a href="http://www.codeproject.com/KB/XML/csharpcodedocumentation.aspx?df=100&amp;forumid=201254&amp;exp=0&amp;select=1237919">C# and XML Source Code Documentation</a></p>
<p><a href="http://www.winnershtriangle.com/w/Articles.XMLCommentsInCSharp.asp">Documenting C# source code with XML Comments</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/01/inline-xml-code-documentation-using-sandcastle/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A New NHibernate Blog</title>
		<link>http://elegantcode.com/2008/04/01/a-new-nhibernate-blog/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-new-nhibernate-blog</link>
		<comments>http://elegantcode.com/2008/04/01/a-new-nhibernate-blog/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 15:26:32 +0000</pubDate>
		<dc:creator>Alex Mueller</dc:creator>
				<category><![CDATA[Architecture and Design]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Tools and Utilities]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2008/04/01/a-new-nhibernate-blog/</guid>
		<description><![CDATA[Craig Neuwirt recently started a blog focused on NHibernate, as mentioned by Ayende. NHibernate is an ORM tool I have used on current and past projects and it is something I feel I would like I want to study further. So far, Craig is walking us through NHibernate from the ground-up, with the latest and [...]]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="http://blogs.hibernatingrhinos.com/Craig" title="Craig Neuwirt">Craig Neuwirt</a> recently started a blog focused on <a target="_blank" href="http://www.nhibernate.org/" title="NHibernate">NHibernate</a>, as mentioned by <a target="_blank" href="http://www.ayende.com/Blog/" title="Ayende">Ayende</a>. NHibernate is an ORM tool I have used on current and past projects and it is something I feel I would like I want to study further. So far, Craig is walking us through NHibernate from the ground-up, with the latest and greatest. I anticipate this being an informative <a target="_blank" href="http://blogs.hibernatingrhinos.com" title="http://blogs.hibernatingrhinos.com">blog</a> to follow.</p>
<p><a target="_blank" href="http://blogs.hibernatingrhinos.com/nhibernate" title="The NHibernate FAQ">The NHibernate FAQ</a><br />
<a target="_blank" href="http://blogs.hibernatingrhinos.com/Craig" title="Craig Neuwirt">Craig Neuwirt</a><br />
<a target="_blank" href="http://blogs.hibernatingrhinos.com/" title="Hibernating Rhinos">Hibernating Rhinos</a></p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2008/04/01/a-new-nhibernate-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Windows Guy on a MacBook Pro</title>
		<link>http://elegantcode.com/2007/10/23/a-windows-guy-on-a-macbook-pro/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-windows-guy-on-a-macbook-pro</link>
		<comments>http://elegantcode.com/2007/10/23/a-windows-guy-on-a-macbook-pro/#comments</comments>
		<pubDate>Wed, 24 Oct 2007 05:09:16 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2007/10/23/a-windows-guy-on-a-macbook-pro/</guid>
		<description><![CDATA[This post is coming from yet another blog client. The difference with this one and the others I have tried is that this blog client is running on OS X. My handy-dandy new MacBook Pro is humming right along, even though computermemoryoutlet.com sent me the wrong RAM sticks for my 4G upgrade. I have to [...]]]></description>
			<content:encoded><![CDATA[<p>This post is coming from yet another blog client. The difference with this one and the others I have tried is that this blog client is running on OS X. My handy-dandy new MacBook Pro is humming right along, even though computermemoryoutlet.com sent me the wrong RAM sticks for my 4G upgrade.</p>
<p>I have to admit that even though my plans for this machine are all about getting Windows Vista installed as soon as my Leopard CDs arrive, this OS X thing is intriguing. Although it is frustrating not knowing my way around as I o in Windows, the obvious beauty and attention to aesthetic are really nice to work with. Frankly, the darn windows are just nice to look at.</p>
<p>I want to make it perfectly clear before I go into the next part of this article that I did not buy this machine for the OS X capabilities, although I am giving them due diligence. I bought the machine for the hardware performance and unparalleled form factor. Frankly, it is one of the most beautiful pieces of hardware I have ever seen and I don&#8217;t regret it a bit.</p>
<p>That said, all is not  perfect in MacVille. I am pretty used to hearing all about how Macs kick chicken and OSX is the greatest thing since peanut butter, so let me offer some observations.</p>
<p>When I tried joining my wireless network I had the stupidest issue I can imagine. The network connection utility kept telling my my password was wrong. I double and triple checked it. I even plugged in a wire and then copied and pasted the password from my router&#8217;s management screen. No dice. Ultimately I learned somewhere in the bowels of a newsgroup that when you are inputting a hex password you must prefix that password with a $ dollar sign as a signal to the connection gods that your password is in hex. What the&#8230;? That is the weirdest thing I have ever heard of. My mom would never have gotten that to work.</p>
<p>Next, Apple is making this great play with BootCamp, the revolutionary dual booting technology that Windows users have enjoyed for the last 10 years? Well anyway, what you don&#8217;t get with OSX is virtualization software. Or baked in remote desktop technology. Or 2 mouse pad buttons on the touchpad when right-click is a feature of the Apple OS (I simply don&#8217;t understand that one).</p>
<p>I can&#8217;t believe I am saying this, but I am getting the idea that it is cheaper to outfit a Windows machine with all the software you need. There is so darn much Windows software in the world, much of it open source or freeware. I could run all the same Java applications on both platforms, but I just have to have Visual Studio, Live Writer, Enterprise Architect, TextPad, and several other things that go along with the MS stack.</p>
<p>Non of this really matters, of course, because the reason I got this machine was to run Windows like a flaming pig runs downhill. Since Apple understandably pulled BootCamp from beta in preparation for the Leopard launch Friday I will have to tell you how that goes sometime next week. Once my Leopard upgrade arrives I will get Vista on here. Now there is some irony for you.</p>
<p>My last OSX comment of the day? This thing is prettier than a bag of redheads. I could get used to it if I&#8217;m not careful. After all, I can type ls on the command line for the first time since college.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/10/23/a-windows-guy-on-a-macbook-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Licensing for .Net Portal Frameworks</title>
		<link>http://elegantcode.com/2007/09/10/open-source-licensing-for-net-portal-frameworks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=open-source-licensing-for-net-portal-frameworks</link>
		<comments>http://elegantcode.com/2007/09/10/open-source-licensing-for-net-portal-frameworks/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 18:05:35 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=647</guid>
		<description><![CDATA[I am currently&#160;casting about for at open source web portal frameworks written in .Net. I would like my first concern to be the architecture&#160;of the UI plug-in modules, security providers, and data models. Unfortunately, it looks like my first concern must first be the license model of the software. To be fair, I am looking [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>I am currently&nbsp;casting about for at open source web portal frameworks written in .Net. I would like my first concern to be the architecture&nbsp;of the UI plug-in modules, security providers, and data models. Unfortunately, it looks like my first concern must first be the license model of the software. To be fair, I am looking to embed this software in a for-profit, redistributable, and re-branded application.</p>
<p>There is actually very little to complain about with free software even if it is <a href="http://www.dr-chuck.com/csev-blog/000217.html" target="_blank">free like a puppy</a>.</p>
<p>So, what license is the most conducive to an embedding scenario? I don&#8217;t know. I will have to get someone in legal to start to plow through these things, I think. Any feedback on your experiences would be most appreciated.</p>
<table cellspacing="0" cellpadding="2" width="400" border="1" unselectable="on">
<tbody>
<tr>
<td valign="top" width="122"><strong>Portal Framework</strong></td>
<td valign="top" width="522"><strong>License Information</strong></td>
</tr>
<tr>
<td valign="top" width="122">DotNetNuke</td>
<td valign="top" width="522">FreeBSD</td>
</tr>
<tr>
<td valign="top" width="122">Rainbow Portal</td>
<td valign="top" width="522">GNU General Public License (GPL)</td>
</tr>
<tr>
<td valign="top" width="122">Mojo</td>
<td valign="top" width="522">Common Public License (CPL)</td>
</tr>
<tr>
<td valign="top" width="122">Umbraco</td>
<td valign="top" width="522">MIT License</td>
</tr>
</tbody>
</table>
<p>Any other frameworks you suggest, by the way?</p>
<div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:ec8b3ed0-b1f3-4ccd-8414-2b1f5555f31f" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati Tags: <a href="http://technorati.com/tags/DNN" rel="tag">DNN</a>, <a href="http://technorati.com/tags/Mojo" rel="tag">Mojo</a>, <a href="http://technorati.com/tags/Umbraco" rel="tag">Umbraco</a>, <a href="http://technorati.com/tags/Rainbow%20Portal" rel="tag">Rainbow Portal</a>, <a href="http://technorati.com/tags/Open%20Source%20Software" rel="tag">Open Source Software</a></div>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/09/10/open-source-licensing-for-net-portal-frameworks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ReSharper Unit Testing</title>
		<link>http://elegantcode.com/2007/07/09/resharper-unit-testing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=resharper-unit-testing</link>
		<comments>http://elegantcode.com/2007/07/09/resharper-unit-testing/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 16:39:26 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://elegantcode.com/?p=611</guid>
		<description><![CDATA[Although there are attempts to make it work, ReSharper does not support using MSUnit as the unit testing framework within its&#160;unit testing&#160;support.&#160; Although I appreciate NUnit and the functionality advantages it has over MSUnit, it does seem an oversight to not support it in a product that is meant to ease the lives of the [...]]]></description>
			<content:encoded><![CDATA[<p>Although there <a href="http://www.jameskovacs.com/blog/IntroducingVstsUnitPluginForReSharper.aspx" target="_blank">are attempts</a> to make it work, <a href="http://www.jetbrains.com/resharper/" target="_blank">ReSharper</a> does not support using <a href="http://msdn2.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting(VS.80).aspx" target="_blank">MSUnit</a> as the unit testing framework within its&nbsp;unit testing&nbsp;support.&nbsp; Although I appreciate <a href="http://www.nunit.org/" target="_blank">NUnit</a> and the <a href="http://blogs.msdn.com/nnaderi/archive/2007/02/01/mstest-vs-nunit-frameworks.aspx" target="_blank">functionality advantages</a> it has over MSUnit, it does seem an oversight to not support it in a product that is meant to ease the lives of the Visual Studio user.</p>
<p>Is this Open Source snobbery?&nbsp; Is it scheduled for the next version? What&#8217;s the deal?</p>
<p>Hands down, the user experience of NUnit+ReSharper beats MSUnit (MSTest) + Visual Studio Test Runner.&nbsp; The one thing that I love being able to do with MSTest is not present in ReSharper (at least I haven&#8217;t found it); The ability to generate a test fixture class based on an a pre-existing class file.&nbsp; This is such a time saver and while not strictly TDD conformant it is very useful&nbsp;functionality.&nbsp; Let&#8217;s see some of that baked in for NUnit support.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2007/07/09/resharper-unit-testing/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

