몇몇 지인들은 알고있는 사실이지만, 최근 3년간 집착하고 있는 것은 ‘흐름’이다. 다분히, 들뢰즈적인데, 2004년에 처음 만나서, 가장 많은 영향을 준 사람이니 당연하다면, 당연한 사실이다. 이렇게 쓰면서도 이것이 들뢰즈적이라고 부를 수 있는 것인지 의문스럽다. 공부는 안하면서, 단초만 잡아서 공상만하고 있는 것도 사실이므로.

이런 생각을 하게 된 데에는, 회사에서 밥벌이로 작성하고 있는 소프트웨어가 처절할 정도로 흐름에 기반을 두고 있고, 데이터의 흐름을 어떻게 하면 잘 처리해낼 수 있을 것인가가 관건이기 때문이다. 일반적으로 바라보는 객체지향 프로그래밍의 모델링 사상과는 어느 정도 동 떨어져 있는 것도 사실인데다, 복잡하기 그지없는 인터페이스의 난립에 지쳐있기 때문이기도 하다.

그런가하면, 이 ‘흐름’은 2001년에서 2003년까지 연구하던 주제이기도 하다. 당시에는 Business Process를 연구하고 있었고, BPMS와 Simulation Engine이 주요 과제였다. 이런 면에서 보면, 산업공학이란 전공을 선택한 것이 다행이라면 엄청난 다행이다. ‘흐름’은 절단 가능하고, 연결 가능한 그 무엇이다. BPMS와 Simulation Engine이 그랬던 것처럼. 그리고, 그 흐름에 연결되는 다양한 지반들을 어떻게 모델링 해낼 것인가가 현 시점에서 객체지향주의자로서 갖는 유의미한 과제다.

회사의 일정과 시장에서의 위치덕분에 지금 당장은 구현이 어려운 상황이다. 그런 이유로, 무언가 다른 일이 하나 필요할 듯 싶다. 가능하면, 올해 맞는 내 생일 전에 말이지. 씨익-

프로그래밍을 한다고 하면, 사람들은 종종 안드로메다에 거주하는 외계인으로 간주하는 경우가 있다. 특히, 작업하는 것을 옆에서 보게되면 더더욱 심하다. 영어의 탈을 쓴 알아볼 수 없는 괴악한 텍스트 문서를 만들고, 이상한 프로그램을 돌려서 그들이 사용하는 소프트웨어를 만들어내니 그렇게 생각하는 것도 무리는 아닐 것이다. 그런데, 사실 사람이 쓰는 언어보다 프로그래밍 언어 자체는 쉽다. 애매모호함도 덜하거니와, 기계적으로 맞아 떨어져야하는 언어이기 때문에 쉬운건 사실이다. 그렇다면, 왜 사람들은 프로그래밍을 어려워할까? 답은 사고에 있다.

인간이 사용하는 자연어는 일반적인 사고의 틀내에서 존재하지만, 프로그래밍 언어는 특정한 목적에 의해 특정한 사고의 틀내에 존재한다. 이 사고방식이 절차지향 프로그래밍이라든가 객체지향 프로그래밍이라든가 함수형 프로그래밍같은 거다. 이 사고방식은 컴퓨터라는 기계의 작동방식에 그 근원을 두고 있기 때문에 자연어의 사고방식과 유사하지만 다르다. 그리고, 이 차이가 어려움을 가져온다. 한가지 재밌는 것은, 자연어의 사고방식과 유사한 사고방식의 언어를 접하게 되면, 프로그래머도 난감해한다는 점이다. 기존의 방식과는 다르므로.

쉬운 프로그래밍은 근본적으로 불가능할지도 모른다. 하지만, 프로그래밍을 쉽게 배우려면, 언어나 문법에 집중하는게 아니라 그 사고의 작동방식에 초점을 맞추어야하지 않을까?

이 글은 링크없는 블로그: 반쪽짜리 블로그에서 출발하여, @minoci님, @pariscom님과의 대화를 통해 발전해서 쓰여졌습니다. 두 분께 감사드립니다. :)

