MySQL의 라이센스 모델이 가지는 의미는? MySQL은 결국 죽임을 당할 것인가?

우선 이 글은 The importance of the license model of MySQL or Can MySQL be killed?을 번역한 글임을 밝힙니다.

급하게 번역했기 때문에 오역이 있을 수 있음을 양해 바랍니다. 이하 내용은 번역된 내용입니다.

지난 몇 주간 받았던 공통적인 질문들에 대해 답하기 위해 이 포스트를 남깁니다.

A. MySQL이 없어질까?

1. MySQL을 죽이기 위한 제일 간단한 방법은 라이센스를 더이상 팔지 않거나 그 가격을 굉장히 높게 하는 것입니다.

2. 다른 시나리오는 중요한 부분에 대한 개발 인력을 확 줄여버리는 것입니다. 그러면 사람들은 MySQL의 미래에 대해 의심하기 시작할 것이고 서서히 MySQL을 죽여나갈 것입니다. 특히나 현재의 라이센스가 그대로 있다면 더욱 그럴 것입니다. (MySQL의 코어는 대부분 거대한 커뮤니티가 아닌 SUN의 개발자들을 통해 개발되어왔다는 사실을 기억해야 합니다.)

B. “하지만 누구나 fork할 수 있지 않나?”

누군가 GPL 프로젝트(혹은 그 코드)를 이용해서 fork할 순 있겠지만 그 프로젝트나 코드를 둘러싼 경제적 인프라 스트럭쳐까지는 쉽게 복제할 수 없습니다.

MySQL은 엔드 유져용 애플리케이션이 아니고, 인프라 스트럭쳐 프로젝트는 시스템 스택의 깊은 곳에까지 관여되어 있습니다. 최근 MySQL을 이용해서 혁신을 이뤄냈던 기술적인 파트너들은 대부분 MySQL로부터 라이센스를 받아서 자신의 closed 소스 어플리케이션혹은 (스토리지 엔진 같은) 코드와 MySQL을 조합해서 사용할 수 있었고, 라이센스를 통해 파트너들로부터 받아들이는 직간접적인 수입은 경제 인프라스트럭쳐의 굉장히 큰 부분이었습니다. (이들이 어디서 돈을 벌 수 있는가 정도로 생각하심 될 것 같습니다.)

GPL 프로젝트의 인프라스트럭쳐를 포크하는 것을 통해선 위에서 언급한 파트너쉽 같은 일을 할 수 없고, fork된 프로젝트는 자신들만의 closed 소스 파트와 이 프로젝트를 섞어 사용할 수 없도록 만듭니다. 파트너들이 MySQL코드와 자신들의 코드를 섞어 사용할 수 없게 된다면, 이 파트너들은 MySQL이 아닌 다른 프로젝트를 찾게 될 것이고 결국 MySQL로의 자금 이입이나 MySQL을 둘러싼 기술 혁신은 멈춰버릴 것입니다. 다른 프로젝트들에는 누구나 참여해서 돈을 벌 수 있으니 결국 이런 프로젝트들이 MySQL이 하던 일을 대신하게 되는 것이죠.

MySQL을 위한 기술 지원 회사를 만들 수도 있겠지만 이런 것들만으론 MySQL 유져들이 만족할만큼 MySQL 개발할 수 있는 돈을 충분히 벌 수 없습니다. 그러므로 이런 회사들은 MySQL을 조금 천천히 죽게 만들 뿐 살려낼 수는 없습니다.

오라클처럼 많은 사람들이 일하는 회사에 대항할 경쟁력을 가진 상태로 MySQL을 살아있게 하려면 MySQL을 위해 일하는 사람도 많아야 합니다. 이를 통해 충분한 수입을 얻을 수 없다면 (앞에서 언급했듯이 지원을 통해선 충분한 수입을 얻지 못합니다.) 일부 몇 개 회사들만이 개발에 참여하게 될 것이고, 투자회사에서의 지원도 줄어들게 될 것 입니다. 결국 서비스를 통해서 벌어들이는 돈이 전부가 될 것이지만 이 돈은 그리 큰 규모가 될 수 없습니다.

