마이크로소프트와 오픈 소스

역사적으로 오픈 소스 소프트웨어 패러다임에 반대하는 것으로 알려졌던 기술 기업 마이크로소프트는 2010년대에 들어서 이 접근 방식을 수용하는 것으로 돌아섰다. 1970년대부터 2000년대까지 최고 경영자(CEO)인 빌 게이츠와 스티브 발머 치하에서 마이크로소프트는 나중에 자유-오픈 소스 소프트웨어로 알려지게 된 공동의 코드 생성 및 공유 공동체를 자신들의 사업에 대한 위협으로 간주했으며, 두 임원 모두 이에 대해 부정적으로 발언했다. 2010년대에 산업이 오픈 소스의 발전으로 동력을 얻는 기술인 클라우드 컴퓨팅, 임베디드 컴퓨팅, 모바일 컴퓨팅으로 전환됨에 따라, CEO 사티아 나델라는 마이크로소프트를 오픈 소스 채택으로 이끌었다. 비록 이 기간 동안 마이크로소프트의 전통적인 윈도우 사업이 계속 성장하여 2018년 3분기에 268억 달러의 매출을 기록했지만, 마이크로소프트의 애저 클라우드 매출은 거의 두 배로 증가했다.

마이크로소프트는 닷넷 프레임워크를 포함한 일부 코드를 오픈 소스화하고 리눅스 개발, 서버 기술, 그리고 리눅스 재단 및 오픈 소스 이니셔티브를 포함한 조직들에 투자했다. 리눅스 기반 운영체제는 회사의 애저 클라우드 서비스를 구동한다. 마이크로소프트는 2018년에 오픈 소스 프로젝트 인프라의 최대 호스트인 깃허브를 인수했다. 마이크로소프트는 이 사이트에서 가장 활발한 기여자 중 하나다. 이 인수로 인해 일부 프로젝트가 깃허브에서 떠나기도 했으나, 2019년까지 깃허브에 1,000만 명 이상의 새로운 사용자가 생기면서 이는 단기적인 현상임이 입증되었다.

2017년 이후 마이크로소프트는 세계에서 가장 큰 오픈 소스 기여자 중 하나이며, 이는 세계 최대의 소스 코드 호스트인 깃허브에서 오픈 소스 프로젝트에 적극적으로 기여하는 직원 수를 기준으로 측정된 것이다.

## 역사

### 오픈 소스에 대한 초기 입장

[섬네일|종이 테이프 위의 [Altair 8K BASIC. 1976년, 마이크로소프트 공동 창립자 빌 게이츠는 대가를 지불하지 않고 회사의 소프트웨어를 사용하는 대부분의 컴퓨터 취미가들에 대해 불만을 표했다.]]
컴퓨터 소스 코드를 자유롭게 공유하는 패러다임(현재 오픈 소스로 알려진 관행)은 중복 작업과 비용을 줄이기 위해 코드를 공유했던 초기 상업용 컴퓨터 사용자 그룹으로 거슬러 올라간다. IBM의 하드웨어와 소프트웨어를 분리하도록 강제한 반독점 소송 이후, 기업들이 자신들의 소프트웨어 제품을 보호하고자 했던 1970년대에 걸쳐 독점 소프트웨어 산업이 성장했다. 기술 기업 마이크로소프트는 이 시기에 설립되었으며, "자유 소프트웨어"나 "오픈 소스"라는 용어가 만들어지기 훨씬 전부터 독점 패러다임과 오픈 소스 관행 사이의 긴장 관계를 오랫동안 상징해 왔다. 마이크로소프트를 설립한 지 1년 이내에 빌 게이츠는 소프트웨어를 복제하는 취미가들의 행위를 절도의 일종으로 규정한 공개 서한을 썼다.

마이크로소프트는 부분적으로 회사의 마케팅 전략의 힘을 빌려 1990년대까지 개인용 컴퓨터와 기업용 서버 시장에서 성공적으로 확장했다. 1990년대 후반에 이르러 마이크로소프트는 성장하는 오픈 소스 운동을 자신들의 수익과 플랫폼에 대한 위협으로 간주하게 되었다. 할로윈 문서로 알려진 이 시기의 내부 전략 메모에는 오픈 소스의 기세를 멈추기 위한 회사의 잠재적인 접근 방식이 기술되어 있다. 한 가지 전략은 "포용, 확장, 말살"이었는데, 이는 마이크로소프트가 표준 기술을 채택하고 독점적인 확장을 추가한 다음, 고객 기반이 확보되면 소비자를 독점 확장에 가두어 해당 분야의 독점을 확고히 하는 방식이었다. 이 메모들은 또한 오픈 소스를 독점 개발 방법론에 필적하거나 능가할 수 있는 방법론으로 인정했다. 마이크로소프트는 이 메모들이 개별 직원의 의견일 뿐 마이크로소프트의 공식 입장은 아니라고 과소평가했다.

2000년대에 많은 대기업이 오픈 소스 소프트웨어를 활용하여 작업했지만, 이 시기는 마이크로소프트가 오픈 소스를 여전히 사업의 골칫거리로 간주하고 자유-오픈 소스 운동의 숙적으로 명성을 쌓으며 벌인 마이크로소프트와 오픈 소스 사이의 "다년생 전쟁"으로도 특징지어진다. 빌 게이츠와 마이크로소프트 CEO 스티브 발머는 자유 소프트웨어 개발자와 리눅스 커널이 공산주의적이라고 시사했다. 발머는 또한 리눅스를 지적 재산권의 암 같은 존재에 비유하기도 했다. 마이크로소프트는 마이크로소프트 윈도우 애플리케이션을 실행할 수 있는 리눅스 운영체제인 린도우즈(Lindows)를 상표권 침해로 고소했다. 법원은 이 주장을 기각했고, 마이크로소프트가 상표권을 매입한 후 이 소프트웨어는 이름을 린스파이어로 변경했다.

