본문 바로가기

교육 자료/EDUCATION

오픈소스 하드웨어


   © frantic, 출처 Unsplash


1. 오픈소스란 무엇인가? 


OSHW , Open Source Hardware 


오픈 소스(open source)는 

소프트웨어 혹은 하드웨어의 제작자의 권리를 지키면서 

원시 코드를누구나 열람할 수 있도록 한 소프트웨어 

혹은 오픈 소스 라이선스에 준하는 모든 통칭을 일컫는다.


출처 

오픈 소스 - 위키백과, 우리 모두의 백과사전

https://ko.wikipedia.org/wiki/오픈_소스오픈소스란 무엇인가?



소프트웨어를 개발하다 보면 많고 다양한 오픈소스를 사용하게 됩니다. 


개발자라면 '오픈소스' 자료를 공개해 많은 개발자들이 보다 더 자유롭고, 편리한 방법으로
프로그래밍을 할 수 있도록 돕고자 하는 '선한 마음'이 모여 지금의 다양한 오픈소스 자료들이 
생겨날 수 있는 기반을 마련할 수 있게 되었습니다. 

오픈소스란 무료로 다운로드해 설치하고, 필요에 따라 수정이 가능하며, 
다른 사람과 공유가 가능합니다. 

기본적으로 DIY(Do It Yourself)의 
특성을 갖고 있기 때문에 자유로운 사용을 뜻하기도 하지만, 
그에 따른 책임은 오픈소스를 이용하는 사용자에 달려있다고 할 수 있죠. 

오픈소스의 장점은 전 세계적으로 이용하는 사용자 커뮤니티로부터 
다양한 피드백을 빠르게 받을 수 있고, 그에 대한 정보의 양도 무척 방대하다는 점입니다. 


2. 오픈소스 종류에 따른 구분 


Open Source HardWare


 SPARC(공개 CPU 아키텍처), 

RISC-V (공개 CPU 아키텍처), 
Raspberry Pi(싱글 보드), 
Beagle Board 
(초소형 컴퓨터 마더보드) 등 


 Open Source Software


 자유 소프트웨어 재단,

아파치 소프트웨어 재단, 
Mozilla, 
Phython, 
Redhat, 
OSI(Open Source Initiative) 등




© leecampbell, 출처 Unsplash


3. 사람들은 왜 오픈소스 프로젝트를 공개할까?


오픈소스 프로젝트를 공개하는 데는 여러 가지 이유가 있습니다.

오픈소스를 사용하다 필요한 기능을 직접 추가했을 때 
보통 새로 만든 기능을 프로젝트에도 반영하고 싶은 마음이 생기겠죠? 

하지만 추가한 내용이 유용할지라도, 프로젝트의 작업 우선순위에 따라 
추가한 기능이 원활하게 작동하지 않을 수 있습니다. 

이런 경우, 원래의 오픈소스를 포크(fork) 해서 직접 새로운 기능을 추가하고 
별도의 프로젝트로 운영할 수 있습니다. 

그렇지만 가장 큰 세 가지 이유는 아래와 같습니다

① 오픈소스 라이선스 의무를 지키기 위해 
GPL(GNU General Public License)이나
AGPL(Affero General Public License),
MPL(Mozilla Public License) 등의
라이선스로 배포되는 오픈소스를 사용하면 라이선스 조항에 따라 
산출물로 나온 소프트웨어의 소스 코드를 공개해야 할 때도 있습니다.

② 더 나은 소프트웨어로 성장하기 위해
누구나 개발에 참여할 수 있도록 프로젝트를 공개하면 
외부 개발자들과 함께 문제를 공유하고 해결할 수 있습니다. 
소스 코드에 대한 컨트리뷰션 외에도 다양한 테스트 환경과 
오류 신고 등으로 소프트웨어의 품질을 높일 수 있습니다.
  
③ 사회 공헌을 위해 
일반적으로 서비스나 제품에 필요한 소프트웨어를 
만들기 위해서는 오픈소스 기술이 반드시 필요합니다. 
이렇게 오픈소스 생태계에서 얻은 혜택을 다시 오픈소스 생태계에 
돌려주기 위해 오픈소스를 운영하는 경우도 있습니다.


© rawpixel, 출처 Pixabay


4. 오픈소스를 사용하다 보면


단순한 버그, 아이디어, 불편한 사항 등을 프로젝트에 알리는 것만으로도 
'컨트리뷰션'의 시작이 될 수 있습니다.

디버깅하다 오타를 발견하면 PR을 보낸다던지, 
문서를 읽다 깨진 URL을 발견했을 때, 깨진 링크를 정정하는 PR을 보낸다던지 
무심코 지나치기 쉬운 Readme의 사소한 오타를 알려주는 것과 같은 

작고 사소한 것부터 오픈소스를 만든 개발자와 나중에 해당 오픈소스를 이용할 

사용자들 모두에게 '기여'할 수 있다는 것입니다!


오픈소스를 운영하는 일은 단순히 버그를 수정하고 기능을  추가하는 것이 아니라, 
프로젝트를 널리 알리고 사용자와  소통하며 궁극적으로 프로젝트의 품질을 

높일 수 있는 모든 범위의 활동을 의미합니다.  

공개된 오픈소스는 누군가의 문제를  해결하는 데 도움이 될 것입니다.
이렇게 도움을 받은 사람들이 사용자가 되고,

때에 따라 컨트리뷰터로 오픈소스에 참여할 것입니다. 

오픈소스, 너무 어렵게만 생각하지 말고
앞으로 정보가 차곡차곡 쌓여나갈 라두이노와 함께 
차근차근 시작해봅시다!