오픈소스 선택 시 고려사항

유사한 기능을 제공하는 여러 오픈소스 중 어느 것을 선택해야 하나?

    필요한 기능을 구현하려고 오픈소스를 사용하기로 했다면, 비슷한 기능을 제공하는 여러 오픈소스 프로젝트 중 어느 것을 선택하는 게 좋을까? 여러 측면에서 고려해야 할 점을 알아보자.

    품질

    기능, 성능, 호환성 등 오픈소스의 품질은 오픈소스를 선택할 때 가장 중요한 요소이다. GitHub에서 호스팅하는 프로젝트라면 Star 수, Fork 수로 오픈소스의 완성도를 가늠할 수 있다. 오픈소스를 사용하려는 기술 조직은 충분히 기능과 성능을 검증한 후 제품/서비스에 도입해야 한다.

    커뮤니티

    오픈소스가 얼마나 많은 사용자를 확보하고 있는지, Issue를 잘 관리하는지, 꾸준히 업데이트하는지 등 커뮤니티의 활성화 여부도 오픈소스를 선택할 때 고려해야 할 사항이다. 커뮤니티 활동이 수년 전에 멈춘 오픈소스보다는 지금도 활발한 커뮤니티를 가진 오픈소스를 선택하는 것이 유리하다.

    문서화

    오픈소스를 제대로 도입하고 유지보수하려면 프로젝트가 문서를 얼마나 충실하게 제공하는지도 확인해야 한다. 문서화가 잘 된 프로젝트의 산출물은 기업이 도입하기 수월하다. 또한 기업이 개선한 패치를 프로젝트에 다시 기여하기도 쉽게 해 준다.

    보안 취약점

    보안 취약점이 알려진 오픈소스는 사용해서는 안 된다. 보안 취약점이 발견된 오픈소스 버전은 CVE와 같은 데이터베이스에서 관리한다. 사용하려는 오픈소스 버전에 보안 취약점이 있는지 확인한 후 사용해야 한다.

    라이선스

    오픈소스 라이선스는 소프트웨어를 누구나 자유롭게 사용할 수 있는 권리를 부여하는 허가증이다. 하지만, 대부분의 오픈소스 라이선스는 오픈소스를 재배포 시 준수해야 할 의무사항을 요구한다. 예를 들어, 고지 의무, 소스 코드 공개 의무 등이다. 대표적인 오픈소스 라이선스인 GPL-2.0은 이와 결합하는 소프트웨어의 소스 코드까지 공개할 것을 요구한다. 따라서, 오픈소스를 선택할 때는 라이선스가 무엇인지, 라이선스를 준수할 수 있는 환경인지 반드시 미리 확인해야 한다. 이를 위한 오픈소스 컴플라이언스 활동을 아래에서 설명한다.