Search

'컴퓨터공부/오픈소스'에 해당되는 글 6건

  1. 2019.06.09 오픈소스 라이센스 정리
  2. 2018.10.31 FFmpeg
  3. 2017.01.31 자동차시장 오픈소스 - 2
  4. 2017.01.15 자동차 시장 오픈소스 - 1
  5. 2017.01.07 이런 오픈 소스도 있다!
  6. 2017.01.01 오픈소스 시작하기

오픈소스 라이센스 정리

컴퓨터공부/오픈소스 2019.06.09 11:04 Posted by 아는 개발자 아는 개발자

오픈소스를 이용해서 개발하는 경우 코드를 무료로 보고 사용할 수 있어 개발하기 편리하다는 장점이 있으나 사용하고 있는 오픈소스가 어떤 라이센스를 가지느냐에 따라서 상업적인 이용이 제한될 수도 있고 내가 만든 코드를 공개해야 할 의무까지 생길 수 있다. 이런 경우를 예방하려면 개발하기 전부터 사용할 오픈소스 라이센스에 대해 검토해둘 필요가 있다. 이번 포스트에서는 유명한 오픈소스 라이센스들에 대해서 간단히 정리를 해보려고 한다.


0. 라이센스란? 


소프트웨어의 지적 재산권을 일컫는 말이다. 음악의 저작권과 비슷한 개념 정도로 생각하면 될 것 같다. 처음 코딩에 입문하는 사람들은 남들이 짠 코드랑 본인이 짠 것과 함수와 변수 명만 제외하면 거의 차이가 없어(헬로 월드 수준이니까) 딱히 저작권이라고 할만한 것이 있는지도 모르겠고 또 수만줄이 넘는 코드에서 카피 유무의 확인조차 불가능 할 것 같은 소프트웨어에 지적 재산권이 통용되고 있다는 것에 의문을 품기도 하지만 실제 소프트웨어 업계에선 엄연히 라이센스 규정에 따라서 운영되고 있으며 이미 몇가지 판례를 통해 법적인 효력까지 갖추고 있기 때문에 쉽게 무시해선 안된다



사용하고 있는 오픈소스가 어떤 라이센스를 쓰고 있는지 확인하려면 소스코드 파일의 맨위 주석을 보면 된다. 어떤 이유인지는 모르겠으나 거의 대부분의 라이센스가 파일 최상단에 명시돼 있다. 위 그림은 리눅스 커널 파일중 하나를 gedit으로 열어본 사진이다. 이 파일은 GNU 라이센스를 사용하고 있다.


1. GPL 라이센스


소스코드 공개 필요 O, 동일한 라이센스 적용 O, 상업적이용 O


GNU라고도 불리는 이 라이센스는 리눅스 커널에 기본 라이센스로 채택되면서 개발자 사이에선 유명한(악명높은) 라이센스가 됐다.. 이 라이센스는 오픈소스의 철학에 기초해서 만들어진 것이기 때문에 '자유를 누린 만큼 너의 코드도 공개해!' 원칙을 가지고 있다. 이 라이센스를 이용해서 만든 소프트웨어는 동일한 GPL 라이센스를 사용해야하고 모두 코드를 공개해야 한다. '내가 얘네 썼는지 어떻게 알겠어' 하면서 무시할 수도 있지만 이미 판례를 통해 법적인 효력까지 갖춘 라이센스이기 때문에 사용할 때는 신중해야 한다. 자세한 내용은 나무위키 전염성 조항 참고하면 좋다. 리눅스 커널 기반 안드로이드 폰 제조사들이 다른 코드는 몰라도 리눅스 커널 소스코드는 공개할 수 밖에 없는 것은 GPL 라이센스 덕분이다.


2. BSD 라이센스


소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O 


BSD는 자유 소프트웨어 저작권의 한가지로 BSD계열(미국 캘리포니아 대학 버클리에서 개발한 운영체제인 유닉스)에서 주로 채택하고 있는 라이센스다. 규정은 앞서 언급한 GPL과 확연하게 다른데 이 오픈소스 라이센스를 가진 코드는 자유롭게 사용할 수 있고 소스코드를 공개 하지도 않아도 되며 돈받고 팔아도 된다. BSD에서 눈여겨 볼 만한 것은 다루는 것은 누구나 자신의 용도로 사용할 수는 있지만 이 소프트웨어를 사용해서 발생 가능한 모든 리스크와 손해는 본인이 책임지도록 하고 있다. 책임 도피형 라이센스다.


