2021소프트웨어주간) 공개SW 페스티벌
My Note/Developer's Note

2021소프트웨어주간) 공개SW 페스티벌

 

리누스 토발즈의 축사가 있다고 했는데 축하영상메세지 라고 한다 ~~~

 

기조연설 3개,,  4개의 트랙 총 20개의 발표가 준비되었다고 함 :)

 

먼저 1부 . 축하영상

올해는 리눅스가 나온지 30년된 해라고 :! 전 세계 개발자들에의해 2천만 라인이 넘는 정교한 소프트웨어로 발전하여 가장 성공적인 공개SW가 되었다고 한다 짝짝!!

오픈소스는 25조원 규모에서 ~ 26년에는 58조원에 이를 정도로 빠른 성장이 예상되고 있다고~  그에 맞춰 전세계는 공개SW 관련된 다양한 정책을 펼치고 있는데, 

미국: 공공분야 소스코드를 공개소프트웨어로 전환하고 개발 허브역할을 하는 에이틴에프와 같은 공개소프트웨어 조직을 만들어 운영하고 있고

중국: 중국판 GITHUB과 같은 GITEE를 민관협업으로 개발,운영하고 있고

우리나라: 정통진흥원에서 ICT기업의 소프트웨어 강화를 위해 여러 사업을 추진하고 있다고 함.

[기조강연1] "리눅스 Guru를 만나다.-Greg Kroah-Hartman"

USB서브 시스템에서 처음 이분의 이름을 봤고 지금은 커널의 여러 분야에서 메인테이너로 활동하심

어떻게 리눅스 커널 개발을 시작하게 된걸까? 지금은 어떤일을 하고 있는지! 

1990년 초반에 직장에서 리눅스 사용하기 시작 원래는 SCO 유닉스와 리눅스 사용, 임베디드 많이했고

90년대 후반에 직장에서 USB에 관련된 프로그래밍 함.

USB specification 프로세스에 참여, 만든 장치 테스트 & 여러 OS바코드 스캐너를 만들었는데, 그때 리눅스는 usb지원기능이 막 추가되던 시기였다고 함. 근데 잘 되지 않아서 패치들을 테스트하기 시작했고 어떤 걸 해야할 지 보다가,

유레카를 외치게 됨. ? 내 장치를 더 잘 돌아가게 만들 수 있는 패치를 찾아서 패치 적용. 사람들이 좋아해서 가져가는 등 그렇게 넘어가게 됨. 그러던 중 리눅스 디바이스 드라이버 책을 보면서, 드라이버를 직접 작성해 제출함 . 너무 자랑스러운 경험이었다고 한다. 그런데 바로 반응이 왔다 '이게 잘못되었다 등등' 너무 놀라웠고 또 좋았다고 한다. 누군가 그걸 보고 평가를 해주길 바랬다고 함.. (지금의 나와 비슷한 마음~ 코드리뷰받고 싶은데! 이게 잘못되었다 이런식으로 고쳐주면된다 등등 평가를 해주길 바라고 있음.....!!) 잘못됐다고 하는 부분들을 변경하면서 배울 수 있었고, 패치 제출하고 또 작은 usb부터, 시리얼 장치까지 여러장치를 위한 더 많은 드라이버를 작성하기 시작했다고 한다.

그래서 대가를 받고 만든 코드보다 무료로 만든 드라이버 코드를 사람들이 더 많이 사용하고 있다는 것 알게됨. 결국 90년대 후반에 리눅스 풀타임 일자리를 얻게되어 지금까지 일하게 됨. 재미있는 여정이었다.

현재는 리눅스 재단에서 일하고 있고 6~8년정도 됨, Linus, Shuah Khan이 리눅스 재단에서 커널 개발을 하는 유일한 사람들임. 안정버전 리눅스 커널을 관리하고 출시하는 일을 약 17년동안 함 

Linus는 매 석달마다 메인 버전 릴리즈를 맡고 있다. 

이분도 안정버전 커널 출시를 릴리즈 브랜치에 따라 일주일에 한 두번 정도 하고있다

안정버전 커널은 리눅스를 사용하는 장치들이나 배포판 등을 만드는 사람들을통해서 해당 장치나 배포판에 반영되는 것

 

처음 만들었던 업스트림의 메인 usb 서브시스템 뿐 아니라 안정버전 커널을 관리하고 있다.  정말 좋아하는 일, 

 

 

또 커널의 다른 부분들 - 드라이버, 시리얼 , 드라이버의 시리얼 파트, TTY레이어,

새로 진입하는 사람들이 관여할 수 있는 여러 사소한 부분들 

