컴퓨터와 디지털 · 소프트웨어

리눅스 — 펭귄 뒤에는 누가 일하고 있을까

함께 고치되 아무렇게나 바꾸지는 않는 소프트웨어

약 6분의 작은 발견

내 읽기 목록 ↗
래리 유잉의 원작을 개릿 르사주가 재작업하고 IFo Hancroft가 다듬은 리눅스 펭귄 턱스의 실제 공개 이미지.
Tux · Larry Ewing 원작 · Garrett LeSage 벡터 재작업 · IFo Hancroft 정리 · 제작자 공개 PNG 이미지 출처 · 제작자 README: Public domain / CC0 1.0 · 리눅스 공식 이용 안내와 함께 세 제작자 명시 · 이미지 크게 보기

노란 부리를 가진 펭귄 그림을 보면 컴퓨터를 떠올리는 사람이 있다. 리눅스와 함께 널리 알려진 턱스다. 그림은 친근하지만 그 뒤에 있는 소프트웨어는 수많은 장치와 작업을 조정해야 한다. 여러 사람이 함께 만든다고 하는데, 모두가 마음대로 고치면 어떻게 하나의 프로그램으로 움직일 수 있을까.

리눅스를 이해하는 첫걸음은 어려운 명령어보다 함께 일하는 방식을 보는 데 있다. 실제 개발 안내에는 무엇을 만들지뿐 아니라 어떻게 제안하고 누구에게 보여 주며 어떤 검토를 거칠지가 길게 적혀 있다. 열린 협업에도 질서와 책임이 필요하기 때문이다.

01. 눈에 보이는 화면보다 아래에 있는 것

리눅스 커널의 공식 소개는 커널을 운영체제의 핵심으로 설명한다. 기계의 자원과 장치를 관리하고 다른 소프트웨어가 이용할 기본 서비스를 제공한다. 문서 작성 프로그램이 화면에서 가장 눈에 띄어도 그 아래에서는 메모리와 장치를 다루는 일이 계속된다.

커널을 일상에 비유하면 여러 활동이 같은 시설을 사용할 수 있도록 조정하는 기초 운영에 가깝다. 다만 비유가 정확한 설계도는 아니다. 여기서 중요한 것은 화면의 모양을 정하는 프로그램과 컴퓨터의 기본 작동을 맡는 부분이 같지 않다는 점이다.

02. 리눅스와 완성된 운영체제

일상에서는 리눅스라는 말을 하나의 완성된 운영체제처럼 쓰기도 한다. 엄밀하게 커널을 가리키는 경우와, 커널에 여러 프로그램을 더해 사용할 수 있게 묶은 배포판을 가리키는 경우를 구분하면 혼동이 줄어든다. 같은 핵심 위에 서로 다른 구성이 놓일 수 있다.

따라서 리눅스라는 이름만으로 모든 컴퓨터의 화면과 사용법이 같다고 생각할 필요는 없다. 어떤 프로그램을 함께 묶고 어떻게 업데이트하며 어떤 사용자를 돕는지에 따라 경험이 달라진다. 하나의 기술과 그것을 사용하기 좋은 상태로 꾸리는 일은 이어져 있지만 같은 작업은 아니다.

03. 혼자 시작한 일과 함께 이어 온 일

리눅스의 초기 역사는 리누스 토르발스와 연결된다. 깃의 역사 안내는 1991년부터 이어진 초기 리눅스 커널 개발에서 수정 내용을 패치와 파일로 주고받았다고 설명한다. 처음의 시작을 기억하는 것과 오늘의 결과를 한 사람의 작업으로 설명하는 것은 다르다.

공식 안내에는 여러 분야의 관리자가 등장한다. 장치와 기능이 많아지면 모든 변경을 한 사람이 같은 깊이로 살피기 어렵다. 담당 부분을 잘 아는 사람들이 제안을 읽고 더 큰 흐름으로 연결한다. 큰 협업은 참여자의 수뿐 아니라 검토의 경로도 함께 커져야 한다.

04. 코드를 볼 수 있으면 무엇이 달라질까

