ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2022 오픈소스 컨트리뷰션 아카데미 후기
    후기/활동 후기 2022. 12. 20. 23:49
    반응형

     

     

     

    1. 지원서 작성


    저는 1순위 FOSSLight Hub, 2순위 Euphony를 지원했습니다.

    어차피 모든 프로젝트가 경쟁률이 높은 것으로 알고 있어서 사실상 2순위는 의미가 없을 것 같다고 생각해요.

     

    저는 모든 프로젝트를 꼼꼼히 읽고, 작년 ~ 재작년에 있던 프로젝트는 후기글까지 모두 읽어보면서 어떤 프로젝트를 선택할지 고민을 많이 했었습니다.

    결국 저의 실력을 크게 성장할 수 있다고 판단되는 FOSSLight Hub, Euphony를 지원하기로 결정했습니다. 둘 다 좋은 프로젝트이지만, 지인들이 FOSSLight Hub 멘티로 참가를 했었어서 도움을 더 받을 수 있을 것이라고 생각해 1순위는 FOSSLight Hub, 2순위를 Euphony로 선택했네요.

     

    지원서 마감이 시험이 끝나는 날이라 시험을 보는 주간 주말에 부랴부랴 지원서를 작성했습니다.

    저때 시험 공부는 내던지고 오픈소스 지원서, 인턴 지원서, 연합 동아리 지원서 작성에만 집중했습니다. 그래서 2개의 수업이 예상했던 성적보다 한 단계가 내려갔지만, 2승 1패를 해서 다행이였네요 ㅋㅋ

     

    지원서를 제대로 작성하기 전에는 계속 어떤 내용을 적어야 좋은 결과가 나올 수 있을까 머리속에 밑그림만 그려두었는데, 시간이 촉박해지니까 쓸만한 내용이란 내용은 다 적어서 정확히 어떻게 썼는지 제대로 기억이 나지는 않습니다.

    그때 '나 좀 제발 뽑아주세요' 라는 심정으로 열심히 지원서를 작성했던 것은 제대로 기억하네요. 지원서 분량이 자유라 정말 간절하게 적었습니다.

     

     

    결과는 합격!


     

     

     

    2. git 교육


    합격자들은 기초 git 교육 4시간 + 심화 git 교육 4시간으로 총 8시간 동안 실습을 진행하게 됩니다.

     

    저는 토요일에 아침부터 저녁까지 8시간 동안 수강했는데, 그때 배웠던 내용을 노션에 정리해두었지만 최근까지 주기적으로 살펴보고 있어서 아직도 굉장히 큰 도움이 되고 있다는 걸 꼭 적고 싶었습니다.

    무엇보다 잘 사용하게 된 것은 단순히 그 시간에 배운 것으로 끝을 낸 것이 아니라 제 동아리 스터디를 실험삼아 복습을 했어서 그랬던 것 같아요 ㅋㅋㅋ

     

     

    재밌던 경험은 나중에 마스터즈 마지막 과제를 수행할 때, 팀원과 협업해서 기여를 한게 있는데 이때 제가 중간 커밋에 서명을 못해서 그때 배웠던 rebase를 적용했습니다. 그랬더니 위 사진처럼 rebase 이후에 있는 모든 커밋에 제 프로필이 찍혀서 식겁했던 기억도 나네요 ㅋㅋ 그래서 다시 고치고 merge가 됐습니다 😂


     

     

     

    3. Challenges 활동


    발대식을 갔다온 이후에 같은 팀원 분들이랑 깃허브 팔로우를 했었는데, 다들 대단하신 분들이 많더라구요. 저는 거의 알고리즘만 했어서 내가 이 활동을 잘 할 수 있을까라는 생각을 가진채로 자신감이 뚝 떨어졌습니다.

    챌린지스 초반에 멘토님들이랑 잠깐 면담을 한 적이 있는데, 피해만 끼치지 않는다면 어려운 과제쪽으로 하고 싶다고 말했던게 기억이 나네요. 멘토님들이 응원을 해주셨던 기억이.. 

     

    번 챌린지스 / 마스터즈 수료 조건은 PR 1개를 보내는 것이였습니다.

    최소 수료 조건이라 챌린지스 기간 안에 다른 기여를 더 해도 상관이 없었지만, 저는 당장 KAUPC 문제 출제가 급해서 딱 1개만 보내뒤엔 챌린지스 기간 내내 KAUPC에 집중을 했었네요 

     

    챌린지스 후반쯤에 마스터즈 팀 선택을 했었는데, 여기서도 정말 고민을 많이 했습니다.

    1. 백엔드 팀

    2. 프론트엔드 팀

    3. 백엔드 팀

    4. 인프라 팀

     

    저는 1번, 3번에 제일 관심이 있었습니다. 하지만 1번은 멘토님이 난이도가 높다고 하셔서 바로 포기하고... 4번은 아직 개발 실력이 부족한데 무슨 인프라냐...라는 마인드였고...  2번과 3번중에서 고민을 하다가 백엔드 분야에 더 관심이 컸으니 3번을 1지망으로 선택했습니다.


     

     

     

     

    4. Masters 활동


    마스터즈 활동이 시작됐는데, PR 1개만 보낸 상태에서 KAUPC에 집중하고 다시 되돌아오니 뭐부터 해야할지 모르겠더라구요.

    안그래도 떨어졌던 자신감이 다시 한 번 떨어지게 되면서 그냥 조용히 버스탈까..??라는 생각도 해보았지만, 이 활동이 아니면 내가 언제 이런 좋은 경험을 할 수 있을까 싶어서 정말 열심히 활동했습니다. 열심히 활동이라는 말보다 시간을 갈아 넣었다는 표현이 어울려보여요.

     

    제 팀은 총 3개의 과제를 수행하였습니다.

     

    [개인 - JSON 형식의 API 추가]

    기존까지는 한 프로젝트가 가지고 있는 정보를 YAML 형식으로 반환해주는 API가 있었는데, JSON 형식으로도 반환할 수 있도록 추가했습니다.

    작년에 했던 친구가 모든 코드는 프로젝트 안에 다 들어있으니 내가 찾아내기만 하면 된다는 이야기를 듣고, 코드를 뒤적뒤적하면서 다른 코드를 최대한 재사용할 수 있도록 노력했습니다. 

    그 결과 코드를 찾는 과정에서 많은 코드를 읽으면서 어느 곳에 어떤 메소드들이 있는지 어느정도 감을 잡을 수 있게 되었습니다.

     


     

    [분업 - Export 버튼 개선]

    본격적으로 다른 팀원들과 역할 분담을 하기 시작했습니다.

    원래 Export 버튼을 누르면 FOSSLight Report (Spreadsheet)만 바로 다운 받을 수 있었고, SPDX 다운로드 기능은 다른 곳에  있었습니다.

     

    역할 분담은 4인 1팀이라 4가지로 나누어서 진행했습니다.

    • 특정 상태 값과 관계 없이 파일을 다운로드 할 수 있도록 수정하기
      (원래는 특정 상태에 따라 SPDX 다운로드 가능 유무가 정해짐)
    • SPDX 다운로드 기능을 삭제하기
    • SPDX 다운로드 기능을 Export 버튼이 있는 페이지로 옮기기
    • Export 버튼에 드롭다운 기능 적용하기

    저는 SPDX 다운로드 기능을 Export 버튼이 있는 페이지로 옮기기 + Export 버튼에 드롭다운 기능 적용하기를 했습니다.

    원래 기능만 옮기는 역할만 담당했는데, 버튼을 만들기로한 분이 아예 탈주를 해버리고... 다른 팀원이 대신 해보려다가 제대로 적용이 안되서 포기하고... 결국 저도 며칠동안 시도해보다가 포기할 뻔했지만... 결국 해냈습니다..

    드롭다운 기능이 이전까지 만들어진게 없어서 새롭게 만들어야 했는데, 스택 오버 플로우에 검색해봐도 부트스트랩으로 적용하는 것만 나오고, 직접 만들어보면 계속 이상하게 나와서 정말 고생을 많이 했습니다.

    드롭다운 기능을 만들 때 고생한 글은 여기서 볼 수 있습니다.

     

    그리고 개발 응애라 AJAX에 대해서도 이때 처음 알게 되었는데, 프론트와 백에 서로 어떻게 데이터를 주고 받는지 직접 코드를 작성하면서 제대로 깨닫게 되었고, 추가로 잠깐 잊고 있던 네트워크도 다시 공부하게 되어서 코드 기여 자체는 프론트쪽이지만, 여러가지 다양하게 배울 수 있어서 얻어간게 많았네요.

     


     

    [협업 - 리포트 개발]

    제 개발 실력처럼 제 팀도 개인 → 분업 → 협업으로 점점 성장을 했습니다 ㅋㅋ

    마지막은 PDF로 요약 리포트를 만드는 것이였습니다. 여기서부터는 공식 활동이 끝나고도 11월까지 계속 진행했습니다.

     

    이때 저는 밑바닥인 DB부터 시작해서 프론트 코드까지 모든 곳에 코드 기여를 했습니다.

    기여 시간이 많이 늦어졌는데, 완전히 새로운 기능을 만드는 것이라 클래스도 새로 만들고.. 이거 하나로 15개가 넘는 파일에 코드 기여를 하니까 구조 파악하는데에도 오래 걸리고.. 새로운 오픈소스인 iText를 적용하느라 오픈소스 라이센스에 대해서 자세히 공부하게 되고... 정말 성장을 많이 한 기간이였습니다.

     

    마지막 최종 발표를 하기 전에는 이 기능을 만드는데 아직 필요한 내용 일부가 구현되지 않은 상태였습니다. 그래서 새벽까지 한 팀원과 게더타운에서 서로가 알고 있는 메소드들을 알려주며 빠르게 최종 발표에 쓰일 기능을 만들었던 적도 있었네요ㅋㅋㅋ

     

     

    - 트러블슈팅 - 동기 / 비동기

    이건 제가 찾은 것은 아니고, 팀원이 찾은 해결 방법인데 너무 어이 없는 이유로 발생한 문제라 기억에 남아서 꼭 적어보고 싶었습니다.

     

    발생한 문제는 두 가지 입니다.

    • PDF 파일이 정상적으로 만들어지는데, 메일 첨부 파일에 넣어지지 않음
    • PDF 파일 아이콘을 너무 빨리 누르면 PDF 파일을 만들기 전에 누른 것으로 인식이 되버림

    첫 번째의 경우엔 에러 로그가 나오지 않아서 어디서 문제인지 전혀 파악할 수 없었습니다.

    두 번째의 경우에는 코드 순서상 (PDF 파일이 만들어진다) → (PDF 아이콘을 누르면 다운한다)가 맞는데, PDF 아이콘을 빨리 누르게 된다면 (PDF 아이콘을 누르면 다운한다) → (PDF 파일이 만들어진다) 라서 PDF 파일이 없는데 다운로드를 하려고 한다는 로그가 나왔습니다. 이때는 문제는 파악했지만, 동기/비동기를 전혀 생각하지 못했어서 해결 방법을 찾지 못했었습니다.

     

    그렇게 끝내 방법을 찾지 못해서 여기까지 해서 PR을 보내야하나 생각이 들었을 때 쯤....

    메일 첨부 파일 담당을 하던 팀원이 동기/비동기 문제였다는 것을 알려주었고, 동기 방식을 적용하면 첫 번째 문제를 해결할 수 있다는 것을 발견했습니다. 그래서 두 번째 문제도 해결이 되나 확인해보니... 해결이 됐습니다!

    알고보니 AJAX의 풀네임은 Asynchronous JavaScript and XML의 약자입니다. Asynchronouse = 비동기였는데, 이런 기본적인 것 조차 파악을 못했다니.. 많이 부끄러웠네요..

     

    결국 모든 문제를 해결해 성공적으로 기능이 수행되는 것을 확인할 수 있었고, PR을 올리게 되었습니다.


     

     

     

     

    5. 결과


    열심히 활동해서 상도 받았고

     

    기여 수도 마스터즈 기간에 원래 과제를 진행하면서 발견한 내용도 PR을 보내니까 전체 상위 11명에 들어갈만큼 열심히 참여했습니다.


     

     

     

     

    6. 후기


    저는 처음 합격했을 때, 개발 실력으로 따지자면 제가 뒤에서 손가락 안에 들었을 정도라고 자신합니다.

    실력이 부족한 만큼 자신감도 떨어졌지만, 언젠가는 따라잡을 수 있을 거라는 생각으로 거의 매일 코드를 읽고, 또 읽고, 기여도 최대한 많이 하려고 하고 열심히 살았습니다. 자신감이 떨어져도 꺾이지 않는 마음으로 열심히 참여해서 좋은 결과를 얻은 것 같아요.

     

    이 활동을 하기 전에 1학기에 교내 해커톤에서 2020년에 모던 자바스크립트 튜토리얼 멘티를 했던 분과 같이 팀을 했었는데, 오픈소스 활동에 대해 물어보니 이 활동을 통해 자신의 인생이 달라졌다는 이야기를 들었습니다.

    도대체 인생이 바뀐다고 말할 정도면 얼마나 좋았던 것인지 궁금했는데, 지금 다시 생각해보니 저도 다른 사람들한테 인생이 바뀐 것 같다고 말할 수 있을 것 같네요 ㅋㅋㅋㅋ

     

    이 활동을 하면서 무엇보다 크게 얻어간 점은 주변 분들에게서 동기부여를 굉장히 많이 받았던 것입니다.

    다들 저보다 잘하는 사람들이기 때문에 깃허브 코드도 슬쩍 보고, 요즘은 어떻게 사시는지 가끔가다 프로필을 확인하면서 꾸준히 동기부여를 얻고 있습니다.

    특히 제가 자주 보는 분은 예전에 프론트엔드 상담을 받았었던 리드 멘티님입니다. 리드 멘티님이 마지막 수상 기념 회식 날에 프론트엔드에서 데브옵스로 전환하려고 한다고 말하셨는데, 정말 fosslight 활동을 기점으로 actions, nodejs, reactjs, facebook, jenkinsci, ... 등 수십 개의 유명 오픈소스 프로젝트에 기여를 하시고 있더라구요.

    요즘 깃허브 메인 페이지에 들어갈 때마다 Following에서 리드 멘티님이 스타가 수백 ~ 수만개가 있는 리포지토리를 fork한다는 내용이 나오는데, 요즘은 직접 프로필에 들어가지 않아도 동기부여를 주입 당하는중 입니다 😂

     

    처음 오픈소스 기여를 생각했을 때, 내가 오픈소스에 기여를..?? 죽기 전에 할 수 있나..?? 라는 생각이 많이 들었습니다.

    하지만 이 활동을 합격하고 활동을 하게 된다면 아무리 적어도 확실하지는 않지만 기여를 시도할 수 있는 용기, 고칠 부분이 있으면 바로 fork해서 PR을 보낼 수 있는 도전정신을 가질 수 있을 것이라고 생각합니다. 그리고 무엇보다 오픈소스 코드는 모든 사람이 파악할 수 있도록 깔끔하게 작성해야하기 때문에 코드를 읽는 것만으로도 큰 도움이 됩니다.

     

    저는 이 활동을 통해 정말 많이 성장했기 때문에 다른 분들한테 무조건 추천드리고 싶네요.

    저도 내년에 시간만 된다면 또 참여하려고 합니다.


     

     

     

    7. 마지막


    멘토님이 열심히 참여해줘서 고맙다고 하시며 제 동아리 부원들에게 나누어 주라고 천가방을 주셨습니다.

    개인적으로 기념품이라고 하면 보통 집에 장식하기만 하는데, 이건 얼굴 그림이 귀여워서 들고 다니기도 좋고, 무엇보다 패드가 딱 들어가기 때문에 패드 들고다닐 때 보관하는 가방으로 쓰기 좋습니다

    몇 개 남아있으니 혹시 가지고 싶은 재학생분들은 언제든지 연락 주세요

     

    멘토님이 그림도 그리시는데 작년에 했던 친구들이 모두 이걸로 깃허브 프사로 했어서 정말 가지고 싶었습니다.

    그래서 멘토님께 이야기를 드렸는데, 이 사진들을 포함해 총 7장을 그려주셔서 계속 다양하게 설정할 수 있을 것 같아요ㅋㅋㅋ

     

    마지막으로 상장 및 수료 인증 👍👍


    반응형

    댓글

Designed by Tistory.