NEW 기획 디자인 개발 프로덕트 아웃소싱 프리랜싱

개발

내가 오픈소스를 싫어하는 이유

본문은 위시켓과 번역가 윌리(Willy)가 함께 만든 해외 콘텐츠 기반 번역문입니다. 프로그래밍에 대한 정보를 다루는 ‘Leo Lio’의 블로그 글을 번역했습니다. 지금 이 순간도 많은 사람들이 오픈소스의 장단점에 대해 불꽃 튀는 논쟁을 벌이고 있습니다. 오늘 소개할 기사는 그중 오픈소스의 단점을 바탕으로 강하게 비판한 내용을 담고 있습니다. 해당 내용은 필자 Leo Liou의 주장으로 요즘IT의 의견과는 관계없음을 알려드립니다.

 

오픈소스 소프트웨어는 많은 단점을 가지고 있습니다. 사람들은 오픈소스의 장점만 이야기하지만 이는 한 단면만을 바라보는 것입니다. 이 중 어떤 것은 사실이 아니며, 어떤 것은 허무맹랑하기까지 합니다. 전부 설명하려면 책 한 권으로도 모자라기 때문에 오픈소스를 사용하는 것이 왜 시간 낭비이며, 그 이유는 무엇인지 간단하게 몇 가지만 짚어보도록 하겠습니다.

오픈소스

 

1. 대부분(99%)의 오픈소스는 상용 소프트웨어에 뒤처진다

이미지 편집 소프트웨어인 김프(Gimp)보다 포토샵(Photoshop)이 더 뛰어납니다. 블렌더(Blender)보다 3Ds 맥스(Max), 모도(Modo), 마야(Maya), 지브러시(Z-brush)가 더 뛰어납니다. LMMS보다 FLStudio이 뛰어납니다. 고도(Godot)엔진 보다 유니티(Unity)가 뛰어납니다. 말하자면 끝이 없습니다. 사실, 오픈소스 소프트웨어는 상용 소프트웨어의 마이너 버전입니다. 명품에 비유하자면 그럴싸하게 흉내 낸 모조품과 같죠. 오픈소스 소프트웨어는 보기에도 항상 어딘가 부족해 보이고 실제로 사용할 때도 마찬가지 느낌을 줍니다. 그렇다면 오픈소스의 대표 격인 리눅스(Linux)[1]는 어떨까요? 네. 리눅스보다 윈도나 Mac OS가 뛰어납니다.

 

2. 너무나도 낮은 품질 기준

위에서 설명한 것과 같은 맥락입니다. 오픈소스 세계에는 엄격한 제약이나 감독이 존재하지 않습니다. 개발자를 관리할 관리자도, 실력 있는 인재를 뽑을 면접도, 실수를 바로잡아줄 상사도, 여러분을 해고할 사람도 없습니다. 이 때문에 일부 오픈소스 "커뮤니티"에는 최악의 개발자들이 득시글거립니다. 이제 막 걸음마를 뗀 개발자부터 주류가 되지 못한 "숙련된 개발자"까지 원하는 프로젝트에 큰 장벽 없이 참여하고 "기여"할 수 있습니다. 실소를 금치 않을 수 없습니다.

 

3. 지적재산권은 어디에?

"잠깐만요. 오픈소스에 원하는 대로 다양한 라이선스 모델을 적용할 수 있잖아요?"  하지만 진짜 중요한 것은 누가 이를 강제할 수 있냐는 것입니다. "개발자"의 탈을 쓴 범죄자가 다른 사람의 코드를 훔쳐 살짝 바꾼 후 이를 팔아 돈을 벌었지만 아무 일도 일어나지 않은 것을 수도 없이 많이 봤습니다. 심지어 블렌더는 유료 버전이 따로 존재합니다. 문제는 오픈소스라는 개념 자체가 개발자를 이러한 위험에 노출시킨다는 것입니다. 누구라도 여러분이 고생해서 만든 창작물을 훔쳐 자신의 것인 마냥 행세하고 돈을 벌 수 있습니다.

 

4. 후진적인 "커뮤니티" 문화

"오픈소스 커뮤니티"라는 단어부터 이미 난센스입니다. 자칭 10x 개발자[2]가 다른 사람의 코드를 무차별로 공격하는 것을 자주 봤습니다. 지식을 공유하며 실력이 부족한 개발자를 이끌어 주는 것이 커뮤니티의 역할이며, 자신이 작성한 코드가 조롱당하는 것을 좋아하는 개발자는 아무도 없습니다. 미국의 인터넷 최대 커뮤니티인 레딧(reddit)에는 나쁜 코드를 공개적으로 비난하는 서브레딧도 존재합니다. "커뮤니티" 홍보를 위해서 하는 일이지만 결국 자기 얼굴에 침 뱉기와 같습니다.

 

