모노 (소프트웨어)

위키백과, 우리 모두의 백과사전.
이동: 둘러보기, 검색
모노 (소프트웨어)
개발자 노벨
발표일 2004년 6월 30일
최근 버전 5.0.0[1] / 2017년 5월 10일(4달 전)(2017-05-10)
운영 체제 다중 플랫폼
종류 소프트웨어 플랫폼
라이선스 GNU GPL v2, GNU LGPL v2, MIT 허가서
웹사이트 [1]

모노(Mono)는 C# 컴파일러와 공통 언어 런타임을 필두로 하는 Ecma 표준 및 닷넷 프레임워크 호환 도구를 개발하는 자유오픈 소스 계획으로 현재 노벨에서 이 계획을 지휘하고 있다. 모노는 리눅스, BSD, Mac OS X, 오픈솔라리스를 필두로 하는 다양한 유닉스 계 운영체제에서 이용할 수 있으며 윈도에서도 이용할 수 있다.

사실 마이크로소프트에서 이미 FreeBSDMac OS X에서 실행할 수 있는 Shared Source CLI(코드명 Rotor)라는 .NET 호환 오픈 소스 툴을 내놓은 바 있으나 마이크로소프트에서 이 툴에 적용한 허가서에 상업적 사용을 금한다는 조항이 있어 이 툴은 오픈 소스이기는 하나 자유 소프트웨어는 아니다.

실행 환경[편집]

모노의 실행 환경은 다양한 CPU 아키텍처 형의 JIT(Just-In-Time) 컴파일 엔진을 포함하고 있으며 동작하는 CPU 아키텍처는 다음과 같다.

  • IA-32
  • IA-64 및 AMD64
  • SPARC 및 SPARC64
  • PowerPC
  • ARM
  • S390(32비트 및 64비트 모드)

걸어온 길[편집]

미겔 데 이카사는 2000년 12월 출시된 .NET 문서를 읽고 .NET 기술에 흥미를 갖게 되었다. 그 뒤 그는 .NET의 바이트 코드 인터프리터를 분석하다가 메타데이터에 대한 정의가 없음을 발견하였고 2001년 2월 그는 .NET 메일링 리스트에 메타데이터 파일 포맷에 대한 정보가 없음을 제보하였으며 동시에 C#을 익힐 목적으로 C#으로 C# 컴파일러를 만들기 시작하였다. 2001년 4월 Ecma에서 .NET에 포함되지 않는 메타데이터 파일 포맷을 명문화하였으며 미구엘은 그 달 GUADEC에서 자신이 만든 C# 컴파일러로 C#을 파싱하는 모습을 선보였다.

당시 미겔이 속해 있던 씨미안 내부에서는 더 많은 애플리케이션을 더 적은 시간 안에 만들 수 있게 함으로 개발 시간과 비용을 줄일 수 있는 빌드 툴에 대한 논의가 이루어지고 있었다. 실험을 통하여 이러한 빌드 툴의 개발 가능성을 확인한 씨미안은 다른 계획에 참여하던 사람들까지 영입하여 모노 개발진을 결성하였다. 그들은 2001년 7월 19일 오레일리 컨퍼런스에서 모노 개발 계획을 발표하였으나 .NET을 완벽하게 대체하는 수준의 모노를 개발할 만한 자원은 가지고 있지 않았다. 모노의 첫 정식 버전인 1.0이 출시된 것은 그로부터 약 3년 뒤인 2004년 6월 30일이었다.[2]

현재와 미래[편집]

모노의 최신 버전은 3.2이며 2013년 7월 24일에 공개되었다.

이 버전에서는 다음과 같은 기능이 추가 되었다.

  • LLVM 3.2로 업데이트
  • SGen Garbage Collector를 기본으로 사용

