Skip to main content

Microsoft in the Open-Source World


As we all know, the open-source project exists from the moment when the first line of code was written. In this post we will see what open-source meant for Microsoft in the past and what is the relationship between open-source community and Microsoft nowadays.

How everything started
The open-source community in one way or another appeared for the first time in 1950-1960. In those days, the code was usually written by researchers from universities, in colaboration with corporations. The IT industry was alone at the beginning and the accent was put on collaboration. Why? First of all, when a discovery was made, people tend to share it. In that period of time, people were open to collaboration and to share their ideas with the rest of the world. Also, each hardware device was different and if someone wanted to run an application on a different device he had to make some changes on the application. Because of this people used to share their code.
A good example of the collaboration is from 1960, when a lot of researchers worked to define the communication protocols. The output of this collaboration is the internet that we know nowadays. Officially, the internet appeared in 1969 through ARPANET (Advanced Research Projects Agency Network).
From 1970, applications began to be more and more complex. Different companies started to invest a lot of money in the software research and development of new software products. In time, this led to the appearance of new notions like license, trademark and copyright. Besides Microsoft, there were other companies that started to use licensing system. A good example is AT&T, that decided to make profit from UNIX system – and they started to sell it.

Open-Source and Microsoft before 2000
In the first part of the period, Microsoft had a rejection position. In 1970, Microsoft didn’t used to sustain open-source projects. From their perspective, open-source projects could not bring any kind of value or revenue. From their perspective, the quality and the performance of an open-source project was questionable.
In 1976, Bill Gates writes an essay about open-source. The name of this essay was “Open Letter to Hobbyists”, where the Altair BASIC community is indirectly attacked and people using software without license. From a corporation point of view, open-source represents a threat, especially from the financial perspective.   
With or without Microsoft, the open-source community goes forward and in 1983 they launch the GNU project. The scope of this project was to develop an open-source operation system that is free to everyone and without any kind of dependency to different companies. All the code would be open-source and anybody could change it and use it.
This project leads to a new form of licensing, because of the need to license open-source projects. In 1989, the GNU General Public License appears. After this different operating systems and products appeared under this kind of license.
In the last 20 years, a lot of open-source projects had a real success on the market. A perfect example is Apache. Also, around Netscape we have a pretty interesting story. At the beginning, Netscape was not an open-source project. After Netscape became open-source project, the code source was used for different projects. For example the Firefox browser and Thunderbird.
Meanwhile, Microsoft remains the enemy of open-source projects. The quality of the open-source projects is putted under question. In 1998 a series of articles named “Halloween Documents” appeared. In these articles, the open-source is seen as a bad thing and is compared to a cancer. During the years, there were a lot of lawsuits between Microsoft and different companies because of the patents.

Open-Source and Microsoft after 2000
After 2000, Microsoft position against open-source starts to change. With the entrance in the new era, Microsoft started to sustain and work at open-source projects – directly or indirectly. In the meantime a part of Microsoft projects become open-source.
A good example of collaboration between Microsoft and open-source community is related to Hiper-V. At this open-source project, Microsoft works on drivers. Another example is jQuery where Microsoft sustains the project and works directly with jQuery team.
A big change was made in 2006, when an open-source portal was launched by Microsoft. Codeplex is the name of the portal and during the years, it becomes an important site in the open-source world. The community of Codeplex is large and very active. This portal is used by Microsoft to publish their open source projects.
One year later, even if the relationships between open-source community and Microsoft were pretty tense, Microsoft launches two types of licenses for open-source:
  • ·  Microsoft Public License
  • ·        Microsoft Reciprocal License

This is the real turning point, when open-source projects are seen like something good, that can have a business potential and the quality of them is extremely good.
Date
Event
31 October 1998
A first memo appears under the name of „Halloween Memo”. Open-source is seen as a threat because of the licensing mode
May 2001
A message appears which gives the example of companies that had provide the source code hoping to earn some money and failed
June 2001
B. Gates describes the Generic Public License as Pac-Man-Like
June 2001
S. Ballmer says that if you write an open source operating system then you need to provide everything related to that project (source code, documentation etc.)
June 2005
S. Ballmer says that Microsoft works every day to carry out projects and doesn’t compete with movements (Linux and open source community)
June 2006
Codeplex is released
October 2007
Two license modes for open-source
Now
There are many open source projects supported by Microsoft
Tabel 1 Open-source și Microsoft

Open-source project developed by Microsoft
There are a lot of open-source projects that came from Microsoft world. We don’t talk about small projects. Projects like Entity Framework, ASP.NET MVC, ASP.NET Razor, ASP.NET Web API is open-source. Anybody can inspect this code. Every day, a new project that came from Microsoft world become open-source.

