뛰어난 개발자를 찾는가? 오픈소스 개발자가 있다.

비개발자나 개발 경험이 있는 인사들이 착각하는 게 있다.
내가 여러 클라 만나 개발하면서 제일 답답하고 일하기 싫은 유형 중 하나인데,
바로 오픈소스 개발자를 보안에 안좋은 개발자로 본다는 것이다.
그들이 주장하는 이유는 이러하다.

오픈소스 개발자는 뭐든 오픈하기 때문에 우리 회사의 민감한 산출물도 공개할 것이다.

하지만 증거도, 물증도 없는 추측성 개소리에 불과하다.
특히 그렇다가 아니고 그럴 것이다그렇다더라 로 끝나는 게 그들이 주장하는 이유의 특징이다.

좋아. 그럼 오픈소스를 많이 공개하는 다음카카오나 쿠팡, 네이버 등에게 한번 먼저 물어보고 와라.
만약 저 이유가 사실이라면, 나는 이미 개발 일 못했을 테니까. 집에서 밤이나 까고 앉아있겠지.

자, 이제 주목.
소프트웨어는 자산인가? 그렇다. 그렇다면 소스코드도 자산인가? 당연하다.
그렇다면 이런 자산을 보호할 줄 아는 개발자를 찾는가? 그렇다면 오픈소스 경험이 있는 개발자를 추천한다.
추천하는 이유는 이렇다.

개발에 있어서 공과 사를 구분하는 능력이 뛰어나다.

그들은 아무리 자기가 만든 산출물이라도, 그 내용이 회사에 중요한 정보가 있는지, 없는지 파악할 수 있다.
물론 처음에는 이를 구분할 수 있도록 선배나 상사가 도와주지만, 자신의 능력을 뽐내려면, 보안 문제도 피할 수 없다.
하나의 사례로, 개발자라면 천국으로 유명한 회사, 제니퍼가 있다.
제니퍼는 로깅분석 솔루션을 정부에 납품하고 세계를 넘나들 정도로 기술경쟁력이 뛰어난 회사로 알려져 있다.
그들은 자체 솔루션인 제니퍼의 파기 버전을 만들면서, 그들이 만든 UI 컴포넌트를 아예 무료로 공개했다.
아니, 대체 그들은 아무리 UI 컴포넌트라도 그들의 자산일텐데 개발자가 미친거 아니냐고 생각할 텐데, 만약 그랬으면 위에서 짤랐지.
제니퍼의 핵심 기술은 따로 있다. 당연히 미치지 않고서야 공개하지 않는 건 당연한 이치.
또한, UI 컴포넌트 자체에는 회사의 보안 내용이 없는 것으로 판단했을 것이다. 그리고 이들의 소스를 공개해 버렸다.
그리고 공개하면서 사용자들의 참여를 기다린다, 개선의 여지를 회사 뿐 만 아니라 사용자에게도 기회를 부여하려 회사의 솔루션을 강화하는 취지이기도 하다.
이처럼 비즈니스적 이득이 있는 전략인 것이다. 누가 주체가 되어 오픈했는지는 내가 저기 근무 안해봐서 모르겠지만,
개발자가 개발하고 임직원들 간의 의견 수렴을 통해 충분히 공개해도 무방하기에 오픈한 것이다.
이게 주장하는 바와 다르다고 생각한다면, 당신은 여태까지 오픈소스 개발자를 보안에 안좋은 개발자로 착각해서 그렇다.
이를 경험한 개발자는, 회사에서 자신의 능력을 보여줄 때 필요한 것과 해선 안되는 것의 차이를 잘 안다.
오픈소스는 그저 개발자들의 취미생활이 아니라는 것이다. 그렇기에, 이를 경험한 개발자는 공과 사가를 구분하는 능력이 있다.
굳이 제니퍼 사례에서 제니퍼가 공개하지 말아야 할 것이 있다면, 바로 UI 컴포넌트를 어떻게 제니퍼 솔루션에 활용했냐일 것이다.

오픈소스와 상용 솔루션 사이의 좋은 조언자이다.

만약 회사 솔루션이나 제품을 만들 때, 무엇을 활용하여 생산성을 극대화 하느냐에 가장 고민이 많이 쏠려 있을 것이다.
오픈소스와 상용 솔루션, 이 둘을 잘 알고 활용한다면, 개발 생산성에 날개를 달아줄 것이다.

  • 오픈소스
    • 장점: 일부 AGPL 및 GPL 소스를 제외하면 무료로 자유롭게 사용 가능하고, 확장이 필요할 경우 수정하여 해결 가능하다.
    • 단점: 일부 소스는 사후관리를 지원하지 않으며, 일부 검증된 소스나 업체 외에는 안정성을 보장받기 힘들고, 문제 발생 시 알아서 소스를 뜯어 문제를 해결해야 할 수 있다.
  • 상용
    • 장점: 해당 개발 업체를 통해 안정성을 보장받을 수 있고, 검증되어 안정된 제품이나 솔루션 개발이 가능하다.
    • 단점: 비용이 발생하며, 해당 솔루션에 한계 발생 시 대응할 방법이 없다. (필요한 기능이 지원이 안 될 수 있다.)