3. MIT 라이센스


소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O


라이센스 이름에서 추측할 수 있듯이 매사추세스 공과대학에서 만든 소프트웨어 라이센스다. BSD를 기초해서 만든 라이센스라 거의 규정은 똑같다. 소스코드를 공개할 필요도 없고 동일한 라이센스를 적용할 필요도 없으며 이 소프트웨어를 사용해서 발생할 수 있는 손해에 대해서도 책임을 지지 않는다는 것 까지 동일하다. BSD 계열의 소프트웨어에서 일반 소프트웨어로 옮겨오기 위해 만든 라이센스 정도로 생각하면 될 것 같다.


4. Apache 라이센스 


소스코드 공개 필요 X, 동일한 라이센스 적용 X, 상업적 이용 O 


아파치(Apache) 소프트웨어 재단에서 자체적으로 만든 라이센스다. 안드로이드 프레임워크쪽의 대부분의 라이브러리가 이 라이센스 규정을 따르고 있다. BSD와 거의 규정이 동일해 소스코드를 공개할 필요가 없다. 차이점이 있다면 Apache 라이센스는 특허권 측면에서 좀더 완성도를 높여서 Apache 라이센스로 출원한 특허에 대해서는 소스코드 사용자에게 특허의 무제한적 사용을 허가한다는 규정을 담고 있다. 즉 어떤 소프트웨어가 아파치 라이센스를 채택해서 배포했다면 그 소프트웨어가 특허출원이 되어 있어도 사용자에게 특허 사용료를 요구할 수 없다는 뜻이다. 나무위키에 따르면 소스코드를 무료로 공개해놓고 그걸 빌미 삼아 특허권 소송을 제기하는 더티한 플레이를 막기 위한 규정이라 한다. 이런 법적인 안전장치까지 있어서 개발자들이 가져다가 쓸 때 가장 선호하는 라이센스 중에 하나인 것 같다.


5. 추가로 


상세한 규정을 알고 싶으신 분들은 블로그 사이트를 찾는 것보다 정보통신산업 진흥원에서 만든 책자를 보는 것이 도움이 될 것 같다. https://www.oss.kr/oss_license 사이트에 가면 라이센스 가이드를 다운로드 받을 수 있다. 법적인 문제와 연관 될 수 있으니 가능하면 전문가와 상담하는 것이 좋을 것 같다.

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01

FFmpeg

컴퓨터공부/오픈소스 2018.10.31 20:40 Posted by 아는 개발자 아는 개발자



FFmpeg는 동영상업계에 종사하는 사람들이라면 아주 유명하고 지대한 영향력을 쥐고 있는 오픈소스 프로젝트다. FFmpeg의 영향력이 얼마나 막강한지 나무위키에서는 FFmpeg를 '마이크로소프트+애플 정도의 영향력을 가지고 있는 멀티미디어계의 최종 보스이며 갑자기 유료화를 시전한다면 내일부터 전세계 동영상 시청이 불가할지도 모른다'고 표현할 정도이니 FFmpeg을 접해보지 못한 개발자라면 오픈소스계에서 리눅스 커널과 거의 맞먹는 위상을 가지고 있다고 짐작해볼 수 있다.


실제로 사용해보면 FFmpeg가 왜 이렇게 막강한 영향력을 가지고 있는지 어느정도 짐작해볼 수 있다. 동영상에 간단히 수정할 일이 생겼다고 해보자. 평소 같으면 다음 팟플레이어, 곰인코더를 설치해서 깔고 버벅거리는 로딩바를 보며 힘겹게 작업했을 것이다. 그런데 FFmpeg을 사용하면 리눅스 커맨드 한줄 만으로도 쉽고 빠르게 작업할 수 있다. 다음은 FFmpeg을 이용해서 동영상 확장자를 변경해본 커맨드다. 정말 직관적이고 심플하지 않은가. 


ffmpeg -i 20181031_194630.mp4 20181031_194630.avi