2002년, 마이크로소프트는 닷넷 프레임워크의 핵심인 공유 소스 공통 언어 인프라를 포함한 '공유 소스' 실험을 시작했다.

### 채택
#### 1990년대
1998년, 마이크로소프트는 MKS 툴킷을 기반으로 한 Services for UNIX (SFU)의 공개 베타 버전을 최소 하나 이상 출시했다. 여기에는 GPL 하에 라이선스된 일부 GNU 유틸리티가 포함되어 있었다. 마이크로소프트는 이러한 소프트웨어 구성 요소의 소스 코드와 라이선스를 다운로드할 수 있도록 제공함으로써 GPL 및 기타 오픈 소스 소프트웨어 (FLOSS) 라이선스가 부과하는 의무를 이행했다.

Services for UNIX (SFU) v1.0은 1999년 2월에 출시되었다.

#### 2000년대
2004년 4월, Windows Installer XML (WiX)는 커먼 퍼블릭 라이선스라는 오픈 소스 라이선스로 출시된 최초의 마이크로소프트 프로젝트가 되었다. 처음에 소스포지에서 호스팅되었으며, 외부에서 호스팅된 최초의 마이크로소프트 프로젝트이기도 했다.

2004년 6월, 독일에서 매년 열리는 자유 소프트웨어 박람회인 리눅스태그에 마이크로소프트가 처음으로 부스를 마련하여 참가했다. 리눅스태그는 유럽 최대의 오픈 소스 소프트웨어 전시회라고 자처한다.

2004년 8월, 마이크로소프트는 윈도우 템플릿 라이브러리 (WTL)의 전체 소스 코드를 커먼 퍼블릭 라이선스 하에 공개하고 소스포지를 통해 출시했다. 버전 9.1부터 이 라이브러리는 마이크로소프트 퍼블릭 라이선스 하에 라이선스된다.

2004년 9월, 마이크로소프트는 FlexWiki를 출시하고 소스 코드를 소스포지에 공개했다. 이 엔진은 오픈 소스이며 역시 커먼 퍼블릭 라이선스로 라이선스되었다. FlexWiki는 WiX와 윈도우 템플릿 라이브러리에 이어 소스포지를 통해 배포된 세 번째 마이크로소프트 프로젝트였다.

2005년, 마이크로소프트는 F 샤프 프로그래밍 언어를 아파치 라이선스 2.0 하에 출시했다.

2006년, 마이크로소프트는 마이크로소프트 플랫폼을 대상으로 하는 오픈 소스 개발자들에게 호스팅을 제공하기 위해 코드플렉스 오픈 소스 코드 호스팅 사이트를 개설했다. 같은 해 마이크로소프트는 PHP 라이선스 하에 PHP를 윈도우로 포팅했으며, 또한 Vertigo Software와 제휴 및 의뢰하여 자유-오픈 소스 가계도 프로그램인 Family.Show를 제작했다. 이는 당시 마이크로소프트의 최신 UI 기술 및 소프트웨어 전개 메커니즘인 윈도우 프레젠테이션 파운데이션과 클릭원스에 대한 참조 애플리케이션이었다. 소스 코드는 코드플렉스에 게시되었으며 마이크로소프트 퍼블릭 라이선스로 라이선스되었다.

[섬네일|마이크로소프트 CEO [스티브 발머]]
2006년 11월, 마이크로소프트와 노벨은 윈도우와 수세 리눅스 간의 상호 운용성을 보장하기 위한 광범위한 파트너십을 발표했다. 초기 계약은 2012년까지 유지되었으며, 특허에 대한 소송을 제기하지 않겠다는 약속과 함께 윈도우-리눅스 상호 운용성 솔루션의 공동 개발, 마케팅 및 지원이 포함되었다. 또한 마이크로소프트와 노벨은 자유 소프트웨어인 OpenOffice.org 생산성 제품군에서 작성된 문서가 오피스 2007에서 원활하게 작동하고 그 반대의 경우도 가능하도록 협력하기로 합의했다. 양사는 또한 오피스 오픈 XML과 오픈도큐먼트 형식 간의 상호 운용성을 개선하기 위한 변환기 개발에도 합의했다. 마이크로소프트는 또한 노벨로부터 70,000개의 1년 만기 수세 리눅스 엔터프라이즈 서버 유지 관리 및 업데이트 구독 쿠폰을 구입했다. 마이크로소프트는 고객들이 경쟁사의 리눅스 배포판 대신 노벨의 리눅스를 선택하도록 설득하기 위해 이 쿠폰을 고객들에게 배포할 수 있었다.

마이크로소프트 CEO 스티브 발머는 더 많은 고객이 혼합 시스템을 운영하고 있음을 인정하며 노벨과의 파트너십에 대해 다음과 같이 말했다.

2007년 6월, 리눅스 재단의 전 기술 이사였던 톰 한라한이 마이크로소프트의 리눅스 상호 운용성 이사가 되었다. 오픈 소스 이니셔티브는 2007년에 마이크로소프트 퍼블릭 라이선스(MS-PL)와 마이크로소프트 레시프로컬 라이선스(MS-RL)를 승인했다. 마이크로소프트는 2007년에 MS-PL 하에 IronRuby, IronPython, xUnit.net을 오픈 소스로 공개했다.

2008년, 마이크로소프트는 아파치 소프트웨어 재단에 가입했으며 구글, 페이스북, 썬, IBM, 아파치 등과 함께 오픈 웹 재단을 공동 설립했다. 또한 2008년에 마이크로소프트는 비주얼 스튜디오 개발 환경과 함께 ASP.NET AJAX 및 ASP.NET MVC 프레임워크 내에서 사용할 수 있도록 오픈 소스 JQuery 자바스크립트 라이브러리를 배포하기 시작했다.

2008년 마이크로소프트가 하이퍼-V를 출시했을 때, 수세 리눅스 엔터프라이즈 서버는 하이퍼-V에서 공식적으로 지원되는 최초의 비윈도우 운영체제가 되었다. 마이크로소프트와 노벨은 2년 전 상호 운용성 작업을 위한 계약을 체결한 바 있다.

