Microsoft har gjort en stor och lång resa ifrån stängd källkod till att numera ha sin utveckling inför öppna ridåer. Detta har naturligtvis inte endast varit en resa, utan flera, som har gjorts under en lång tid och i med många steg. Jag skulle vilja här beskriva en av dessa resor.

Detta är min egen tolkning av just denna resa och jag följer den via de fotsteg som jag kan se. Jag har alltså ingen egen insyn i de interna diskussionerna runt de vägval som har gjort under denna resas gång.

  1. Patterns & Practices

    Detta är en grupp inom Microsoft som skapades år 2000 för att möta de behov som utvecklare och arkitekter hade av att förstå hur man använder alla Microsofts olika produkter i sin systemutveckling. Microsoft hade vid den tiden ett problem med att det upplevdes som att de inte kunde ge klara besked hur man skulle göra någonting. Detta blev ett försök att “peka med hela handen”. Detta gjordes främst genom dokumentation och exempelkod.

    Flera viktiga Applikationsblock skapades och vissa av dem blev oerhört populära och använts fortfarande idag. Det mest kända är Enterprise Library som innehåller applikationsblocket Data Access Application Block. Ett annat populärt projekt ifrån dem var Prism (Composite Application Guidance for WPF). Detta projekt använde sig av en dependency injection container med namnet Unity, som Microsoft själva hade skrivit. Det som var nytt här är att man inte behövde använda just denna för dependency injection. Prism var byggt för att kunna använda andra, externa, om man så ville.

  2. Managed Extensiblility Framework (MEF)

    Med MEF kunde man skapa nya sätt att inympa ny funktionalitet i sitt program genom att bland annat endast lägga en kompilerad dll i ett speciellt bibliotek. Det nya med detta projekt var att källkoden fanns först ute för nedladdning innan det lades in i .NET och blev en del av den officiella produkten. En intressant sak att nämna här är att här kom problemet upp med vilken licens som detta ramverk hade. Från början var det licensen Microsoft Limited Public License (Ms-LPL), vilket endast gav rätten att köra koden på operativsystemet Windows (se punkt 2F i licensen). Detta ändrades efter en hel del kritik till följande licens: Microsoft Public License (Ms-PL), där inte 2F finns med.

  3. .NET Källkodsreferens

    2007 lanserade, i samband med Visual Studio 2008 och .NET 3.5, en källkodsreferens för stora delar av .NET. Detta för att dels kunna förstå vad som sker när man använder ramverket och dels för att kunna använda det vid felsökning. Källkoden blev öppen men man kunde inte göra något mer än att titta på den. Här är exempelvis källkoden för den ofta använda klassen StringBuilder.

  4. ASP.NET MVC

    ASP.NET, med Scott Guthrie i spetsen, verkar ofta ha varit i främsta ledet när det gäller open source. Det första riktigt stora försöket var när första versionen av ASP.NET MVC skapades. När han lanserade det projektet i oktober 2007 så anade man att något nytt var på gång. Det nya var att man bjöd in världen till att se hur produkten utvecklades. Man hade nog aldrig varit så tidig med att tala publikt om ett sådant stort projekt. I mars 2008 släppte man också källkoden för att man skulle kunna titta på den. Man hade definitivt med detta steg gått ifrån closed source till source open. Men kritiken kom fort. Detta är inte open source för att man bland annat inte tog emot kod ifrån andra utvecklare.

    Något annat viktigt som hände med ASP.NET MVC också var att Microsoft valde att inkludera i sina projektmallar externa open source projekt. Det mest kända är jQuery. Det uppmärksammades av flera orsaker: 1) Microsoft slutar att bygga egna konkurrerande ramverk om det redan finns något bra; 2) Blir en förebild för enterpriseföretag, att om Microsoft kan använda open source, så kan de göra det.

  5. ASP.NET 5

    Under försommaren 2014 började Microsoft prata om ASP.NET vNext och .NET Core. Vi fick se demonstrationer av väldigt tidiga versioner och till skillnad emot den gamla versionen av ASP.NET MVC fick vi tillgång till, inte bara källkod utan även all dokumentation och specifikationer av projektet. Det är två stora skillnader emot tidigare: 1) Microsoft släpper kod så tidigt att den kanske inte ens fungerar 2) Externa utvecklare kan ta en aktiv del i utvecklingen.

    I februari 2015 lanserade den offentliga versionen av ASP.NET vNext, nu ändrat till ASP.NET 5. Så här presenterar Scott Guthrie detta:

    ASP.NET 5 is an open source web framework for building modern web applications that can be developed and run on Windows, Linux and the Mac. It includes the MVC 6 framework, which now combines the features of MVC and Web API into a single web programming framework. ASP.NET 5 will also be the basis for SignalR 3 – enabling you to add real time functionality to cloud connected applications. ASP.NET 5 is built on the .NET Core runtime, but it can also be run on the full .NET Framework for maximum compatibility.

    Nu sker allt inför öppen ridå. Här är källkoden för ASP.NET 5 och för .NET Core. Här är också inspelning av ett arbetsmöte där man diskuterar .NET Core API:er.

     

    Det är en spännande tid vi lever i. En ny form av kreativitet och samarbete mellan utvecklare inom och utanför Microsoft håller på att skapas. Vi får se vad nästa steg blir.

     

    Qui vivra verra

    Den som lever får se