소스코드를 무료로 공개, 배포하는 오픈소스 소프트웨어(OSS; Open Source Software)는 단순히 미리 만들어진 소프트웨어를 사용한다는 개념으로 해석할 수 있지만 최근에는 OSS로 인해 소프트웨어를 개발하는 모습 자체가 변하고 있습니다. 옵션으로 생각되던 OSS가 반드시 살펴봐야 하는 필수요소로 자리잡고 있습니다.
OSS는 무조건 공짜라고 알고 있는 사람들도 많습니다. 하지만 OSS는 무료 소프트웨어인 프리웨어(Freeware)와는 다릅니다. 사용자가 소스에 접근하고 사용, 수정, 재배포가 자유스럽다는 것이 OSS의 특징입니다. 최근에는 기술지원을 포함하는 상업용 OSS도 늘어나고 있어, 커뮤니티 등을 활용하여 특정 OSS를 유지 관리하는 사용자와 개발자 그룹이 존재하기도 합니다.
프로젝트 초기 단계의 개발 트랜드 변화
지금도 소프트웨어를 개발할 때 가장 중요한 요소를 꼽으라고 한다면 대부분은 우수한 역량의 개발자를 꼽을 것입니다. 완벽한 소프트웨어를 만들기 위해서는 개발자의 역량이 무엇보다 중요하기 때문입니다. <그림1>에서 절차 ①을 보면, 개발자는 요구사항을 접수해서 소프트웨어를 설계하고 개발합니다. 이 프로세스가 소프트웨어를 개발하는 일반적인 프로세스입니다. 이러한 프로세스는 소프트웨어가 완성될 때까지 개발자에게 대부분의 권한을 위임합니다.
개발자들은 개발 초기에 불명확한 요구사항 때문에 매우 많은 시간을 소비하고, 소프트웨어의 틀을 잡기 위해서 초기 코딩 시간도 매우 긴 편입니다. 프로젝트의 모든 것을 살피고 개발도 잘하는 슈퍼맨이 필요하다는 것도 이 때문이라고 할 수 있습니다. ②를 살펴보면, 개발하기 전에 OSS를 검토하는 것으로 되어있습니다. 소프트웨어는 항상 새로운 것을 개발해야 할 것 같지만, 매우 특이한 기능도 미리 개발된 경우가 많습니다. 왜냐하면 많은 사람들이 동일한 방법으로 쉽게 사용하도록 만든 것이 바로 소프트웨어이기 때문입니다. 따라서 원하는 기능을 OSS에서 찾는 경우가 많다고 OSS 경험자들은 얘기하고 있습니다.
<그림1> 오픈소스 활용 시점
이제 OSS는 피해갈 수 없을 만큼 양도 많아지고 사용 횟수가 많아지면서 질도 갈수록 높아지고 있습니다. 현재는 개발 후에 OSS에 문제가 없는지 검증만 해보고 있지만, 개발 전에 OSS를 검토하고 개발에 활용한다면 개발자의 초기 부담이 현저히 줄어들 것입니다. 또한 검증된 OSS를 활용함으로써 오류가 줄어들어 소프트웨어의 신뢰도는 매우 높아질 것입니다. 소프트웨어 개발자에게 OSS 활용 역량을 강조해야 하는 이유입니다.
<그림2> 독점 소프트웨어와 OSS 개발방법론