마이크로소프트는 2009년부터 리눅스 커널에 처음으로 기여하기 시작했다. 마이크로소프트가 설립하고 주로 마이크로소프트 직원 및 관계자들이 이끄는 독립 비영리 법인인 코드플렉스 재단이 2009년 9월에 설립되었다. 그 목표는 "소프트웨어 기업과 오픈 소스 공동체 간의 코드 교환과 이해를 가능하게 하는 것"이었다. 이후 2010년 9월에 아우터커브 재단(Outercurve Foundation)으로 명칭을 변경했다.

2009년 11월, 마이크로소프트는 닷넷 마이크로 프레임워크의 소스 코드를 아파치 라이선스 2.0 하의 자유-오픈 소스 소프트웨어로 개발 공동체에 공개했다.

섬네일|파리에서 열린 Solutions Linux 2010에서 연설 중인 마이크로소프트 오픈 소스 기술 센터 이사 톰 한라한
원래 마이크로소프트의 독점 정적 코드 분석 도구였던 StyleCop은 2010년 4월 코드플렉스에서 오픈 소스로 재출시되었다. 고객 피드백을 바탕으로 마이크로소프트는 2010년 7월에 IronRuby, IronPython 및 동적 언어 런타임 (DLR)을 아파치 라이선스 2.0으로 재라이선스했다.

마이크로소프트는 줌라 기여자 계약에 서명하고 2010년부터 상류(upstream) 개선 사항을 기여하기 시작했다.

#### 2010년대
2011년, 마이크로소프트는 삼바 프로젝트에 코드를 기여하기 시작했다. 같은 해 마이크로소프트는 Node.js를 윈도우로 포팅하고 코드를 아파치 라이선스 2.0으로 상류에 기여했다. 비주얼 스튜디오용 파이썬 도구(PTVS)의 첫 번째 버전은 2011년 3월에 출시되었다. 2011년 스카이프를 인수한 후에도 마이크로소프트는 스카이프 리눅스 클라이언트를 계속 유지 관리했다. 2011년 7월, 마이크로소프트는 리눅스 3.0 커널의 전체 변경 사항 중 4%를 차지하며 다섯 번째로 큰 기여자가 되었다. 회사는 2011년 리눅스태그 행사의 파트너가 되었으며 2012년 행사도 후원했다.

2012년, 마이크로소프트는 애저 클라우드 컴퓨팅 서비스에서 리눅스 가상 머신 호스팅을 시작했고 코드플렉스는 깃 지원을 도입했다. 회사는 또한 아파치 하둡을 윈도우로 포팅하여 MIT 허가서로 코드를 상류에 기여했다. 2012년 3월, 완전히 재작성된 버전의 ChronoZoom이 아우터커브 재단을 통해 오픈 소스로 공개되었다. 또한 ASP.NET, ASP.NET MVC, ASP.NET Razor, ASP.NET Web API, Reactive extensions, 그리고 IL에서 자바스크립트로의 컴파일러인 IL2JS가 아파치 라이선스 2.0으로 출시되었다. 타입스크립트 프로그래밍 언어는 2012년에 아파치 라이선스 2.0으로 출시되었으며, 이는 깃허브에서 호스팅된 최초의 마이크로소프트 프로젝트였다. 2012년 6월, 마이크로소프트는 "표준 기반 관리를 구현하는 데 방해가 되는 모든 장애물을 제거하여 전 세계의 모든 장치가 명확하고 일관되며 통일된 방식으로 관리될 수 있도록 하고, 표준 기반 관리 제품의 풍부한 생태계를 육성하고 박차를 가하겠다"는 목표로 오픈 그룹에 Open Management Infrastructure를 기여했다.

2013년, 마이크로소프트는 닷넷 프레임워크용 유닛 테스트 도구인 xUnit.net을 아파치 라이선스 2.0으로 재라이선스하고 아우터커브 재단으로 이전했다. 또한 2013년 마이크로소프트는 가장 널리 보급된 깃 버전인 libgit2를 사용하여 비주얼 스튜디오와 Team Foundation Server에 깃 지원을 추가했다. 회사는 libgit2의 추가 개발을 돕기 위해 엔지니어링 시간을 투입하고 있으며, 이 소프트웨어에 시간을 할애하는 깃허브 및 기타 공동체 프로그래머들과 협력하고 있다.

[right|섬네일|2014년 마이크로소프트 CEO [사티아 나델라]]
2014년, 사티아 나델라가 마이크로소프트의 새로운 CEO로 임명되었다. 마이크로소프트는 핵심 사업에 오픈 소스를 채택하기 시작했다. 발머의 입장과 대조적으로 나델라는 "Microsoft loves Linux"라고 적힌 슬라이드를 선보였다. 깃허브 인수 당시 나델라는 마이크로소프트에 대해 "우리는 오픈 소스에 올인했다"라고 말했다. 산업이 클라우드 컴퓨팅, 임베디드 컴퓨팅, 모바일 컴퓨팅으로 흐르면서, 마이크로소프트는 이러한 오픈 소스가 지배적인 분야에서 속도를 맞추기 위해 오픈 소스로 눈을 돌렸다. 마이크로소프트의 오픈 소스 채택은 여러 가지 놀라운 반전을 포함했다.

[섬네일|[모노 (소프트웨어)|모노 및 자마린 프로젝트의 창립 멤버이자 닷넷 재단의 이사회 위원인 미겔 데 이카사]]
2014년, 회사는 소프트웨어 생태계를 촉진하고 교차 플랫폼 개발을 활성화하기 위해 닷넷 프레임워크의 소스를 공개했다. 마이크로소프트는 또한 같은 해에 OpenJDK에 기여하기 시작했다. 2014년에 출시된 무선 디스플레이 어댑터는 임베디드 리눅스를 사용한 마이크로소프트의 첫 번째 하드웨어 장치였다.

2015년 초, 마이크로소프트는 교차 플랫폼 충족 가능성 모듈 이론(SMT) 솔버인 Z3 Theorem Prover를 오픈 소스화했다.

