| 이일민의 Passionate Open Source User |
건강한 오픈소스의 모습 |
 |
!-->


이일민
호주 DevelopGate에서 IT 컨설턴트로 일하며 다양한 오픈소스 기술을 효과적으로 엔터프라이즈 시스템 개발에 적용하는데 주력하고 있다. 현재 OpenSeed의 오픈소스 애플리케이션 프레임워크 프로젝트인 OSAF의 리드 개발자로 활동중이다.
2007년 3월 6일
|
|
 |
|
얼마 전 난생 처음 병원에 입원했다. 사소한 상처가 크게 악화돼 이를 제거하는 수술을 받아야 했기 때문이다. 연일 밤늦게까지 일을 하면서도 많이 지치지 않는 편이라, 체력은 좋다고 자신했었는데 사실은 그리 건강하지 못했던 것 같다. 당장의 체력이나 순간의 능력보다는 장기적으로 다양한 환경 속에서 견뎌낼 수 있는 건강이 있는지가 더 중요함을 깨달았다.
오픈소스의 건강도 사람의 몸과 비슷하다. 사람들은 오픈소스 제품의 기능이 얼마나 뛰어난지, 또 당장 사용하는 데 결함이 없는지에 주로 관심을 둔다. 이런 제품들을 품질이 좋은 오픈소스라고 말할 수 있을 것이다.
하지만 더 주목해야 하는 것은 건강한 오픈소스인가 하는 점이다. 지금은 괜찮은 제품이지만 앞으로 시간이 흐르면서 요구되는 변화와 발전에 잘 견디지 못한다면 그 오픈소스는 건강한 제품이라고 할 수 없다.
한 때 상용 제품을 포함한 사용률 통계에서 그 비율이 70%대에 육박했던 오픈소스 프레임워크가 있었다. 하지만 뛰어난 기능과 안정적인 품질을 자랑하던 그 제품도 점차 사용자들에게 외면을 받기 시작했다. 다양한 기술 변화 요구를 충족시킬 수 있는 유연한 확장성이 부족했기 때문이다. 사용자들은 계속 새로운 기능과 기술 발전을 원했지만 그 변화 요구를 제대로 수용하지 못한 이 오픈소스 프레임워크는 이제 사라질 위기에 처해 있다. 변화의 충격을 감당하지 못한 건강하지 못한 제품이었던 것이다.
이와는 달리 사용자들이 제품을 확장해 사용하거나 새로운 기능들을 요구할 것을 미리부터 고려해 만들어진 다른 유명한 오픈소스 프레임워크가 있다. 버전이 올라갈 때마다 겪을 수 있는 호환성 문제를 고려해 처음부터 꾸준히 하위 호환성을 유지한 채로 발전해왔다. 이 덕분에 기존 사용자들이 지속적인 변화에도 걱정 없이 꾸준히 사용할 수 있었고 동시에 안정적으로 새로운 기술이 계속 접목되면서 보다 많은 사용자층을 확보하고 있다.
이렇게 건강한 오픈소스는 시간의 흐름과 기술 발전 앞에서 흔들리지 않는다. 이런 오픈소스 제품에는 두 가지 특징이 있다.
첫째, 사용자들의 요구에 열려있는 유연한 구조를 갖춘 것이다. 개발자의 우월감이 앞서 만들어준 대로 사용하라는 태도를 보이거나 소수의 천재적인 개발자들에 의해 닫힌 구조로 개발되는 제품은 소스가 공개되어 있어도 오픈된 소프트웨어라고 볼 수 없다.
반대로 사용자와 개발자들이 함께 교감하는 커뮤니티 활동이 활발한 제품은 처음에는 단순하고 초라하게 시작했더라도 성공적으로 발전해 나간다. 제품의 기본 틀 안에서 손쉽게 확장할 수 있는 플러그인 구조를 제공하는 루비 온 레일스(Ruby On Rails)나 대부분의 기능이 인터페이스 기반의 확장성을 고려한 구조로 설계되어 있는 스프링(Spring)이 그 대표적인 예이다.
둘째, 사용자들이 적극 참여한다는 점이다. 건강한 오픈소스는 사용자들의 다양한 요구사항이 커뮤니티를 통해 활발히 논의되고 빠르게 제품에 적용된다.
아무리 정성을 기울여 개발했더라도 소수의 개발자들이 현장의 그 많은 요구를 다 수집, 분석, 개발, 검증까지 한다는 것은 불가능에 가까운 일이다. 따라서 오픈소스 개발자들은 기초가 되는 제품의 아이디어와 틀을 제공하는 것에 의미를 두는 것이 바람직하다.
최근에 자주 찾는 오픈소스 커뮤니티에 질문이 하나 올라 왔다. 새로운 요구조건을 충족시키기 위해 필요한 기능이 있는데, 기존 오픈소스에는 그런 기능이 없어서 해결을 못하고 있다는 고민이었다.
그런데 얼마 지나지 않아 한 사람이 기존의 오픈소스 코드를 확장해 그 요구조건을 해결할 수 있는 코드를 만들어 공개해 주었다. 또 다른 어떤 사람은 외국의 다른 개발자가 그 오픈소스를 확장해 비슷한 기능을 구현한 확장코드를 발견했다고 알려주었다. 질문을 올렸던 사람은 그 확장된 코드들을 실무에 적용, 검증해 보고 그 적용 결과를 알려주었다.
필자도 이 과정에서 확장 코드를 좀더 개량할 수 있는 몇 가지 아이디어를 찾아냈고 이를 완성도 있게 만들어내는 작업을 진행중이다. 이제 내가 그것을 오픈소스 개발자 커뮤니티에 공유하면 또 다른 사용자의 손을 거쳐 멀지 않은 시기에 정식으로 오픈소스 제품에 적용될 것이다.
이것이 바로 건강한 오픈소스의 모습이다.
[지난 developerWorks Column 보기]
|