오픈소스 개발자가 이를 잘 구분하는 이유는 간단하다. 자신이 다른 오픈소스를 경험하면서 사용 가능한지 미리 알고 있거나, 아니면 알 수 있도록 도와주기 때문이다.
예를 들면, UI 컴포넌트가 필요할 때, 오픈소스도 있고 상용도 있다. 만약 해당 소스가 특정 검증 기업의 지원을 받거나, 많은 커뮤니티가 활성화되어 빠른 검증이 가능하다면 주저없이 오픈소스를 선택하여 비용 절약에 도움을 줄 수 있고, 아니면 미션 크리티컬에 대응 가능성이 불투명한 경우 가능한 비용을 들여서라도 안정된 상용 솔루션을 제안할 수 있다.
만약 비용 한계가 발생하여 오픈소스를 사용해야 하는 상황이 발생 시, 적절한 용도의 오픈소스를 찾도록 도와줄 것이고,
비용이 넉넉하여 상용 써도 가능한 상황이라면, 무작정 한계 가능성이 있는 상용을 사용하는 것보다 더 나은 오픈소스를 찾아 비용 조절을 할 수 있도록 제안할 수 있다.
명심하라. 정답은 없다. 최종 결정은 결정권자가 내려야 한다. 그리고 오픈소스 개발자라고 모든 오픈소스를 섭렵할 수 있는 건 아니다.
오픈소스 양은 너무나 방대하고, 같은 기능의 오픈소스가 수십 수백 많으면 수천개가 있으며, 이 중에 적당한 솔루션을 찾는 일은 엄청 버거운 일이다.
오픈소스 개발자는 이런 상황에 숙련된 인물이지 만능은 아니기 때문에 당신도 잘 고려해야 한다는 점 잊지 말길 바란다.

자, 이 외에도 나열하고자 하는 이유는 많지만, 시간 관계상 여기까지 적겠다.
인터넷 전문기업은 오픈소스 경험자를 선호한다. 내가 말하지 않는 잠재능력과 상황판단 능력은 오픈소스에 참여한 적 없는 개발자보다는 월등히 뛰어남을 알고 있기 때문이다.
물론 실수로 개발자가 보안에 민감한 자료까지 오픈하는 경우는 있을 수 있다. 드물지만. 그 개발자를 문책하기 전에 먼저 조치를 하면 된다. 최대한 빨리.
만약 그런 개발자가 있다면, 상황에 따라 알아서 회사 방침이나 사칙에 따라 판단해라. 거기까진 내가 뭐라 할 수 없다.

개발자 여러분들도 오픈소스를 많이 경험해야 한다. 오픈소스는 그저 무료로 활용하는 도구에 불과하지 않는다. 오픈소스 개발자는 그걸 안다.
그런 상황을 인지하고 숙달하며, 회사에 필요한 기술과 솔루션을 제안받을 때, 이 능력이 빛을 발하기 때문이다.

결정적으로, 길안내를 하는 표지판을 만든다고 할 때, 오픈소스는 표지판을 만드는 방법을 공개할 뿐, 표지판 자체가 아니라는 점 명심하라.

composite / 2016년 7월 7일 / Dog's bullshit, Piss Development / 0 Comments

또다른 오픈소스 IDE: Consulo IDE

흐음… 한국에 자바 IDE 쌍벽은 아무래도 Eclipse 와 IntelliJ 일 것이다.
Netbeans 도 있긴 하지만 쓰는 사람이 드물어서…

어쨌든 간에, JetBrains 에서 .NET IDE 만든다고 한 지 2주.
근데 댓글에서 심상치 않은 IDE를 발견했다.

이름하여 Consulo IDE 이다.

Consulo는 IntelliJ IDEA Community Edition의 쉘 전신인 IDEA IDE 베이스로 만들어진 오픈소스 IDE이다.
현재 안드 공식 개발 툴인 IntelliJ IDEA 기반의 쉘 UI 프레임워크가 오픈했다라…
엉? IntelliJ에 썼던 UI가 오픈소스라고?

정말 있다. 오픈소스로. IntelliJ Community Edition

그렇다. 커뮤니티 에디션에 한해서 오픈소스로 공개하긴 했다.
게다가 Apache 2.0 라이선스다. 상업적으로 써도 문제는 물론 없다.
아니었으면 상업적으로 안드로이드 개발은 물건너 갔을테니.

어쨌든, 다시 Consulo로 돌아가자.