또한 2015년에 마이크로소프트는 Node.js 재단을 공동 설립했으며 R 재단에 가입했다. 2015년에 Revolution Analytics 인수를 완료한 후, 마이크로소프트는 오픈 소스 R 프로그래밍 언어를 SQL 서버 2016, 2017, 2019, 파워 BI, 애저 SQL 매니지드 인스턴스, 애저 코르타나 인텔리전스, Microsoft ML Server 및 비주얼 스튜디오 2017에 통합했다.

같은 해 마이크로소프트는 법률 실무 관리 소프트웨어인 Matter Center와 당시 마이크로소프트 엣지의 자바스크립트 엔진이었던 차크라를 오픈 소스화했다. 또한 2015년에 마이크로소프트는 오픈 소스 AllJoyn 프레임워크를 기본적으로 지원하는 윈도우 10을 출시했는데, 이는 모든 윈도우 10 장치가 네트워크의 AllJoyn 인식 사물인터넷(IoT) 장치를 제어할 수 있음을 의미한다. 마이크로소프트는 2014년부터 AllJoyn 지원을 개발하고 상류에 코드를 기여해 왔다.

마이크로소프트는 2015년 All Things Open 기조연설에서 다음과 같이 밝혔다.

2015년 8월, 마이크로소프트는 오브젝티브-C로 개발된 iOS 앱을 윈도우 10으로 포팅할 수 있게 해주는 오픈 소스 미들웨어 툴킷인 WinObjC(Windows Bridge for iOS로도 알려짐)를 출시했다. 2015년 11월 18일, 비주얼 스튜디오 코드가 독점 마이크로소프트 라이선스로 출시되었으며, 그 소스 코드의 하위 집합이 MIT 허가서로 깃허브에 게시되었다.

섬네일|2016년 깃허브에서 가장 많은 오픈 소스 기여자를 보유한 10개 조직
2016년 1월, 마이크로소프트는 주요 컨벤션인 제14회 연례 남가주 리눅스 엑스포(SCALE 14x)의 골드 스폰서가 되었다.

2016년 마이크로소프트가 자마린과 링크드인을 인수했을 때, 모노 프레임워크를 MIT 허가서로 재라이선스하고 오픈 소스로서 카프카 스트림 프로세싱 소프트웨어 플랫폼의 유지 관리를 계속했다. 또한 2016년 마이크로소프트는 리눅스 애플리케이션을 윈도우 운영체제에서 실행할 수 있게 해주는 리눅스용 윈도우 하위 시스템을 도입했다. 회사는 교차 플랫폼 호환성을 촉진하고 오픈 소스 기업 및 공동체와의 협력을 위해 리눅스 서버 기술과 리눅스 개발에 투자했으며, 이는 마이크로소프트의 리눅스 재단 플래티넘 후원과 이사회 의석 확보로 정점을 찍었다.

마이크로소프트는 SQL 서버와 현재 오픈 소스가 된 리눅스용 파워셸을 출시했다. 또한 마이크로소프트는 ProcDump와 ProcMon을 포함한 Sysinternals 도구들을 리눅스로 포팅하기 시작했다. 비주얼 스튜디오용 R 도구는 2016년 3월 아파치 라이선스 2.0으로 출시되었다.

2016년 3월, 발머는 후임자 사티아 나델라의 오픈 소스 노력을 지지한다며 리눅스에 대한 자신의 입장을 바꿨다. 그는 2001년의 발언이 당시에는 옳았지만 시대가 변했다고 주장했다.

평론가들은 마이크로소프트의 오픈 소스 채택과 전략 변화에 주목했다.

2016년 3월 EclipseCon에서 마이크로소프트는 솔루션 멤버로 이클립스 재단에 가입한다고 발표했다.

BitFunnel 검색 엔진 색인 알고리즘과 마이크로소프트 빙 검색 엔진의 다양한 구성 요소가 2016년 마이크로소프트에 의해 오픈 소스로 공개되었다. 교차 플랫폼 오픈 소스 패키지 관리자인 vcpkg가 2016년 9월에 출시되었다.

마이크로소프트는 2017년에 오픈 소스 이니셔티브, 클라우드 네이티브 컴퓨팅 재단, 그리고 MariaDB 재단에 가입했다. 이전에 마이크로소프트의 공격 대상이었던 오픈 소스 이니셔티브는 마이크로소프트의 후원을 오픈 소스 소프트웨어의 광범위한 수용에 대한 이정표로 삼았다.

데비안 기반 네트워크 운영체제인 SONiC은 2017년 마이크로소프트에 의해 오픈 소스화되었다.

또한 같은 해에 윈도우 개발 과정이 깃으로 옮겨졌으며, 마이크로소프트는 그 목적으로 개발된 Git Virtual File System(GVFS)을 오픈 소스화했다. 깃에 대한 다른 기여로는 대규모 저장소에서 작업할 때 유용한 다수의 성능 개선 사항이 포함되어 있다. 마이크로소프트는 마이크로소프트 스토어를 오픈 소스 애플리케이션에 개방하고 로스앤젤레스에서 열린 2017 오픈 소스 서밋 북미 행사에서 기조연설을 했다.

2018년 마이크로소프트의 데이터 부문 CTO는 ZDNet과의 인터뷰에서 오픈 소스의 중요성이 커지고 있음을 다음과 같이 밝혔다.

마이크로소프트는 플래티넘 스폰서가 되었으며 북미 최대의 공동체 운영 오픈 소스 및 자유 소프트웨어 컨퍼런스인 2018 남가주 리눅스 엑스포의 기조연설을 맡았다.

마이크로소프트는 애저 클라우드 서비스와 함께 사용할 리눅스 기반 운영체제를 개발했다. Azure Cloud Switch는 애저 인프라를 지원하며 오픈 소스 및 독점 기술을 기반으로 하고, Azure Sphere는 사물인터넷 장치를 구동한다. 발표의 일부로 마이크로소프트는 전체 윈도우 운영체제가 불필요한 소형 장치에서 리눅스의 역할을 인정했다.

