한국어
Qt
 

Qt의 라이센스는 프로젝트 상황에 맞도록 크게 두가지 선택지를 제공한다. 각각의 특징들과 오픈소스 라이센스 Qt를 사용할 때 생기는 몇가지 오해를 소개한다.

 
첫번째로 커머셜(commercial) 라이센스는 Qt 소스코드의 사용, 개발에 조건 없이 사용할 수 있으며 외부에 공개하고 싶지 않은 프로젝트, 독점적인 소프트웨어를 개발 할 수 있다. 커머셜 라이센스를 구매하기전 프로젝트에서 필요로 하는 모듈 또는 솔루션을 사용할 수 있는지와 프로젝트 규모에 따라 달라지는 부분도 고려해야 할 것이다.
 
다른 하나는 GNU LGPL (LGPL) 버전 3에 따라 라이센스가 부여 된 오픈소스 라이센스이다. LGPL은 GPL 라이센스의 강력한 카피레프트 조건을 다소 완화한 라이센스로 이 라이센스의 약관을 준수 할 수 있는 소프트웨어를 개발 할 수 있다. 다만 오픈소스 라이센스 Qt의 경우 GNU LGPL v3에서는 일부 모듈을 사용할 수 없고 GNU 일반 공개 라이선스(GPL)에 따라 사용할 수 있다. Qt 5.14 기준으로 다음과 같은 툴, 모듈, 에드온들은 GPLv3라이센스로 제공된다.
 
• Qt Charts
• Qt CoAP
• Qt Data Visualization
• Qt Device Utilities
• Qt KNX
• Qt Lottie Animation
• Qt MQTT
• Qt Network Authentication
• Qt Quick WebGL
• Qt Virtual Keyboard
• Qt Wayland Compositor
• Qt Application Manager 
• Qt PDF
• Qt Creator 
• Qt for WebAssembly
 
Qt 6 기준 상용 라이센스 또는 GPL v3에 따라 사용 가능한 애드온 
 

GNU.png

 

몇 가지 오해
 

오픈소스 라이센스 Qt를 사용하면 내가 개발한 소스코드를 공개해야한다?

위에 언급한 몇가지 GPL라이센스 도메인을 제외하고 LGPL라이센스 라이브러리를 응용프로그램에서 동적(dynamic) 또는 정적(static)으로 링크 시켜 사용하는 경우, 응용프로그램의 소스코드 공개 의무는 발생하지 않는다. (정적 링크에서는 응용프로그램의 오브젝트 코드를 사용자에게 제공의무가 발생한다.) 다만 어떤 링크방법이든 Qt 소스코드를 수정하면 수정한 Qt소스코드는 공개해야하고 Qt 소스코드와 응용프로그램 소스코드를 결합하여 컴파일하는 경우도 전체 소스코들 공개의무가 발생한다.

 

오픈소스 라이센스 Qt를 사용하면 상업용 프로그램을 개발할 수 없다?

GPL이든 LGPL라이센스든 상업적으로 이용할 수 있다. 그러나 GPL라이센스 오픈소스를 사용하면 무조건 소스코드 공개해야 하는 것과 까다로운 의무가 따르므로 상업용 소프트웨어 개발에서는 꺼리기 마련이다.

 
 
다음은 해외 커뮤니티 사이트에서 Qt와 LGPL 라이센스에 대해서 비교적 잘 이해하고 있는 사람의 글을 일부 가져온 것이다.

 

라이선스 비용을 지불하지 않고 상용 비공개 소스 제품에서 Qt를 사용하고 싶다면 LGPL 버전을 사용하면 쉽게 할 수 있습니다.

  1. 상용 버전을 구입하지 마십시오.
  2. Qt 라이브러리의 소스 코드를 변경하지 마십시오. 그대로 사용하십시오.
  3. 링크 지침과 함께 정적으로 또는 동적으로 링크된 오브젝트 파일에 대한 액세스를 제공할 수 있어야합니다. 정적 링크와 동적 링크는 LGPL에서 중요하지 않습니다. LGPL은 사용자가 직접 오픈 소스 라이브러리 소스 코드에 대한 액세스 권한과 수정하고 이를 비공개 소스 오브젝트 파일에 링크하여 바이너리를 생성 할 수 있어야합니다.

상용 코드를 commercial.o로 컴파일 한 다음 LGPL 코드를 lgpl.o로 컴파일하여 단일 바이너리로 링크합니다.

ld -o binary  lgpl.o commercial.o -lc

소프트웨어를 제공 할 때 바이너리(오브젝트파일)를 함께 보내고, 링크 지침과 함께 commercial.o 및 LGPL 라이센스 소스 코드에 대한 액세스를 제공합니다. 사용자는 이제 Qt의 LGPL 버전을 조작하고 lgpl.o로 컴파일하고 소스 코드에 액세스하지 않고도 commercial.o에 링크 할 수 있습니다. (참고 : 물론 LGPL에서 Qt를 수정할 수도 있습니다. 하지만 포크를 직접 유지 관리해야하며 일반적으로 그렇게하고 싶지 않을 것입니다.)

 
참조 사이트 : 

https://news.ycombinator.com/item?id=23321448

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 85682
49 Qt 하이브리드 애플리케이션(Hybrid App) 개발 file makersweb 2023.02.08 813
48 Widgets(C++) 기반의 기본 스타일을 Dark 테마 및 Material 디자인 스타일로 바꾸기 file makersweb 2023.01.28 1080
47 Qt Property(속성) 시스템 makersweb 2023.01.08 1667
46 VTK 를 사용해서 강력한 시각화(3D, Plotting, Chart)Qt 응용프로그램 개발하기 file makersweb 2022.10.16 1532
45 QProcess 보안 권고 리뷰 file makersweb 2022.09.18 554
44 clazy 로 13개의 시그널, 슬롯 오류 해결 makersweb 2022.08.23 549
43 단일 인스턴스 Qt 응용 프로그램(Single-instance Application) makersweb 2022.06.23 696
42 VirtualKeyboard 스타일 커스터 마이징 makersweb 2022.03.13 456
41 Qt 응용프로그램에서 PDF 문서 렌더링 file makersweb 2021.09.23 669
40 Qt 를 사용하거나 기반으로 하는 응용프로그램 file makersweb 2021.01.30 3765
39 UI 폼(Form)작성 시 탭 순서(Tab Order) 설정 file makersweb 2020.08.24 2753
38 Qt기반의 서버와 클라이언트간 SOAP(Simple Object Access Protocol) file makersweb 2020.05.11 965
37 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51831
36 QOpenGLWidget 을 투명하게 적용 file makersweb 2020.02.05 1021
35 2020년에 변경되는 Qt 오퍼 (Qt offering changes 2020) [2] j2doll 2020.01.31 715
34 Qt 멀티 스레드 프로그래밍 시 유의해야 할 몇 가지 makersweb 2020.01.13 4847
» Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12510
32 Qt Marketplace 발표 makersweb 2019.12.02 613
31 QOpenVirtualkeyboard(Qt 5용 한글 및 영문, 숫자 가상키보드) file makersweb 2019.11.27 2233
30 많은 리소스를 사용하는 Qt프로젝트에서 고려해봐야 할 qmake 옵션 makersweb 2019.10.11 1231