FAQ

FAQ
1. Introduction – Qt 제품 구조 및 개발자 제공 사항

1.1 Qt 애플리케이션 개발 (Qt for Application Development)의 제품 구조와 개발자 제공 사항은?

1.2 Qt 임베디드 디바이스 개발 (Qt for Device Creation)의 제품 구조와 개발자 제공 사항은?

1.3 Qt 제공 주요 모듈 목록은?

2. Qt 상용 라이선스 모델

2.1 Qt 애플리케이션 개발 라이선스란?

2.2 Qt 임베디드 디바이스 개발 라이선스란?

2.3 SDK 라이선스란?

2.4 Qt 의 라이선스 타입 선택 기준은?

2.5 개발자 라이선스 종류는?

3. Qt 오픈소스 라이선스

3.1 Qt의 상용/오픈 소스 이중 라이선스 철학은 어떻게 되는가?

3.2 상용과 오픈소스 라이선스 타입별로 어떻게 구성되는가?

3.3 GPL, LGPL, 상용 Qt 라이선스 차이는?

3.4 LPGL 제반 쟁점 사안은?

4. Qt 라이브러리에 포함되는 외부 오픈 소스 라이선스 컴포넌트

5. 상용 라이선스 구매에 따른 The Qt Company / Ocube 기술지원 안내

5-1 The Qt Company 와 Ocube 의 관계는?

5-2 The Qt Company 의 기술지원은?

5-3 Ocube 의 기술 지원은?

6. Qt 라이선스 요약

기타 라이선스 FAQ

> 라이선스를 구입했지만 개발자가 회사/프로젝트 를 떠납니다. 다른 개발자에게 라이선스를 양도할 수 있습니까?

> Floating 라이선스를 구입할 수 있습니까?

> Qt 상용 라이선스의 래퍼를 사용하여 개발한 애플리케이션을 판매할 수 있습니까?

> 오픈 소스가 아닌 응용 프로그램을 Qt의 오픈 소스 버전으로 개발하고 판매를 시작할 시점에서 상용 라이선스를 구입하는 것은 가능합니까?

> Qt의 오픈 소스 버전과 Qt의 상용 버전을 함께 개발하여 상용 버전의 라이선스를 라이선스 구입 지원을 받을 수 있습니까?

> Qt 상용 버전 라이선스를 여러개 보유하고 있습니다. 이 중 1개의 라이선스만 유지하면서 지속적으로 Qt의 지원을 받을 수 있습니까?

> 음성 / 영상 코덱의 사용에 관련된 라이선스 문제가 있습니까?

> 응용 프로그램을 만들려는 모든 플랫폼에 대해 라이선스가 필요합니까?

1. Introduction
– Qt 제품 구조 및 개발자 제공 사항
Qt는 20 년이 넘는 역사를 가진 제품입니다. 최초의 버전은 1995년으로 거슬러 올라갑니다. 본래 Qt는 다양한 데스크탑 운영체제(Desktop OS) 상의 C++ 크로스-플랫폼 개발 도구를 의도로 탄생하였습니다. 동일한 소스코드를 이용하여 개발자는 Windows, Linux 그리고 Mac OS X 시스템에서 각기 동작할 수 있는 애플리케이션을 제작할 수 있습니다. 특히 GUI(Graphical User Interface)제작에 매우 유용하게 활용되고 있습니다. Qt의 이러한 크로스-플랫폼 지원 기능은 여러 소프트웨어 프로젝트에 Qt가 선택되고 있는 가장 큰 이유이자 Qt의 장점입니다.. 그러나 Qt는 애플리케이션 개발 프레임워크 만을 목적으로 하고 있지는 않습니다. 모바일과임베디드 플랫폼에서도 개발자는 다양한 목적으로Qt을 이용해 빠르고 편리하며 경쟁적인 제품 개발에 집중할 수 있습니다.

Qt가 세상에 소개되고 얼마 지나지 않은 시점에 Qt는 임베디드 플랫폼으로도 포팅 되었으며, Qt가 UI Screen 을 지닌 모든 종류의 임베디드 제품의 GUI 제작에 있어서 매우 생산적인 프레임워크라는 사실이 명백해 졌습니다. 임베디드 제품 개발 시에 뛰어난 성능을 유지하는 동시에 현대적이고 세련된 터치 방식의 GUI를 제작할 수 있는 개발환경을 구축해주는 Qt의 강력한 GUI 기능을 이용하기 위해임베디드 개발자들은 일반적으로 Qt프레임워크 기술을 선택하고 있습니다.
Qt가 제공하는 두 종류의 개발자 제공사항 –Qt 애플리케이션 개발/ Qt임베디드 디바이스 개발 – 은 Qt Core Library와 도구들을 기반으로 하며 추가적으로 각각의 개발 목적에 부합하는 각기 다른 구성으로 이루어져 있습니다.

1.1 Qt 애플리케이션 개발 (Qt for Application Development)의 제품 구조와 개발자 제공 사항은?
Qt for Application Development 는 다수의 데스크탑 과 모바일 운영 체제에서 동작하는 애플리케이션을 제작하기 위한 제품 입니다. 현재 Qt 5.7 버전에서 Application Development 는 Windows(Win7 에서 Win10까지 모든 플랫폼을 포함하는 다양한 버전), Linux, OSX, Android 그리고 iOS를 지원하고 있습니다.
Qt for Application Development 에서 지원하는 모든 플랫폼을 기반으로 개발자는 공통된 애플리케이션을 제작하고 전개할 수 있습니다. 개발자가 데스크탑과모바일 플랫폼을 위한 애플리케이션 제작을 기획하고 있으며, OS 마켓 – 예) Apple 의 AppStore, Google Play 혹은 Microsoft Store 등 – 이나 독자적인 배포 채널을 통해 제품을 배포하려고 한다면 Qt for Application Development 가 적절한 라이선스 입니다.
Qt for Application Development 의 개발자 제공 사항은 약 40개 가량의 크로스-플랫폼 코드 모듈들과 Qt Creator IDE 에 통합되어 제공되는 다양한 개발 도구들로 구성되어 있습니다.

Qt Licensing Guide 그림 1그림1. Qt for Application Development 개발자 제공 사항

1.2 Qt 임베디드 디바이스 개발 (Qt for Device Creation)의 제품 구조와 개발자 제공 사항은?
임베디드 하드웨어와 소프트웨어가 결합된 제품 개발에 Qt을 고려하고 있다면, Qt for Device Creation 이 알맞은 제품입니다. Qt 의 크로스-플랫폼 라이브러리 이외에도, Qt for Device Creation 은 다양한 임베디드 특화된 개발 도구들과 임베디드 제품 개발을 마치 데스크탑 애플리케이션 개발처럼 개발 workflow를 간결하게 만들어 주어서 개발 일정을 극적으로 단축시켜줄 수 있는 솔루션들을 포함하고 있습니다.
그림 2. 에서 보여지듯이 Qt for Device Creation 을 이용하면 개발자는 다음의 라이브러리들과 개발도구 와 솔루션을 사용할 수 있습니다.

Qt Licensing Guide 그림 2
그림 2. Qt for Device Creation 개발자 제공 사항
<Add-ons, Essentials, Development Tools 는 그림 1을 참조>

› 그림 Qt for Application Development 에서 확인할 수 있는 크로스-플랫폼 Qt API들(Essential 과 Add-on Libraries). 이 라이브러리들은 임베디드 제품의 User Interface를 제작하는데 주로 사용되며, networking 이나 sensor communication 처럼 기반이 되는 Program Logic 을 제작하는 곳에도 유용하게 사용됩니다. 상위 레벨의 프로그래밍 API들은 개발자가 플랫폼 세부사항들을 신경 쓰지 않아도 될 수 있도록 해주기 때문에 생산성을 높여줍니다. 또한 Qt API를 이용하면 장치와 시스템 레벨의 세부적인 사항 에 접근하고, 하드웨어 주변장치와 백앤드 시스템과 직접 통합하는 작업도 쉽게 진행할 수 있습니다. 네이티브 API들과 Qt Graphics Stack을 통해서는 장치의 최대한의 성능을 이끌어 낼 수 있습니다.
› Qt Creator IDE 는 크로스-플랫폼 개발 환경 도구 입니다. Qt Creator를 이용하면 데스크탑모바일개발은 물론 임베디드 개발 과정을 직접적으로 지원해줍니다. 개발자는 UI디자인을 시각적으로 진행할 수도 있고, 소스코드를 작성하고 편집할 수 있으며, 임베디드타겟 환경을 설정하고, 장치나 혹은 장치 에뮬레이터에 곧바로 전개시켜 볼 수 있습니다. 또한 임베디드타겟에 직접 연결한 채로 디버깅과 프로파일링을 실행할 수 도 있습니다. 이런 모든 기능들이 Qt Creator IDE 안에서 종합적으로 지원 됩니다.