웹은 HTTP프로토콜을 기반으로 HTML을 통한 유연한 링크를 이용해 정보사이의 소통이 가능한 길을 열었고, 이는 블로그와 위키를 만나면서 새로운 소통의 시대를 열었다고 해도 과언이 아니다. 하지만, 이 소통의 시대는 현대사회가 아직도 풀지 못하고 있는 장벽에 가로막혔다. 지정학적 혹은 정치학적 요인에 의해 갈라진 국가라는 개념이 인간사이를 막고 있는 것처럼, 이 소통의 시대는 호스트(서비스업체)라는 장벽에 가로막혀 버렸다. 무서울 정도로 국가의 개념과 호스트의 현실은 연계되는데, 현실세계에서 국가의 힘이 결국 국민의 수에 의존하는 것과 마찬가지로 호스트의 가치는 사용자의 수에 의존한다. 또한, 이민을 막는 최종적 발목이 인간관계라는 점을 비추어보아도, 웹에서 유사하게 작동한다. 호스트를 이동하는 것은 존재하던 관계를 버리고 새로운 관계를 생성해야 함을 의미한다. 게다가, 각 호스트에 모인 사람들의 특성은 국가가 제시하는 민족주의와 유사하게 사람들 사이의 집단의식을 이끌어낸다. 인간이 국가라는 틀에 갖혀있는 것처럼, 호스트 속에 갖혀버린다.

올블로그나 블로그코리아 같은 메타업체들이 힘을 쓰지 못하는 것도 마찬가지의 이유다. 대다수의 사람들은 외국과 교류하지 않는다. 지정학적으로 가까운 사람들과 소통하기 마련이며, 다른 문화의 사람들에게 배타적인 심리를 갖기도 한다. 호스트도 마찬가지다. 대다수의 웹이용자들은 자신이 사용하는 호스트내에서 제공하는 아쉬울 것 없는 기능들을 이용하여, 자신의 주변을 만들어간다. 저 멀리에 있는 다른 호스트로 찾아가서 애써 관계를 만들 이유는 없는 것이다.

초창기의 블로고스피어를 생각해보면, 이는 더욱 자명하다. 초창기의 호스트들은 사람들이 원하는 소통량을 달성할 만큼 이용자수를 갖고 있지 못했다. 따라서, 다른 호스트에 있는 사용자들과 소통할 필요를 느꼈고, 메타사이트의 출범과 함께 블로고스피어는 빅뱅을 맞이하는 듯 했다. 하지만, 이용자수가 증가하고 각각의 호스트들 내에서 원하는 소통량을 달성하게 된 사용자들은 점점 메타사이트에 가야할 이유를 잃었다. 이것이 이 블로그의 트래픽유입이 대부분 검색엔진과 RSS리더가 된 이유일 것이다.

하지만, 웹은 RSS/ATOM의 등장과 웹서비스의 발명을 통해 기능을 외부로 노출하는 가능성을 맞이한다. 일종의 국제협약이 생긴 것이다. 페이지를 표현presentation중심이 아닌 의미content중심으로 바라볼 수 있다는 가능성은, 웹을 기반으로 컨텐츠간의 융합을 가능케 했다. 하지만, 여전히 대다수의 사람들은 이 협약을 사용할 필요성을 느끼지 못한다. 여전히 그들은 만족하고 있으므로.

하지만, 쓰기 힘든 글을 기반으로 하는 블로그를 위시한 출판개념의 기존의 웹은 SNS를 맞이하며 변화를 시작한다. 고정된 의미가 아닌 흐르는 소통을 기반으로 하는 SNS들은 웹에서 발명된 것들을 차용하며, 서비스간의 교차점을 만들어냈다. 대표적인 사례가 Twitter인데, Twitter는 이미 플랫폼이란 이야기가 나올 정도로 수많은 파생물을 만들며 지금 이 시간에도 변화하고 있다. 정치적 위치와 물리적 한계가 소통을 제약하는 현실세계와는 달리 SNS는 기민함과 익명성을 무기로 소통의 흐름을 가속화하고 있다. SNS는 기존의 웹을 백엔드화 하고 있으며, 이러한 경향은 지속될 것으로 생각된다.