윗 명령어처럼 단순히 확장자를 변경하는 것 뿐만 아니라 동영상의 사이즈를 줄이고 자르고 비율을 조정하는 일까지 FFmpeg를 활용하면 한줄로 쉽게 할 수 있다. 기능이 많을 뿐만 아니라 속도도 최적화돼 있어 시간도 얼마 걸리지 않는다. 힘겹게 로딩바를 바라보며 프로그램이 죽을까봐 초조해했던 팟 인코더와는 최적화 수준의 차원이 다르다.


놀라운 사실은 지금까지 사용해왔던 다음 팟플레이어, 곰인코더 모두 FFmpeg을 사용한 소프트웨어라는 것. 그리고 이 둘뿐만 아니라 웬만한 사람들은 알만한 인코더들도 모두 FFmpeg 을 사용해서 만들어졌다. 그 예로 아래와 같은 소프트웨어들이 있다.


제트오디오VX, 유마일, 엔젤인코더, 샤나인코더, Freemake, Mencoder, 곰인코더, 팟인코더, Handbrake 등등


그렇다면 위의 나열한 소프트웨어들이 한 일이 무엇이냐고 묻는다면... 커맨드 환경에 익숙하지 않는 사용자을 위해 키보드와 마우스를 활용한 UX를 제공하고 설정 받은 옵션들을 조합해 FFmpeg 라이브러리를 호출한 정도? 자기네 입맛에 맞게 어느정도 수정은 했겠지만 소수에 지나지 않았을 것이다. 그럼 대체 얘네들은 왜 느렸던 걸까...?



출처


- 나무위키 FFmpeg

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01

자동차시장 오픈소스 - 2

컴퓨터공부/오픈소스 2017.01.31 23:48 Posted by 아는 개발자 아는 개발자

스마트폰 OS로 재미를 본 안드로이드가 자동차 OS까지 노리고 있다는 건 이미 잘 알려진 사실이다. 스마트폰때처럼 안드로이드는 차량 제조사(OEM)들이 제공하는 하드웨어 환경(MCU, 네트워크, 자동차 서비스)을 간단히 구조화해 여러 OEM 하드웨어 환경에서 동일하게 작동 할 수 있는 프레임워크를 제공한다.



하드웨어를 추상화해 공통된 프레임워크를 제공하는 방법을 HAL(Hardware Abstraction Layer)라 한다. HAL의 가장 큰 장점은 API화이다. 일반 사용자들은 느낄 수 없지만 API화는 개발 할 때 강력한 무기가 된다. 스마트폰의 경우를 생각해보면, 안드로이드 애플리케이션을 개발 할 때 가장 편리 했던 점은 소프트웨어 개발자가 하드웨어를 전혀 신경 쓸 필요가 없다는 점이었다. GPS 센서를 사용하고 싶다면 개발자는 그냥 Android API 홈페이지에서 GPS 센서를 사용하는 함수를 찾고 그 함수의 return값으로 현재 위치를 찾아 내면 됐다. GPS센서의 MAC Address는 뭔지, 제조사가 어딘지 세세한 부분까지는 알 필요가 없었다. 애플리케이션 개발자들은 쉽게 스마트폰의 센서 정보들을 얻어왔고 이 정보들을 이용해 다양한 애플리케이션을 만들 수 있었다.


안드로이드는 자동차도 동일한 방법으로 접근하고 있다. 차량내의 센서들(MCU, 차의 움직임, GPS, 카메라 등등)을 통제 할 수 있는 API를 제공해 차량 소프트웨어 개발자들이 쉽게 애플리케이션을 만들 수 있는 환경을 제공해주고자 한다. 여기서 파란색으로 된 부분은 차량 제조사들이 구현 할 부분인데 저마다 제조사 입맛에 맞춰서 HAL 인터페이스의 하위 부분을 구현 할 수 있도록 만들어 주었다. 거의 그림의 전부를 차지하고 있는 초록색 부분은 안드로이드 오픈소스 프로젝트에서 만들고 있는 부분이다. 제조사가 만든 HAL 인터페이스에 작동 하는 안드로이드 프레임워크를 만든다. 개발자는 프레임워크에서 제공하는 API를 이용해 쉽게 개발 할 수 있다. 소프트웨어쪽이 취약한 제조사들이 쉽게 개발 할 수 있는 환경을 제공하는게 이 프로젝트의 주된 목적으로 보인다.

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01

자동차 시장 오픈소스 - 1

컴퓨터공부/오픈소스 2017.01.15 19:18 Posted by 아는 개발자 아는 개발자