› Qt Virtual Keyboard 나 Over the Air Solution 과 같은 부가적인 임베디드 솔루션들이 제공하는 막강한 기능을 편리하게 이용하여 개발자는 이미 개발되어 있는 기능들을 임베디드 상황에 맞추어 추가 개발할 필요없이 제품의 가장 핵심적인 가치를 개발하는데 집중할 수 있습니다.
› Boot to Qt 소프트웨어 스택은 장치에 대한 소프트웨어 스택을 환경설정하고 일일이 세팅을 할 필요 없이 즉시 타겟임베디드 하드웨어에서 개발을 시작할 수 있도록 해줍니다. Boot to Qt 은 완전한 YoctoLinux 기반 호환성을 갖추고 있기 때문에, 개발자는 제공되는 Yocto 프로젝트 레시피를 사용하여 생산에 알맞은 형태로 스택의 환경설정이 가능합니다.

1.3 Qt 제공 주요 모듈 목록은?

Qt Essentials 모듈
Qt Core 비 GUI의 핵심 기능, 이벤트 처리, 객체 관리, 시그널&슬롯 형식, 안전한 Call-Back 파일 I/O, 코덱, 날짜와 시간, 컬렉션, 스레드와 베타 제어, XML 가져오기 및 내보내기 등
Qt GUI Qt는 그래픽 처리와 OpenGL을 이용할 수 있도록 지원
Qt Multimedia 음성이나 음악과 동영상, 라디오, 카메라 등의 기능
Qt Multimedia Widgets QtMultimedia 를 이용한 멀티미디어 위젯
Qt Network 플랫폼에 의존하지 않는 네트워크 소켓. TCP, FTP 비동기, DNS 조회 등의 클래스 제공, IPv6 지원
Qt QML QML 및 JavaScript 를 위한 클래스
Qt Quick 고유의 사용자 인터페이스 기반에서 뛰어난 동적 응용 프로그램을 작성하기 위한 선언적 프레임 워크
Qt Quick Controls 기존의 데스크탑 스타일의 사용자 인터페이스를 만들기 위해 코드의 재사용이 가능한 Qt Quick 로 구현된 UI 컨트롤 모듈
Qt Labs Controls 임베디드 디바이스에서 효과를 발휘할 수 있도록 경량화를 도모한 Qt Quick Controls 의 개량 버전
Qt Quick Dialogs Qt Quick 응용 프로그램에서 시스템 대화 상자를 사용하여 상호 작용하는 QML 타입
Qt Quick Layouts 사용자 인터페이스 작성시 Qt Quick 2 기반의 항목을 배치해 사용하기 위한 레이아웃 아이템
Qt SQL 플랫폼 및 데이터 베이스의 종류에 의존하지 않는 SQL 데이터베이스 액세스 기능
Qt Test GUI 기능 및 GUI 모듈의 단위 테스트를 진행하기 위한 기능
Qt Widgets C++ GUI 프로그래밍의 기본 기능과 다양한 그래픽 아이템을 간단하게 개발 가능. 2D 그리기, 캔버스 버튼이나 라벨 등의 위젯이나 대화 등의 GUI 컴포넌트. 스타일, 레이아웃, 모델 뷰, 접근성, 메인 창 프레임 워크, 2D 그리기 기능, 드래그&드롭, 다양한 뷰 위젯 배치, 2D 아이템 그리기, 텍스트 렌더링, 안티 앨리어싱, 인쇄, OpenGL 랜더링에 의한 고속 그리기 기능 등
Qt Add-On 모듈
Active Qt (Windows) Qt 에서 ActiveX 와 COM 에 액세스하기 위한 확장 기능
Qt 3D 2D와 3D 렌더링, 실시간 시뮬레이션 기능
Qt Android Extras Android 의 개발을 위한 추가 기능
Qt Bluetooth Bluetooth 기기의 스캔 및 연결 등의 기본 조작을 이용하기 위한 기능
Qt Canvas 3D Qt Quick 응용 프로그램에서 JavaScript 를 이용하여 OpenGL 의 3D 렌더링을 호출 할 수 있도록 하는 기능
Qt Concurrent 병렬 실행을 위한 높은 수준의 인터페이스
Qt D-Bus D-Bus 를 이용하여 통신을 하고 바탕 화면에 응용 프로그램을 동시에 동작시키는 기능
Qt Graphical Effects Qt Quick 2 용 그래픽 효과 기능
Qt Image Formats BMP, CUR, GIF, ICO, JPG, PBM, PGM, PNG, PPM, SVG, SVGZ, XBM, XPM 등의 표준 이미지 포맷뿐만 아니라 DDS, ICNS, TIFF, TGA, WBMP, WEBP 등의 이미지 포맷을 사용할 수 있도록 지원하는 플러그인
Qt Location QML 응용 프로그램에서 지도, 경로 정보와 위치 정보를 표시하는 기능
Qt Mac Extras macOS의 개발을 위한 추가 기능
Qt NFC NFC (근거리 무선 통신) 기기에 액세스 할 수 있는 기능
Qt OpenGL OpenGL을 사용하는 응용 프로그램을 개발하기위한 인터페이스. Qt 4 에서 마이그레이션을 쉽게하기 위한 모듈로 새로운 OpenGL을 사용하는 경우에는 Qt GUI 모듈 QOpenGL * 클래스 사용
Qt Positioning 위성 위치 확인 시스템과 WiFi, 텍스트 파일 등의 위치 정보에 접근하고 이용하기 위한 기능
Qt Print Support 인쇄를 쉽게 하고 모든 플랫폼에 호환 가능
Qt Script Qt 애플리케이션을 JavaScript로 작성하여 개발 할 수 있도록하는 기본 기능. Qt 4와 호환을 위한 모듈로 새로운 JavaScript를 사용하는 경우는 Qt QML 모듈 QJS * 클래스 사용
Qt Script Tools Qt Script 개발자 추가 기능
Qt Sensors 센서 기기와 모션 제스처 인식 기능에 액세스하기 위한 클래스를 제공
Qt Serial Port 시리얼 장비와 가상 직렬 포트에 액세스하는 기능
Qt SVG SVG 파일 보기 및 생성하는 모듈. SVG Tiny 표준을 부분적으로 지원
Qt WebChannel HTML / JavaScript 를 이용한 Qt 애플리케이션에서 QObject와 QML 개체를 상호 투명하게 이용하기 위한 기능
Qt WebEngine Chromium 기반의 브라우저 엔진뿐만 아니라 기존 웹 사이트와의 상호 작용을 위한 기능을 제공
Qt WebEngine Widgets Qt WebEngine 을 이용한 위젯을 제공
Qt WebSockets RFC 6455 에 준한 WebSocket 통신 기능
Qt Windows Extras Windows 에서의 개발을 위한 추가 기능
Qt X11 Extras X11 의 개발을 위한 추가 기능
Qt XML SAX와 DOM의 C ++ 구현. 새로 사용하는 경우에는 Qt Core 모듈의 QXmlStreamReader과 QXmlStreamWriter을 사용 가능
Qt XML Patterns XPath, XQuery, XSLT와 XML 유효성 검사 기능
Value-Added 모듈
Qt WebView Qt 의 웹 브라우저 기능을 이용하지 않고 플랫폼에 제공되는 웹 API 를 사용하여 QML 응용 프로그램에서 웹 콘텐츠를 표시하는 기능
Qt Charts 선, 공간, 바, 파이, 유통, 스플라인, 가로 막대형, 도넛 형 차트, 극좌표 차트, 박스 차트 등의 챠트 작성 기능
Qt Data Visualization 높은 수준의 3D 데이터의 시각화를 만드기 위한 구성 요소
Qt Virtual Keyboard QML 가상 키보드 뿐만 아니라 다양한 인풋 메소드를 구현하기 위한 프레임 워크. 로컬 키보드 레이아웃과 별도의 시각 테마 지원
Qt Purchasing 모바일 애플리케이션 제품에서 응용 프로그램 내 과금을 이용하기 위한 기능
Qt Quick Compiler(Commercial) QML 소스 파일을 컴파일하고 응용 프로그램에 포함하여 프로그램 로딩 시간을 개선하고 QML 코드를 보호하는 기능
Qt Quick 2D Renderer OpenGL 기능이 없는 기기에서 Qt Quick 개발을 가능하게 하는 기능. 단, OpenGL 을 사용하는 경우에 비해 제한적 기능을 가짐
Technology Preview 모듈 (지원 예정)
Qt SerialBus CAN 직렬 버스 및 Modbus 의 기초 구현
Qt Wayland Compositor 임베디드 시스템에서의 멀티 프로세싱 구현
Qt SCXML Qt State Chart XML
Qt Gamepad 게임 패드 입력 처리 용 C++ 및 QML API. Windows (XInput)와 Linux (evdev), Android, iOS 등 호환
2. Qt 상용 라이선스 모델