이런 긍정적인 변화에도 불구하고, SNS역시 국가란 개념에서 벗어나기는 힘들다. Twitter, 페이스북, 미투데이, 싸이월드 등의 SNS서비스들은 이전의 웹보다는 나아졌지만, 여전히 호스트라는 장벽에서 벗어나고 있지 못하다. 여기에서 가능성을 하나 찾을 수 있다면, 이전의 웹이 브라우져에 기반하여 제약되고 있었다면, 현대의 웹은 RSS와 웹서비스를 이용한 기능의 노출을 이용해 브라우져가 아닌 앱으로 이용이 가능해지고 있다는 사실이다. 모바일 정보처리장치들의 발전과 궤를 같이하는 것이지만, 단지 그것만은 아니다. 웹에서는 구현하기 어려운 것들이 앱에서는 손쉽게 구현이 가능하다. 실제로 웹이란 인터페이스상에서는 단순한 동기화만 가능하지만, 앱을 이용하게 되면 여러 호스트 사이의 유기적인 통합이 가능하다. FacebookTwitter를 통합한 TweetDeck이 좋은 사례가 될 것이다. (비록 현 시점에서는 좀 단순한 형태이긴 하지만)

블로그의 출현이 만들어내고 SNS가 가속화하고 있는 RSS/ATOM와 웹서비스, 그리고 이를 잘 활용하여 유기적인 형태로 만들어지고 있는 앱. SNS가 더 널리 사용되고 지속적인 발전을 하게 된다면, 이에 따라 앱 역시 발전하게 될 것이다. 그리고, SNS사이의 표준적인 -dejure이든 defacto이든- 프로토콜이 성립한다면, 웹브라우져는 의미의 지반을 보는 뷰어의 역할을 하게 되고 앱은 그 지반들을 이어주는 소통의 혈관이 될 것이다. 그리고, 모바일의 발전은 소통의 순간을 키보드에서 독립시킬 것이다. 아니, 이미 독립 시키고 있다. 이러한 것들이 서로 만나면서, 결국 국가란 개념이 웹에 뿌리내린 호스트라는 현상은 소통을 제약하지 못하게 될 것이다.

물론, 이 글이 옛날에 쓰여진 허무맹랑한 소설이 될 가능성이 없는 것은 아니다. 하지만, 빅브라더가 이미 현실로 다가온 이 시점에서 정보기술이 사람들의 소통을 억압하는 것이 아니라 이를 가속화했으면 좋겠다는 작은 희망에서 출발한 생각이므로 이대로 되었으면 좋겠다. 물론, 소통이 발전하는 만큼 감시도 발전하겠지만.

ps1. 확정형의 표현을 피하는 편이지만, 왠지 오늘은 피할 길이 없다.
ps2. 여러분은 지금 마이크로네이션에서 글을 읽고 계시고, 저는 텀블러에 대사관을 건설한 게 되는군요. 으응?!
ps3. 이 참에 다른데도 대사관을 세워볼까.. (참앗!)

컴퓨터 하드웨어와 OS를 동시에 만드는 회사는 그리 흔하지 않다. 기억하기로는 애플, Sun, HP, SGI, IBM 정도 일텐데, 각자 특징을 가지고 있다. 이 와중에서, 폐쇄적인 설계구조로 욕먹는 회사는 아마 애플뿐이리라 생각된다. Sun의 Solaris는 x86계열의 CPU(특히, 옵테론)을 적용하기 위해 x86으로 포팅된게 아닌가 싶을 정도로 자사 플랫폼에서만 사용되던 OS였고, HP의 HP-UX나 IBM의 AIX등은 아예 자사 하드웨어 플랫폼에서만 돌아간다. (고 알고있다.)

애플의 폐쇄구조를 가지고 수많은 이야기들이 오고가지만, Mac OS의 핵심부분인 Kernel이 공개되어있다는 사실은 아는지 모르겠다. 2000년경 Darwin이란 이름으로 공개가 되었으며, 해킨토시(Mac OS X을 일반 PC에서 돌리기 위한 일련의 작업들)에서 많이 사용되는 부두커널같은 녀석도 결국은 Darwin의 소스코드를 이용하여 특정 플랫폼에 맞게 작업하는 것으로 알고 있다. 물론, Quartz나 Cocoa같은 커널 위에 올라가는 다른 부분들은 공개되지 않지만, 의외로 애플에서 공개적으로 개발하는 것은 많다.