IoT 기술의 발달로 전보다 자동차 내에 다양한 기능을 넣을 수 있게 되면서 이런 다양한 기술을 자동차 내에 개발 할 수 있는 표준을 제공하는 것이 업계 내에선 화두가 되었다. 이에 따라 큼직한 자동차 회사들은 다른 IT 회사들이 자동차 내 IVI(In Vehicle Infotainment) 소프트웨어 개발할 수 있는 표준을 제공하기 위해 끼리끼리 모여서 오픈소스 프로젝트를 진행하고 있다. 


대표적인 오픈소스 프로젝트로 GENIVI와 AGL(Automotive Grade Linux)가 있다. 두 프로젝트는 여러 면에서 유사한데 굳이 차이점을 고르라면 참여하고 있는 멤버와 AGL이 오픈소스로 유명한 Linux재단에서 운영되고 있다는 점 정도 일 것이다. 두 프로젝트 모두 Yocto 기반의 개발 환경을 두고 있으며 사용하고 있는 OS도 리눅스라는 점에서 동일하다. 내부에 사용하는 소프트웨어들이 조금 차이가 있을 뿐이다.


            


(로고를 클릭하면 프로젝트 공식 홈페이지로 이동한다)


목적도 동일하고 사용하는 플랫폼도 비슷한데 이렇게 둘로 나눠져 있는 이유는 아마 자동차 소프트웨어 시장의 주도권을 잡기 위함일 것이다. 추후 많은 자동차 IVI 소프트웨어 스타트업들이 자동차 시장에 참여할 텐데 OEM이나 FirstTier가 아닌 IT회사들이 초기 플랫폼을 어떤 것으로 선택하느냐가 이들이 만든 소프트웨어가 작동하는 플랫폼을 결정 할 것이고 이는 곧 자동차 업계들이 갖고 있는 플랫폼에서 동작 가능한 소프트웨어의 시장 크기를 결정할 것이다(안드로이드 앱 마켓과 타이젠 앱 마켓을 생각해보면 이해가 빠를 것이다). 미래의 자동차 소비자들은 기존에 자동차가 갖고 있는 성능이나 디자인 뿐만 아니라, 사용자가 원하는 소프트웨어 사용의 유무 또한 중요시 여기게 될 것이다. 데스크탑 시장에서 컴퓨터 게임이 맥북에서 실행이 되지 않아 윈도우를 선택했던 사례처럼 미래 자동차 시장도 "내가 탄 자동차가 내가 원하는 소프트웨어를 지원 하느냐 하지 않느냐"또한 차를 구입하는데 고려할 사항이 될 수 있다. 그렇기 때문에 자동차 업계들은 자신들의 플랫폼을 널리 알려 소프트웨어 개발 회사들이 자기들의 표준에 맞춰 개발하도록 독려 할 필요가 있다.


GENIVI와 AGL모두 공식 홈페이지에는 "우린 비영리 단체이며 IVI 소프트웨어 개발 환경을 제공해 다른 회사들이 쉽게 개발 할 수 있도록 하겠다"고 했지만 정작 이들의 숨은 목적은 결국 자신들이 갖고 있는 플랫폼 시장의 확대이다. 숨은 의도를 생각하면 잠시 괘씸한 기분이 들지만 원래 기업들의 존재의 목적이 이윤 추구가 아닌가. 이 기업들이 모두 모여서 잘 정리해둔 소스코드를 공짜로 볼 수 있다는 것 만으로도 나같은 초짜 개발자들은 감사한 일일지도.. 더구나 이런 프로젝트들 덕분에 초기 기술이 없어도 차량 스타트업이 진출 할 빈틈이라도 노려 볼 수 있는게 아닌가 싶기도 하다.


아무튼 두 프로젝트의 성격은 비슷하니 앞으로 설명은 GENIVI 프로젝트에 맞춰서 설명하도록 하겠다.


앞에서 IVI기반 소프트웨어 개발 환경을 제공 한다고 했는데 이들이 뭘 하는지 이해가 가지 않을 것이다. 그래서 GENEVI에서는 딱 프로젝트 소스코드를 받고 빌드 했을 때 나오는 결과물들을 표로 정리를 해뒀다.