In the last period of time, there was some news announcing that Git will be integrated in IDE of Visual Studio. In this moment Git is consider one of the best and used source-control mechanism. People react in different ways, but what is important for Git is that more people will be able to use it. By this integration, Microsoft will need also to offer maintenance for Git. Because of this we could expect that bugs that are discover on Git to be resolved by Microsoft. The integration of Git in Visual Studio IDE was made some time ago. If we look over the check-ins that were made on Git, we can observe that name of Microsoft employees appear.
Another interesting project that has all the API documented and can be used by the open-source community is VM Depot. This is a service where people can share, rate and use different images of operating systems (including Linux).

Project Name
Description
Reactive Extension
Common interface for different data sources
(FB, Tweeter, NetFlix, GitHub, etc)
Reactive Extension
Allows working with different asynchronous data streams
Phone Gab, jQuery Mobile, SQLite, Senqua Touch
Different frameworks supported by Windows 8
SQL Server Connector for Apache Hadoop
Allows data transfer between SQL Server and Hadoop
EF, ASP.NET, MVC, WebPI
Well known frameworks have become open source
VM Depot
A catalog of virtual machines for Windows Azure
Type Script
Is a superset of JavaScript that complies to normal JavaScript.
Tabel 3 Open-source projects sustained by Microsoft

 

Microsoft Open Tech Hub
For an easier collaboration between Microsoft and the open source community, Microsoft Open Tech Hub appeared. In this hub there are people paid by Microsoft to contribute to open source projects. Through this hub they are hoping that people will be more involved, the communication between open-source community and Microsoft to be much better and easier and to facilitate the development of various standards.

We need to understand that open source doesn’t mean only sharing source code. It means more than that. In addition to the code share, information sharing is also important, perhaps even more important. We can have available the source code containing 20 million lines of code if there isn’t any documentation. Is exactly the same as having more than one assembly.  From this point of view, Microsoft is trying to bring value by providing not only the source code but also the documentation for it.

Conclusion
An open source project should be more than a source code you put on a server and share it. You need to provide documentation, support and be careful to be functional.
The future seems to be quite promising for the open source community. Microsoft has come to recognize the value the community and began to sustain it.
In conclusion we can say that until a few years ago open source didn’t existed for Microsoft, but now these things have changed enormously and in the future we might have some more surprises.



Comments

Popular posts from this blog

How to check in AngularJS if a service was register or not

There are cases when you need to check in a service or a controller was register in AngularJS.
For example a valid use case is when you have the same implementation running on multiple application. In this case, you may want to intercept the HTTP provider and add a custom step there. This step don’t needs to run on all the application, only in the one where the service exist and register.
A solution for this case would be to have a flag in the configuration that specify this. In the core you would have an IF that would check the value of this flag.
Another solution is to check if a specific service was register in AngularJS or not. If the service was register that you would execute your own logic.
To check if a service was register or not in AngularJS container you need to call the ‘has’ method of ‘inhector’. It will return TRUE if the service was register.
if ($injector.has('httpInterceptorService')) { $httpProvider.interceptors.push('httpInterceptorService&#…

ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded

Today blog post will be started with the following error when running DB tests on the CI machine:
threw exception: System.InvalidOperationException: The Entity Framework provider type 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' registered in the application config file for the ADO.NET provider with invariant name 'System.Data.SqlClient' could not be loaded. Make sure that the assembly-qualified name is used and that the assembly is available to the running application. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information. at System.Data.Entity.Infrastructure.DependencyResolution.ProviderServicesFactory.GetInstance(String providerTypeName, String providerInvariantName) This error happened only on the Continuous Integration machine. On the devs machines, everything has fine. The classic problem – on my machine it’s working. The CI has the following configuration:

TeamCity.NET 4.51EF 6.0.2VS2013
It seems that there …

Run native .NET application in Docker (.NET Framework 4.6.2)

Scope
The main scope of this post is to see how we can run a legacy application written in .NET Framework in Docker.

Context
First of all, let’s define what is a legacy application in our context. By a legacy application we understand an application that runs .NET Framework 3.5 or higher in a production environment where we don’t have any more the people or documentation that would help us to understand what is happening behind the scene.
In this scenarios, you might want to migrate the current solution from a standard environment to Docker. There are many advantages for such a migration, like:

Continuous DeploymentTestingIsolationSecurity at container levelVersioning ControlEnvironment Standardization
Until now, we didn’t had the possibility to run a .NET application in Docker. With .NET Core, there was support for .NET Core in Docker, but migration from a full .NET framework to .NET Core can be costly and even impossible. Not only because of lack of features, but also because once you…