Microsoft and Open Source

In a couple of weeks, I‘m participating in an internal “Presentation Idol”competition. It’s a contest of presentation skills against impressive competition (I can’t name names, but rest assured it’s a strong group) being judged by Microsoft executives (again, I can’t name names, but this time it’s because I don’t know who’s judging) in front of what I assume will be a large technical internal Microsoft audience. To top it off, we each only get three minutes and thirty three seconds each to deliver our presentations.

So yeah, no pressure.

The topic we’re all presenting is “What is the one thing we should do to improve Microsoft?” For those who know me, it should come as little surprise that I picked a variant of “more open source” for my presentation. More specifically, I’m planning to present the following:

  1. Any product Microsoft gives away for free should also be Open Source.
  2. Open Source Microsoft products should accept contributions from the community.

I realize that many people consider this separation between “source availability” and “community contributions” completely artificial. Sure, the accepted definition of Open Source only addresses the availability and distribution of source code, but most Open Source advocates consider the ability to collaborate and contribute – what Wikipedia calls “Commons-based peer production” – a critical aspect of Open Source. For example, with respect to the announcement that ASP.NET MVC would be released under the Ms-PL, Keith Elder tweeted:

“Giving someone your source code is NOT open source. So although Asp.Net MVC’s source code is out there for download, not open source.”

image

In what now seems like a huge coincidence, Keith and his co-host Chris “Woody” Woodruff interviewed me later that day for their podcast Deep Fried Bytes. As you might imagine, while we started with talking about IronPython, we eventually started discussing open source at Microsoft more generally. It was a great conversation, and we found lots of common ground.

Personally, I think Microsoft is making small steps in the right direction when it comes to Open Source. Not only have some high profile Microsoft projects go Open Source like ASP.NET MVC and MEF, but we’ve even started taking baby steps for including external intellectual property. Releasing ASP.NET MVC under Ms-PL is a big deal, but I think including jQuery “in the box” is a much, much bigger deal. It remains to be seen if it’s a one-time-only deal or if it’s a new trend inside Microsoft.

Obviously, I hope it’s a trend. Going from “include jQuery in ASP.NET” to “accept community contributions in ASP.NET” seems like a relatively achievable goal.

Now, here’s where I need your help.

I can easily fill three and a half minutes talking about Open Source community collaboration. But since my presentation is about taking contributions from the community, I decided to put my money where my mouth is and crowdsource it:

What is the elevator pitch *you* would make for including community contributions in Microsoft Open Source products?

Leave me a comment, send me an email, tweet it, whatever – I’ll be keeping an eye out for responses. Please remember that I only have three and a half minutes to present, so keep your ideas short and sweet.

The Lounge Survey

I just joined The Lounge advertising network so I wanted to pass along an opportunity to win a bunch of great technical books.

The Lounge is asking the readers of the blogs in their network to fill out a survey in order for them to improve how they target their advertising. It’s pretty much what you would expect from an advertising network focused on the .NET development platform: what language(s) do you use, what framework(s), what testing tool(s), etc, etc, etc. Takes like three minutes to fill out at most.

We all know that filling out surveys isn’t what most people consider “exciting” or “fun”. In order to incent you, dear Reader, to take a few minutes of your valuable time to fill out the survey, The Lounge is giving away all forty one of Manning’s “In Action” books, including IronPython In Action. Even if you don’t win, you still get 40% discount off any purchase from Manning.

So it’s up to you, a scant few minutes of your time in exchange for a chance to win enough technical books to keep you busy for months.

Joining the Lounge Advertising Network

For those of you who read this blog primarily via my RSS feed, I made a change to my homepage over the weekend. Goodbye adSense, hello The Lounge. The Lounge is an ad network run by James Avery’s company InfoZerk. I’ve known James for a while – he included my now-obsolete SccSwitch tool in his book Visual Studio Hacks.

From a financial perspective, I’m not really sure how much of a difference this will make. I guess I’ll see when I get my first check. Given how little I was making with adSense, I’ve got nowhere to go but up. Regardless, I feel much better working with a smaller ad network run by someone I respect and that is focused on the .NET platform.

Thanks for having me in the Lounge ad network, James.

PowerShell find-to-set-alias

I use Live Mesh to keep my PowerShell scripts folder synced between multiple machine. Some of those machines have different things installed on them or have things installed in different locations. For example, my laptop is x86 while my desktop is x64 so many things on the desktop get installed into c:\Program Files (x86) instead of the plain-old c:\Program Files folder. I wanted my shared profile script to be able to search a set of folders for a given executable to alias, and I came up with the following function.

function find-to-set-alias($foldersearch, $file, $alias)
{
  dir $foldersearch |
    %{dir $_ -Recurse -Filter $file} |
    %{set-alias $alias $_.FullName -scope Global; break}
}

It’s pretty simple to use. You pass in a folder search criteria – it must have a wildcard, or the function won’t work – the file you’re looking for and the alias you want to set. The function finds all the folders matching the $foldersearch criteria, then searches them recursively looking for the $file you specified. Set-alias is called for the first matching $file found – pipeline processing is halted via the break statement.

Here are the find-to-set-aliases I have in my profile:

find-to-set-alias 'c:\program files*\IronPython*' ipy.exe ipy
find-to-set-alias 'c:\program files*\IronPython*' chiron.exe chiron

find-to-set-alias 'c:\Python*' python.exe cpy

find-to-set-alias
    'c:program files*\Microsoft Visual Studio 9.0\Common7' devenv.exe vs
find-to-set-alias
    'c:program files*\Microsoft Visual Studio 9.0\Common7' tf.exe tf

find-to-set-alias 'c:\program files*\FSharp*' fsi.exe fsi
find-to-set-alias
    'c:\program files*\Microsoft Repository SDK*' ipad.exe ipad
find-to-set-alias
    'c:\program files*\Microsoft Virtual PC*' 'Virtual pc.exe' vpc

Python, IronPython and F# aliases, no surprise there. Chiron is the REPL server for dynamic language Silverlight development. Typically, I use Chris Tavares’ vsvars script to configure the command shell for development purposes, but I find it’s nice to have aliases for TF and DevEnv handy at all times.

DevHawk’s Inessential List of Tools

ilanchelian left a comment yesterday asking for me to share some of the utilities that I use sometimes. Of course, Scott Hanselman keeps *THE* ultimate list of tools, hence my titling this list as “inessential” (note, it’s the list that’s inessential, not the tools themselves.)

But since you asked, here are some of the things kicking around my utilities folder (in no particular order):