오픈소스

유명 맛집의 특급 비법 레시피를 세상에 공개해, 누구나 따라 요리하고 더 맛있게 개량할 수 있게 한 나눔 요리책이에요.

정의 오픈소스는 소프트웨어를 만드는 설계도에 해당하는 소스 코드를 누구나 자유롭게 확인하고, 수정하며, 다시 배포할 수 있도록 대중에게 공개한 방식을 말해요. 전 세계의 수많은 개발자와 연구자가 함께 머리를 맞대고 프로그램을 다듬어 나가는 거대한 협력 문화이기도 해요.

비법 레시피를 숨기지 않는 요리사

맛있는 찌개를 파는 동네 식당이 비밀 양념장 레시피를 인터넷 게시판에 전부 공개했다고 상상해 보세요. 손님들은 집에서 그 맛을 똑같이 흉내 내어 요리할 수 있고, 매운맛을 좋아하는 사람은 청양고추를 더해 자신만의 새로운 메뉴를 만들 수도 있어요.

소프트웨어 세상에서도 똑같은 일이 벌어져요. 과거에 기업들은 프로그램을 만드는 컴퓨터 언어 설계도인 소스 코드를 철저한 비밀로 감추어 두었어요. 설계도가 없으면 외부 사람들은 프로그램이 내부에서 어떻게 작동하는지 알 수 없고, 사소한 고장 하나도 직접 고칠 수 없었거든요.

하지만 오픈소스 운동은 이 설계도를 온 세상에 투명하게 공개했어요. 덕분에 프로그래밍을 배우는 학생은 완성도 높은 코드를 읽으며 빠르게 실력을 키울 수 있고, 다른 프로그래머들은 여기에 멋진 기능을 덧붙여 더 완성도 높은 소프트웨어를 탄생시키고 있어요.

비공개 소스코드와 오픈소스의 차이 다이어그램 비공개 소스코드 비밀 레시피 (수정 불가) 자유로운 공유 열람 · 수정 · 개선 오픈소스 코드 모두의 레시피 (함께 발전)

전 세계 개발자가 함께 만드는 집단지성

아무리 거대한 기술 기업이라도 소속된 직원의 수는 정해져 있어요. 하지만 인터넷으로 연결된 전 세계 수만 명의 자발적 참여자가 함께 머리를 맞대면 한 회사가 몇 년 동안 매달려도 풀지 못할 복잡한 문제를 단 며칠 만에 해결하기도 해요.

누군가 프로그램에서 헛점이나 오류(버그)를 찾아내면, 지구 반대편의 다른 기술자가 즉시 해결책을 담은 개선 코드를 작성해서 원작자에게 보내줘요. 이러한 참여 방식을 코드 기여라고 부르며, 수많은 손길이 모여 놀라운 발전 속도와 안정성을 얻게 돼요.

실제로 우리가 매일 쓰는 스마트폰의 안드로이드 운영체제, 전 세계 웹사이트를 지탱하는 리눅스 서버, 최신 인공지능 연구의 기반이 되는 도구들이 모두 이러한 집단지성으로 만들어졌어요. 오픈소스는 현대 디지털 문명의 가장 튼튼한 주춧돌 역할을 하고 있답니다.

조금 더 정확히 말하면: 규칙이 있는 자유예요

오픈소스가 모든 것을 대가 없이 나누어 준다고 해서 저작권이 아예 없거나 아무렇게나 가져다 써도 되는 무법지대를 뜻하는 것은 아니에요. 모든 오픈소스 프로그램에는 만든 사람이 정해둔 '사용 허가 규칙(라이선스)'이 엄연히 붙어 있어요.

예를 들어 '이 프로그램을 가져다 쓸 때는 원작자의 이름을 꼭 표시해 주세요'라는 비교적 너그러운 규칙(MIT 라이선스)이 있는가 하면, '이 코드를 고쳐서 새로운 프로그램을 만들었다면 당신의 새 코드도 세상에 공개해야 합니다'처럼 엄격한 공유 의무를 요구하는 규칙(GPL)도 있어요.

결국 오픈소스에서 말하는 자유는 아무런 책임 없이 마음대로 행동하는 방종이 아니에요. 지식을 먼저 나눈 사람의 권리를 인정하고 존중하며, 함께 만든 결과물을 다 같이 누리자는 서로 간의 신뢰와 약속 위에서만 유지될 수 있답니다.

🤔 흔한 오해

✕ 오해

오픈소스는 코드가 다 공개되어 있어서 해커에게 해킹당하기 쉽다.

✓ 사실

오히려 전 세계 수많은 전문가가 코드를 상시 감시하고 검증하기 때문에, 보안 취약점이 훨씬 빠르게 발견되고 신속하게 고쳐져요.

✕ 오해

오픈소스는 무료 프로그램이라 아무런 법적 규칙이 없다.

✓ 사실

무료로 쓸 수 있더라도 원작자가 정해둔 라이선스 규칙(출처 표기, 2차 저작물 공개 등)을 어기면 저작권 침해가 돼요.

🧺 일상에서 만나요

1 전 세계 스마트폰의 대다수가 쓰는 '안드로이드' 운영체제는 오픈소스인 리눅스를 기반으로 만들어졌어요.
2 데이터 분석과 인공지능 개발에 널리 쓰이는 프로그래밍 언어 '파이썬'과 웹 브라우저 '파이어폭스'도 대표적인 오픈소스예요.
💡 그러니까 한마디로

오픈소스는 프로그램의 설계도를 공개해 전 세계인이 정해진 규칙 속에서 함께 발전시키는 지식 나눔 문화예요.