현대 컴퓨팅 환경에서 가장 중요한 컴포넌트라면 웹브라우저의 렌더링엔진을 꼽을 수 있다. 애플의 Safari에서 사용하는 엔진은 WebKit인데, KDE 프로젝트에서 진행하던 KHTML+KJS 프로젝트의 분기branch로 시작한 공개 프로젝트다. WebKit Team에 가보면, 애플과 구글의 개발자들이 참가하고 있는 것을 알 수 있다. 반면, 전통적으로 소프트웨어 개발에서 가장 중요한 컴포넌트라면 소스코드를 번역하여 기계어 코드를 생산하는 컴파일러를 꼽을 수 있다. 애플은 주목받고 있는 오픈소스인 LLVM 프로젝트에 투자하고 있다. 역시, LLVM Developers를 살펴보면, (WebKit처럼 잘 나와있지는 않지만) 애플의 개발자가 있음을 알 수 있다.

물론, 이러한 사항들이 애플이 갖고 있는 폐쇄적인 구조에 대한 변명거리가 될 수는 없다. 하지만, 애플을 컴퓨터 제조업체가 아닌 가전제품 업체로 놓고 생각한다면, 이야기는 좀 달라진다. 삼성이나 LG가 자신들의 제품에 대해서 공개하는 범위와 애플이 자신들의 제품에 대해 공개하는 범위를 놓고 보면 답이 나온다. 휴대폰만 봐도 그렇다. 애플의 휴대폰에서 작동하는 소프트웨어를 만드는 것과 삼성이나 LG의 휴대폰에서 작동하는 소프트웨어를 만드는 것을 비교해보면 자명하다. 삼성이나 LG에는 공개된 SDK가 없다. 게다가, 이들이 공개적으로 개발하는 것도 없다. 그 내부에서 무엇이 일어나고 있는지는 아무도 모른다.

애플의 폐쇄적인 구조에 대한 비판은 Mac의 경우, 보통 성능에 비해 비싼 가격에서 출발하는데, 조립컴퓨터를 사용하던 사람들의 이야기가 아닐까 생각된다. 잘 구성된 하드웨어 위에 그 하드웨어의 성능을 잘 뽑아내는 OS를 얹고, 더불어 그 둘 사이가 잘 연계되어 별 문제없이 (즉, 하드웨어와 OS의 연계에 뇌를 낭비하지 않고) 쓸 수 있는 컴퓨터가 있다면, 성능은 기본만 해주면 크게 문제될 영역은 아니다. 남은 영역은 가격인데, 가격면에서 본다 하더라도 그렇게 많이 비싼편은 아니다. 안정적인 하드웨어 구성과 OS와의 연계에서 오는 장점을 생각해본다면, 사실 이득을 본다고 할 수 있다. 물론, 일반적으로 Windows를 사용하는 PC들에게서 얻은 복잡한 세팅문제에서 출발하는 이야기일 것이다. 하지만, 생각해보자. TV나 DVD 플레이어를 구입하고 세팅에 신경쓰는 사람은 없다. 컴퓨터도 매한가지 아닐까? Let me free. 그냥 컴퓨터로 할 일을 하게 해달라.

연장선상에서 컴퓨터를 별세계의 이야기로 두지 않고, 그냥 가전제품이란 관점에서 보면, 삼성이나 LG가 불법복제 생산품들을 막으려고 애쓰는거나 별반 다를게 없다. 삼성이나 LG가 휴대폰이나 TV같은 제품들의 내부구조나 소프트웨어를 공개하지 않듯이, 애플도 마찬가지다. 그리고, Mac OS X은 애플입장에서는 자사의 제품들에서 작동시키기 위한 OS이지 소프트웨어로 판매하기 위한 OS는 아니다. 게다가, Mac OS X을 공개하거나 다른 플랫폼에 설치할 수 있도록 개방하게 된다면, 애플입장에서는 거기서 발생하는 수익보다 그걸 유지하기 위해서 들어가야하는 비용이 훨씬 커지기 마련이다. MS의 Hardware Compatibility Lab을 생각해보라. 생각만해도 머리아프다.