[섬네일|세계 최대의 [소스 코드 호스트인 마이크로소프트 자회사 깃허브의 전 CEO 냇 프리드먼]]
[섬네일|중국에서 열린 LinuxCon 2018에서 연설 중인 마이크로소프트의 선임 소프트웨어 엔지니어이자 [헬름 (소프트웨어)|Helm을 포함한 쿠버네티스 생태계 오픈 소스 프로젝트의 핵심 유지 관리자인 미셸 누랄리. 누랄리는 쿠버네티스 운영 위원회 위원으로 활동하고 있다.]]
[섬네일|중국 베이징에서 열린 LinuxCon 2018의 [마이크로소프트 애저 부스]]
또한 2018년에 마이크로소프트는 오픈 소스 프로젝트 인프라의 최대 호스트인 깃허브를 인수했다. 마이크로소프트는 이 사이트의 가장 활발한 기여자 중 하나이며, 이 사이트에는 마이크로소프트의 비주얼 스튜디오 코드와 닷넷 런타임 시스템의 소스 코드가 호스팅되어 있다. 그러나 GPL 허가서로 인해 마이크로소프트가 내부용 리눅스 소스 코드를 수정하고 그 변경 사항을 공유하지 않아도 된다는 점 때문에 리눅스 공동체에 제한적인 환원만 한다는 비판을 받기도 했다.

2018년 마이크로소프트는 윈도우에 오픈SSH, tar, 그리고 CURL 명령어를 포함했다. 또한 마이크로소프트는 깃허브에 윈도우 계산기를 MIT 허가서로 오픈 소스화하여 출시했다.

2018년부터 마이크로소프트는 AdoptOpenJDK 프로젝트의 후원사가 되었다. 이는 오라클의 자바/JDK를 대체할 수 있는 제품이다.

2018년 4월, 마이크로소프트는 MIT 허가서 하에 윈도우 3.x/윈도우 NT 파일 관리자 소스 코드를 공개했다. 2018년 8월, 마이크로소프트는 파워 BI에 오픈 소스 파이썬 프로그래밍 언어에 대한 지원을 추가했다. 2018년 10월, 마이크로소프트는 오픈 인벤션 네트워크에 가입하고 오픈 소스 공동체와 60,000개의 특허를 교차 라이선스했다.

2019년, 마이크로소프트의 리눅스용 윈도우 하위 시스템 2는 에뮬레이션된 리눅스 커널에서 가상 머신 내의 전체 리눅스 커널로 전환되어 프로세서 성능을 크게 향상시켰다. GPL 오픈 소스 라이선스에 따라 마이크로소프트는 커널 개선 사항을 마스터 공개 릴리스에 통합하기 위해 제출할 예정이다.

또한 2019년에 마이크로소프트는 윈도우 터미널, PowerToys, 그리고 마이크로소프트 C++ 표준 라이브러리를 오픈 소스로 출시했으며 엣지 브라우저를 오픈 소스 크로미엄 기반으로 전환했다. 윈도우 콘솔 인프라는 윈도우 터미널과 함께 MIT 허가서 하에 오픈 소스화되었다.

ExFAT을 공개 사양으로 게시한 후, 마이크로소프트는 특허를 오픈 인벤션 네트워크(OIN)에 기여하고 장치 드라이버를 리눅스 커널에 상류 기여하기 시작했다.

빌드 2019에서 마이크로소프트는 Q# 컴파일러와 시뮬레이터를 포함한 양자 개발 툴킷(Quantum Development Kit)을 오픈 소스화한다고 발표했다.

2019년 12월, 마이크로소프트는 리눅스용 마이크로소프트 팀즈를 출시했다. 이는 마이크로소프트가 리눅스 운영체제용으로 마이크로소프트 오피스 앱을 출시한 첫 번째 사례였다. 이 앱은 .deb 및 .rpm 형식의 기본 패키지로 제공된다. 또한 2019년 12월, JS 재단과 Node.js 재단이 합병하여 OpenJS 재단을 형성한 후, 마이크로소프트는 인기 있는 교차 플랫폼 데스크톱 애플리케이션 개발 도구인 일렉트론을 OpenJS 재단에 기여했다.

#### 2020년대
메모리 안전 연구용 프로그래밍 언어인 Project Verona가 2020년 1월 오픈 소스화되었다. 마이크로소프트는 2020년 2월 PyTorch용 오픈 소스 딥 러닝 최적화 라이브러리인 DeepSpeed를 출시했다.

2020년 마이크로소프트는 마이크로소프트 SQL 서버용 자바 확장 프로그램, MsQuic (윈도우 NT 커널용 범용 전송 계층 네트워크 프로토콜 QUIC 라이브러리), 딥 러닝을 위한 신경망 구조 탐색 알고리즘인 Project Petridish, 그리고 분산된 실시간 협업 웹 애플리케이션을 구축하기 위한 Fluid Framework를 오픈 소스화했다. 마이크로소프트는 또한 리눅스 기반의 Azure Sphere 운영체제를 출시했다.

2020년 3월, 마이크로소프트는 오픈 소스 Node 패키지 관리자인 npm을 인수했다. 이는 매달 750억 건의 다운로드를 기록하는 130만 개 이상의 패키지를 보유한 세계 최대의 소프트웨어 등록부다. 또한 2020년 3월, 마이크로소프트는 Allen Institute for AI, Chan Zuckerberg Initiative, 조지타운 대학교의 보안 및 신흥 기술 센터, 그리고 미국 국립 의학 도서관의 연구원 및 지도자들과 함께 COVID-19 및 코로나19 범유행 관련 연구에 관한 학술 논문의 공개 데이터 세트인 CORD-19를 출시했다. 이 데이터 세트는 현재 연구 문헌의 텍스트 마이닝을 통해 생성된다.