5. 프로그래머도 먹고살아야 한다

적어도 "훌륭한" 프로그래머는 좋은 대접을 받아야 합니다. 컴퓨터 앞에 앉아서 하루 종일 코딩하는 대가가 그저 커뮤니티에서 잘했다는 칭찬을 받거나 깃허브(Github)[3]에서 많은 별점을 얻는 것에서 그친다면 무슨 의미가 있을까요? 하루하루 먹고살기 위해 코딩하는 프로그래머도 있습니다. 이러한 개발자 중 일부는 프로그래밍이 적성이지만 그렇지 않은 사람도 있습니다. 다른 모든 직업(배우, 음악가, 의사, 변호사 등)과 마찬가지로 프로그래머는 자신이 일하는 대가로 합당한 보상을 받을 자격이 있습니다. 하지만 깃허브에 존재하는 대부분의 프로젝트가 형편없다는 사실을 안다면 모두에게 해당하는 것은 아닙니다.

 

6. 부족한 기술 지원

설마 제대로 된 기술 지원을 기대하지는 않으셨겠죠? 3년 전 멋진 오픈소스 소프트웨어를 처음 개발했던 학부 졸업생 A씨는 이제 자금이 쪼들려 더 이상 프로젝트를 이어 나가기 힘든 상황입니다. 열정 하나로 코딩을 시작했지만 아무 대가 없이 공개한 프로젝트는 이제 한계에 다다랐습니다. 하루하루 무엇을 먹을지가 걱정이며 월세를 감당하기도 벅찹니다. 당연히 이성 친구와 데이트할 돈도 없겠죠. 이것이 여러분이 선택한 오픈소스의 개발자가 처한 현실일 수도 있습니다. A씨는 이제 오픈소스 개발을 포기하고 제대로 된 직장을 구하려고 합니다.

 

7. 취약한 보안

이는 아주 심각한 문제입니다. 오픈소스 소프트웨어는 보안에 취약하고 신뢰할 수 없다고 알려져 있습니다. 어차피 공짜로 쓰는 것인데 많은 것을 기대할 수 있을까요? 하지만 이로 인해 여러분의 회사에 피해가 간다면 누구에게 책임을 물을 수 있을까요?

 

8. 코드 공개 요구

오픈소스를 숭배하는 개발자의 대다수는 모든 소프트웨어, 특히 소규모 팀이나 개인 개발자가 작성한 소프트웨어는 모두 공개해야 한다고 믿습니다. 다른 사람의 코드를 보고 싶다는 욕구는 결코 채워질 수 없습니다. 그렇다면 여러분에게 코드를 보여달라는 사람들에게 무엇이라고 말해야 할까요? 프로젝트를 오픈소스로 공개할 수 없는 이유를 논리적으로 설명하기보다 이러한 요구를 그냥 무시하는 편이 낫습니다.

 

9. 대규모 레거시 시스템에서의 한계

대규모 레거시 시스템[4]에 탑재된 소프트웨어를 관리하려면 오랜 기간 같은 프로젝트에서 꾸준히 일해온 개발팀이 필요합니다. 코드베이스[5]의 역사를 이해하고 방대한 코드에서 필요한 부분을 빠르게 찾아낼 수 있는 역량이 필수이기 때문입니다. 오픈소스 프로젝트는 재능 있는 개발자를 장기간 묶어둘 만한 당근(임금, 기업 문화, 계층)이 없습니다. 이 때문에 프로젝트가 중단되는 일이 다반사입니다.

 

앞서 말씀드린 것과 같이, 할 말이 너무 많아 책을 써야 할지도 모르겠습니다. 하지만 결론만 말씀드리자면, 오픈소스는 태생적으로 한계가 있으며 제한적인 목적의 프로젝트나 학습을 위한 소규모 프로젝트에 적합합니다. 새로운 언어를 연습하거나 본인을 홍보하려는 목적의 프로젝트가 아니라면 다시 한번 생각해보세요.


[1] 가장 널리 사용되는 커뮤니티 기반으로 개발된 오픈소스 컴퓨터 운영체제(OS).

[2] 남들보다 10배의 생산성을 지닌 뛰어난 개발자.