Consulo는 현재 C#, Javascript, Java 등을 지원하며, 모든 언어를 지원하는 하나의 IDE로 통일하겠다는 목표를 가지고 있다.
안타깝게도 안정된 버전이 아니라서 실무에 쓰기는 조금 어렵지만,
유니티 개발자들이 이 IDE를 주목하고 있다.
왜냐?
모노IDE가 좆같거든.

인텔리 기반이라 인텔리 플러그인을 지원 하기는 한다. 조금 손을 봐줘야 한다고 한다.
마이그레이션 과정을 거치는데, 아무래도 라이선스 이슈 때문이다.
불편하더라도 인텔리제이와는 분리해야 써야 하는 이유이기도 하다.

Add a plugin

JetBrains 에서 Project Rider 로 C# IDE를 꾀하고 있고.
아마 유니티 개발에서 하나의 변수로 떠오를 가능성이 큰 상황이다.
어자피 모노와 닷넷은 API가 틀리지 언어 구조와 스펙까지 틀린 건 아니니
지켜봐야 할 내용이고,

거기에 오픈소스로 강공을 펼칠 Consulo IDE에도 주목할 필요가 있다.

IDE 전쟁이 시작되는 것이다. 우오.

composite / 2016년 1월 28일 / Piss Development / 0 Comments

포터블 소프트웨어와 소프트웨어 저작권에 관한 고찰

오늘 한 커뮤니티에서 “프리웨어 포터블 소프트웨어 저작권은 위법이 되는건가요?” 라는 글을 보고 포터블 앱 저작권에 안일해진 소프트웨어 세태를 제가 아래와 같은 답변으로 고찰하였습니다.

제가 이 문제에 대해서 2년전에 상당히 심각하게 반응을 할 수밖에 없었습니다.

제가 댕긴 회사에서 불법 썼다고 단속 들어온다고 하니.. 소프트웨어 단속과 관련해서 포터블 프로그램 단속에 말이 많았거든요.

제가 포터블 앱 구하다가 이 게시글 하나에 포터블 소프트웨어 라이센스에 관심을 가지게 됐죠.

어둠속 포터블 제작자로 유명한 PORTABLEAPPZ 는 조금 아이너리한 글을 게시했습니다.

“PortableApps 제작자는 모든 포터블 프로그램의 주인이냐?”

이 글을 올린 이유가 바로 PortableApps 프로그램이 GPL 라이센스를 적용하였는데, PORTABLEAPPZ 제작자는 자신의 프로그램의 소스를 바꿔 제작했으면서 소스를 공개하지 않는다는 이유로 그를 고소하겠다고 하는데요.

하지만 PORTABLEAPPZ 는 PortableApps 의 소스를 사용하지 않았다고 합니다. 그 증거물로 자신이 만든 Firefox Portable 의 포터블 소스를 공개했는데요.

PORTABLEAPPZ 의 포터블은 대부분 NSIS 로 만들었다고 합니다. NSIS 는 인스톨러로 유명하지만 설치 전 후
프로세스 유연성으로 포터블 앱 제작에서도 많이 애용된다고 합니다. 또한 그거 스크립트 짜서 공개 안해도 되고 NSIS 코어 굳이
안만져도 되니 저작권에 걸릴 일이 없거든요.

어쨌든 여러분들은 조금 심각하게 받아들여야 하기도 하지만, 한가지 간단한 사실만 기억하시면 됩니다.

오픈소스나 공개 소프트웨어 중에 사용계약 사항을 보시면 “재판매나 수정 후 재배포는 허락하지 않는다” 라는 항목이 있는 소프트웨어가 있습니다. 오픈소스의 경우는 GPL이 유명하죠.

이것들은 정말 아무리 유용하다고 해도 포터블로 배포하시면 안됩니다. 저작권 위반입니다. 설령 그게 금전적 이득이 없다 해도 말이죠.

포터블은 대부분 “소프트웨어 수정 후 배포” 로 취급됩니다. 오픈소스 저작권에도 민감한 미국에서는 그런 식으로 소송당한 건도 있습니다.

혹시 여러분이 만든 소프트웨어가 포터블로 제작되어 무료 공개해도 되는지 여부가 궁금하시다면 저한테 쪽지 보내셔도 됩니다.

또한 포터블 제작후 대중에 공개되기 전에 사용 계약서를 먼저 읽으신 후 공개하셔야겠죠. 거기에 문제가 없다면 배포 하셔도 되지만..

소프트웨어저작권 협회 또한 이 때문에 포터블 소프트웨어도 단속한다고 합니다. 강남에서 그런 사례를 들어본 적이 있거든요..

포터블 소프트웨어도 조심해서 사용해야 합니다. 가정 사용자라면 크게 문제가 안되지만 저같이 회사에 쓸 경우 말입니다.

                            <p><br />

composite / 2013년 1월 30일 / 미분류 / 1 Comment