초콜리티(Chocolatey), Scoop, Ninite를 포함한 다양한 상업용 및 오픈 소스 패키지 관리자 팀 및 AppGet, Npackd, 파워셸 기반 OneGet 패키지 관리자 등과 대안 옵션을 검토하고 논의한 후, 마이크로소프트는 2020년에 오픈 소스 윈도우 패키지 관리자를 개발하고 출시하기로 결정했다.

마이크로소프트는 X.Org 개발자 컨퍼런스 2020 (XDC2020)의 실버 스폰서 중 하나였다. 마이크로소프트의 여러 개발자가 개막일에 발표를 진행했다.

마이크로소프트는 2020년 6월 ARM용 윈도우 10 장치를 위한 자바 OpenJDK 포팅의 1단계를 완료했다.

2020년 8월, 마이크로소프트는 오픈 소스 소프트웨어 보안을 개선하기 위한 협력적 노력을 위한 교차 산업 포럼인 오픈 소스 보안 재단(OpenSSF)의 창립 멤버가 되었다.

2020년 9월, 마이크로소프트는 리눅스 커널을 탑재한 안드로이드 기반 스마트폰인 서피스 듀오를 출시했다. 같은 달, 마이크로소프트는 소프트웨어 버그 탐지를 자동화하는 자체 호스팅 퍼징 서비스 플랫폼인 OneFuzz를 출시했다. 이는 윈도우와 리눅스를 지원한다.

마이크로소프트는 크로미엄 프로젝트의 주요 기여자이며, 구글을 제외한 모든 기여자 중 마이크로소프트의 비중이 가장 높다(35.2%). 2020년 소스 코드에 대한 구글 이외의 모든 커밋 중 29.4%를 기여했다. 마이크로소프트의 리눅스 시스템 그룹이 에지 네트워크 서비스용 및 마이크로소프트 애저 클라우드 인프라의 일부로 개발한 리눅스 기반 클라우드 인프라 운영체제인 CBL-Mariner는 2020년에 오픈 소스화되었다.

2021년 2월, 마이크로소프트는 자사의 Extensible Storage Engine (ESE) 소스 코드를 MIT 허가서 하에 깃허브에서 사용할 수 있게 했다. 또한 2021년 2월, 마이크로소프트는 다른 4개의 창립 기업(AWS, 화웨이, 구글, 모질라)과 함께 오픈 소스 러스트 프로그래밍 언어와 생태계를 관리하기 위한 독립 비영리 조직인 러스트 재단을 설립했다. 2021년 3월, 마이크로소프트는 자유 오픈 소스 자바 런타임을 장려하는 것을 목표로 하는 새로운 Eclipse Adoptium Working Group의 창립 멤버가 되었다. 마이크로소프트는 2021년 4월에 Microsoft Build of OpenJDK 프리뷰를 출시했다. 이는 윈도우의 x64 서버 및 데스크톱 버전뿐만 아니라 리눅스와 MacOS에서도 사용할 수 있다. 회사는 이 OpenJDK 배포판에 대해 장기 지원을 제공한다. 2021년 4월, 마이크로소프트는 또한 리눅스용 윈도우 하위 시스템 2를 사용하여 리눅스 그래픽 사용자 인터페이스(GUI) 앱을 실행할 수 있는 기능을 포함한 윈도우 10 테스트 빌드를 출시했다. 다음 달, 마이크로소프트는 버클리 패킷 필터가 윈도우에서 작동하도록 하는 오픈 소스 프로젝트를 시작했다.

2021년 6월 윈도우 11 발표 행사에서 마이크로소프트는 안드로이드 오픈 소스 프로젝트(AOSP)를 지원하고 사용자가 윈도우 데스크톱에서 안드로이드 앱을 실행할 수 있도록 하는 새로운 Windows Subsystem for Android (WSA)를 선보였다.

2021년 8월, 마이크로소프트는 파트너십을 확장하여 이클립스 재단의 전략 멤버(Strategic Member)가 되었다고 발표했다.

마이크로소프트는 한 달 전 트위터 사용자 Foone의 요청에 따라 2022년 5월 MIT 허가서 하에 3D Movie Maker의 소스 코드를 공개했다. 또한 5월에 마이크로소프트는 XDP 공동체에 합류하고 윈도우용 새로운 오픈 소스 Express Data Path 인터페이스를 출시했다.

2022년 8월, 마이크로소프트는 제작자들이 3D 이모지를 리믹스하고 맞춤화할 수 있도록 1,500개 이상의 이모지를 오픈 소스화했다. 이 라이브러리는 Figma와 깃허브에서 사용할 수 있다.

2025년 5월 18일, 마이크로소프트는 현대 윈도우 버전을 위해 러스트 프로그래밍 언어로 작성된 MS-DOS 편집기의 오픈 소스 재현물인 Microsoft Edit을 출시했다.

## 오픈 소스 조직 지원
마이크로소프트는 다수의 오픈 소스 관련 조직 및 이니셔티브의 창립 멤버, 가입 멤버, 기여 멤버 및 후원사다. 예시는 다음과 같다.