GENIVI 프로젝트 Yocto 소스를 받아 빌드하면 많은 결과물들이 많이 나오는데 크게 커널 이미지와 Rootfs로 나눌 수 있다. 커널 이미지는 Genivi의 OS로 사용되는 이미지이고 Rootfs는 표 상단에 잇는 App& HMI Framework와 Demo App들이 설치되어있다. 빌드된 파일들을 선택한 하드웨어 환경에 적용하면 정상적으로 실행되는 걸 확인 할 수 있다.


(빌드하고 나서 Qemu로 돌려본 Genivi. 생각보다 별로 볼 건 없다)


다양한 하드웨어에 적용 될 수 있도록 만들어 놨는데 위 도표에 있는 하드웨어들이 GENIVI 프로젝트에서 돌릴 수 있는 하드웨어 들이다. 집에 보드 하나 없는 필자의 경우에는 QEMU x86-64에서 한 번 빌드 결과물들을 돌려 봤다. 매우 느릿느릿 하지만 동작하고 UI가 뜨는 것도 확인 했다. 라즈베리파이나 다른 보드에 맞춰 개발하려면 초기 빌드시 위 환경에 맞춰서 빌드 하도록 설정하면 된다. 각 하드웨어마다 필요한 드라이버들이 조금 차이가 있다.


기본적으로 제공되는 Demo Application들은 위에 Demo Apps 카테고리에 있는 것들이다. 그리고 이 애플리케이션 개발 프레임워크는 Qt를 쓰는데 Qt는 오픈소스 C++개발 프레임워크이다. 예전에는 이런 프레임워크 존재 자체도 몰랐었는데 이번에 GENIVI프로젝트를 조사하면서 알게 됐다. 현재 Demo App으로 올라가있는 애플리케이션들은 모두 C++로 만들어져 있다. AGL도 애플리케이션 프레임워크로 Qt를 사용하고 있는데 아마 임베디드 리눅스 환경에서 가장 쉽게 사용 할 수 있는 프레임워크라 그런게 아닌가 싶다.




네비게이션, FM라디오, 차량 온도조절처럼 익숙한 애플리케이션들은 이미 설치 있었고 처음 보는 것은 Connected Home이란 애플리케이션이었다. 이름만 들어도 차량과 집이 연결된다는 느낌을 줬는데 실제로 실행해보니 집을 나가는 버튼(Leaving Home), 집으로 돌아오는 버튼(Coming Home)이 있었고 각 버튼을 눌러보니 집을 나가는 버튼(Leaving Home)을 눌렀을 때는 Vehicle Moving 이라는 알림이 떴고 Coming Home을 눌렀을 때는 집으로 돌아가는 경로를 영상의 형태로 보여줬다. 맨 아래 Smart Home Status라는 버튼이 있었는데 이 버튼은 눌러도 아무런 반응이 없다(아마 QEMU라 느려서 그런 것 같다) 빌드과정에서 Iotivity 오픈소스들을 쭉 받았었는데 아마 그 오픈소스를 활용해 차량에서도 집안의 디바이스들의 상태를 확인할 수 있는 애플리케이션이 아닐까 싶다. 이렇게 데모로 애플리케이션이 나올 정도면 4-5년 후에는 차안에서도 집안의 세탁기를 돌리는 시대가 올 것 같다. 물론 지금 스마트폰으로도 가능하니 그리 놀라운 일은 아닌 것 같기도 하고.

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01

이런 오픈 소스도 있다!

컴퓨터공부/오픈소스 2017.01.07 00:39 Posted by 아는 개발자 아는 개발자

어떤 오픈소스에 참여 해볼까 조사하던 중에 신박한 주제를 가지고 있는 프로젝트들을 발견 했다. 이번 포스팅에서는 조사 과정에서 발견한 신박한 오픈소스 프로젝트들에 대해서 정리를 해보려고 한다.


1. Open MRS




Google Code in에선 이 프로젝트대한 부연 설명으로  "Write code, save lives!" 딱 한 줄을 내놨다. 코드를 작성하고 생명을 구하자는 말인데 코딩을 하는 거랑 환자를 치료하는 거랑 전혀 무관 할 것 같지만 실제로 이 프로젝트는 의료지식이 전혀 없는 프로그래머들이 자신이 만든 소프트웨어로 HIV/AIDS같은 불치병을 치료하는 프로젝트를 진행한다. 여기서 만든 소프트웨어는 개발도상국에서 환자들의 정보를 별도의 전문적인 지식 없이 저장 및 재사용이 가능한 데이터베이스 환경을 구축하는 것을 목표로 한다. 우리가 병원에 가면 흔히 볼 수 있는 유료 환자 데이터베이스 소프트웨어를 개발도상국에서는 사용 할 수 없어 국가적으로 질병관리를 체계적으로 진행 할 수 없을 것인데 이 프로젝트는 바로 이점을 착안해서 진행 한 것으로 보인다. 


