Upgrade to Pro — share decks privately, control downloads, hide ads and more …

오픈소스로 공부하기

Avatar for 김노트 김노트
November 16, 2024
48

오픈소스로 공부하기

오픈소스 컨퍼런스(https://festa.io/events/6160)에서 발표한 "오픈소스로 공부하기" 세션의 발표자료입니다.

Avatar for 김노트

김노트

November 16, 2024
Tweet

Transcript

  1. Step1. 오픈소스 내부 들여다보기 ( Breakdown) https://github.com/ fl utter/ fl

    utter/ blob/master/packages/ fl utter/ lib/src/foundation/ change_noti fi er.dart
  2. Step1. 오픈소스 내부 들여다보기 ( Breakdown) 실행할 listener가 없으면 얼리리턴

    재귀적 호출 감지 listener들을 순회하며 하나씩 호출 오류 호출 파트 listener 안에서 listener가 삭제된 경우를 대응 재귀적 호출 감지 listener가 최근에 삭제된 경우를 대응
  3. 그래서 이게 뭐가 좋은데요 • 좋은 품질의 코드/테스트 코드를 읽을

    수 있어요 (maybe) • There is no magic on code • 이게 뭐지? 아 이게 이거구나 (의문 -> 기술 습득) • 와 이 언어/프레임워크에 이런 기능도 있다고? • 이런 기능은 이렇게 구현하면 되겠구나 • 아 이런 디자인패턴이 있네/이렇게 쓰는거구나 • 나도 할 수 있다 (써먹기) • 이젠 나도 코드 읽기 두렵지 않다! Step1 : 오픈소스 내부 들여다보기
  4. • 내가 쓰는 프레임워크/라이브러리의 내부동작을 뜯어볼 수 있게 됨 (

    -> 이해로 연결) • 참고할 수 있는 레퍼런스가 블로그만이 아님. 세상에 공개된 모든 소스가 레퍼런스 • “볼 수 있는 능력들”이 생김 (코드 퀄리티/코드 아키텍처 등등) • 오픈소스를 쓰다가도 내가 직접 고칠 수도 있음 (이슈 리졸브만 무한정 기다리는게 아니라) • 문제를 적절한 답으로 해결하는 “소프트웨어 엔지니어”가 되는 첫걸음 • 뭔가 잘읽으면 멋져보임 Step1 : 오픈소스 내부 들여다보기 코드를 잘 읽게 되면
  5. • 단순한 코드 조각이 아닌 온전한 하나의 제품의 관점으로 바라보면,

    코드 뿐만 아니라 Readme, 문서, 폴더 구조, PR, convention, strategy 등도 참고할 수 있음 • “도구”가 이런 게 있는지 처음 아는 경우도 (개발 생산성을 증진시키는 개발 라이브러리들) • 생각보다 많은 것들이 오픈소스다! 내가 쓰고 있는게 “오픈소스”일수도 (ex. Android: AOSP / Chrome: Chromium) Step1 : 오픈소스 내부 들여다보기 코드 뿐만 아니라
  6. 내가 필요한 걸 만들었다면 작더라도 공유해보기 누군가에겐 이또한 도움이 될

    것이며, 공개하는 그 일련의 과정들도 도움이 될 수 있음
  7. 회사일/사이드프로젝트 등과 비해 시간의 압박에서 비교적 자유로움 유지보수성 / 지속가능성

    / 기여 용이성 / DX ( Developer Experience) 등을 고려하며 스스로 라이브러리를 설계가능 개발/유지보수하며 얻게되는 인사이트 Step2 : 오픈소스 만들어보기 그래서 뭐가 좋나요
  8. 회사일/사이드프로젝트 등과 비해 시간의 압박에서 비교적 자유로움 유지보수성 / 지속가능성

    / 기여 용이성 / DX ( Developer Experience) 등을 고려하며 스스로 라이브러리를 설계가능 개발/유지보수하며 얻게되는 인사이트 Step2 : 오픈소스 만들어보기 그래서 뭐가 좋나요
  9. 회사일/사이드프로젝트 등과 비해 시간의 압박에서 비교적 자유로움 유지보수성 / 지속가능성

    / 기여 용이성 / DX ( Developer Experience) 등을 고려하며 스스로 라이브러리를 설계가능 개발/유지보수하며 얻게되는 인사이트 Step2 : 오픈소스 만들어보기 그래서 뭐가 좋나요
  10. 회사일/사이드프로젝트 등과 비해 시간의 압박에서 비교적 자유로움 유지보수성 / 지속가능성

    / 기여 용이성 / DX ( Developer Experience) 등을 고려하며 스스로 라이브러리를 설계가능 개발/유지보수하며 얻게되는 인사이트 일종의 프로덕트를 만들어보는 경험 그 자체 (기획/설계/마케팅까지) 메인테이너/커미터들과의 협업도 경험 가능 Step2 : 오픈소스 만들어보기 그래서 뭐가 좋나요
  11. 마무리 1. 오픈소스 읽기 두려워하지 말자, 하나의 메서드라도 끝까지 읽어보자

    2. 오픈소스 만들기 두려워하지 말자, 내가 필요해서 만든 건 누군가에게도 도움될 수 있다 3. 오픈소스 기여하기 두려워하지 말자, 하나씩 차근차근 하고 부족한 건 그들이 알려줄 것이다 4. 소프트웨어 프로덕트 “레퍼런스”라고 생각하자 (배울게 코드만 있는 건 아니다) -> 오픈소스 생각보다 안 어렵습니다 위캔두잇