또한 리차드 스톨만이 언급했던 것처럼 MySQL에선 GPL2만을 사용할 수 있으므로, GPL3 코드와는 결합될 수 없습니다. 이 말은 GPL3를 사용하는 자유 소프트웨어 프로젝트들에서 MySQL을 사용할 수 없다는 것입니다. 하지만 이 문제는 경제적인 문제에 비교하면 대단한 문제라곤 할 수 없습니다.

C. “GPL은 충분히 쓸만한 라이센스인가?”

제 생각에 GPL은 굉장히 훌륭한 라이센스입니다. 이 라이센스는 GPL로 된 프로젝트들을 자유롭게 해주는 동시에 회사들이 풀타임으로 개발에 참여하면서 충분히 돈을 벌 수 있는 가능성도 제공하고 있습니다. 또한 GPL은 이런 회사들이 이 제품을 강력하게 관리할 수 있도록 보장해줍니다. (특히나 그들의 *closed source* 기술 파트너들을 위해) 이게 바로 투자자들이 GPL을 사용하는 회사에게 투자하고 싶어하는 이유라고 할 수 있습니다. 투자자들은 이 제품을 fork하는 것을 통해 이 코드에 대한 권한을 줏어가는게 불가능하다는 사실을 알고 있기 때문이죠.

D. 결론

아마 Sun과 오라클도 이 사실을 알고 있을 겁니다. 이게 바로 Sun이 MySQL을 비싼 가격에 사들였던 이유이고, 오라클이 MySQL을 바보로 만드려는 이유이죠.

MySQL을 fork하기만 하는 정도로 간단한 문제였다면 Sun은 MySQL을 사지 않았을 것이고, 오라클은 MySQL을 포함해서 SUN을 사는 대신 MySQL fork를 만들었을테니까요.

오늘의 뻘짓…

제 워드프레스에 트랙백이 안달린다는 얘기를 듣고 제 개발용 데이타베이스에다가 워드프레스를 설치하기로 마음먹었습니다. 오랫만에 디비를 들여다보니 예전에 뭔가를 테스트한다고 깔아놨던 찌그래기가 보입니다. 한 번쯤 정리할 때가 됐다는 생각이 들어 디비를 drop 해버렸습니다.

어라? 내 개발용 데이타베이스 이름은 ‘aqua_dev’인데…

네 오랫만에 디비 한 번 날렸습니다. -_-a 다행히도 매 주 한 번씩 자동으로 백업이 되고 있었고, 오늘은 월요일이기에 피해가 코멘트 세 개 정도에 불과합니다. 휴~

역시 인생지사 세옹지인지 디비를 복원한 후에 트랙백을 무사히 도착받을 수 있었습니다.

예전에 ‘rm -rf ~/’를 실행했을 때에 비하면 별 거 아니긴 했지만 하여튼! drop, rm -rf 같은 명령어를 사용할 때는 조금 긴장하고 작업을 해야겠습니다. -_-a

덧: 참고로 제 트랙백 주소는 글주소/trackback 인데, 따로 눈에 보이게 적어놓지 않아서인지 글주소로 트랙백을 보내시는 분들이 있는 것 같습니다. -_-a

sql injection 을 피하기위한 간단한 방법…

sql injection 을 피하기 위해 single quote 를 escape 시켜주는 코드를 작성해야할 필요가 있었는데, 매번 하나하나에 대해 mysql_real_escape_string 을 호출해주는 건 너무나도 번거로웠다. 뭔가 간단하게 처리할 방법이 없을까 하고 찾아봤더니 왠걸! array_map 이라는 마법의 함수를 발견할 수 있었다.

common function 들을 정의해놓은 파일 맨 아래 저 코드를 삽입해버리니 sql injection 따위 이제 두려워할 필요가 없어졌다. 움하하핫!!

p.s) 그냥 array_map 에 stripslashes 나 mysql_real_escape_string 을 사용하게 되면 array 가 넘어온 경우 문제가 생길 수 있어서 약간 수정을 했습니다.