Qt 상용 라이선스 의 목적은 개발자 혹은 고객사가 Qt를 가장 효율적이며 최선의 방법으로 사용할 수 있도록 도움을 주어 Qt와 함께 제품 개발 성공과 사업 성장을 이룰 수 있도록 돕는 것 입니다. Qt 상용 라이선스는 라이선스 받은 소프트웨어를 수정하고, 사용하고 전개하며 배포할 수 있는 온전한 권한을 최종 사용자에게 제공하는 등록 면허 입니다.

2.1 Qt 애플리케이션 개발 라이선스란?

Qt for Application Development 제품에 대해서 라이선스 모델은 개발 라이선스 계약(Qt for Application DevelopmentLicense Agreement)에 의거합니다. Qt 라이브러리 또는 Qt 개발 도구를 직접 사용하는 개발자는 개인당 라이선스 넘버를 부여 받아 사용하여야 합니다. Qt 애플리케이션 개발 라이선스는 Qt for Application Development 가 지원하는 모든 데스크탑과모바일 플랫폼에서 개발, 전개, 그리고 배포할 수 있는 권리를 포함합니다.
Qt 애플리케이션 개발 라이선스는 영구(perpetual) 라이선스로 Qt 개발자는 사용 만료의 기한 없이 Qt 라이브러리와 도구를 이용할 수 있습니다. Qt 애플리케이션 개발 라이선스를 구매할 경우 최초 1년 동안 공식적인 Qt 기술 지원을 받을 수 있으며(목차 5 참조), 해당 기간 동안 Qt 소프트웨어 업데이트가 가능합니다. 이후 매년 동안 라이선스 소유자는 라이선스를 갱신(renew) 하면 Qt 기술지원과 소프트웨어 업데이트를 1년 동안 받을 수 있는 자격이 주어집니다.

2.2 Qt 임베디드 디바이스 개발 라이선스란?
Qt for Device Creation 제품에 대한 라이선스 모델은 두 부분으로 이루어져 있습니다. 하나는 Qt 라이브러리 또는 개발 도구를 사용하는 각각의 개발자용 개발 라이선스와 하드웨어와 소프트웨어가 결합된 형태의 제품 배포를 위한 라이선스 입니다. 만약에 완성된 소프트웨어 제품을 하드웨어와 함께 배포할 경우, 각각의 배포되는 소프트웨어에 개별적으로 라이선스를 보유해야 합니다. 이러한 사항은 Qt for Device Creation 을 최초 사용할 때 동의하는 계약(Qt for Device Creation License Agreement)에 의거 합니다.
The Qt Company는 배포 라이선스(Distribution License) 구매에 대한 Standard 패키지를 제공하고 있습니다. 배포 라이선스의 Unit 별 가격은 다음과 같은 요인들에 의해 결정됩니다.

배포 수량(Distribution Volume) – 초기 구매 수량(initial purchase), 양산 예측 수량(estimate), 확정 구매 수량(commitment level) 등
배포 계약 기간(Term Length for Distribution)

배포 수량 통보(Distribution Volume Reporting)
지불 계약 기간(Payment Terms) – 선 구매(pre-buy), 예정 구매(scheduled payments), 체납(in arrears) 등

Qt for Device Creation 의 개발 및 배포 라이선스 소유 고객은 희망할 경우 배포라이선스 가 확보된 임베디드 제품에 “Built With Qt” 라는 로고를 삽입할 수 있습니다.

2.3 SDK 라이선스란?
개별적인 애플리케이션 프로그램이나 임베디드 장치 제품을 개발하는 것 이외에, 통합 소프트웨어 플랫폼을 제작 하기 위해서 Qt을 사용할 수 있습니다. 배포가 가능한 일반 SDK 는Qt 개발자 제공 사항에 포함되어 제공될 수 있습니다.

고유의 룩-엔-필(Look-and-Feel) 을 Custom Qt Creator 통합 개발 환경(IDE)와 통합하기 위한 Qt 라이브러리가 포함된 SDK + Custom UX 라이브러리
Qt 라이브러리가 포함된 SDK + Custom 하드웨어 최적화 &빌드 도구들 + Qt Creator 통합 개발 환경(IDE)
Qt Creator 의 최적화 및 확장 버전으로 구성된 SDK

이러한 모든 경우에 Qt 라이선스를 소유한 개발자는 스스로의 소프트웨어/임베디드 장치 제작을 위한 Qt 라이브러리와 개발도구를 사용하기 위한 용도 이외에 Qt 기반의 SDK를 다수의 소프트웨어 개발자들에게 배포하기 위한 용도로 사용하게 됩니다. Qt 기반의 SDK를 사용하게 되는 대상 개발자들은 스스로가 Qt 라이브러리와 도구들을 사용하게 됩니다. 이러한 경우는 특정한 SDK 배포 권한과 별도의 라이선스 계약을 필요로 합니다.
SDK 배포 모델은 기간 한정적이며, 계약된 기간 내에 배포 가능한 SDK 수량에 의해서 결정 되는 과금 모델을 취하고 있습니다.
Custom SDK 제작에 도움을 드릴 수 있는 서비스 패키지 또한 존재합니다.

2.4 Qt 의 라이선스 타입 선택 기준은?
“어떤 제품과 라이선스를 선택해야 하는가?” 특히 Qt for Application Development 와 Qt for Device Creation 간의 선택은 가장 빈번히 접수되고 있는 문의 사항입니다. 이에 대한 답변은 일반적으로 최종 판매되어 배포되는 제품이 임베디드장치(hardware + software) 인지 혹은 단지 애플리케이션(software)인지에 따라서 달라집니다. 보통 이와 같은 정의를 통해 명확히 해결되지 않는 경우를 위해 추가적인 정의를 공유합니다.
Qt for Device Creation 라이선스 계약*에서는 ‘하드웨어와 소프트웨어 결합 배포 (a joint hardware and software distribution) 를 다음과 같이 정의합니다.

  1. 하드웨어 장치를 배포하되, 최종 사용자 환경 설정상,임베디드 제품의 main user interface또는 임베디드 제품기능의 상당 부분(substantial functionality)이 라이선스 된 소프트웨어나 라이선스 된 소프트웨어를 기반으로 하는 소프트웨어를 사용하는 개발자 혹은 ‚라이선스 소유권자에 의해서 만들어진 애플리케이션에 의해서 제공되며, 임베디드 제품의 main user interface 또는 임베디드 제품 기능의 상당 부분(substantial functionality)이 라이선스 된 소프트웨어 혹은 ‚Qt의 오픈소스 버전 혹은 ƒ다른 어떤 Qt를 기반하는 소프트웨어의존(depends on)하는 경우; 또는