[3] 분산 버전 관리 툴인 깃(Git)을 사용하여 프로젝트를 관리하고 공유하는 웹 기반 서비스. 수 많은 개발자들이 수 많은 오픈소스 프로젝트에 자발적으로 기여하고 있다.

[4] 과거에 개발되어 현재까지 사용 중인 낡은 시스템. 안정성이 가장 중요시되는 핵심 시스템은 쉽게 변화를 주기 힘들기 때문에 신기술의 도입이 늦고 레거시 코드가 오랜 기간 사용된다.

[5] 특정 소프트웨어 시스템, 응용 소프트웨어, 소프트웨어 구성 요소를 빌드하기 위해 사용되는 소스 코드의 전체 집합.

댓글 1
댓글이 삭제 되었습니다.

요즘IT의 번역글들

이 프로필을 만든 저만 해도 영어가 서툴러 영어로 된 기사는 읽는 게 더딥니다. 그래서 준비했습니다. 읽어볼만한 해외 소식들을 번역해 전합니다. We are the world.

이 회사는 디자인에 투자하고 있는 회사일까요?

디자인

애자일은 정말 디자인을 배제하나요?

디자인

평판 관리가 프리랜서 경력에 미치는 영향

프리랜싱

리액트 네이티브 개발자들이 겪는 가장 빈번한 5가지 문제와 해결책

개발

“솔직히 우리가 하는 것은 스크럼이 아닙니다!”

기획

데이터 시각화가 인류를 위기에서 구한 세 가지 역사적 사건

디자인

NFT의 장밋빛 미래는 사실일까?

기획

피그마 토큰으로 디자인 시스템 만들기

디자인

디자이너+개발자 = 슈퍼팀 만들기

기획

1인 개발자로서 테크 스타트업을 운영하며

기획

웹 디자이너가 PX대신 REM을 사용해야 하는 이유

디자인

100개의 스타트업을 멘토링하며 깨달은 성공의 비밀

기획

중화권 앱 UI가 영미권 앱 UI와 다른 점 알아보기

프로덕트

내가 테크 리더로 일하면서 얻은 8가지 교훈

기획

모두가 즐길 수 있는 디자인 검토 회의 만들기

디자인

프로덕트 매니저에서 프로덕트 마스터로

기획

10배 이상 뛰어난 개발자가 되는 법

개발

제품 디자인 관점에서 바라보는 NFT 아바타 열풍

디자인

에어비앤비: 대규모 iOS 앱 개발 생산성을 위해 바꾼 것들

개발

스포티파이: 맞춤형 플레이리스트 개발 비하인드 스토리

개발

프리랜서가 일하게 될 15가지 유형의 프로젝트

프리랜싱

슬랙: 제품 원칙을 통해 다시 태어난 알림 기능

프로덕트

페이팔: 실시간 그래프 데이터베이스 분석을 통해 사기를 방지하는 방법

개발

트위터: 수십억 개의 이벤트를 실시간 처리하기

개발

슬랙: 4가지 애자일 가치와 방법

기획

스퀘어: 모바일 우선을 넘어 웹에서 누리는 모바일앱 경험

디자인

스포티파이: 카피를 언어로 만드는 UX 라이팅

기획

마이크로소프트: 디자인의 미래를 위한 4가지 원칙

디자인

메타: AR/VR 경험까지 고려한 디자인 청사진

프로덕트

슬랙: 훌륭한 마케팅 카피를 위한 5가지 원칙

기획

2022년 UX/UI 디자인 트렌드

디자인

구글: 가변 폰트의 놀라운 활용법

디자인

에어비앤비: 위기 상황에서의 디자인 원칙 5가지

디자인

어떻게 두 명의 인턴이 수백만 개의 코드들을 보호할 수 있었나

개발

Lattice로 마이크로 프론트엔드를 구축하는 법

개발

Cool Cats NFT를 구축하면서 배운 것

개발

웹 컴포넌트가 프론트엔드 프레임워크를 대신할까?

개발

당신이 NFT에 대해 알아야 할 모든 것

개발

우리에겐 이상하지만 개발자들에겐 일상인 일들

개발

Next.js 12에서 주목해야 할 5가지 변화

개발

스벨트 vs 리액트, 누가 더 뛰어날까?

개발

개발자를 위한 iOS 15의 새로운 기능

개발

프로덕트 매니지먼트 고객 여정 5단계

기획

클럽하우스의 인기는 모두 거품이었다?

프로덕트

데이터 기반 의사결정의 장점

