간단하게 제 모든 커리어의 백그라운드에는 "데이터 시각화"가 있어요. 나중에 더 길게 쓸 것 같은데, 어쨋든 제가 가장 열심히 공부했던 것 중 하나는 matplotlib이라고 시각화 라이브러리인데 구조, 설계 등 한 라이브러리에서 정말 많은 것을 공부했었습니다.
이 생태계에 기여할 수 있으면서 지금까지 제가 공부한 지식을 가장 잘 오픈소스로 녹이는 것 중 하나가 이런 시각화 라이브러리 개선이 아닐까 싶었어요.
그래서 가장 많이 사용했던 matplotlib 을 타겟으로 삼았습니다. matplotlib은 C++ 엔진을 기반으로 하고 있고 이 부분을 Rust로 최적화와 동시에 레거시들이 많으니 이 외에도 여러 엔지니어링을 섞어서 거의 호환성 100% + 더 사용성 좋은 라이브러리를 만들어볼 수 있지 않을까? 해서 지금 거의 밤낮으로 라이브러리를 깎아보고 있습니다.
근데 이게 결국 커뮤니티를 끌고 오려면 성능도 성능이지만 간단해야합니다. 1차 목표는 Pandas => Polars 모먼트 (데이터 분석 라이브러리 개선 버전)를 해보고 싶었습니다. import 한 줄만으로도 성능이 엄청나게 개선되는 그림이죠.
근데 해보니 이 레거시양이 어마어마해서 쉽지는 않네요. 이번 과정에서 유의미한 대형 오픈소스의 프로세스란 무엇인가 공부하는 느낌입니다. 처음 설계에서 잘못 단추를 끼워서 돌아돌아 시간을 녹이면서 개발 방법론을 몸으로 배우고 있네요.
그래서 병렬적으로 조금 더 쉬운 테스크로 돌아가 matplotlib에서 백엔드엔진만 수정할 수 있는지 체크하는 단계로 왔습니다. 물론 시각화 과정이란게 여러 프로세스를 거쳐서, 지금 해보니 단순히 백엔드 엔진만 Rust로 바꾼다고 속도 전환이 엄청나진 않은데 일단 여러 최적화 시도를 해보고 있습니다.
https://github.com/subinium/mpl-rust-backend
AI/ML이나 순수 데이터분석이 아니더라도 응용과학 실험기반 팀들은 Jupyter 기반으로 빠르게 EDA하고 분석하는게 여전히 많을텐데, 그런 사람들에게는 이게 유의미할 수 있지 않을까 싶어요. 그들도 이제 딸깍으로 자체 라이브러리 만들 수 있긴 한데.... 모든 게 딸깍이라 생각하면 만드는 게 다 부질 없어질 것 같아 그런 고민은 제외해두고, 여튼 공부는 많이 되네요