distribution of a hardware device where, in its final end userconfiguration, the main user interface or substantial functionality ofthe device is provided by Application(s) created by Licensee or others,using Licensed Software or Licensed Software based softwareproduct, and depends on the Licensed Software or an open sourceversion of Qt or any Qt based software product; or

  1. 임베디드 제품의 main user interface 또는 임베디드 제품 기능의 상당부분(substantial functionality)이 라이선스 된 소프트웨어를 기반으로 하는 소프트웨어를 사용하는 개발자 혹은 ‚라이선스 소유권자에 의해서 만들어진 애플리케이션에 의해서 제공되며 임베디드 제품의 main user interface 또는 임베디드 제품 기능의 상당 부분(substantial functionality)이 라이선스된 소프트웨어에 의존(depends on) 하는임베디드 장치에 라이선스된 소프트웨어의 설치를 가능하게 하도록 디자인된 임베디드장치와 함께라이선스된 소프트웨어를 배포하는 경우.

distribution of the Licensed Software with a device designed tofacilitate the installation of the Licensed Software onto the same device where the main user interface or substantial functionality ofsuch device is provided by Application(s) created by Licensee or others,using the Licensed Software, and depends on the Licensed Software.
이러한 차이를 구분 지어주는 요소들을 살펴보도록 하겠습니다.

타겟 플랫폼 Target Platforms
타겟 플랫폼 자체나 타겟 플랫폼의 운영 체제 자체는 알맞은 라이선스 타입을 결정하는 요소가 아닙니다. “데스크탑 윈도우 혹은 리눅스 운영 체제에 제품을 전개할 때는 항상 Qt for Application Development 제품을 이용해서 작업을 할 수 있다” 라고 할 수 없습니다. 예를 들어 셀프 서비스 키오스크(self-service kiosk)를 일반적인 데스크탑 운영 체제를 기반으로 작동시킬 수 있지만, 임베디드 제품의 main user interface 또는 임베디드 제품 기능의 상당부분(substantial functionality) 이 Qt로 제작된 애플리케이션에 의해서 제공된다면, 명시된 I. 부분의 정의에 따라서, 닫혀진 임베디드 제품(closed device)으로 간주됩니다.

GUI가 없는 임베디드 장치의 경우
Qt가 주로 GUI 제작을 위해서 이용되더라도, Qt로 제작되었으나 GUI가 없는임베디드 장치들 역시 많이 존재합니다. 예를 들어 Qt의 네트워크와 데이터베이스 모듈들을 이용해서 서버장치를 개발할 수 있는데, 명시된 I. 부분의 정의에 따르면 Qt 의 임베디드 배포 라이선스는 유저 인터페이스의 유무에 의해서 결정되는 것이 아닌 제품 기능의 상당 부분(substantial functionality)이 Qt 애플리케이션에 의해서 제공 되는지 여부에 달려있기 때문에, 유효한 배포 라이선스가 여전히 필요합니다.

Qt Application 의 동적 사후 배포(Dynamic post-distribution)
명시된 II. 부분 의 설명은 다소 혼란스러울 수 있습니다. 그러나 이는 단순히 라이선스를 적용 받아야 하는 사용자가임베디드 장치에 Qt 어플리케이션을 탑재하지 않은 채로 장치를 배포한 이후 Qt와 관련이 없는 애플리케이션이 장치에 설치되면서 동적으로 main Qt Application 을 설치하게 되는 경우로 I. 에서 명시된 조항들을 피해갈 수는 없음을 의미합니다. 이에 대해 “최종 사용자의 사용 환경 final end user form” 에서의 장치 환경 설정이 가장 결정적인 언급이 됩니다.

가상 환경과 하이퍼바이저(Virtual environments and hypervisors)
가상 환경이나, 컨테이너, 그리고 하이퍼바이저의 경우의 라이선스 발급은 Qt가 일반적인 하드웨어에서 동작되는 것과 동일한 경우로 라이선스 정책을 따르게 됩니다.

2.5 개발자 라이선스 종류는?
Qt 라이브러리를 이용하는 개발자 혹은 Qt 개발 도구를 이용해서 개발을 진행하는 각각의 개발자들은 개발자 각각의 개별 라이선스를 취득해야 합니다.

개발자의 경우
만약 개발자가 Qt API를 이용해서 소스 코드를 작성하고 있다면, 명백히 해당 개발자는 스스로의 계정으로 만들어진 라이선스를 가지고 있어야 합니다. 만약 동일한 프로젝트에서 다른 개발자가 시스템의 완전히 다른 부분을 개발하고 있을 때, 예를 들어 디바이스 드라이버라던가 리눅스 이미지 최적화를 어떠한 Qt 코드도 이용하지 않은 채로 작성하고 있으며 Qt Creator IDE 또한 이용하고 있지 않은 경우에는 해당 개발자는 Qt 라이선스 계정을 갖고 있어야 할 필요가 없습니다.

디자이너 와 번역가의 경우
만약 Interaction 디자이너가 Qt Creator IDE 를 사용하여 QML 코드와 직접적으로 Interfacing 하고 있는 경우에, 디자이너는 Qt 개발 라이선스를 확보하고 있어야 합니다. 별도로 분리되어 배포되는 Qt Designer Drag & Drop 도구를 사용하는 경우에는 Qt 개발 라이선스를 확보하고 있을 필요가 없습니다. Qt 의 일반적인 라이선스 정책의 예외로 Qt Designer, Qt Linguist 그리고 Qt Assistant 는 독립적인 애플리케이션으로 재 배포될 수 있으며, 이는 예를 들어 번역가들이 별도로 Qt Linguist와 작업할 수 있도록 하기 위함입니다.

테스터의 경우
만약 소프트웨어 프로그램 테스터가 완성된 애플리케이션의 최종 사용자 검사를 목적으로 바이너리 형태로 실행하는 경우에 테스터는 라이선스를 필요로 하지 않습니다. 그러나 만약 테스터가 Qt Creator 내부의 디버깅 도구를 이용하는 경우에는 다른 경우로 간주되며, 테스터에게도 라이선스가 필요합니다.

빌드 팜 혹은 개별 빌드머신들의 경우 Build Farms or Separate Build Machines
애플리케이션을 개발하기 위한 빌드팜 Build Farms 내부의 Qt 혹은 Qt 개발 도구를 사용하는 모든 임직원들은 모두가 개별적인 Qt 라이선스를 발급받아야 합니다. 만약 동일한 빌드팜 내에서 Qt를 사용하지 않은 직원의 경우에는 라이선스는 필요치 않습니다. 이외 불 명확한 모든 경우에 대해서는 Ocube로 문의를 해주시기 바랍니다.

3. Qt 오픈소스 라이선스

Qt는 최초 버전 출시 이후로 줄곧 상용과 오픈 소스 라이선스의 이중 라이선스 정책하에 제공되어 왔습니다. 현재Qt가 오픈 소스로 제공되는 경우의 라이선스는 Free Software Foundation(FSF)*의 GPL(GNU General Public License) Version 2.0** 과 GPL Version 3.0*** 그리고 LGPL(GNU Lesser General Public License) Version3**** 를 따르고 있습니다.
<주의> LGPLv3 agreement를 읽을 때, LGPLv3 는 GPLv3 agreement 의 확장이라는 점을 유의 하십시오. 따라서 LGPLv3 내용의 온전한 이해를 위해서는 GPLv3 agreement를 선행하여 살펴보아야 하며, LGPLv3 에서 추가로 확장된 내용들을 이해하여야 합니다.크로스 플랫폼 API와 개발 도구로 구성된 Qt 메인 프레임워크는 이중 라이선스 정책하에 제공되고 있지만 개발자 제공 사항이 모든 다양한 라이선스 타입에 따라 정확히 일치하지는 않습니다. FSF 라이선스들도 해당 라이선스를 통해 사용할 때 각 사용자들이 준수해야 하는 의무사항들이 존재합니다.
오픈 소스 라이선스 정책은 Qt의 전체적인 발전에 있어서 중요한 역할을 하고 있습니다. 대부분의 Qt과 관련된 연구 개발은 오픈 소스 아래 지휘되는 Qt 프로젝트 하에 이루어지고 있습니다. 개인 이나 단체가 The Qt Company와 함께 Qt 프레임워크의 개발에 참여하는 방법은 Qt Contributor*****가 되어 모든 Qt 생태계 에 혜택을 제공하기 위해서 제품을 향상 시키는 작업에 동참하는 것입니다.