그리고, 최근에 애플의 폐쇄구조에 대한 이야기가 나오면, iTunes App Store에 대한 이야기가 따라나오기 마련이다. 허나, App Store가 폐쇄적이라는 이야기에 대해서는 동감하지 못하겠다. 애시당초 전혀 다른 Platform이다. 그러니까, 천문학적으로 말하자면 전혀 다른 행성이고, 생물학적으로 말하자면 전혀 다른 생태계다. 애시당초, 스마트폰이 무엇인지도 애매하다. 그리고, 클릭 몇번으로 소프트웨어를 찾아서 다운로드 받는 건, 기존의 휴대폰에도 있던 기능이다. 그 제어 권한이 통신사에서 애플로 넘어갔다는게 첫번째 차이이고, 개발자-컨텐츠 제공자-의 범위가 일반 개발자에게까지 확대 되었다는 점이 두번째 차이이다. 애플의 관리하에 있다는 것이 폐쇄적이란 이야기로 이어지는 것은 어불성설이다. 권한이 바뀌고, 영역이 넓어졌을 뿐이다. Auction이나 G마켓도 폐쇄적이란 말인가?

결론적으로 보자면, 가전업체로서의 애플은 생각보다 그리 폐쇄적이지 않고, 생각보다 많이 공개되어 있고, 개방되어 있다. 그렇다고 애플의 단점이 없는 것은 아니다. 하드웨어와 소프트웨어의 통합이라는 강점을 이용해 소비가전시장에서 돌풍을 일으켜 온 애플이지만, 하드웨어와 소프트웨어를 둘 다 한다는 것은 결국 양쪽에서 모두 경쟁해야 한다는 점이다. 현재는 연합전선의 형태로 단일전선을 유지하지만, 하드웨어 전선과 소프트웨어 전선이 분리되는 순간 애플의 위기는 다가오지 않을까 생각한다. 물론, 애플의 가장 큰 위기는 잡스의 건강이겠지만.

요즘, 트위터, 미투데이, 텀블러, 이 블로그까지 사용하는 네트워크 서비스가 무려 4개가 되었다. -_-; 그런 관계로 뭔가 연동을 시켰으면 하는데.. 그래서, 사용하기로 마음먹은게 프렌드피드를 이용해서 미투데이와 트위터를 연동하는 거였다. (결국 미투데이는 뺐다. 트위터 사람들이 별로 안좋아한데서..)

프렌드피드를 쓰다보니 참 괜찮긴 했는데. 이게, input은 여러종류를 받는데 (rss부터 각종 SNS서비스들) output이 프렌드피드와 트위터만 된다는 단점이 있다. 사실 지금 하고 싶은 작업은 다음과 같다.

  • 텀블러나 블로그에 새 글을 쓰면 미투데이와 트위터로 링크를 담아서 전송
  • 트위터에서 reply를 제외한 트윗을 미투데이로 전송

뭐, 이 외에도 많은 연결작업이 가능할 거다. 그래서 든 생각이.. 각 사이트들의 RSS를 이용해서 input을 받은 다음에 모종의 filter들을 연결시키고 나온 결과를 output으로 보내는 거다. 각각의 input과 output은 당연히 사이트별 혹은 필요에 따라 모듈화가 이루어져야 할거고, 데이터를 일반화 시켜서 가운데에서 사용하는 filter들은 자연스럽게 재사용이 가능해야 한다.

이런 연결기반의 작업을 위한 구조는 지금 회사일로 사용하고 있는 컨셉인 pipe-plant구조가 제격인데, 각각의 plant(모듈)이 pipe를 이용해 동적으로 연결되고 구성될 수 있기 때문에 적당한 UI만 받쳐주면 꽤나 쓸만할 것 같다. – 해봐야 알겠지만 -

비슷한 처리를 하고 있는게, 야후! 파이프인데, 이건 RSS를 받아서 RSS로만 나온다는 문제점이 있다. UI자체는 좋은데 – 사실 Quartz Composer와 거의 유사하다. – 참 아쉬움.

그런고로, 하나쯤 있었으면 좋겠다는게 생겼다. 언제할진 모르지만. :)