기획

시각 디자인의 폐쇄성 법칙이란?

디자인

사용자 경험(UX) vs 서비스 디자인

기획

프로덕트 매니저는 하루 종일 무슨 일을 할까?

기획

제품 주도 성장은 어떻게 이루어지는가?

기획

UX를 망치지 않는 설득력 있는 배너 디자인

디자인

팝업(Pop-up)으로 불리는 것들에 대하여

디자인

드롭다운(Drop-down)으로 불리는 것들에 대하여

디자인

당신의 생각을 표현하는 새로운 이모지

디자인

가장 똑똑한 소프트웨어 엔지니어에게 배운 10가지 교훈

개발

성공적인 UX 프로젝트를 위한 가장 중요한 질문

디자인

2021년, UI 디자이너가 모바일 앱에서 흔히 저지르는 실수

디자인

IT 매니저가 되는 방법과 성공하기 위한 요소

기획

슬랙(Slack) 같은 앱을 만들려면 비용이 얼마나 들까?

개발

아웃소싱이 이토록 인기를 얻게 된 이유는?

아웃소싱

마케터가 UX 관련 역량을 키워야 하는 이유

기획

미니멀리즘 디자인의 핵심적인 요소들

디자인

새로운 소프트웨어 개발사가 필요하다는 7가지 신호

아웃소싱

2021년을 이끌어가는 프론트엔드 개발 트렌드 5가지

개발

PM을 성장시키는 학습 프레임워크

기획

UI 카피라이팅, 어떻게 써야 하나요?

기획

트렌드 예측: 경쟁에서 앞서는 방법

기획

제품 사고(product thinking)의 힘

기획

인하우스 vs 아웃소싱, 소프트웨어 개발 어떻게 하나요?

개발

그림을 못 그리는 사람도 쉽게 와이어프레임 그리는 방법

기획

스타트업 기업들에게 아웃소싱이 중요한 이유

아웃소싱

제품과 기능, 성공적으로 종료하는 방법 (下)

기획

제품과 기능, 성공적으로 종료하는 방법 (中)

기획

제품과 기능, 성공적으로 종료하는 방법 (上)

기획

UX 디자이너에게 반드시 필요한 12가지 스킬

디자인

패스워드 없는 세상이 오고 있다

개발

디자이너를 쉽게 잃는 방법 10가지

디자인

프론트엔드 코딩 작업에 영감을 줄 8가지 아이디어

개발

구글이 아웃소싱을 하는 이유: 아웃소싱 성공사례 5가지

아웃소싱

일 잘하는 PM이 되기 위한 로드맵 도구 5가지

기획

이제는 말할 수 있다! 아웃소싱에 대한 오해 11가지

아웃소싱

디자인 트렌드, 모던 미니멀 스타일의 UI 가이드

디자인

MVP 개발을 아웃소싱으로 해도 될까요?

개발

온보딩 효과를 높이는 '좋은' 귀차니즘 3가지

기획

게임처럼 즐겨라, 게임화 기법 TOP3

기획

시니어 소프트웨어 엔지니어는 어떻게 일할까?

개발

프로덕트 매니저가 글을 잘 써야 하는 이유

기획

2030년엔 사라질 수도 있는 프로그래밍 언어 5가지

개발

고객들이 언제나 옳은 것은 아니다

기획

유저 스토리는 무엇인가?

기획

고객 성공을 위한 14계명

기획

8px 그리드의 시대가 끝나고, 4px 그리드의 시대가 열릴까?

디자인

모바일 앱은 더 이상 스타트업에게 좋은 아이디어가 아니다

기획

과연 구글의 UX 강좌는 도움이 될까요?

디자인

프로덕트 매니저 여러분, ‘소비자의 요구사항 수집’을 그만두십시오

기획

고객 여정과 경험 지도의 차이점

기획

내가 AI 업계를 떠난 이유 5가지

기획

모달윈도우(팝업)를 디자인할 때 생각할 9가지 원칙

디자인

대기업 vs 중소기업, B2B SaaS 스타트업을 위한 시장은?

기획

내가 개발 인터뷰에서 면접자에게 감동한 이유

개발

HTTP의 새로운 메서드, 서치(SEARCH)에 대하여

개발

세상의 모든 프로덕트 디자이너를 위한 5가지 심리학 원칙

디자인

2021년 테스트 자동화 트렌드 리포트 (下)

개발

2021년 테스트 자동화 트렌드 리포트 (上)

개발