등록된 Qt 기반의 Qt 프로젝트에 직접적으로 기여하는 방식으로, 개인이나 단체는 스스로의 코드베이스의 유지 부담을 덜고 추가적인 개선을 도모할 수 있습니다.


*http://www.fsf.org/
**http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
***http://www.gnu.org/licenses/gpl-3.0.html
****http://www.gnu.org/licenses/lgpl.html
*****http://wiki.qt.io/Qt-Contribution-Guidelines

3.1 Qt의 상용/오픈 소스 이중 라이선스 철학은 어떻게 되는가?
Free Software 운동에 따라 소프트웨어를 사용하는 특정한 권리에는 상응하는 의무사항이 있습니다. 오픈 소스 라이선스를 사용하는 개발자는 Qt 애플리케이션이나 장치를 사용하는 것에 있어서 네 가지 주요한 단계의 자유로운 권리를 가집니다.

어떠한 목적으로도 프로그램을 구동시킬 수 있는 자유
프로그램의 동작 방식을 연구하고 특정한 목적에 부합하도록 적용할 수 있는 자유
개발 생태계를 위해 복사본을 재 배포 할 수 있는 자유
프로그램을 개선하고 스스로의 개선 사항을 모든 관련된 공동체의 혜택을 위해서 개선 사항을 공적으로 배포할 수 있는 자유
The freedom to run the program for any purpose
The freedom to study how the program works and adapt it to specific needs
The freedom to redistribute copies so you can help your neighbor
The freedom to improve the program and release your improvements to thepublic, so that the whole community benefits

기본적으로, 오픈 소스 라이선스를 이용해 개발하는 개발자는 스스로의 사용자들에게 새롭게 만들어진 소프트웨어를 배포할 때 Qt 가 오픈 소스라이선스로 제공하는 수준의 자유로운 권리를 최종 사용자에게 동일하게 제공해야 한다는 개념을 준수해야 합니다. 이러한 철학은 또한 GPLv3/LGPLv3 서문**에 명확히 명시되어 있습니다.
오픈소스 라이선스 사용자의 권리가 보호 받기 위해서, 다른 이들도 오픈 소스 라이선스 사용자가 이러한 권리를 가지는 것을 부정할 수 없으며, 오픈 소스 라이선스 사용자에게 이러한 권리를 포기하도록 종용할 수 없습니다. 그러므로, 오픈 소스 라이선스 사용자는 소프트웨어를 배포하거나 수정할 때 다른 이들의 자유를 존중해야 하는 특정한 책임을 지니게 됩니다.
예를 들어, 만약 오픈 소스 라이선스 사용자가 그러한 프로그램의 복사본을 무상으로 혹은 유상으로 배포할 때, 오픈 소스 라이선스 사용자는 복사본을 배포 받게 되는 사용자에게 스스로 부여 받은 동일한 권리를 전달하여야 합니다.

따라서 복사본을 배포 받게 되는 사용자도 소스코드를 받아야 하며 그들이 이러한 권리를 인지할 수 있도록 하기 위해서 이러한 조건들을 명시하여야 합니다.
이러한 규약 아래 Qt를 제공하는 것에 있어서 The Qt Company는 Free Software 커뮤니티를 적극적으로 지지하고 부응합니다. 물론 명시된 오픈 소스 라이선스 철학이 Qt를 사용하려는 개발자나 단체의 의도와 부합하지 않을 때에는 Qt 상용 버전 라이선스를 대신 선택하면 됩니다. The Qt Company는 오픈 소스 라이선스와 상용 라이선스의 양쪽 집단을 모두 지원하기 위해서 존재하고 있으며, 이중 라이선스 정책을 가지고 있습니다. 이러한 이중 라이선스 정책은Qt 프레임워크를 세상에 널리 전파하는데 매우 중요한 역할을 할 뿐 아니라 상업적인 용도로 Qt을 사용하는 경우에 있어서도 제한이 없는 이용을 가능하게 합니다.

3.2 상용과 오픈소스 라이선스 타입별로 어떻게 구성되는가?
오픈 소스 라이선스 사용자에게 특정한 Qt 라이브러리들은오직 엄격한 GPL 라이선스 만으로 이용 가능하며 LGPL로는 이용 가능하지 않다는 점을 인지하는 것이 중요합니다. 그림3,4 에서 각기 다른 라이선스 에 따라 달라지는 개발자 제공 사항에 대한 개요를 확인할 수 있습니다. 이에 따라
Qt LGPLv3 라이선스 사용자가 얻을 수 있는 개발자 제공 사항은 다음과 같습니다.

Core Qt Essentials 와 Basic Qt Add-on Code Modules
개발을 위해서 기본적인 Qt 도구들의 사용

Qt GPL 라이선스의 개발자 제공 사항은 다음과 같습니다.
기본Qt 도구들을 수정하고 확장할 수 있는 가능성(GPL 라이선스)
Qt Charts 와 Qt Data Visualization 라이브러리 등의 Qt for Application Development 에 해당하는 모든 Qt Add-On Module 들.

오픈 소스 라이선스를 통해 제공되는 사항 이외, 상용 Qt 라이선스로는 다음 개발자 제공사항을 부여 받습니다.
상용 Qt 라이선스를 통해 라이선스가 부여된 모든 Qt 라이브러리와 개발 도구
직접 타겟 전개나 디바이스에 직접 연결된 디버깅과 프로파일링 등 보호된 임베디드 장치 개발(Closed-device development)을 위한 부가적인 개발 도구들
임베디드Qt 개발을 위해 선행 빌드된 맞춤 제작이 가능한 소프트웨어 스택(Boot to Qt)
공식적인 The Qt Company 와 Ocube의 기술 지원

Qt for Application Development
(desktop + mobile)

AD 라이센스 타입 안내
그림3. 다양한 라이선스 타입에 따른 Qt for Application Development 개발자 제공 사항
*GPLv3 tool 은 Qt 라이브러리에서 LGPLv3 라이센스와 함께 사용됩니다.


Qt for Device Creation
 device creation 개발자 제공
그림4. 다양한 라이선스 타입에 따른 Qt for Device Creation 개발자 제공 사항
*GPLv3 tool 은 Qt 라이브러리에서 LGPLv3 라이센스와 함께 사용됩니다.

3.3 GPL, LGPL, 상용 Qt 라이선스 차이는?
<주의> 본 문서은 법률적인 효력을 가지는 문서가 아니며, LGPL Agreement 의Ocube㈜에 의한 공식적인 법률 해석문서가 아닙니다. 오픈 소스 라이선스가 사용 용도에 맞는지 결정하는 사안에 대해서는 항상 Agreement의 원문을 참조하여야 하며 법률적인 효력을 가지는 상담처에 문의하시기 바랍니다.
라이선스 사이의 가장 커다란 차이는 소스코드를 공유하거나, Qt Code에 대한 수정사항 그리고 소프트웨어의 배포와 관련하여 각각의 라이선스가 부여하는 권리가 각기 다르다는 것입니다.

라이선스 정책에 따른 Qt 사용 차이
그림5. 오픈소스(GPL,LGPL)와 상용(Commercial) 라이선스 정책에 따른 Qt 사용 차이

› Qt (GPL) 라이선스 아래에서는 Qt 소스와 고유 소스코드를 모두 공개해야 합니다.
› Qt (LGPL) 라이선스 아래에서는 고유의 소스코드는 비공개 할 수 있지만 Qt 코드는 공개되어야 합니다. Qt 코드에 대한 수정 사항도 공개되어야 합니다. 오픈 소스 Qt 라이선스 사용자가 갖고 있는 것과 동일한 권한을 최종 사용자에게도 부여해야 합니다.
› Qt 수정 코드와 고유 코드를 포함한 모든 사항을 비공개로 유지 가능합니다. Static linking 은 보안/성능/간결하게 배포 가능한 이점이 있습니다.