실버라이트오픈 소스 구현체는 문라이트 라는 코드명을 가지고 있으며 모노 1.9 버전에 포함되었다. 실버라이트 2.0의 닷넷 클래스는 올리브의 모듈의 일부로서 구현되었다. 문라이트는 모노 1.2.6 버전의 일부로 포함되었다.

모노의 구성 요소[편집]

모노는 다음과 같은 구성 요소를 가지고 있다:

  1. 중심 구성 요소
  2. 모노/리눅스/그놈 개발 스택
  3. 마이크로소프트 호환 스택

모노의 중심구성요소는 C# 컴파일러, 가상머신 그리고 기본 클래스 라이브러리를 포함하고 있으며, 이들 구성요소들은 ECMA-334와 335 표준에 기반으로 하고 있다.

특허 논란[편집]

.NET의 요소들 가운데 모노가 구현한 부분들은 Ecma에 의해 표준으로 제정되지 않아 모노가 만들어지고부터 오늘날까지 모노 소스의 특허 침해 논란이 이어지고 있다. 특히 이 논란은 마이크로소프트가 특허권 주장을 통하여 모노 자체를 완전히 위법으로 규정되게 할 수 있다는 것에 초점이 맞추어져 있다.

Ecma에 제출된 기초 기술과 이에 따라 유닉스 및 GNOME의 일부가 된 부분은 문제가 되지 않을 수도 있다. 이 논란은 ASP.NET, ADO.NET, 윈도 폼 및 모노 내 윈도 호환 스택을 이루는 요소들을 비롯하여 마이크로소프트가 닷넷 프레임워크 기반으로 개발한 기술들에 초점이 맞추어져 있다. 이들은 현재 모노에서 완벽히 구현되어 있지도 않으며 모노 기반 애플리케이션을 개발함에 있어 필수 요소도 아니다. 자유 소프트웨어 재단의 리처드 스톨만은 모노를 사용하면 마이크로소프트의 특허에 장악될 가능성이 있기 때문에 위험할 수 있다고 밝혔다.[3] 이 때문에 자유 소프트웨어 재단은 모노나 C#에 의존하는 자유 소프트웨어 개발을 자제할 것을 권하고 있다.[4]

2006년 12월 2일, 마이크로소프트와 노벨이 마이크로소프트가 노벨의 고객을 특허권 침해 혐의로 고소하지 않겠다는 내용의 상호 협정을 체결했다고 밝혔다.[5]

한편 리처드 스톨만은 2009년 6월 자유 소프트웨어 재단 뉴스 페이지를 통해 자신은 마이크로소프트가 때를 노려 소프트웨어 특허권을 주장하여 모든 자유 C# 구현물을 위법으로 규정되게 할 계획을 가지고 있음이 분명하다고 생각한다고 밝히면서 개발자들에게 자신이 (마이크로소프트의)악의적 위험물이라고 규정한, 모노를 비롯한 자유 C# 구현물에의 의존을 피할 것을 권했다.[4]

2009년 7월 6일, 마이크로소프트는 Ecma 334와 Ecma 335에 기술된 요소들을 닷넷 프레임워크의 또 다른 형식의 구현물을 구현, 배포, 사용하는 그 누구에게도 특허권을 주장하지 않겠다는 내용의 커뮤니티 공약 아래에 두었다[6]고 밝혀 모노의 Ecma 준수에 대한 특허 논란을 가라앉혔다.

그러나 그 뒤 자유 소프트웨어 재단에서는 닷넷 프레임워크와 모노에 포함된 윈도 라이브러리들 중 다수가 C#과 Ecma에 규정된 CLI 기술[6]에 대한 마이크로소프트 커뮤니티 공약의 적용 범위에 포함되지 않기 때문에 마이크로소프트가 C#의 오픈 소스 구현물을 위법으로 규정되게 하는 것은 지금도 얼마든지 가능하다고 밝히며 모노와 C#에 대하여 과거에 했던 경고를 다시 한 번 상기시켰다.[7]

덧붙임[편집]

각주[편집]

외부 링크[편집]