아마존과 스포티파이는 어떻게 사용자를 유지하고 측정할까?

기획

UX 디자이너라면 필수적으로 알아야 할 5가지 법칙

디자인

앵귤러 vs 리액트, 2021년의 승자는?

개발

2021년, SaaS 스타트업 시작을 위한 놀라운 아이디어 10가지

기획

디지털 제품 관리에서 B2B와 B2C 사이의 차이점은?

기획

빠르게 실행할 수 있는 ‘제품 요구사항 문서(PRD)’ 만들기

기획

더 나은 제품을 위한 프로덕트 메트릭스 가이드

기획

노 코드(No Code) 트렌드로 프로그래머들은 일자리를 빼앗길까?

개발

넷플릭스의 플랫폼: 코스모스(Cosmos)에 대하여

프로덕트

비즈니스와 애자일 조직은 어떻게 친해질 수 있을까요?

기획

효과적인 제품 전략 세우기: 다수의 전략적 트랙(MuST) 활용

기획

1년 만에 이메일 마케팅 효과를 극대화했던 방법

기획

솔루션 아키텍트를 위한 팁: 아키텍처 다이어그램의 5가지 유형

개발

새로운 맥 OS ‘빅서’에 대한 UX 디자이너의 생각

디자인

디자인 트렌드, 뉴모피즘의 정석

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 3편

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 2편

디자인

2021년 모바일 UX 트렌드 10가지

디자인

스스로 학습하는 UI/UX 디자이너가 되기 위한 2021년 로드맵, 1편

디자인

앱 설정 기능의 UX를 개선하는 효과적인 방법

디자인

다크모드 UI 디자인의 원칙

디자인

온라인 고객 경험을 개선하기 위한 5가지 방법

기획

신생 스타트업에서 일하는 프로덕트 매니저를 위한 현실적인 조언

기획

웹 개발자와 소프트웨어 개발자의 차이는 무엇인가요?

개발

랜딩 페이지 디자인을 개선하는 13가지 꿀팁

디자인

오프라인 비즈니스가 온라인에서 존재감을 가져야 하는 이유 5가지

기획

상향식 가격 책정 및 패키징 정책: 사용자 여정을 가이드로 활용하기

기획

B2B 제품의 UX, 그것은 숨겨진 영역인가요?

기획

상단 내비게이션 vs 사이드 내비게이션, 어느 것이 더 나을까?

디자인

자동완성 검색 기능 UX 설계를 위한 8가지 팁

디자인

프로덕트 매니저는 전문적인 IT 기술을 갖춰야 하나요?

기획

실리콘밸리 51개 기업들이 말하는 프로덕트 매니저의 역할 9가지

기획

아웃소싱에 대한 모든 것

아웃소싱

앱 디자인 가이드, 사람들이 즐겁게 사용할 수 있는 앱을 만드는 법

디자인

처음부터 완제품이 아니라 ‘MVP’를 만들어야 한다

기획

플러터 vs 리액트 네이티브 vs 네이티브, 성능이 더 우수한 것은?

개발

스타트업 프로덕트 매니저로 성장하는 법, 30-60-90일 플랜

기획

당신의 두뇌는 진보하고 있다: 성취감을 위한 3가지 전략

기획

디자이너들을 편하게 해주는 HTML/CSS 마법 10가지

디자인

코딩의 미래는 ‘노 코드(No Code)’이다

개발

내가 엔지니어링 매니저로 일하면서 저지른 실수들

개발

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (下)

기획

내가 롬 리서치(Roam Research)를 좋아하는 이유와 실제 사용법 (上)

기획

프로그레시브 웹 앱(PWA)이란 무엇이며, 왜 필요한가?

개발

PWA vs 네이티브 앱, 어떤 것을 선택해야 할까?

개발

UI 디자인에 여백을 활용하는 8가지 팁

디자인

마이크로소프트와 링크드인의 새로운 시도, 프리랜서 마켓에 도전장을 던지다

기획

토마스넷은 왜 가입자 수를 폭발적으로 늘려준 테스트 결과를 거부했을까?

기획

잘 팔리는 기업용 소프트웨어 디자인하기

디자인

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 하편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 중편

개발

파이어베이스(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 상편

개발

업워크(Upwork)가 조사한 요즘 가장 인기 좋은 개발 기술 15가지

개발

일자리 산업이 휴먼 클라우드(human cloud)에 적응하는 방법

기획

팬데믹 이후 세계에서의 디지털 가속화는 어떤 모습일까?

기획

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.