GPL 라이선스는 그 자체로 매우 순수한 오픈 소스 라이선스 입니다. 따라서 해당 라이선스로 개발된 결과물이 동일한 라이선스로 배포 되어 공유 되는 모든 종류의 오픈 소스 프로젝트에서 가장 이상적인 라이선스 타입입니다. GPL 라이선스로 되어 있는 Qt 라이브러리들을 사용할 때, 개발자는 고유의 소스코드와 GPL 라이선스 되어 있는 Qt 라이브러리의 모든 소스코드를 공개해야 할 의무를 가집니다.
Qt LPGL 라이브러리를 사용할 때는 고유의 소스코드는 비공개로 유지할 수 있습니다. 그러나 목차 3.1 에서 설명된 것처럼 Qt 오픈 소스 라이선스 사용에 따라 부여 받은 모든 권리는 동일하게 최종 사용자에게 전달해야 합니다. 실제로 이것은 Qt 라이브러리에 대한 모든 수정 사항을 공개해야 하며, Qt 라이브러리는 고유의 소프트웨어와 링크 되어 있어야 함을 의미합니다. 제3자는 고유 프로그램의 LGPL 라이선스를 부여 받은 Qt 라이브러리를 검사하고, 수정하며, 업데이트 하여 고유 프로그램에 전개할 수 있어야 합니다.

이러한 과정은 실제로 Dynamic Linking 방식의 애플리케이션 구동을 요구하고 임베디드 디바이스의 경우에는 최종 사용자가 해당 하드웨어 내에서 Qt로 작성된 부분의 소프트웨어를 수정하고 다시 기기에 업로드 하여 사용할 수 있도록 장치를 모두 개방해야 함을 의미합니다.
상용 라이선스 버전의 Qt를 이용할 때도 여전히 모든 Qt의 원본 소스코드를 제공받게 되지만, 고유의 사용 용도에 맞도록 Qt 소스코도를 개선하고, 수정하고 최적화 할 수 있는 완전한 권리를 부여 받게 되며, 그러한 모든 변경 사항을 비공개로 할 수 있는 경쟁적인 장점이 있습니다. 게다가 사용된 Qt 라이브러리들은 Free Software 가 아니기 때문에, GPL/LGPL 의무사항을 따를 필요가 없습니다. 결과적으로 최종 배포되는 소프트웨어 패키지 안에 Qt 애플리케이션은 Static Linking을 이용해 비공개로 포함할 수 있습니다. 간결화된 배포 방식 이외에도, Static Linking을 이용하면 상대적으로 성능을 향상시킬 수 있고, 보안을 철저하게 유지할 수 있습니다.

3.4 LPGL 제반 쟁점 사안은?
GPL 로 라이선스 된 Qt를 사용할 때 준수해야 하는 정책은 간결하고 명확합니다. GPL 은 본래가 오픈 소스 프로젝트에서 보통 사용되고 배포와 관련된 GPL 라이선스의 의무 사항들은 준수하기 위한 절차는 간단한 것들이기 때문입니다. GPL 라이선스의 특성상 해당 소스코드를 모두 공개한다는 점에서 GPL은 특별히 상용 제품의 개발에 적용하기에는 적당하지 않은 라이선스 타입입니다. LGPL의 경우에는 GPL보다 덜 엄격한 정책을 제공하고 있기 때문에 상용 버전에서 간혹 채택되어 사용되고 있습니다만, 개발 및 배포와 관련된 LGPL의 의무 사항들은 상대적으로 복잡하여 주의 깊게 반영을 해야합니다. 본 단락에서는 LGPL Agreement 에 의해 명시된 주요한 의무 사항들을 살펴 보도록 하겠습니다.<주의> 본 문서는 법률적인 효력을 가지는 문서가 아니며, LGPL Agreement 의 Ocube㈜에 의한 공식적인 법률 해석문서가 아닙니다. 오픈 소스 라이선스가 사용 용도에 맞는지 결정하는 사안에 대해서는 항상 Agreement의 원문을 참조하여야 하며 법률적인 효력을 가지는 상담처에 문의하시기 바랍니다.

오픈 라이선스 권리 사항
LGPL Agreement 는 The Qt Company 가 아닌 Free Software Foundation 에 의해서 제정된 License Agreement 입니다. The Qt Company는 해당 문구나 조항의 제정과 편집에 대해서 어떠한 권한도 가지고 있지 않습니다. License 계약의 주요 사안은 다음과 같습니다

LGPL은 copyleft 라이선스 입니다. 따라서, LPGL 소프트웨어를 이용해 만들어진 제품에는 LGPL 라이선스가 적용이 됩니다. 해당 제품의 모든 최종 사용자는 해당 제품을 사용하는 것에 있어 동일한 License 계약 조건에 동의해야 합니다. Free Software를 배포하는 것에 있어 개발할 때 받았던 모든 오픈 소스 라이선스에 대한 혜택은 최종사용자에게도 동일하게 제공되어야 합니다.

 기본 규칙
각각의 애플리케이션의 복사본 마다, 배포자는 LGPL Agreement 전문과 함께 해당 제품이 LGPL 라이선스를 따르고 있음을 제품내에 명시해야 합니다. LGPL 이외 다른 어떠한 저작권(copyright)에 대해서 사용하고 있는 것이 있다면 사용된 모든 저작권과 등록 상표(Trademark)는 오픈 소스 소프트웨어 와 함께 명시되어야 합니다.

 수정 사항 공유
3.3 단락에서 언급된 바와 같이, LGPL 오픈 소스 라이선스 배포자는 LGPL 라이선스된 Qt 라이브러리에 대한 모든 수정 사항을 공유해야 합니다. 공유 자체는 최종목적이 아니며, Qt 라이브러리는 고유의 소프트웨어와 링크 되어 있어야 함을 의미합니다. 제3자인 어떤 최종 사용자라도 고유 프로그램의 LGPL 라이선스를 부여 받은 Qt 라이브러리를 검사하고, 수정하며, 업데이트 하여 고유 프로그램과 결합하여 실행시켜볼 수 있어야 합니다.

Dynamic Linking 과 Static Linking
3.1 단락에서 언급된 바와 같이, 최종 사용자가 배포된 고유 프로그램 내에서 사용되는 LGPL 라이브러리들을 검사하고, 수정하며 업데이트하여 고유 프로그램과 결합하여 실행해 볼 수 있기 위해서는 고유 프로그램 패키지 외부에 LGPL Qt 라이브러리들을 독립하여 위치 시켜야 하며, 일반적으로 이를 위해서 해당 라이브러리들의 Dynamic Linking을 이용해야 합니다.

Tivoization, Locked-down 된 임베디드 장치와 Hardware 암호화
티보이제이션(Tivoization)* 이란 용어는 GPL이나 LPGL같은 copyleft 라이선스를 사용하여 소프트웨어가 동작하는 임베디드 시스템을 만들었으나, 최종 사용자가 해당 소프트웨어를 수정하여 하드웨어에 구동시키는 것이 하드웨어적인 방식으로 불가능하게 막혀져 있는 – 예)Locked-Down되어 있는 장비- 제품을 언급할 때 사용되는 용어 입니다.

Tivoization 이 최종 사용자의 오픈 소스 사용 권리를 제한하는 것으로 간주되기 때문에 Qt이적용받고 있는 LGPL, LGPLv3 버전에서는 Qt오픈소스 라이브러리가 탑재된 소프트웨어를 내장한 Locked-down된 하드웨어 제품을 제작하는 것을 명시적으로 금지하고 있습니다.
임베디드제품 제작에 LGPLv3 라이선스를 이용해 Qt를 사용하는 경우에 개발자는 최종 사용자가해당 임베디드 제품 상에 사용된 Qt라이브러리를 검사하고, 수정하고 제품에 탑재하여 제품을 실행시켜 볼 수 있는 방법을 제공해야 합니다. 이러한 의무사항은 상용 제품의 보안과 신뢰성에 중요한 영향을 끼치기 때문에 많은 제조사들이 상업적인 제품에 LGPLv3 라이선스를 이용한 소프트웨어를 탑재하지 않는 주요한 원인으로 작용합니다. 이러한 경우에는 Qt의 상용 라이선스 버전을 채택하는 것이 적절합니다. Qt 상용 라이선스 버전을 이용하면 Locked-Down 된 임베디드 제품을 제작하는 것에 대한 제한 사항을 적용 받지 않습니다.
하드웨어 암호화(Hardware Encryption)와 전자서명(Digital Signatures)은 보안의 목적으로 사용될 수는 있지만, 임베디드 제품에서 사용된 오픈 소스 라이브러리가 수정된 소프트웨어를 실행시켜볼 수 있는 권한을 제한할 수는 없습니다.