그리고 일부러 정비하지 않은 코드가 있다. 코딩스타일을 고치는 것 같은 기본적인 부분을 찾는 것은 아주 쉽고 그러면서 사람들이 어떻게 도움을 주고 기여할 지를 아주 쉽게 배우게 된다. 새로 개발에 참여하는 사람들이 관여하기에 좋은 부분

 

Q2 . 소통과 협업에 관련된 문제, 중요하게 생각하는 부분?

가장 좋은 방식은 이메일

영어가 모국어가 아닌 경우에 좋다. 유럽에 사는데, 언어를 이해하도록 말하는 속도를 늦추고 다른 언어로 답장을 쓰는 상황들에 감사하게 생각한다. 

이메일은 기술적의견이나 기술적 요점을 표현하고, 일들을 논의하기에 정말 좋다. 

이메일을 보내면 비동기적으로 확인하게 되니 곧바로 답장을 하거나 미팅을 하지 않아도 된다. 전 세계 각기 다른 시간대에 있는데, 이런 상태에서 일을 하기에 아주 좋은 방법이다. 

 

이게 항상 이야기해왔던 훌륭한 작업 형태이다. 리모트로 일하는 것 가능하고, 리눅스 재단도 리모트 형태이다. 리눅스는 한 번도 회사건물을 가져 본적이 없다. 한번은 카센터 위에 팩스 머신 달랑 하나 있었는데 그게 리눅스 재단의 유일한 사무실이었다. 이제는 그냥 리모트로 근무한다. 

하지만 이런 방식으로 일하면서 우리는 아주 잘 작동하는 멋진 무언가를 만들어 낼 수 있다. SW를 가지고 일한다는 점에서 매우 운이 좋다고 생각한다. 항상 하드웨어에 엑세스 할 필요는 없잖아요

가끔은 리모트로 일하는 와중에 하드웨어를 받아서 일한 적도 있다.  지난 2년동안 전세계 락다운인 상태에서도 우리가 가지고 있는 도구 활용해 리모트로 일할 수 있고 아주 잘 작동된다는 게 증명됨

 

-> 좋은 소프트웨어 엔지니어링의 미래라고 생각한다. 

오프라인에서 무언가 생각해내고 좋은 글로 쓰여진 소통을 통해서 일하는 것

그래서 우리는 좋은 서면 의사소통 기술을 가져야만 한다. 어렵지만 모두가 배워야하는 매우 일반적인 기술이다. 


 

Q3 . 여러 다른 시간대의 사람들과 분산된 방식, 비동기적인 방식으로 정말 큰 프로젝트도 수행할 수 있게 됨. 그런 방식으로 일하면서 겪었던 재미있는 에피소드?

기업들이 커뮤니티에 관여하게 하기 위해서 많은 회사들에 직접 찾아가서 작업을 해야했었다는 점. 

목표 : 리눅스에 의존하는 회사의 개발자들이 이 커뮤니티의 일원이 되게하고 그들이 해당 부분의 코드를 소유하게 하는 것 -> 그럼 커뮤니티가 성장함 

우리 회사가 리눅스에 의존하고, 내가 커뮤니티의 일원이 되면 시간이 지남에 따라 나는 리눅스가 성공하는 것을 돕게 될 것이므로 ㅎㅎ

어떤 회사에 방문했는데 드라이버 작업을 하고는 있었지만 커뮤니티에 제출하지는 않았다. 뭔가 잘 안되고 잇었고 엔지니어들끼리 어떤 소통도 없었다. 엔지니어 절반이 점심시간에 자리를 비우고 누군가가 이야기했다 '우린 아무말도 못하겠어요. CTO가  원 드라이버 코드를 만든 사람이거든요 만약 커뮤니티의 누군가가 그 코드를 가지고 놀리거나 삭제한다면 그는 아마도 기분이 상할 거라고?!  ' 이야기함  

이분은 일이 재밌어진다고 생각함 -> 문제는 코드라고 이야기하고 고치기 시작함. 

이제 그 회사는 커뮤니티에서 아주 중요한 역할을 하고 있다. 아주 잘 운영되고 있다.

단지 누군가를 구하거나 모욕하는 것을 원치않는 회사의 관리자 계층과 실무자 사이의 잘못된 의사소통이었다. 

문화적 문제 - 그건 그사람을 모욕하는 것 같지만 실제로는 성장 경험이다. 우리는 모두 결국에 어떤 것을 더욱 좋게 만들려고 노력하기때문에 

