본문 바로가기

.Net/Xamarin

Mono Project

 
1. Mono Project

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

  사실 마이크로소프트에서 이미 FreeBSD와 Mac OS X에서 실행할 수 있는 Shared Source CLI(코드명 Rotor)라는 .NET 호환 오픈 소스 툴을 내놓은 바 있으나,
  마이크로소프트에서 이 툴에 적용한 허가서에 상업적 사용을 금한다는 조항이 있어 이 툴은 오픈 소스이기는 하나 자유 소프트웨어는 아니다.
 
  2004-06-30 : 모노의 첫 정식 버전인 1.0이 출시


2. Release Notes Mono 3.4 - by 2014-04-14
  http://www.mono-project.com/Release_Notes_Mono_3.4 

 
3. 라이센스 논란
  .NET의 요소들 가운데 모노가 구현한 부분들은 Ecma에 의해 표준으로 제정되지 않아 모노가 만들어지고부터 오늘날까지 모노 소스의 특허 침해 논란이 이어지고 있다. 특히 이 논란은 마이크로소프트가 특허권 주장을 통하여 모노 자체를 완전히 위법으로 규정되게 할 수 있다는 것에 초점이 맞추어져 있다.
  Ecma에 제출된 기초 기술과 이에 따라 유닉스 및 GNOME의 일부가 된 부분은 문제가 되지 않을 수도 있다. 이 논란은 ASP.NET, ADO.NET, 윈도 폼 및 모노 내 윈도 호환 스택을 이루는 요소들을 비롯하여 마이크로소프트가 닷넷 프레임워크 기반으로 개발한 기술들에 초점이 맞추어져 있다. 이들은 현재 모노에서 완벽히 구현되어 있지도 않으며 모노 기반 애플리케이션을 개발함에 있어 필수 요소도 아니다. 자유 소프트웨어 재단의 리처드 스톨만은 모노를 사용하면 마이크로소프트의 특허에 장악될 가능성이 있기 때문에 위험할 수 있다고 밝혔다.[2] 이 때문에 자유 소프트웨어 재단은 모노나 C#에 의존하는 자유 소프트웨어 개발을 자제할 것을 권하고 있다.[3]
  2006년 12월 2일, 마이크로소프트와 노벨이 마이크로소프트가 노벨의 고객을 특허권 침해 혐의로 고소하지 않겠다는 내용의 상호 협정을 체결했다고 밝혔다.[4]
  한편 리처드 스톨만은 2009년 6월 자유 소프트웨어 재단 뉴스 페이지를 통해 자신은 마이크로소프트가 때를 노려 소프트웨어 특허권을 주장하여 모든 자유 C# 구현물을 위법으로 규정되게 할 계획을 가지고 있음이 분명하다고 생각한다고 밝히면서 개발자들에게 자신이 (마이크로소프트의)악의적 위험물이라고 규정한, 모노를 비롯한 자유 C# 구현물에의 의존을 피할 것을 권했다.[3]
  2009년 7월 6일, 마이크로소프트는 Ecma 334와 Ecma 335에 기술된 요소들을 닷넷 프레임워크의 또 다른 형식의 구현물을 구현, 배포, 사용하는 그 누구에게도 특허권을 주장하지 않겠다는 내용의 커뮤니티 공약 아래에 두었다[5]고 밝혀 모노의 Ecma 준수에 대한 특허 논란을 가라앉혔다.
  그러나 그 뒤 자유 소프트웨어 재단에서는 닷넷 프레임워크와 모노에 포함된 윈도 라이브러리들 중 다수가 C#과 Ecma에 규정된 CLI 기술[5]에 대한 마이크로소프트 커뮤니티 공약의 적용 범위에 포함되지 않기 때문에 마이크로소프트가 C#의 오픈 소스 구현물을 위법으로 규정되게 하는 것은 지금도 얼마든지 가능하다고 밝히며 모노와 C#에 대하여 과거에 했던 경고를 다시 한 번 상기시켰다.[6]

     http://www.mono-project.com/Licensing 를 참고
     요약하자면,
     C# 컴파일러는 GPL과 MIT/X11 듀얼 라이선스 정책을 따른다.
     관련 툴들은 GPL을 따른다.
     runtime 라이브러리는 LGPL 2.0을 따른다.
     class 라이브러리는 MIT X11을 따른다.
     ASP.NET MVC, MEF, DLR, ASP.NET AJAX, System.Numerics 등등은 마이크로 소프트웨 듀얼라이선스 정책을 따른다.

  오픈소스 진영에서 걱정하는 것은 Mono 프로젝트의 구현물이 마이크로 소프트웨 특허를 침해하므로써 분쟁이 생길 수 있다.
  리차드 스톨만 박사는 특허 문제를 떠나서, .NET과 같은 폐쇄 코드에 종속적인 프로젝트는 오픈소스 진영에 이롭지 않다고 주장 
  위 라이센스 문서를 참고

 
5. 모노프로젝트로의 전환시 문제점 - 2014-04-14 현재
- Oracle의 모노 지원 정책
  1. ODAC for Linux 지원 안됨
    - http://mono-project.com/Oracle 
      Mono comes with an Oracle client in the System.Data.OracleClient assembly and tracks the Microsoft System.Data.OracleClient library. This library has been discontinued by Microsoft and is no longer maintained.
      Oracle produces a client for Windows, but they do not support this on Mono.
      Some commercial providers for Mono are available:
  2. 모노지원 Oracle Provider
      System.Data.OracleClient지원 하나 이는 MS에서 공식적으로 Dot.Net4.0 공식적으로 Deprecated 되었음(경고메세지와 함께 사용은 가능)
  참고
      - 일부 상용업체 일부 모노 지원 - 비용발생 및 유지보수의 어려움
          http://www.devart.com/dotconnect/oracle/  
          http://www.datadirect.com/products/net/net%5Ffor%5Foracle/index.ssp

- Entity Framework 지원 정책
  현 사용 Entity Framework 버전 4.0
  모노 지원 Entity Framework 버전 6.0 이상
    1. EntityFramework 4.0으로 포팅 테스트 진행
    2. EntityFramework 미사용으로 테스트 진행
    3. Entity Framework 6.0 이상으로 업그레이드 후 테스트 진행


6. 향후 방향
- 닷넷 오픈소스화 현황

1. 닷넷재단 설립 : http://www.dotnetfoundation.org/
  마이크로소프트는 모노프로젝트 상용업체인 자마린(http://xamarin.com)과 함게 24개 기술에 대해 오픈소스화

2. 오픈소스화에 이어 각 벤더사의 Cross platform 지원이 진행될 수 있는 환경 필요