洪民憙 (홍민희) 블로그

고대의 문제

대부분의 TUI 라이브러리는 터미널 화면 관리를 위해 curses를 기반으로 한다. 이는 화면을 갱신하면 최소한의 바뀐 영역만 다시 그리도록 해준다. 300 직렬 통신 시절에는 그런 게 매우 중요했는데, 300면 대충 30바이트/초 정도고, 표준 VT100 화면은 폭 80 × 높이 24 ≒ 2천정도이기 때문이다. 거기에 속성까지 끼면 2배가 된다. 따라서 전체 화면을 전송하려면 사용자가 보기까지 2분이 걸린다. 내용 변화 없이 같은 화면을 두번 그리면 4분이 걸린다. curses는 이를 2분으로 줄여준다는 것이다.

picotui

picotui라는 대안 파이썬 TUI 라이브러리 제작자가 말하는, picotui를 curses 기반으로 하지 않은 이유. 널리 쓰이는 라이브러리는 널리 퍼지게 된 그 시대에는 누구나 겪는 문제를 잘 해결했기 때문에 사랑받게 된 것이다. 하지만 그 시대가 지나고도 계속 쓰이게 되는데 그 이유는 인지도, 도서나 교육 자료, 재평가의 기회 없이 구전으로 이어지는 권유 등에 의한다. 물론 그 중에서는 다른 시스템과의 궁합과 같이 시간을 들여야만 축적되는 자산도 있다는 점은 무시할 수 없다.

jQuery를 생각해보자. jQuery는 여전히 현역이고, 최첨단의 웹 개발을 제외하면 여전히 가장 사랑받는 라이브러리이다. 이는 jQuery가 적절히 DOM 조작을 적은 학습 시간으로 편하게 할 수 있도록 도와주면서도, 구형이라기보다는 차라리 고대라고 해도 될 정도로 오래된 브라우저와 최신 브라우저 모두에서 최대한 같은 방식으로 동작하는 API를 제공했기 때문이다. 하지만 모바일 시대가 오고 웹 브라우저 사용도 Internet Explorer를 Google Chrome이 앞지르게 되면서 그러한 문제는 점차 모두가 겪는 문제에서 일부의 환경에서만 겪는 문제로 축소되고 있다. 하지만 아마도 그런 문제가 거의 없어지다시피 하더라도 jQuery를 꾸준히 쓰는 신규 프로젝트는 좀더 오랫동안 모습을 보일 것이다.

하지만 이제는 문제가 아니게 된 것을 잘 풀었기 때문에 널리 쓰이기 시작한 라이브러리를 좋은 게 좋은 식으로 계속 쓰는 것에 대해, 종종 재평가를 해볼 여유도 우리에게 필요하지 않을까.