비영리적 목적으로 개발되고 있으며 2015년 2월에 정식 버전이 출시됐다고 한다. 주로 JAVA를 이용해 구현했고 Linux/MAC/Windows에서 모두 구동이 가능한 프로그램이다. Mozilla public license(MPL version2)를 갖고있다.


프로그래밍과 의학이라는 도무지 교집합을 찾아 보기 힘든 두 영역이 아무런 대가성 없이 오로지 질병 퇴치라는 목적 아래 뭉쳐졌다는 점에서 큰 감명을 받았다. 프로그래밍이 다른 영역들과 뭉친 적이 비록 예전에도 있었지만 대부분 이익을 목적으로 한 결합이었고 프로그래밍은 단순히 돈을 벌기 위한 수단 같은 존재라는 생각이 들었는데, 이 프로젝트에서는 프로그래밍이 영리 적인 목적에서 벗어나 인간의 삶에 도움을 줄 수 있다는 생각이 들었다.


http://openmrs.org/



2. Sugar Labs




설탕 연구실이라는 아기자기 이름을 가진 프로젝트는 이름처럼 프로젝트 내용도 아기자기하다. 이 프로젝트에선 어린이들이 사용 할 수 있는 소프트웨어를 개발한다. 주요 소프트웨어의 목적은 교육이다. 어린이들이 소프트웨어를 통해 여러가지 개념을 쉽게 배울 수 있다. Application이라고 안하고 Activity라고 학교 내의 수업시간 이름 같은(?) 느낌으로 몇개가 만들어져 있는데 대표적으로 직접 수학 식을 만들고 계산을 해볼 수 있는(사실은 계산기와 다를 바 없지만...) Number와 자세히 보면 거북의 등껍질이 연상 되는(?) 타자를 연습 할 수 있는 Typing Turtles가 있다. 프로그램 자체는 놀라울 기술을 사용하는 것은 아니지만 어린이들이 사용하기 때문에 UI에 많이 신경을 쓴 느낌이다. 주로 교육쪽에 관심이 많은 프로그래머나 그쪽 분야에 계신 분들이 다같이 만드시는 것 같다.


이것 또한 비영리적 목적으로 개발되고 있고 여기서 만든 소프트웨어는 Debian계열 데스크탑에서도 사용이 가능하다고 한다. 다른 나라들은 집에서 Ubuntu를 많이 사용하나 보다... 


아기자기한건 나와 거리가 멀기에 일단 이건 패스...


https://sugarlabs.org/



3. Automotive Grade Linux




데스크 탑과 스마트폰을 장악한 리눅스가 이제는 자동차 인포테이먼트 시장에 나타났다. Automotive Grade Linux(줄여서 AGL 이라 부른다)는 자동차에 애플리케이션 개발에 기초가 되는 소프트웨어 솔루션을 만드는 오픈소스 프로젝트이다. 초기 목표로 삼았던 것은 자동차 IVI(In-Vehicle Infotainment)였지만 여기서 확장해 자동차내의 무선통신과 디스플레이, 클러스터까지 지원할 계획이라 한다. 현재 이름만 들어도 알 만한 자동차 업체들이 위 프로젝트의 멤버로 참여하고 있고 이 회사의 개발자들은 이 프로젝트에다가 커밋을 쏙쏙 올리고 있다고 한다.


여기 까지가 공식 홈페이지가 내놓은 설명이고 이 프로젝트에서 목표로 하고 있는 건 아마 자동차 내에 리눅스 기반의 애플리케이션을 돌릴 수 있는 플랫폼을 최대한 빨리 구축해, 머지 않은 미래에 도래할 자동차 IVI시장에서 리눅스의 점유율을 높히고 개발자들이 이 플랫폼을 사용하게 함이 위함 인 것 같다. 스마트폰 사례를 통해 알 수 있듯이 일단 플랫폼 점유율을 갖고 있어야 그곳에 개발자들이 모여들고 플랫폼을 응용한 애플리케이션을 만들어 가면서 소비자들도 늘어난다. 결과적으로 안드로이드와 iOS는 성공했고 윈도우와 타이젠은 실패했다. 자동차 업체들도 이들의 성공과 실패를 눈 여겨 보고 있었을 것이다.


