C++ 3분 소요

EDG가 오픈소스가 된다면, C++ 엔진의 유지비는 누가 낼까요

핵심 요약

  • EDG의 C++ 프런트엔드는 소스 코드의 문법과 의미를 분석하는 상용 소프트웨어입니다.
  • 오픈소스로 공개해도 표준 대응과 오류 수정에 드는 유지비는 계속 필요합니다.
  • 공동 후원이 이어지려면 기업이 비용을 나눠 낼 이유와 장기적인 지원 약속이 있어야 합니다.
  • C++ Alliance가 후원을 조율한다면 자금을 어떻게 나누고 개발 우선순위를 어떻게 정할지가 중요합니다.

개발 도구를 무료로 쓸 수 있게 되면 반갑지만, 그 도구를 만드는 사람에게는 여전히 월급을 줘야 합니다. 상용 C++ 프런트엔드인 EDG를 오픈소스로 공개하고 C++ Alliance를 중심으로 공동 후원한다고 가정해봅시다. 개발자뿐 아니라 이 기술을 제품에 쓰는 기업도 따져볼 문제가 있습니다. 유지비를 누가, 얼마나 오래 부담할까요?

EDG는 C++ 코드를 이해하는 엔진입니다

컴파일러는 사람이 쓴 코드를 컴퓨터가 실행할 수 있는 형태로 바꾸는 도구입니다. 그중 프런트엔드는 앞단에서 코드를 읽고 문법과 의미를 분석합니다.

예를 들어 함수에 문자열을 전달했는데 함수는 숫자를 요구한다면, 전달한 값이 함수가 요구하는 조건에 맞는지 따져야 합니다. C++에서는 템플릿처럼 여러 자료형에 맞춰 코드를 만들어내는 기능도 처리해야 합니다. 겉으로는 짧은 코드라도 내부에서 확인해야 할 규칙은 많습니다.

EDG의 C++ 프런트엔드는 이런 분석 기능을 제공하는 상용 기술입니다. 도구를 만드는 기업은 이 기술을 써서 복잡한 언어 처리 기능을 직접 개발하는 부담을 줄일 수 있습니다.

오랫동안 호환성을 다듬어왔다는 점도 이런 엔진의 가치입니다. 새 기능을 지원하는 동안에도 고객이 기존에 쓰던 코드는 계속 작동해야 하기 때문입니다.

소스가 공개돼도 유지보수 비용은 남습니다

오픈소스 전환을 판단할 때는 라이선스 조건부터 봐야 합니다. 소스를 열람할 수 있다고 해서 마음대로 수정하거나 재배포할 수 있는 것은 아닙니다. 오픈소스에도 이용 조건을 정한 라이선스가 있습니다.

EDG가 오픈소스로 공개되면 사용자는 내부가 어떻게 동작하는지 살펴볼 수 있습니다. 직접 오류를 재현해 수정안을 제안할 수도 있고, 기술을 도입하기 전에 실제 동작을 검토하기도 쉬워집니다.

다만 공개 저장소가 생긴다고 유지보수가 저절로 되지는 않습니다. 외부에서 보낸 수정안도 누군가는 검토해야 합니다. 한 코드의 오류를 고치다가 다른 코드가 제대로 작동하지 않게 되지는 않았는지 확인하는 회귀 테스트도 필요합니다.

특히 컴파일러에서는 “일단 돌아갑니다”만으로 충분하지 않습니다. 잘못된 코드를 받아들이거나 올바른 코드를 거부하면, 이를 바탕으로 만든 개발 도구에도 문제가 생깁니다. 소스를 공개한 뒤에도 숙련된 개발자가 꾸준히 시간을 들여야 합니다.

기업이 공동 후원에 참여할 이유가 있어야 합니다

라이선스를 판매할 때는 사용 권한에 돈을 받을 수 있습니다. 공동 후원에서는 누구나 쓸 수 있는 기술에 기업이 굳이 돈을 보탤 이유가 있어야 합니다.

기업을 설득할 만한 가장 큰 이유는 유지보수가 계속된다는 점일 것입니다. 제품의 핵심 부품으로 쓰는 엔진이 방치되면 결국 그 제품을 만드는 기업이 부담을 떠안습니다. 여러 기업이 유지비를 나눠 내는 편이 각자 대체 기술을 개발하는 것보다 유리할 수 있습니다.

문제는 비용을 내지 않은 기업도 개선된 코드를 쓸 수 있다는 점입니다. 모든 기업이 다른 곳에서 후원해주기를 기다리면 필요한 예산을 모으지 못할 수 있습니다.

그래서 공동 후원을 시작할 때는 몇 가지를 구체적으로 약속해야 합니다.

  • 일회성 기부에 그칠지, 여러 해에 걸쳐 지원할지 정해야 합니다.
  • 공통 유지보수에 쓸 돈과 특정 기업이 요청한 기능을 개발하는 데 쓸 돈을 구분해야 합니다.
  • 주요 후원사가 빠져도 개발을 이어갈 수 있도록 재원을 마련해야 합니다.

오픈소스와 유료 지원을 함께 운영할 수도 있습니다. 코드는 누구나 이용하고, 기업은 응답 시간이나 제품 통합 지원에 돈을 내는 방식입니다. 다만 이렇게 운영할 수 있다는 뜻이지, EDG의 실제 조건이 그렇다고 단정할 수는 없습니다.

C++ Alliance가 맡는다면, 돈과 결정권을 함께 봐야 합니다

C++ Alliance가 공동 후원을 조율한다면 여러 기업의 지원을 모아 공통 개발비로 나눠 쓸 수 있을 것입니다. 이때는 후원금이 얼마나 모이는지만큼이나 개발 우선순위를 어떻게 정하는지도 중요합니다.

가령 한 기업은 새로운 C++ 기능을 원하고, 다른 기업은 오래된 코드가 계속 호환되기를 바랄 수 있습니다. 어느 작업부터 할지 정할 기준이 있어야 합니다. 후원금을 얼마나 냈는지가 개발 방향에 어느 정도 영향을 주는지도 분명히 해야 합니다.

기업이 요구한 기능만 계속 추가하다 보면 공통 기반을 정비할 시간이 부족해질 수 있습니다. 반대로 후원사가 실무에 필요한 기능을 요청해도 계속 뒤로 밀린다면 후원을 이어갈 이유가 줄어듭니다. 유지보수에 쓸 예산을 마련하면서 의사결정 규칙도 함께 정해야 합니다.

저는 EDG 같은 기술의 오픈소스 전환을 평가할 때, 저장소 공개 여부를 확인한 뒤에는 핵심 개발 인력을 유지할 재원이 있는지 보겠습니다. 발표 당일에 얼마나 관심을 받았는지보다 몇 년 뒤에도 오류 수정과 표준 대응을 이어갈 수 있는지가 중요합니다. 이런 엔진에 제품을 맡긴 기업이라면, 안정적인 유지보수를 위해 어느 정도의 비용을 함께 부담할 수 있을지 따져봐야 합니다.

C++ EDG 오픈소스 C++ Alliance

댓글

    댓글을 불러오는 중...