표준이
기술 수준을 따라가지 못한다는 말은 그 우위나 경중을 이야기하는 것이 아닙니다. 그 둘의 성격이 다른 것은 물론이거니와 표준은 기술이 존재하고 그 위에서 만들어지는 것이기 때문에 그 시간적인 순서로써의 "표준화"를 이야기하는 것입니다. (구현과는 별도의) 기술적인 바탕이 없고서는 표준이 만들어지는 것이 불가능한 것이라는 뜻이겠습니다. 기술과 표준이 거의 동시에 만들어지는 경우도 있지만, 기술개발 이전에 표준이 만들어지는 경우라면 쉽게 이야기해서 해보지도 않고 수많은 사람들에게 이렇게 해라 라고 이야기하는 것과 마찬가지라고 할 수 있겠습니다.
기술이 아무리 뛰어나고 혁신적이라도 쓰는 사람이 별로 없다면 그 효용 가치는 매우 낮을 것입니다. 그 예로 과거의 앨런 케이등의
Smalltalk라든가 스티브 잡스의
NeXT등이 이런 평가를 받은 경우겠죠(해당 기술의 현재는 사뭇 다릅니다만). 추앙받는 개념이라도 사람들이 적응하는 것이 쉽지 않다면, 널리 사용되기가 어렵습니다. 이런 경우에는 그 기술이 후세대(혹은 기간이 좀 지난 후)에 다시 나타나게 되는 경우가 대부분입니다. 사람들이 받아들일 준비가 된 상태에서 다시 시작해보려는 노력이겠습니다.
기술은 사람들 각자의 머릿속에 있는 것이고 이것을 구현하는 것인데 개개인에게는 구체적이라고 하더라도 모아지면 굉장히 추상적인 모습이기 때문에, 표준은 그것을 명문화 - 개발팀등을 대상으로 한다면 표준보다는 스펙명세등이 되겠죠 - 하는 것입니다. 명문화한다는 것은 어떤 시점의 스냅샷을 찍는 것이라고도 할 수 있겠습니다. 글로 적는 중에도 사람의 머릿속은 회전하며 기술을 발전을 해갑니다.
기술은 항상 개인이 만드는 것이 아니고, 어떤 주체들이 낸 결과물로 만들어지게 됩니다. 그 주체가 물론 개인이 될 수도 있지만, 주로 기업 혹은 단체인 경우가 많습니다. 개인이건 기업이건 단체이건 기술을 만든 곳과 기술을 사용하려는 쪽의 인터랙션을 동반하고, 인터랙션은 이익관계와 소통의 문제 역시 동반하게 됩니다. 표준을 만드는 것(표준화)은 이런 관계의 얽힘입니다. 한사람이 아닌 많은 사람들의 머릿속에 있는 것들을 잘 조율하여 글로 적는 일은 어떤 한사람에게도 만족을 주기 힘든 일입니다.
표준이 기술을 따라가지 못하기 때문에 표준이 만들어질때까지 혹은 그 만들어지는 과정에서 어떤 기술을 만들기 위해서 기다릴만한 참을인(忍)자가 없는 주체들은 이를 해결할 방도를 찾게 될 것입니다. 새로운 표준을 만들어서 주도하거나, 표준을 따르지 않거나 하는 방법밖에는 없겠죠. 결국 당장의 대세는 표준을 따르는 것이 최선으로 보이더라도 기술의 혁신을 위해서 표준과는 별도로 기술개발을 할 수 밖에 없다는 것입니다. 기약도 없이 표준이 권고안(Recommendation)이 될 때까지 기술 개발 스케줄을 맞출 회사는 그리 많지 않을 것입니다. 최선의 경우 일단 표준의 draft만 따르고, 그 수준에서 다른
기능들을 늘리고 혁신시켜서 기술을 완성하겠죠.
설명이 길었는데, 스냅샷인 표준으로 많은 사람들에게 물을 대느냐, 아니면 기술을 더 앞서나가도록 독자적으로 개발해나가느냐의 밸런싱은 바로 이번 글의 제목과 같은 추격전을 이야기합니다. 특정 하드웨어를 위한 기술로 사람들에게 굉장한 모습의 UI를 만드느냐, 아니면 하드웨어에 관계없이 모두 돌아갈 수 있는 공통분모만을 최대한 사용해서 UI를 만드느냐...어느 경우라도 목적에 따라 장단점을 가지게 되기에 그 레슬링은 계속됩니다.
이런 기술 개발이 유효하기 위해서 최근의 분위기에서 할 수 있는 것 중 대표적인 대안이 될 수 있는 것이 무엇이냐하면 바로
크로스 플랫폼이라는 것입니다. 이 공통분모를 최대한도로 짜내는 작업은 표준화의 사명 중 하나인 "모두가"라는 말을 지켜줄 수 있게하는 방법 중 하나입니다.
모든 플랫폼을 지원한다는 것은 상이한 인력과 그에 따른 부가적인 비용으로 인해서 쉬운일은 아니었습니다. 비용이 100이면 2개의 플랫폼을 지원하기 위해서는 200 혹은 그 이상까지도 필요할 수 있습니다. 그런 비용이 들어서 ROI(투자 대비 효과)가 크다면 문제가 아니겠습니다. 이런 크로스플랫폼은 여러 OS를 지원하는 응용프로그램을 만드는 것이 아닙니다. 기반 플랫폼을 만드는 것이고 따라서 그에 따른 부가가치를 생각하는 것이겠습니다.
크로스플랫폼 지원이라는 말은 같은 계층(Layer)의 다른 이질 하부 플랫폼에서도 동일하게 혹은 적정 수준에서 논란의 여지가 적을 정도로 비슷하게 동작함을 이야기합니다. 이전글에서 이야기한 동일한 계층의 "플랫폼(platform)"간의 벽을 허물어 건널 수 있게(cross)한다는 의미입니다. 수직 플랫폼이 아닌 수평 플랫폼을 구현하기 위한 한가지 방법이고, 컴퓨팅의 역사적으로 다양한 방법으로 시도되고 있는 소프트웨어史의 특성이라고도 할 수 있습니다.
모두가 웹에서 표준을 따른다면 이미 표준이 크로스 플랫폼을 어느정도 보장을 하는 것입니다. 문제는 표준을 따르지 않을 경우의 기술의 혁신 방안인데, 직접 크로스 플랫폼 지원을 하는 것으로 이를 해결하고자 하는 것이 지금 현상의 대안 중 하나입니다. 예를 들면, 플래시(Flash) 기술은 다양한 플랫폼을 지원하는데, 개발 방법론은 동일합니다. 혹은 가상화(virtualization) 기술은 내가 쓰는 플랫폼위에서 다른 플랫폼이 돌아갈 수 있게하여 동일한 경험이 가능하도록 하는 것입니다.
크로스 플랫폼이라는 말은 전혀 새로운 것이 아닌 것은 익히 아실 것입니다. "cross platform"의 구글 검색 결과로 89,800,000개의 결과가 리턴됩니다. FF(FireFox)도 퀵타임(QuickTime)도 혹은 씽크프리(ThinkFree)도 크로스 플랫폼을 지원합니다. 단지 모두가 어떤 것을 그 위에 얹느냐가 다른 것입니다. 요는 모두가 혜택을 누릴 수 있도록 하는 한가지 방법 중 하나라는 것이고, 이런 것들이 바로 표준과 기술의 밸런싱이라는 관점으로 해석 될 수 있습니다.
(다음편에 계속...)
TRACKBACK :: http://desktop.tistory.com/trackback/5