소스 코드가 공개되어 있으면 관심 있는 사람이 실제 내용을 살펴보고 문제를 조사하거나 수정안을 만들 수 있다. 개발 안내는 리눅스 커널의 코드가 GPL에 따라 제공된다고 밝힌다. 공개는 이용과 배포의 조건을 가진 형태이며 조건이 전혀 없다는 뜻은 아니다.

누구나 내용을 볼 수 있다는 점은 중요하지만 그것만으로 모든 오류가 즉시 사라지지는 않는다. 읽을 사람의 지식과 시간도 필요하고 수정 뒤에 다른 문제가 생기는지 확인해야 한다. 공개 여부와 검토의 충분함을 같은 말로 취급하지 않는 편이 정확하다.

05. 수정 제안에도 읽기 쉬운 방식이 있다

개발 문서는 코드의 형식과 수정안 제출 방법을 설명한다. 제안한 사람에게는 아주 작은 변화라도 검토하는 사람은 이유와 영향을 알아야 한다. 정해진 방식으로 설명하고 보내는 것은 형식만을 위한 예절이 아니라 여러 사람이 내용을 비교할 수 있게 하는 도구다.

좋은 제안이라고 해서 자동으로 받아들여지는 것도 아니다. 기존 기능과 충돌하거나 다른 환경에 문제가 생길 수 있다. 함께 고친다는 말에는 함께 거절하고 다시 설명하며 더 나은 제안을 기다리는 일도 들어 있다. 열린 문은 검토가 없는 문과 다르다.

06. 새 기능과 안정성을 나누는 시간

공식 안내는 큰 변경을 받아들이는 시기와 그 뒤의 후보 버전을 설명한다. 새로운 기능을 모으는 일만 계속하면 기존에 되던 것이 갑자기 안 되는 문제를 놓칠 수 있다. 변화가 어느 정도 모이면 제대로 작동하는지 다듬는 시간이 필요하다.

이전에는 잘되던 기능이 변경 뒤에 망가지는 일을 회귀 문제라고 부른다. 새로 무언가를 더했다는 소식만큼 하던 일이 계속 된다는 사실도 중요하다. 사용자는 개발자의 의욕보다 자기 작업이 멈추지 않는 것을 먼저 원할 수 있다. 안정성도 협업이 만들어야 할 결과다.

07. 펭귄 그림도 출처가 있다

함께 실은 턱스는 새로 상상한 펭귄이 아니라 원작을 벡터로 다시 그린 제작자가 공개한 PNG 파일이다. 리눅스 공식 저장소의 안내와 제작자 설명을 함께 확인했다. 원작은 래리 유잉, 재작업은 개릿 르사주, 다듬기는 IFo Hancroft의 작업으로 표시되어 있다.

공식 저장소의 이용 안내는 원작자와 벡터 작업자를 밝히도록 하고, 제작자 저장소는 퍼블릭 도메인·CC0로 표시한다. 이 글도 세 제작자를 크레딧에 적었다. 친근한 상징에도 출처가 있다. 다만 펭귄 그림이 있다고 모두 같은 제품이거나 같은 조직의 보증을 받았다는 뜻은 아니다.

08. 함께 만든다는 말의 구체적인 뜻

리눅스의 흥미로운 점은 단순히 많은 사람이 참여했다는 숫자에 있지 않다. 수정의 이유를 쓰고, 담당자에게 보내고, 검토하고, 기존 기능을 지키며 묶어 내는 과정이 있다는 점이다. 공유는 결과를 나누는 일이면서 작업의 규칙을 함께 세우는 일이기도 하다.

펭귄 뒤에는 눈에 띄는 창시자뿐 아니라 작은 문제를 찾아 알리는 사람과 설명을 고치는 사람, 변경을 검토하는 사람이 있다. 컴퓨터가 조용히 제 일을 하는 순간에도 그 연결이 작동하고 있다. 기술을 이해하는 일이 사람들의 협업을 읽는 일이 되는 대목이다.

이야기의 바탕이 된 자료
← 소프트웨어의 다른 이야기