DRM
LPGLv3 가 DRM 기술 구현을 명시적으로 반대하지는 않습니다. 다만 누군가가 해당 DRM을 Break 할 경우에 라이선스는 DRM이 Break된 제품을 자유롭게 배포할 수 있도록 허용하고 있습니다. 세부적인 사항은 (L)GPLv3 라이선스 FAQ**를 참고하십시오.


* TiVo라는 디지털 비디오 레코더 제품의 사례에서 유래 합니다. https://en.wikipedia.org/wiki/Tivoization 를 확인하세요.
**http://www.gnu.org/licenses/gpl-faq.html#DRMProhibited

특허 보복(Patent Retaliation)
LGPLv3 는 오픈소스 라이선스 사용자들 에게 특허권에 막혀 오픈 소스 소프트웨어를 사용할 수 없도록 하는 일을 방지 하기 위해서 특허 관련 조항을 명시적으로 포함하고 있습니다. 해당 구절들은 다소 복잡하지만 소프트웨어 특허와 관련된 커다란 기업이나 기관들과 극도로 연관되어 있습니다. 따라서 항상 LGPLv3를 사용할 때는 특허와 관련된 이슈로 인한 분쟁의 소지가 없도록 법률적인 효력을 가지는 상담처를 통해 확인하여야 합니다. 더 많은 정보들은 (L)GPLv3 FAQ*나 링크된 온라인 기사**를 확인하십시오.

4. Qt 라이브러리에 포함되는 외부 오픈 소스 라이선스 컴포넌트

Qt 프레임워크는 다양한 오픈 소스 라이선스 정책하에 라이선스된 3rd Party 라이브러리들의 기여를 통해 제작되었습니다. 이러한 3rd Party 구성 요소들은 Qt Code 모듈 내부에서(within) 사용됩니다. 이러한 것들은 Qt 문서***에 안내되어 있습니다. 일반적으로 Qt 라이브러리내의 이러한 3rd Party 구성 요소들 각각의 라이선스들은 Qt의 상용 버전 사용과 호환되고 있습니다. 대부분은 BSD 혹은 MIT 스타일의 라이선스를 통하여 제공되고 있습니다.
QtWebEngine 모듈에 대해서는 특별히 주의 깊게 살펴볼 필요가 있습니다. QtWebengine 모듈은 Qt 웹브라우저의 엔진으로 Chromium이라는 오픈 소스 프로젝트에 기반하고 있습니다. 또한 이는 Qt 오픈 소스 라이브러리들과 마찬가지로LGPLv2.1 하에 라이선스 되었습니다. 따라서 The Qt Company는 Chromium 프로젝트 라이선스를 사용하는데 있어서 스스로 부여 받은 어떠한 권리도 배포시에 제한할 수 없으며, 누구라도 동일한 라이선스 정책에 의거하여 배포하여야 합니다. 오픈 소스 라이선스 된 웹브라우저 엔진은 산업계에서 일반적인 모습이며, QtWebEngine이 특별한 경우를 가지는 것은 아닙니다. QtWebEngine은 항상 고유의 애플리케이션에 Dynamic linking 되어야 합니다.


*http://www.gnu.org/licenses/gpl-faq.html#v3PatentRetaliation
**http://www.internationallawoffice.com/Newsletters/IT-Internet/International/Osborne-Clarke/Open-source-software-and-patents-how-the-GPLv3-affects-patent-portfolios
***http://doc.qt.io/qt-5/licensing.html#licenses-used-in-qt

해당 웹엔진 모듈은 Qt 상용 버전아래에서 LGPLv3.0이 아닌 LGPLv2.1로 라이선스 되었기 때문에, 단락 3.4에서 언급된 Tivoization 관련된 사항은 적용 대상이 아닙니다. 따라서 상용버전의Qt와 QtWebEngine을 이용해 Closed Device 를 제작하는 것은 얼마든지 가능합니다.
Qt 오픈 소스 버전을 이용할 경우QtWebEngine은 LGPLv3 로 라이선스 됩니다. 따라서 오픈 소스 버전을 이용하면Tivoization 관련된 적용 대상이 되며, Qt와 QtWebEngine 을 이용하여 Closed Device를 제작할 수가 없습니다.


Qt 프레임워크 안에는 Qtcode 모듈 내부(within)에서 사용되는 것이 아닌 Qt라이브러리와 나란히(alongside) 제공되는 부가적인 3rd Party 라이브러리들이 있으며, 별도의 페이지에서 확인해 볼 수 있습니다. 이렇게 Qt 라이브러리와 나란히 제공되는 3rd Party 라이브러리를 직접적으로 사용할 경우에는 개별 라이브러리에 해당하는 라이선스가 적용되며, 해당 사실이 명시되어야 합니다. Qt는 이러한 나란히 제공되는 3rd Party 라이브러리를 포함하거나 제외할 수 있도록 환경 설정이 가능합니다.

5. 상용 라이선스 구매에 따른 The Qt Company / Ocube 기술지원 안내

5-1 The Qt Company 와 Ocube 의 관계는?
The Qt Company 와 파트너인 Ocube 는 고객들이 Qt를 기반으로 성공적으로 프로젝트를 완성하고 함께 협력할 수 있기를 희망합니다. 상업용 Qt 라이선스를 구매한 개발자나 고객사의 성공은 The Qt Company와 Ocube 에게도 중요한 사업 목표입니다. 이러한 사업 관계 속에서 상용 라이선스 구매 고객 에게는 계정 관리와 함께 제품의 품질에 대한 책임과 의무를 제공해 드립니다.


Qt가 Qt 프로젝트 오픈 관리 정책 모델(open governance model)을 따르고 있지만, The Qt Company는 Qt 프로젝트의 인프라와 운영과 가장 많은 개발에 기여하는 최대 이해 당사자입니다.
또한 The Qt Company는 Qt를 사용하는 고객의 피드백을 반영하여 고객을 위한 Qt roadmap 을 제정합니다. 버그의 수정과 관련하여서도 고객으로부터 보고된 버그들에 대해서 The Qt Company는 특별한 주의를 기울여 버그를 수정하고 개선합니다. Qt 상용 라이선스 구매 고객이 되는 것은 Qt가 나아가고 있는 방향에 함께 참여할 수 있는 기회에 동참하는 것이며, Qt를 이용한 프로젝트를 진행함에 있어서 발생 가능한 문제에 대한 든든한 지원 받을 수 있음을 의미합니다.

5-2 The Qt Company 의 기술지원은?
Qt 상용 라이선스 구매의 아주 중요한 제공 사항은 공식적인 Qt 기술 지원 입니다. Qt 상용 라이선스를 구매하면 즉각적으로 Qt Account Portal에 접근하여, e-mail을 기반으로 기술 문의를 올리고 답변을 받을 수 있는 권한이 주어집니다.
제품 설치와 사용에 관한 가이드 이외에도, Qt 기술 지원 팀은 버그 리포트를 접수 받고 검수하며, 가능할 경우에는 제품 개발에 즉각적으로 활용할 수 있는 work-around 솔루션도 제공합니다. 또한 상용 구매 고객으로부터 접수된 버그에 관해서는 특별한 주의를 기울여 문제 해결을 진행합니다.

5-3 Ocube 의 기술 지원은?
The Qt Company의 국내 파트너사인 Ocube는 50여명 이상의 Qt 전문 개발 인력을 보유하고 있으며, 10년 이상 Qt를 활용해온 높은 수준의 기술을 가진 전문 인력도 다수 보유 하고 있습니다.

The Qt Company의 공식 기술 지원과 발 맞추어 Ocube에서도 email과 전화 응대를 통한 상용 라이선스 구매 고객에 대한 기술 지원을 무료로 제공하고 있으며, 필요할 경우 개발 용역과 현장 방문 기술 지원 패키지(유료)를 이용하면 보다 전문 적인 기술 지원을 제공 받아 성공적으로 프로젝트를 완성할 수 있습니다.

