개발자의 logs
항해 99 CS 스터디 - 자유로운 소프트웨어, 오픈소스 본문
이 글은 1일 1로그 100일 완성 IT 지식을 참고하여 작성한 글 입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=21380986
자유로운 소프트웨어, 오픈소스
프로그래머가 작성하는 코드는 어셈블리 언어든 고수준 언어든 소스 코드(source code)라고 한다.
소스 코드를 프로세서에서 실행하기에 적합한 형태로 컴파일한 결과는 오브젝트 코드라고 한다.
https://ko.wikipedia.org/wiki/%EB%AA%A9%EC%A0%81_%ED%8C%8C%EC%9D%BC
소스 코드는 약간의 수고가 따르더라도 프로그래머가 읽을 수 있는 형태라서 코드를 연구하여 상황에 맞춰 수정이 가능하고, 코드에 포함된 혁신적인 기법 또는 아이디어를 읽어 낼 수도 있다.
반면, 오브젝트 코드는 너무 많은 변환 과정을 거쳤기에 소스 코드와 조금이라도 비슷하게 복원한다거나, 변종 만들기 혹은 작동 방식을 이해하기 위해 이용할 수 있는 형태로 추출하는 것조차 대개 불가능하다. -> 그렇기 때문에 대부분의 상용 소프트웨어는 오브젝트 코드로 배포!
오픈소스
오픈소스(open source)는 연구와 개선 활동을 위해 다른 사람들도 소스 코드를 자유롭게 사용할 수 있도록 하는 대안을 일컫는 용어다.
프로그래머 리처드 스톨만은 GNU라는 것을 만들었는데,
GNU의 목적은 운영체제와 프로그래밍 언어용 컴파일러 같은 중요한 소프트웨어 시스템의 무료 공개 버전을 만드는 것이었다. 또한 그는 오픈소스를 지원하기 위해 자유 소프트웨어 재단이라는 비영리 단체를 만들었다.
https://namu.wiki/w/%EB%A6%AC%EC%B2%98%EB%93%9C%20%EC%8A%A4%ED%86%A8%EB%A8%BC
https://ko.wikipedia.org/wiki/GNU
이 단체의 목적은 비독점적이고, 구속적인 소유권에 얽매이지 않는다는 의미에서 영구히 '자유로운 소프트웨어'를 만들어 내는 것이다.이는 GNU GPL 이라는 기발한 저작권 라이선스에 따라 구현을 배포하는 방식으로 이루어졌다.
https://www.olis.or.kr/license/Detailselect.do?lId=1072
GPL은 라이선스가 적용된 소프트웨어를 자유롭게 사용할 수 있다고 명시.
만약 소프트웨어가 다른 누군가에게 배포되면 그 배포판도 어떤 자유로운 용도로도 자유롭게 사용할 수 있게 해야한다.
그 조건을 위반한 회사는 법원 판결에 의해 코드 사용을 중단하거나, 라이선스가 적용된 코드를 기반으로 하는 소스 코드를 배포하도록 강제된 바 있다.
가장 눈에 띄는 오픈소스 프로젝트는 리눅스 운영체제다. 리눅스는 개인 개발자 뿐만 아니라 구글 같은 영리 기업에서도 널리 사용되고있다.
오픈소스 사용자는 자신만의 용도로 사용하거나 원하는 방식으로 수정 가능하나, 어떤 형태로든 배포를 하고자 한다면 GPL에 따라 소스 코드를 공개해야한다.
오픈소스에 대한 호기심과 질문은 다양하게 많지만 , 일부 질문에 대한 답은 명확해지고 있다.
그 예시로, 리눅스의 회사인 레드햇은 리눅스 소스 코드를 배포하는 것과 별개로 기술 지원, 교육, 품질 보증, 시스템 통합과 기타 서비스 이용에 요금을 청구함으로써 수익을 얻고 있다.
마이크로 소프트는 이제 오픈소스 소프트웨어 프로젝트의 주요 주체가 됐다. 이런 기업은 프로그램의 발전에 기여할 뿐만 아니라,
다른 사람들이 자신들의 버그를 수정하고 코드를 개선하도록 허용함으로써 이득을 본다.
알아야 할 점은 오픈소스 소프트웨어가 전부 최상급인 것은 아니며 몇몇 소프트웨어 오픈소스 버전은 원래 모델로 삼은 상용 시스템보다 뒤떨어지기도 한다.
https://jjeongil.tistory.com/561
https://www.oss.kr/news/show/1440965b-c8b2-485c-87ab-363858f74635
'개발 공부지식 > *개발 공부*' 카테고리의 다른 글
항해99 CS 스터디 - 모뎀 (0) | 2022.06.13 |
---|---|
항해99 CS 스터디 - 네트워크의 기본 속성 (0) | 2022.06.13 |
항해 99 CS 스터디 - 기술 표준의 중요성 (0) | 2022.06.04 |
gRPC 프로토콜로 통신하는 서버 프로그램은 API 서버인가? (0) | 2022.06.02 |
항해99 CS 스터디 - 슈퍼 컴퓨터부터 사물 인터넷까지 (0) | 2022.05.27 |