kunyoungparkk

[2025 OSSCA] 참여형 후기 본문

프로젝트/OpenSource

[2025 OSSCA] 참여형 후기

박건영 2025. 12. 20. 21:33

 

오픈소스 활동 경험을 쌓고, 기술적으로는 웹어셈블리 실전 경험을 쌓고자 2025 오픈소스 컨트리뷰션 아카데미[참여형]에 참여했습니다.

 

여러 프로젝트들 중 ThorVG 프로젝트에 참여했는데요,

ThorVG(토르 벡터 그래픽스)는 고성능 오픈 소스 벡터 그래픽스 엔진으로, 여러 렌더링 백엔드를 지원하고 WebAssembly를 통해 웹 환경에서도 작동합니다.

이번 활동을 통해 제가 관심있는 분야의 전문가이신 멘토분들과 밀접하게 커뮤니케이션하며 기여 활동을 해볼 수 있었습니다.

 

이번 활동은 약 1개월의 Challenges 기간과, 2~3개월의 Masters 기간으로 나뉘는데요,

중간에 리드멘티로 선정되면서 아무래도 좀 더 책임감을 갖고 임할 수 있었고, 마지막 성과발표회 때 발표하는 기회를 얻을 수 있었습니다.

 

제가 담당한 메인 이슈는, thorvg의 wasm 포팅단에서 type 정의 파일을 내보내고, 이것을 thorvg.web 레포지토리에 적용하는 것이었습니다.

이외에도 프로젝트를 활용해보며 버그를 발견해 수정하고, 조사 활동을 진행하는 등의 기여 활동을 했습니다.

정량적으로는 아래와 같이 7번의 PR 및 merge를 경험했습니다.


정량적 기여 성과

1. 담당 이슈 해결

  • thorvg 메인 레포지토리에서 적절한 type 정의 및, build 옵션 수정을 통한 d.ts 파일 생성

wasm: add TypeScript bindings for the WASM module by kunyoungparkk · Pull Request #3678 · thorvg/thorvg

 

wasm: add TypeScript bindings for the WASM module by kunyoungparkk · Pull Request #3678 · thorvg/thorvg

This PR improves TypeScript bindings for the WASM module by: Enables .d.ts generation via --emit-tsd Defines custom val-based types using EMSCRIPTEN_DECLARE_VAL_TYPE These changes are related to ...

github.com

  • 생성된 d.ts 파일을 thorvg.web 프로젝트에 적용하기

wasm: apply TypeScript bindings and d.ts to lottie-player.ts by kunyoungparkk · Pull Request #118 · thorvg/thorvg.web

 

wasm: apply TypeScript bindings and d.ts to lottie-player.ts by kunyoungparkk · Pull Request #118 · thorvg/thorvg.web

This PR updates lottie-player.ts to adopt the new TypeScript bindings introduced in thorvg#3678. These updates are related to thorvg.web#16, which requests better TypeScript support for the WASM ou...

github.com

 

2. 기타 버그 수정 및 코드 리팩토링 진행

 

thorvg 레포지토리의 load 함수의 default parameter를 emscripten이 포팅 과정에서 인식하지 못하는 문제가 있었습니다. 이를 해결하기 위한 PR을 업로드했고, 논의 결과 해당 default parameter 자체를 없애는 결론이 도출됐습니다. 이후 커밋을 수정하고 Merge 됐습니다.

wasm: remove unused rpath parameter from load() by kunyoungparkk · Pull Request #3760 · thorvg/thorvg

 

wasm: remove unused rpath parameter from load() by kunyoungparkk · Pull Request #3760 · thorvg/thorvg

This patch removes the unused rpath parameter from the load() function. This simplifies the WASM binding while keeping the API aligned with current usage in thorvg.web. For context, my initial inte...

github.com

 

 

thorvg viewer를 사용해보다가 이미지가 여러 장 저장되는 버그를 발견했습니다. event listener가 export 버튼에 계속 쌓이는 것이 문제였습니다. 이를 해결하기 위한 PR을 올렸고 Merge 됐습니다.

fix: prevent duplicate export button event listeners when switching render backend by kunyoungparkk · Pull Request #123 · thorvg/thorvg.viewer

 

fix: prevent duplicate export button event listeners when switching render backend by kunyoungparkk · Pull Request #123 · thor

Previously, the createTabs function which is invoked whenever the rendering backend is switched registered the export button’s click event listener. As a result, each rendering backend switch added...

github.com

 

thorvg.web의 example을 구동해보다가, save 버튼이 동작하지 않는 문제를 발견했습니다. 최신 함수명이 반영되지 않은 것이 문제였고, 이를 해결하기 위한 PR을 올리고 Merge 됐습니다.

examples: fix non-working save function in examples by kunyoungparkk · Pull Request #125 · thorvg/thorvg.web

 

examples: fix non-working save function in examples by kunyoungparkk · Pull Request #125 · thorvg/thorvg.web

This commit updates the example pages (index.html, webgl.html, webgpu.html) to use the latest save2gif() and save2png() APIs instead of the old save(ext) API, fixing the non-working save functional...

github.com

 

기존 코드의 문제점을 발견하여 별도 Pull Request를 올렸고, Merge 됐습니다.

lottie: fix incorrect usage of error message handling by kunyoungparkk · Pull Request #120 · thorvg/thorvg.web

 

lottie: fix incorrect usage of error message handling by kunyoungparkk · Pull Request #120 · thorvg/thorvg.web

This patch fixes an issue where an error message was not displayed correctly

github.com

 

https://github.com/thorvg/thorvg.web/commit/af59604a02dbf0779f8ce3a567c1761ca9c5c84d

 

lottie: remove unused parameter from _loadBytes function · thorvg/thorvg.web@af59604

- const isLoaded = this.TVG.load(data, this.fileType, this.canvas!.width, this.canvas!.height, '');

github.com

 

 


느낀점

ThorVG 참가 기간 동안, 다양한 오프라인/온라인 활동들을 통해 ThorVG 프로젝트에 대해 조금씩 파악하고 이해할 수 있었습니다.

맡은 이슈를 해결해가는 과정에서, 멘토님과 Github 상에서 많은 얘기를 나누며 여러 아이디어들을 듣고, 더 좋은 형태로 기여할 수 있었습니다.

또한 Git/Github PR 관리와 관련해서 직간접적으로 많이 배울 수 있었습니다.

 

이러한 과정들을 통해 단순히 코드를 작성하는 개발자가 아닌 프로젝트에 기여하는 엔지니어로서의 시야를 얻게 되었습니다.

특히 웹어셈블리를 제대로 활용하는 프로젝트를 다루면서 실무적인 측면에서의 역량을 발전시킬 수 있었고, 실질적으로 제가 진행하고 있는 사이드 프로젝트에도 많은 도움이 됐습니다.

무엇보다 뛰어난 멘토, 멘티분들을 뵐 수 있어서 영광이었습니다.

 

앞으로도 기회가 된다면 꾸준히 thorvg 프로젝트에 기여해보고자 합니다.

'프로젝트 > OpenSource' 카테고리의 다른 글

ThorVG.web 프로젝트 분석  (0) 2025.08.12