코드를 더 좋게 만들려고 하기 때문에 문제점을 찾아내는 것이다. 사람과는 관련이 없다. 엔지니어링이기떄문에

 

이건 글쓰기와 같은 리뷰과정이라는 것!

어떤 형태의 예술이나 일도 같다. 항상 다른 사람들로부터 비평과 검토를 받게 된다. 그러면서 배우고 성장하고 더 나아지는 것 

 

 

 

모두는 사람이고, 같은 목표를 위해 함꼐 일하고 있기 때문에

최소한 하나는 동의해야한다. 매년 4천~5천명 정도가 커널 개발에 참여한다

모두 동의하는 유일한 것은 리눅스가 더 나아지기를 바라는 것뿐

 

우리는 커널을 각자의 환경에서 잘 동작하게 하려고 하기에 모두 조금씩 기여하게 된다. 

이기적인 관점에서 우리 각자의 사용 환경에 커널이 동작하도록 기여하고 모든 사람들을 전반적으로 돕게 됨 -> 전체 목표

 

 

특히 기술측면에서 누구에게나 솔직하고 열린 자세로 대하고 일하며 좀 더 기술적으로 깊숙이 들어가는 것이 좋은 품질의 코드를 만드는데 정말 중요하다. 

 

 

 

Q4 . 리뷰어로서 패치의 어떤 면을 보나요? 가장 중요한 점

((본인 - 두번쨰로 인기있는 리뷰어 . / 네트워크 그룹의 데이비드 밀러가 일등!))

1. 올바른 코딩 스타일을 따르느냐 - 완벽하거나 훌륭해서가 아니고 적합한 코딩 스타일을 갖추어야 

사람을 위한 코드가 먼저고 컴파일러는 두번째다 -> 읽기 쉽게, 이해하고 읽기 따라가 보기 쉽게 만들기

20년 후에 나는 이 코드에 있는 버그 수정해야 함 

 

처음에 코드 작성보다 변경 로그 코멘트를 작성하는 것이 더 어려운 경우가 많다. 

무엇을 했는지 X -> 왜 지금 이걸 하고 있는 지 설명! 이걸 바꾼 이유는 무엇이지?

 

 

2.  그 과정에서 내 변경사항을 작은 조각으로 나누어야 한다.  단계별로

내가 만든 변화를 작고 논리적인 조각으로 세분화하기

변경 사항 작은 조각으로 나누고 잘 설명하기

- 내가 이 문제를 왜 해결했는지 -> 다른 사람들이 이해할 수 있도록 , 다른 사람들이 내 코드를 더 쉽게 이해하도록 돕기  그리고 궁극적으로 팀 내의 코딩 스타일과도 더욱 합치될 수 있도록 

 

 

Q5 . 어린 개발자들이 더 나은 개발자가 되기 위한 조언?

1. 리눅스 커널에 기여하면 직업 얻을 수 있다. 리눅스 재단의 일을 해결하거나 진행할 사람이 부족하다.  커널에 관여하는 쉬운 방법들이 있는데, 기본적인 코딩 스타일 관련 부분 / 이메일 클라이언트를 설정하는 방법과 적절한 체인지 로그를 작성하는 방법/ 작업 제출하는 방법을 배우게 된다.  -> 커널의 다른 부분들과 씨름하고 거기서 해결하고자 하는 문제들을 해결할 수 있다. 

2. 스테이징 트리에 있는 작업을 통해서도 일자리 얻을 수 있다. 주요 서브시스템의 메인테이너들도 단지 화이트 스페이스 문제와 드라이버를 고치면서 시작했다. 그리고 스테이징 트리로 이동 

 

이 일에 관심있다면 내 방식으로 기여해라!  인턴 기회 많다. 일년에 세 번 커널을 위한 인턴 프로젝트를 한다. 

PCI 메인테이너, 이슈사례 셀프 테스트, 서브시스템 등   

 

Google Summer of Code 이런 일들 제공 일부 오픈소스에 관여하게 함 

다른 사람들과 함께 일 하려면 비판에 대응하고 비판과 비평을 제공할 수 있어야 한다.

개발자와 함께 성장하는 오픈소스 "2021 공개SW페스티벌"-2021.11.30(목) PM 2:00~PM 5:30

[YouTube 접속 링크]
개회사~기조강연&Track 1(오후 2:00 시작)
https://youtu.be/WL0nUHM2Ec0

Track 2(오후 3:10 시작)
https://youtu.be/Kqa2beiIw8k

Track 3(오후 3:10 시작)
https://youtu.be/Fvb6Neij7io

Track 4(오후 3:10 시작)
https://youtu.be/pla4YPEcqqc