2020년부터는 스마트카가 등장한다는데 과연 그때까지 자동차 산업에 올라탄 이 프로젝트는 어떻게 될지 궁금하다. 스마트폰처럼 한 시대를 대표하는 디바이스가 되어 또 다른 안드로이드가 될 것인가 아니면 빛 좋은 개살구 인 스마트워치의 타이젠이 될 것인가.


https://www.automotivelinux.org/


4. KDE




아마 알 만한 개발자들은 모두 알고 있는 프로젝트 일 것이다. KDE는 리눅스 기반의 데스크탑에서 무료로 사용 할 수 있는 오픈소스 애플리케이션을 만드는 프로젝트다. 교육, 예능, 사무등 다양한 종류의 애플리케이션을 만들었는데 아마 이 단체를 모르더라도 이곳에서 만든 애플리케이션은 한 번쯤 들어 봤을 것이다(애플리케이션이 'K' 대문자로 시작한다면 이 단체에서 만든 애플리케이션일 확률이 높다).


이 단체에는 개발자 뿐만 아니라 디자이너들도 많이 참여하고 있는데 그래피컬한 요소를 중요시 여기는 것도 아마 이 분들 때문이지 않을까 싶다. 실제로 여기에서 만든 KUbuntu를 사용해보면 여태껏 사용해본 OS중에서 가장 독특하고 사용자 친화적인 UI를 가지고 있다. 처음에는 어떻게 써야 할지 감이 잘 안왔지만 막상 사용하다보면 이렇게 UI도 사용 할 수 있구나 하고 감명을 받기도 했다. 그런데 사실 편한 건 잘 모르겠다. 자주 사용하지 않아서 그런 것 같긴 한데 나무 위키에서도 이들의 UI가 직관적이지 않으며 제공되는 옵션이 많아 더 무겁게 느껴질 수 있다고는 했다.


https://www.kde.org/

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01

오픈소스 시작하기

컴퓨터공부/오픈소스 2017.01.01 11:48 Posted by 아는 개발자 아는 개발자

사오정이란 말이 난무하지만 정작 사십오세까지 직장을 다니기도 버거운 고용불안 시대에 한 회사에만 나의 운명을 맡길 수 없어 입사 2년차인 2017년 올해 부터는 회사 안에서 뿐만 아니라 밖에서도 링크드인에 남길만한 이력을 채우는 것을 새해 목표로 삼았다.


하지만 머릿 속에선 '뭘 해야 하지?' 라는 질문이 먼저 들었다. 안드로이드이나 윈도우 응용 애플리케이션을 개발하는 개인 프로젝트를 해볼까 했지만 이런건 모든걸 혼자 해야한다. 아이디어도 혼자 생각해야하고 기획도 혼자 해야하고 디자인도 혼자 해야하고 개발도 혼자 (그것도 잘)해야한다. 개인 프로젝트이기에 개발과정에서 나오는 이슈들을 같이 고민하는 사람들이 없다(스택 오버플로우에 물어보면 좀 모를까). 산적한 문제들을 해결하다 보면 순수한 마음으로 시작했던 마음이 어느새 짜증으로 바뀌게 되고 혼자 수전투구 하다 회사일에 치여 결국 뒷전으로 몰아지다가 나중에는 포기하게 된다. 이미 작년에 회사 다니면서 한번 겪어본 경험담이다.


그래서 선택한 것이 오픈소스이다. 오픈소스는 나 혼자 하는게 아니라 여러 사람들이 같이 개발한다. 그중에는 명성이 자자한 개발자도 있고 로고와 아이콘을 디자인하는 디자이너도 있고 처음 오픈 소스를 개발하는 초짜 개발자도 존재한다. 크게 두 분류로 나누면 프로젝트를 담당하는 메인테이너(Maintainer)와 여기에 기능을 추가하는 코드를 넣는 커미터(Commiter)가 있다. 메인테이너의 역할은 프로젝트를 리드 하는 역할이다. 이번 달은 이러이러한 기능을 구현하고 언제 까지 하겠다 는 기획을 주로 맡고 뿐만 아니라 추가된 코드들이 코드 문법에 맞춰서 작성 되었는지, 혹시 모를 버그는 없는지 확인하고 관리하는 역할을 한다. 커미터는 메인테이너가 세워둔 기획에 맞춰 기능을 구현하고 작성 한 코드를 커밋(commit)한다. 역할상으로 구분하면 메인테이너는 관리의 역할이고 커미터는 개발자가 되는 셈이다. 물론 이는 그냥 역할상의 구분일 뿐이고 실제로는 메인테이너가 커밋을 하는 경우도 있다.