6. Qt 라이선스 요약

Qt는 종합적인 크로스-플랫폼 프레임워크이자 개발 툴킷 입니다.  Qt를 이용해 native application을 만들어 내고 빌드 할 수 있으며, 최종 사용자의 모든 스크린 화면에 맞는 user interface를 제작할 수 있습니다. 혹은 사물 인터넷 시대의 강력한 장치들의 개발에도 유용하게 사용됩니다. Qt를 이용하면, 개발자는 하나의 기술과 코드베이스를 이용해 오늘날 상업적으로 이용 가능한 거의 모든 타겟 플랫폼에 제품을 전개할 수 있기 때문에 개발에서 출시로 이어지는 제품 준비를 위한 시간을 최소화할 수 있으며, 빠르게 변화하는 OS를 포함한 개발 환경의 변화에도 유지 부담을 위한 자원을 최소한으로 절약할 수 있습니다. 또한 데스크탑, 모바일 그리고 임베디드 소프트웨어 개발에 공통되는 빠르고 현대적인 소프트웨어 개발 프로세스를 구축할 수 있습니다.
Qt는 다양한 산업과, 개발자들과 개발 프로세스들을 다양한 제품과 라이선스 제공 사항으로 지원하고 있습니다. Qt for Application Development 를 이용해 개발자는 모바일과태블릿, 데스크탑의 다양한 스크린에서 활용될 수 있는 애플리케이션 프로그램을 하나의 코드베이스를 기반으로 작성할 수 있습니다. Qt for Device Creation 을 이용해 고유의 임베디드 장치와 IOT 시스템을 개발하기 위한 모든 API들과 임베디드 개발 도구를 지원받을 수 있으며, 최대한 빠른 제품 출시가 가능합니다.
Qt 의 이중 라이선스 정책 철학은 Free Software Movement 에서 유래합니다. 오픈 소스 라이선스사용에 따른 모두의 권리를 지켜나가며, 오픈 소스 사용에 따른 의무사항들을 기꺼이 준수할 준비가 되어 있는 개발자들에게 Qt가 널리 유용하게 활용될 수 있도록 하는 목적을 위해 Qt는 이중 라이선스 정책을 고수 합니다.
Qt 상용 라이선스는 오픈 소스 사용에 따른 의무사항들에 얽매이지 않고 상업적인 용도의 제품을 개발하고 보안과 특허가 보호 받는 제품을 배포할 수 있는 모든 권리를 제공합니다. Qt 상용 라이선스를 구매하면Qt Account Portal 에 접근하여 공식적인 기술 지원을 받을 수 있으며, 국내 파트너인 Ocube의 email과 전화 응대를 통한 기술 지원도 함께 지원 받을 수 있습니다.

마지막으로 Qt 상용 라이선스를 구매한 고객은 the Qt Company와 전략적으로 긴밀한 관계를 맺게 되며 The Qt Company 와  Ocube는 고객사의 개발 목표가 성공적으로 완수될 수 있도록 최선의 지원을 제공해 드리고 있습니다.

기타 라이선스 FAQ

> 라이선스를 구입했지만 개발자가 회사/프로젝트 를 떠납니다. 다른 개발자에게 라이선스를 양도할 수 있습니까?
Qt의 라이선스는 특정 개발자 개인의 사용을 위한 것입니다. 통상 개발자가 조직을 떠나고, Qt를 사용하지 않는 다른 프로젝트로 이동하거나 한 경우, 다른 개발자들이 라이선스를 대신 할 수 있습니다. 라이선스를 사용하는 개발자의 이름을 언제든지 변경할 수 있지만 일단 변경 한 후 최소 6 개월은 다시 변경할 수 없습니다.
라이선스 사용자의 변경이 있을 경우 오큐브로 변경하고자 하는 라이선스를 알려주시면 간단하게 변경하실 수 있습니다.

> Floating 라이선스를 구입할 수 있습니까?
Floating 라이선스는 일반적으로 제공하지 않습니다.
이유는 다음과 같습니다. Floating 라이선스는 동시 사용자의 최대 수를 정의한다는 생각에 기초하고 있습니다. 예를 들어 워드 프로세서의 경우 Floating 라이선스는 최대 몇명까지 응용 프로그램을 동시에 구동할 수 있는가를 의미합니다. 그러나 Qt와 같은 라이브러리 제품의 경우, 제품을 사용하는 동안 계속 실행되야 하는 주요 응용 프로그램이 존재하지 않습니다. 따라서 동시 사용자 수의 카운트가 불가능하며 Floating 라이선스는 필요하지 않습니다.

> Qt 상용 라이선스의 래퍼를 사용하여 개발한 애플리케이션을 판매할 수 있습니까?
래퍼를 사용하여 개발한 응용 프로그램의 이용자는 Qt 상용 라이선스를 구입해야 합니다. Qt API를 C ++에서 직접 사용할때 다른 언어의 API 래퍼를 통해 사용하고자 하는 경우도 라이선스 조건은 동일합니다. 직접 개발하는 경우나 래퍼를 통해서 개발하는 경우도 그 API를 호출하는 코드를 작성하는 이용자는 Qt 상용 라이선스가 필요합니다.

> 오픈 소스가 아닌 응용 프로그램을 Qt의 오픈 소스 버전으로 개발하고 판매를 시작할 시점에서 상용 라이선스를 구입하는 것은 가능합니까?
불가능합니다. Qt의 상용 라이선스는 상용 라이선스 동의하에 Qt 를 이용하여 개발 된 소프트웨어에만 적용됩니다. 이 동의에 앞서 Qt 오픈소스 버전으로 개발 된 코드에는 적용되지 않습니다.

> Qt의 오픈 소스 버전과 Qt의 상용 버전을 함께 개발하여 상용 버전의 라이선스를 라이선스 구입 지원을 받을 수 있습니까?
Qt의 오픈 소스 버전과 Qt의 상용 버전을 병용하여 개발 할 수 없습니다.

> Qt 상용 버전 라이선스를 여러개 보유하고 있습니다. 이 중 1개의 라이선스만 유지하면서 지속적으로 Qt의 지원을 받을 수 있습니까?
유지 보수 계약은 실제 Qt를 사용하는 개발자의 수만큼 필요합니다. 1개의 라이선스만을 유지 보수를 지속적으로 지원을 받을 수는 없습니다.

> 음성 / 영상 코덱의 사용에 관련된 라이선스 문제가 있습니까?
소프트웨어를 사용, 수정, 배포 할 권리를 가지고 있어도 지적 재산권의 사용이 인정되는 것은 아닙니다. Qt로 개발한  장치를 설정하기 위해 선택한 미디어 형식에 어떤 라이선스 제한이 없는지 주의해야 합니다. 예를 들어, 개발한 장치에 MPEG4 지원으로 설정하는 경우, MPEG LA (MPEG 특허 라이선스 관리 단체)에서 MPEG4를 사용하는 허가를 받아야 합니다.
The Qt Company 회사는 다음과 같은 이유로 미디어 포맷 라이선스에 참여하지 않기로 결정했습니다.

> 응용 프로그램을 만들려는 모든 플랫폼에 대해 라이선스가 필요합니까?
필요합니다. Qt에서 Windows와 Mac OS X, Linux / X11 데스크탑 애플리케이션과 iOS 나 Android, Windows RT, Windows Phone 용 응용 프로그램을 만들려면 Qt for Application Development 라이선스가 필요합니다. Embedded Linux 및 Windows / CE / Embedded 용 응용 프로그램 개발에는 Qt for Device Creation 라이선스가 필요합니다. QNX와 VxWorks, Integrity 용 응용 프로그램 개발에는 Qt for Device Creation (RTOS)의 라이선스가 필요합니다.

이 페이지의 질의 응답은 The Qt Comapny 사 (당시 Trolltech 사)과의 질의 응답을 바탕으로 하고 있습니다. 이외의 문의사항이 있으시면 아래의 연락처로 연락바랍니다.

서울특별시 강남구 강남대로 44길 21(도곡동) 에녹빌딩 4층
Qt 영업본부 qtsales@ocube.co.kr