MIT,GPL,Apache 라이선스 차이 쉽게 이해하기
오픈소스 소프트웨어는 누구나 가져다 쓸 수 있게 공개돼 있습니다. 그래서 흔히 공짜라고 생각하지만, 정확히는 일정한 조건 아래에서 무료입니다. 그 조건을 적어 둔 것이 라이선스입니다.
조건을 모르고 가져다 쓰면, 나중에 제품을 팔 수 없게 되거나 소스 코드를 통째로 공개해야 하는 상황에 부딪힐 수도 있습니다. 이번 글에서는 대표적인 세 가지 라이선스인 MIT, Apache, GPL이 어떻게 다른지를 코드 없이 풀어 보겠습니다.
오픈소스의 무료에는 조건이 있습니다 #
라이선스는 이 코드를 어떤 조건으로 써도 되는지를 정해 둔 사용 규칙입니다. 공개돼 있다는 것과 마음대로 써도 된다는 것은 다른 이야기입니다. 공개된 코드에도 이렇게 쓰면 되고 이건 지켜 달라는 약속이 함께 붙어 있습니다.
다행히 널리 쓰이는 라이선스는 몇 종류로 정리됩니다. 그중 MIT, Apache, GPL 셋만 구분할 줄 알아도 대부분의 상황을 읽어 낼 수 있습니다. 세 가지는 너그러운 쪽에서 까다로운 쪽으로 늘어놓을 수 있습니다.
MIT — 가장 너그러운 라이선스 #
MIT는 가장 자유로운 축에 드는 라이선스입니다. 원작자를 밝히는 저작권 표시만 그대로 남겨 두면, 그 코드를 상업적으로 쓰든, 고쳐서 쓰든, 고친 결과를 공개하지 않든 거의 모두 허용됩니다.
조건이 단순해서 기업과 개인 모두 부담 없이 가져다 씁니다. 이 코드를 써서 생긴 문제는 책임지지 않는다는 면책 조항과 저작권 표시 유지가 사실상 전부입니다. 가볍게 쓰기 좋아 수많은 인기 라이브러리가 MIT를 택합니다.
Apache — MIT에 특허 보호를 더한 라이선스 #
Apache 라이선스는 MIT처럼 자유롭게 쓸 수 있으면서, 특허에 관한 조항을 한 겹 더 둔 것이 특징입니다. 코드 기여자가 가진 특허를, 그 코드를 쓰는 사람에게도 함께 허용해 준다는 내용이 담겨 있습니다.
쉽게 말하면, 나중에 그 코드와 관련된 특허로 사용자를 걸고넘어지지 못하도록 미리 막아 두는 장치입니다. 그래서 특허 분쟁을 신경 쓰는 기업들이 Apache 라이선스를 선호합니다. 자유롭게 쓰되 법적인 안전장치를 한 겹 더 원한다면 Apache가 알맞습니다.
GPL — 자유를 이어 가게 하는 라이선스 #
GPL은 앞의 둘과 결이 다릅니다. GPL로 공개된 코드를 가져다 내 소프트웨어에 넣으면, 내 소프트웨어도 같은 GPL 조건으로 공개해야 합니다. 자유롭게 받은 만큼 자유롭게 내놓으라는 철학입니다.
이 성질 때문에 GPL은 종종 전염성이 있다고 표현됩니다. 비유하자면 GPL 코드가 한 방울 섞이면 그 물 전체가 GPL 색으로 물드는 셈입니다. 모두에게 열린 소프트웨어를 지키려는 좋은 의도이지만, 소스를 공개할 수 없는 상업 제품에서는 큰 제약이 됩니다. 그래서 GPL 코드를 제품에 넣기 전에는 특히 신중하게 확인해야 합니다.
그래서 무엇을 봐야 하나 #
제품에 오픈소스를 가져다 쓸 때 확인할 것은 두 가지로 좁혀집니다. 상업적으로 써도 되는지, 그리고 내 소스 코드를 공개할 의무가 생기는지입니다. MIT와 Apache는 대체로 둘 다 걱정이 없고, GPL은 소스 공개 의무를 따져 봐야 합니다.
라이브러리를 하나 들여올 때 라이선스를 한 번 확인하는 습관만으로도 나중의 큰 문제를 막을 수 있습니다. 공개돼 있으니 그냥 써도 되겠지 하고 넘기는 것이 가장 위험합니다.
왜 비개발자가 알면 일이 편해지는가 #
- 도입 결정을 함께 판단합니다. 어떤 오픈소스를 제품에 쓸지 정할 때, 라이선스가 사업에 어떤 제약을 주는지 개발자와 같은 눈으로 볼 수 있습니다.
- 법무,계약 리스크를 미리 봅니다. 외주나 납품 계약에서 오픈소스 라이선스를 지켰는지가 왜 점검 항목이 되는지 이해할 수 있습니다.
- 우리 코드 공개 여부를 정합니다. 우리가 만든 것을 오픈소스로 낼 때, 어떤 라이선스를 붙이면 사람들이 어떻게 쓸 수 있는지 방향을 잡을 수 있습니다.
마무리 #
오늘은 오픈소스의 대표 라이선스인 MIT, Apache, GPL을 너그러운 쪽에서 까다로운 쪽으로 살펴봤습니다. MIT는 저작권 표시만 지키면 거의 자유롭고, Apache는 거기에 특허 보호를 더했으며, GPL은 가져다 쓰면 내 코드도 함께 공개해야 한다는 점이 핵심입니다.
오픈소스가 어떻게 세상을 바꿔 왔는지 궁금하다면 오픈소스가 세상을 바꾼 이야기를, 여러 사람이 한 코드를 함께 고치는 협업이 어떻게 이뤄지는지 궁금하다면 Git과 버전 관리를 함께 읽어 보시길 권합니다.