그런데 어떤 오픈소스를 해보지...?


이미 오픈소스로 안드로이드나 리눅스가 있는건 알겠지만 운영체제 영역이라 내가 진입하기엔 어려워 보이고(임베디드 회사를 1년 다녔지만 나에겐 아직도 어렵다) 이미 구현이 다돼버려서 내가 뭘 할 수 있을까 하는 고민이 든다. 그렇다고 나의 도메인 영역 밖인 html, CSS 단으로 가기엔 내가 코드 한 줄 넣을 수 있는 능력이 안될 것 같았다.


그래도 능력이 부족한 거야 스스로 공부해서 해결 할 수 있다쳐도 문제는 어떤 오픈소스가 있는지를 모르겠다는 것이다. 오픈소스가 그렇게 만다는데 도대체 막상 찾으려면 내가 할 수 있는게 뭔지 보이질 않는다. 그래서 한 번 찾아봤다. 내가 할 수 있을 만 한 오픈소스가 뭐가 있을 지...


몇차례 사이트를 돌아 다니다 보니 Google Code in 에서 관리(?) 하는 오픈소스 조직들이 있었다. 



https://codein.withgoogle.com/organizations/


처음 들어보는 오픈소스들이 대부분이었고 주제는 신박했다. 다양한 OS에서 실행 가능한 소프트웨어 개발처럼 사용자 편의성에 맞춘 것에서 부터 개발도상국에서 사용 할 수 있는 소프트웨어 개발, HIV/AIDS 치료를 위한 환자 데이터 베이스 개발하는 비영리 단체들도 있었다. View info 버튼으로 간략한 설명을 볼 수 있고 추가 적으로 나오는 View TASK에서는 현재 진행중인 작업들을 볼 수 있다. Beginner라는 태그를 달아 처음 하는 사람도 쉽게 할 수 있다고 알려준다.



이들이 정확히 무슨 일을 하는지는 오픈소스 조직이 운영하는 사이트에 들어가보면 자세히 나온다. 각 사이트 마다 User Guide 뿐만 아니라 Developer Guide까지 있어서 처음 접하는 개발자가 어떻게 환경 설정 해야하는지 어떤 툴을 설치해야 하는지 등등이 잘 나와있었다(무대뽀로 가르치는 우리 회사보다 체계적이란 느낌이 든다 ㅡㅡ) 가장 맘에 들었던 점은 처음 하는 사람들이 어떤 일을 맡았으면 좋겠다고 친절히 알려주는 점이다. '우리 프로젝트의 코딩 스타일은 이러이러 한데 공부겸사 코드 보면서 혹시 스타일에 안맞는거 있으면 고쳐주세요!'처럼 간단한 일부터 시작한다. 오픈 소스를 하는 사람이 가장 먼저 생각하는 불안감을 이들도 어느 정도 공감하고 배려하는 것 같다.


다른 사이트도 찾아 보려고 했는데 그냥 여기 있는 내용 만으로도 충분 할 것 같아서 여기 내에서 고르기로 결정 했다. 다루고 있는 주제들도 마음에 든다. HIV/AIDS 치료를 위한 DB 개발을 하는 OpenMRS처럼 공익적인 오픈소스가 특히 끌린다. 내가 만드는 코드 한 줄이 사회적 약자에게 도움이 된다면 얼마나 뜻깊은 일일까. 

'컴퓨터공부 > 오픈소스' 카테고리의 다른 글

오픈소스 라이센스 정리  (0) 2019.06.09
FFmpeg  (0) 2018.10.31
자동차시장 오픈소스 - 2  (0) 2017.01.31
자동차 시장 오픈소스 - 1  (0) 2017.01.15
이런 오픈 소스도 있다!  (0) 2017.01.07
오픈소스 시작하기  (0) 2017.01.01