2013년 8월 28일 수요일

삼성 exFAT 드라이버 유출과 공개 사건에 대해

삼성의 exFAT 드라이버 유출과 관련해, 엉뚱한 삼성 비난 또는 삼성 옹호 얘기가 있길래 실제 코드를 보고 파악할 수 있는 쟁점을 지적해 보고자 한다. 일단 사건의 개요는 넘어가고,

관련 기사 http://www.etnews.com/news/computing/solution/2817944_1476.html

유출된 코드 https://github.com/dorimanx/exfat-nofuse

공개된 코드 http://opensource.samsung.com/reception/receptionSub.do?method=sub&sub=F&searchValue=exfat


- 위 기사의 후반부의 특허 논란 얘기는 틀린 내용이다. 특허는 논란의 여지가 없다. 삼성과 MS는 2011년 크로스 라이선싱 계약을 맺은 상태이므로 삼성 제품에 사용하는 건 삼성의 정당한 권리. 그리고 특허 시스템을 모르는 사람들이 특허가 공개되도 괜찮으냐고 의문을 품는데, 특허는 원래 공개된 거고 특허와 소스 코드의 라이선스는 별개의 문제이다.

- 유출된 코드의 GPL 위반이 발견된 상황에서 삼성의 선택은 두 가지가 있었을 것이다. 첫 번째는 이 코드는 GPL과 별개의 작업이다라고 주장하면서 논란을 확대하는 것이고, 또 하나는 그냥 소스 코드를 공개해 버리고 논란을 종식시키는 것. 이 중에서 후자를 선택한 것은 잘 한 일이었다.

- 하지만 생각해 보면 삼성은 그렇게 선택할 수밖에 없었다. 리눅스 커널 드라이버가 GPL이냐는 떡밥은 참 전통이 깊고, 애매한 상황 아니냐고 논란이 생길 수도 있는데, 적어도 이번 사건은 지금까지 알려진  애매한 상황이 아니라 명확한 GPL 위반 상황이었다. 이 드라이버는 처음부터 리눅스를 위해 작성된 드라이버이므로 GPL v2 section 3에 정확히 걸린다. 또 유출되고 공개된 코드를 실제로 보면 기존 FAT 드라이버 코드의 많은 부분을 복사 붙여넣기 한 게 너무 명확했다. 따라서 이 드라이버는 명백한 GPL 코드의 파생물이었다. 링크가 되니 안 되니 논쟁의 문제가 아니다. 즉 애초부터 이 드라이버의 소스 코드는 삼성이 GPL로 릴리스했어야 했다. 그게 유출이라는 또 다른 불법적인 경로를 통해 들통이 난 것이다.

- 한편 많은 뉴스 기사를 보면 GPL-only symbol을 썼다고는 하는데 ("Samsung was shipping this closed-source exFAT driver on a tablet yet they were relying upon GPL-only symbols") 유출된 버전과 공개된 버전이 차이가 있다. 실제 공개된 드라이버에는 GPL 심볼이 사용되지 않아서 이 부분은 사실인지 의심스럽다. 유출된 코드에서는 GPL 심볼을 사용한 부분이 있으나 나중에 공개된 소스나 제품에 포함되어 있는 바이너리에는 그런 흔적이 전혀 없기 때문에, 유출된 버전이 나중에 수정되면서 추가된 부분일 가능성이 높다. 게다가 GPL 심볼을 사용하는 커널 드라이버가 GPL 라이선스를 안 붙이게 우회하기도 쉽지 않고, 그 과정에서 법적 논란이 있음을 쉽게 인식할 수 있는데 악의적으로 감췄을 것 같지도 않다.

- 삼성의 오픈 소스 정책이 무엇이든, 감출 수 있으면 감추는 게 기본 방침이라고 하더라도, 이번 부분은 감출 수 없고 공개했어야 하는 부분을 감춰 버렸던 것은 명백하다. 오픈소스 관리에 놓친 부분이 생긴 건 사실이다.