洪民憙 (홍민희) 블로그

온고지신 (溫故之新)

(화두는 Python 커뮤니티의 상황과 일련의 글로부터 얻었지만 일반적인 이야기. Python 커뮤니티에 국한된 이야기 아님.)

최근, 곧 릴리즈될 Python 3.3에 들어갈 예정이던 packaging (표준화 합의 이전에는 distutils2라는 이름의 서드파티 프로젝트였음) 기능이 들어가지 못할 것 같다는 소식이 python-dev 메일링리스트에 올라와 커뮤니티 전체에 Python 패키징 시스템 전국시대에 대한 이야기가 많았다. Python을 잘 모르는 사람들을 위해 부연하자면, 내가 1년 전쯤 언급했다시피 현재 Python의 패키징 시스템은 다양한 방식들이 각각 일부씩 호환되는 형태로 난립하고 있는 상황이다. 하루이틀의 일은 아니다.

그리고 이 현상에 대한 Armin Ronacher의 글이 올라왔다: Python Packaging: Hate, hate, hate everywhere. 글 내용의 대부분은 결론을 제외하면 Python 패키징 생태계의 역사적인 부분, 디자인 결정들에 대해 논하고 있다. pip + Distribute가 easy_install + setuptools를 대체하려고 하지만, 실상은 pipsetuptools가 해결하려고 했던 문제 중 일부만을 해결하고 있을 뿐이고, setuptools의 디자인 결정에 대해서도 아무런 생각이 없었다는 내용이다.

세부적인 내용들은 Python 커뮤니티의 상황이고, 나는 저 글에서 일반적인 내용들만을 발췌해볼까 한다.

이 모든 것으로부터 우리가 배울 수 있는 점은, 대체하려고 하는 프로젝트의 모든 디자인을 배워야 한다는 것이라고 본다.

I think what can be learned from all that is that it’s a better idea to learn all of the design of a project first before attempting to replace it.

대부분 문제는 너무 복잡하고 바닥부터 다시 시작하려고 할 때는 무언가 놓치기 십상이다.

All in all, the issue is just too complex and it’s easy to miss things when starting from scratch again.

즉, 온고지신(溫故之新)이 중요하다는 이야기이다. 이런 주장을 보니까 비슷한 다른 경우들도 많이 있었다는 생각이 든다. 당장 생각나는 예는 Twisted(정확히는 twisted.web)를 대체하려고 했던 Tornado: What I Wish Tornado Were라는 글 참고.

또, 온고지신하니까 떠오르는 #langdev 채널에서 최근 했던 대화:

sanxiyn: hongminhee, 은거기인 초고수 지망생 얘기를 하셨는데요
hongminhee: 네
hongminhee: 그냥 막연히 저는 끈기가 있어서 유리하다고 생각한다는 얘기를 제일 많이 들은 것 같네요.
sanxiyn: 아 물론 끈기가 있으면 유리하지만…
hongminhee: 그러니까 끈기가 있으니까 남들보다 열심히 한우물 팔 수 있다고…
hongminhee: 근데 우물이 안좋은 것 같았음 다들
sanxiyn: 한우물 파고 안파고 문제가 아니라 온고지신이 중요
hongminhee: sanxiyn, 그런듯
sanxiyn: 음 요는 내가 아무리 천재고 끈기가 있어도
sanxiyn: 1950년 이래의 전산학을 뭔가 쓸모 있는 일을 할 수 있는 수준으로 다 재발명할 수 있느냐
sanxiyn: 할 수 있어도 그게 현명한 일이냐 뭐 이런 얘기
sanxiyn: 아예 새로운 분야를 하면 온고지신 안해도 되는 경우도 있는데
sanxiyn: 그건 Claude Shannon이 아무 것도 없는 상태에서 information theory를 완성된 상태로 만들었다거나
sanxiyn: 이런 경우에나 해당되는 거지
sanxiyn: …