## 주요 제품
* 닷넷 – 윈도우, 리눅스 및 MacOS 운영체제용 관리 코드 소프트웨어 프레임워크
* 닷넷 컴파일러 플랫폼 (로슬린) – C 샤프 및 비주얼 베이직 닷넷 프로그래밍 언어용 컴파일러 및 코드 분석 API
* .NET Gadgeteer – 소형 전자 기기 구축을 위한 신속 프로토타이핑 표준
* .NET MAUI – 교차 플랫폼 UI 툴킷
* 닷넷 마이크로 프레임워크 – 자원 제한 장치용 닷넷 프레임워크 플랫폼
[섬네일|[3D Movie Maker]]
* 3D Movie Maker – 3차원 컴퓨터 그래픽스를 사용하여 영화를 제작하기 위해 마이크로소프트 자회사인 Microsoft Kids에서 개발한 어린이용 컴퓨터 프로그램
* AirSim – AI 연구 플랫폼으로 구축된 드론, 자동차 및 기타 물체용 시뮬레이터
* Allegiance – 실시간 전략 게임과 플레이어가 조종하는 우주 전투 시뮬레이터 게임플레이가 혼합된 다인용 온라인 게임
* ASP.NET – 동적 웹 애플리케이션 및 서비스를 구축하기 위해 개발된 웹 애플리케이션 프레임워크
* ASP.NET AJAX – 개발자가 비동기식 대화형 웹 애플리케이션을 만들 수 있게 해주는 ASP.NET용 확장 세트
* ASP.NET Core – 현대적인 웹 애플리케이션 및 서비스를 구축하기 위해 개발된 오픈 소스, 교차 플랫폼 프레임워크
* ASP.NET MVC – 모델-뷰-컨트롤러(MVC) 아키텍처 패턴을 따르는 웹 애플리케이션 프레임워크
* ASP.NET Razor – 웹 페이지 생성을 위해 ASP.NET에서 사용되는 마크업 구문
* ASP.NET 웹 폼 – 컴포넌트 기반 접근 방식을 활용하여 개발자가 동적 웹사이트를 구축할 수 있게 해주는 웹 애플리케이션 프레임워크
[섬네일|[윈도우 10에서 프로젝트가 열려 있는 아톰 문서 편집기 및 소스 코드 편집기]]
* 아톰 – MacOS, 리눅스, 마이크로소프트 윈도우용 문서 편집기 및 소스 코드 편집기
* Babylon.js – HTML5를 통해 웹 브라우저에서 3차원 컴퓨터 그래픽스를 표시하기 위해 자바스크립트 라이브러리를 사용하는 실시간 3D 엔진
* BitFunnel – 서명 기반 검색 엔진
* 블레이저 – 개발자가 C 샤프와 HTML을 사용하여 웹 앱을 만들 수 있게 해주는 웹 프레임워크
* Bosque – 함수형 프로그래밍 언어
* C++/WinRT – 현대적인 윈도우 API에 대한 액세스를 제공하도록 설계된 마이크로소프트의 윈도우 런타임 플랫폼용 C++ 라이브러리
* C 샤프 – 강한 타입 체계, 어휘적 범위, 명령형 프로그래밍, 선언형 프로그래밍, 함수형 프로그래밍, 제네릭 프로그래밍, 객체 지향 프로그래밍(클래스 기반), 그리고 컴포넌트 지향 프로그래밍 분야를 포괄하는 범용 다중 패러다임 프로그래밍 언어
* CBL-Mariner – 리눅스 기반 클라우드 인프라 운영체제
* ChakraCore – 자바스크립트 엔진
* ChronoZoom – 대폭발부터 현재까지의 시간을 가능한 한 넓은 규모로 시각화하는 프로젝트
* CLR Profiler – 닷넷 프레임워크용 메모리 프로파일러
* Conference XP – 화상 회의 플랫폼
* Dafny – C 샤프를 대상으로 하며 선행 조건, 후행 조건, 루프 불변성 및 루프 변형을 통한 형식 검증을 지원하는 명령형 프로그래밍 컴파일 언어
* Dapr – 클라우드 네이티브 및 서버리스 컴퓨팅을 지원하도록 설계된 이벤트 중심의 휴대용 런타임 시스템
* DeepSpeed – PyTorch용 딥 러닝 최적화 라이브러리
* 디투어스 – 마이크로소프트 윈도우에서 바이너리 기능을 가로채고 모니터링하며 계측하기 위한 C++ 라이브러리
[섬네일|[DiskSpd]]
* DiskSpd – 컴퓨터 파일, 디스크 파티션 또는 기억 장치에 대해 다양한 요청을 생성하는 스토리지 벤치마킹용 명령줄 도구
* 동적 언어 런타임 – CLR 위에서 실행되며 동적 언어를 위한 컴퓨터 언어 서비스를 제공하는 런타임
* 윈도우용 eBPF – 커널 내부의 적시 컴파일을 통해 사용자 정의 64비트 RISC 유사 아키텍처를 실행하도록 설계된 레지스터 기반 가상 머신
* Extensible Storage Engine – 트랜잭션 데이터 업데이트 및 검색을 제공하는 ISAM 데이터베이스 엔진
* F* – ML에서 영감을 얻고 프로그램 검증을 목표로 하는 함수형 프로그래밍 언어
* F 샤프 – 함수형 프로그래밍, 명령형 프로그래밍, 그리고 객체 지향 프로그래밍 방식을 포괄하는 범용의 강한 타입 체계 및 다중 패러다임 프로그래밍 언어
* 파일 관리자 – 마이크로소프트 윈도우용 파일 관리자
* Fluid Framework – 애플리케이션 간 실시간 협업을 위한 플랫폼
* FourQlib – FourQ 타원곡선의 참조 구현
* GW 베이직 – 베이직 프로그래밍 언어의 방언
* 마이크로소프트 C++ 표준 라이브러리 – C++ 표준 라이브러리(STL로도 알려짐)의 구현체
* Microsoft Edit – TUI 문서 편집기
[섬네일|[리눅스, MacOS, 윈도우용 MonoDevelop 통합 개발 환경]]
* Mixed Reality Toolkit – 혼합 현실(MR) 및 증강 현실(AR) 소프트웨어 애플리케이션 개발을 위한 소프트웨어 개발 키트(SDK)
* MonoDevelop – 리눅스, MacOS 및 윈도우용 통합 개발 환경
* MSBuild – 네이티브 C++ 코드뿐만 아니라 관리 코드를 위한 빌드 도구 세트
* MsQuic – IETF QUIC 프로토콜의 구현체
* Neural Network Intelligence – AutoML 툴킷
* npm – 자바스크립트 프로그래밍 언어용 패키지 관리자
* OneFuzz – 교차 플랫폼 퍼즈 테스트 프레임워크
* Open Live Writer – 데스크톱 블로깅 애플리케이션
* Open Management Infrastructure – CIM 관리 서버
* 오픈 XML SDK – 프로그래밍 방식으로 오피스 오픈 XML 파일을 생성하고 조작하기 위한 관리 코드 라이브러리 세트
* Orleans – 닷넷 프레임워크를 기반으로 확장 가능하고 견고한 분산 애플리케이션을 구축하기 위한 교차 플랫폼 소프트웨어 프레임워크
* P – 비동기 사건 기반 프로그래밍 및 IoT를 위한 프로그래밍 언어
[섬네일|[우분투에서의 리눅스용 파워셸]]
* 파워 Fx – 마이크로소프트 파워 플랫폼 전반에서 로직을 표현하기 위한 로우코드, 범용 프로그래밍 언어
* 파워셸 – 명령줄 셸 및 스크립트 언어
* 프로세스 모니터 – 모든 파일 시스템 활동을 실시간으로 모니터링하고 표시하는 도구
* ProcDump – CPU 급증 시 충돌 덤프를 생성하기 위한 명령줄 애플리케이션
* Project Mu – 마이크로소프트 서피스 및 하이퍼-V 제품에 사용되는 UEFI 코어
* Project Verona – 실험적인 메모리 보안 연구용 프로그래밍 언어
* 윈도우 10용 파워토이 – 파워 유저를 위한 시스템 유틸리티
* ReactiveX – 데이터가 동기인지 비동기인지에 관계없이 데이터 시퀀스에 대해 명령형 프로그래밍 언어가 작동할 수 있도록 하여 반응형 프로그래밍을 구현하는 도구 세트
* RecursiveExtractor – C#으로 작성된 압축 파일 추출 라이브러리
* 샌드캐슬 – 문서 생성기
* StyleCop – C# 코드가 권장되는 코딩 스타일 및 닷넷 프레임워크 설계 지침의 하위 집합을 준수하는지 확인하는 정적 코드 분석 도구
[섬네일|[윈도우 터미널]]
* 윈도우 터미널 – 단말 에뮬레이터
* 타입스크립트 – 자바스크립트와 유사하며 깃허브에서 가장 인기 있는 프로그래밍 언어 중 하나
* U-Prove – 사용자 중심 ID 관리를 위한 교차 플랫폼 기술 및 관련 SDK
* vcpkg – 타사 라이브러리의 획득 및 설치를 단순화하는 데 사용되는 교차 플랫폼 패키지 관리자
* VFS for Git – 깃 버전 관리 시스템에 대한 가상 파일 시스템 확장
* 비주얼 베이직 닷넷 – 다중 패러다임, 객체 지향 프로그래밍 프로그래밍 언어
* 비주얼 스튜디오 코드 – 윈도우, 리눅스 및 MacOS용 소스 코드 편집기 및 디버거이자 깃허브 최고의 오픈 소스 프로젝트
* VoTT (Visual Object Tagging Tool) – 이미지 주석 및 레이블링을 위한 일렉트론 앱
[섬네일|[Vowpal Wabbit]]
* Vowpal Wabbit – 온라인 대화형 기계 학습 시스템 라이브러리 및 프로그램
* WikiBhasha – 위키백과 온라인 백과사전을 위한 다언어 콘텐츠 제작 애플리케이션
* 윈도우 계산기 – 소프트웨어 계산기
* 윈도우 커뮤니케이션 파운데이션 – 연결된 서비스 지향 아키텍처 애플리케이션을 구축하기 위한 런타임 및 API 세트
* 윈도우 콘솔 – 단말 에뮬레이터
* 윈도우 드라이버 프레임웍스 – 마이크로소프트 윈도우용 장치 드라이버 생성을 돕는 도구 및 라이브러리
* 윈도우 폼 – 그래픽 사용자 인터페이스(GUI) 클래스 라이브러리
[섬네일|[윈도우 패키지 관리자]]
* 윈도우 패키지 관리자 – 윈도우 10용 패키지 관리자
* 윈도우 프레젠테이션 파운데이션 – 윈도우 기반 애플리케이션에서 사용자 인터페이스를 렌더링하기 위한 그래픽 하위 시스템(WinForms와 유사)
* 리눅스용 윈도우 하위 시스템 – 윈도우 내에서 GNU/리눅스 환경을 사용할 수 있게 해주는 윈도우 구성 요소
* 윈도우 템플릿 라이브러리 – Win32 개발을 위한 객체 지향 프로그래밍 C++ 템플릿 라이브러리
* 윈도우 UI 라이브러리 – 유니버설 윈도우 플랫폼(UWP)용 UI 컨트롤 및 기능 세트
* WinJS – 교차 플랫폼 앱 개발을 위한 자바스크립트 라이브러리
* WinObjC – 오브젝티브-C로 개발된 iOS 앱을 윈도우 10으로 포팅할 수 있게 해주는 미들웨어 툴킷
* WiX (Windows Installer XML Toolset) – XML에서 윈도우 인스톨러 패키지를 빌드하기 위한 툴셋
* WorldWide Telescope – 천문학 소프트웨어
[섬네일|[XML Notepad XML 에디터]]
* 윈도우용 XDP – OS 네트워킹 스택의 대부분을 우회하여 네트워킹을 가속화하는 데 사용되는 인터페이스
* XML Notepad – XML 에디터
* XSP – 유닉스 계열 운영체제용 ASP.NET을 호스팅하는 C 샤프로 작성된 독립형 웹 서버
* xUnit.net – 닷넷 프레임워크용 유닛 테스트 도구
* Z3 Theorem Prover – 교차 플랫폼 충족 가능성 모듈 이론(SMT) 솔버

## 같이 보기

* 자유 소프트웨어 운동
* 자유-오픈 소스 소프트웨어의 역사
* 자유-오픈 소스 소프트웨어의 타임라인
* 오픈 소스와 폐쇄 소스 소프트웨어의 비교
* 오픈 소스 소프트웨어의 비즈니스 모델

## 각주

## 참고 자료

* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 

## 외부 링크
* Open source releases from Microsoft

분류:마이크로소프트의 역사
분류:마이크로소프트의 자유 소프트웨어