Friday, July 8, 2011

Silverlight와 WPF의 미래

얼마전에 MS에서 청천벽력같은 발표를 했다. Windows에서의 앞으로 개발 환경을 HTML/JavaScript 기반으로 하겠다는 것이다.
Windows 개발자들 간에는 굉장히 시끌시끌할 문제였다. 실제로도 그랬고. (하지만 그래도 1990년대에 비하면 그다지 뜨거운 감자 같지는 않은거 같다. 왜냐하면 비록 시장 점유율이 여전히 80%~90%가 되는 Windows지만, MS를 쫒아가는 분위기는 예전만 못하기 때문이다. 일단 desktop OS용 앱 개발에 예전처럼 관심들이 없으니까.)
근데 정말 그럴까? 정말 그렇게 HTML/JavaScript 기반으로 바꿀까?
우 선 전혀 얼토당토한 소리는 아니다. 왜냐하면 Web app들의 기능이 영구적(persistent) 저장(save)까지 되고 있고, 에지간한건 그럭 저럭 구현이 되기 때문이다. 더군다나 intranet용 솔루션들은 native app보다 web app이 더 인기가 있다는 이유도 있고.
또한 WebOS나 Chrome OS처럼 JavaScript/HTML 기반의 OS/platform도 나오고 있는 마당이니까.

그리고 desktop OS용으로도 이미 XML기반의 접근이 이루어지고 있기때문에 자연스런 발전 방향일 수도 있다. 적어도 UI를 기술하기 위해서는. Mozilla의 Gecko engine (XUL)이나 GNUStep의 Renaissance 등은 XML을 이용해서 UI를 기술하고 themeing도 할 수있게 했다. 물론 Renaissance는 그다지 발전이 안되었지만. Mozilla의 접근법은 MS에 영향을 준게 확실하고, 그래서 WPF라는 XML에 기반한 UI 기술 방식을 나오게 했다. 사람들은 WPF라고 하면 굉장히 힘들게 생각하고 뭔가 다른 것으로 생각하는데, 기존의 resource file (.rc)에서 UI 부분을 XML로 기술하고, XML의 특성이 데이터의 기술이고 stylesheet (XLS)를 이용해서 그 표현을 가능하게 하므로, 그 메커니즘으로 themeing이 가능하게 했다는 것이 그 주요한 맥락이라는 것을 알면 이해가 쉬울 것이다.

그러므로 이미 상당부분 HTML/JavaScript라는 웹 기술을 접목한 형태를 갖추고 있는 것이다.
현재 MS의 직원들이 설명해 놓은 것을 보면, MS가 이번 발표에 얼마나 당황하고 있는지 (자기네가 말해놓고도) 알 수있다.
우선 정리하고 시작할게 있다. Silverlight가 뭐냐는 것이다. 일반인들에게 물으면 Adobe Flash같은 기술로 MS가 만든 것이라고 할테고, 개발자에게 물으면 WPF의 subset이라고 할 것이다. 맞다. Silverlight는 그 두가지 모두다. 이것은 나름대로 MS에겐 좋은 접근법이었다. 즉 WPF를 이용해서 .NET 언어 (C#/C++/Visual Basic # .NET)를 이용해서 PC용 프로그램을 만들 수있으면, 그 함수와 언어를 그대로 이용해서 웹용 모듈을 만들 수있는 것이다. Silverlight는 compact .NET framework에 기반을 하고 있다. 즉 Web과 같은데 그다지 필요하지 않을 부분을 WPF에서 쳐내고 만든 것이다.

근데 여기에 재미난게 있다. 요새 CS를 전공한 젊은 사람들이나, 혹은 CS를 전공하지 않고 개발하는 많은 사람들, 특히 미국은 그런 사람들이 많은데, 수학과 출신, 전자 공학 출신, 재무쪽 출신 개발자들이 참 많다. 물론 특히 수학과나 전자공학 출신들은 프로그래밍도 잘하고, 특히 수학/물리 이론쪽이나 (수학과 출신), device driver나 video codec을 만들더라도 S/W base보다는 chipset들과의 밀접한 관계를 맺으면서 하는 H/W쪽 video codec등을 구현할때는 EE(전자 공학)출신들이 역량을 발휘하지만, 그래도 전반적으로 CS출신들에 비해 S/W 프로그래밍에는 아무래도 약할 수밖에 없다. (본인들은 잘한다고 말하겠지만. 그리고 어떤 측면에선 맞는 말이기도 하지만) 혹은 그보다 더 light한 전공을 하고 프로그래밍을 하는 사람들도 많다.
여기서 CS를 전공했다는 것은, CS를 전공하면서 열심히 공부한 (꼭 점수와는 관련 없을 수도 있다. 그리고 많다) 사람, 혹은 CS 전공이 아니라고 하더라도 마치 전공자처럼 깊게 관련 분야를 공부한 사람들을 말한다. 즉 CS적 마인드를 가지고있는 사람이라고 할 수 있다. (내 매니저였던 인도 사람 Ramesh는 MFC를 보고 open source라고 한다. 소스가 공개되었다고. 근데 물어보았다. 도대체 어디 공개 되어 있느냐고. 그러니 마치 나를 "그런 것도 몰라?"하는 눈으로 쳐다보더니 Visual Studio의 설치 화일 중에서 MFC header 파일들이 있는 곳을 보여주고 그 안으로 디버깅해 들어가면서 header file에 구현이 되어 있는 것을 보고, 공개되어 있다, open source다 그랬다. 참 웃기는 말이다. 자기가 그런 수준이면서 더 많이 아는 사람을 모르는 사람 취급하는 것이. 우선 open source의 개념 조차 모르며,  MFC의 구현 모두가 다 header file안에 있지 않다는 것을 모른다. 나는 MFC로 짠 프로그램을 디버깅하면서 Win32가 아닌 MFC레벨에서 정의된 메소드의 소스 코드가 없는 (당연하지. 라이브러리로 되어 있으니) 데로 들어가곤 한다. S/W에 대해서 그런 수준의 조차에서도 모르는 것이다. CS전공한 사람들에겐 이건 CS라고도 말할 수없는 수준이란 것을 알 것이다. )


부연설명은 그만하고...

이런 상황에서 점점 더 많은 이들이 웹 개발에 더 열을 올리고 있는 상황이며, 그들은 C/C++은 죽었다고까지 말한다. (자기네 관점에서 그렇다는건데) 그러므로 MS가 주력으로 밀었던  Win32/MFC 등의 전통적인 API/framework는 그들 눈에는 obsolete한 것이리라. 이런 상황에서 그들을 확 잡아 끌려면? 그렇다. HTML/JavaScript기반을 밀어야 하는 것이다. 마치 Steve Jobs가 iPhone용 SDK를 발표하면서 SDK가 없다고 말했던 것처럼. 그리고 web 개발을 내밀지 않았던가? (그 후에, iPhone개발에 사람들이 관심과 요구가 뜨거워지니 native SDK를 내 놓은 것이다.)

그렇다면 Silverlight의 다음 수순은 당연히 HTML/JavaScript이다. 더군다나 HTML5로 오면서 더 많은, desktop에서 하던 일을 HTML로 할 수가 있게 되었다. 충분히 UI를 기술할 수있게 되었고, 심지어 core logic까지 만들 수있는 것이다.
그러므로 MS의 그와 같은 결정은 이해가 될 수있는 기술적 선택이다. (간만에 MS가 상대를 죽이거나 사보타지하는 의도로 기술 결정을 하지 않고, 기술적인 판단으로 했다. )
하지만 그럼 기존의 시간적/금전적 Silverlight에의 투자는 어찌하란 말이냐?
그래서 저런 블로깅을 MS의 블로그에 하는 것이다. 새개로 나뉘어져 있어서 마치 WPF와 Silverlight의 미래를 이야기하는 것 같지만, 요약하자면 이렇다. "MS도 그 기술들에 기반한 제품을 만들고 있거든? 금새 없어지지 않을테니까, 그냥 쓰세요."

근데 WPF는 그나마 안전하다. 데스크 탑 S/W라는 독자 영역이 있으니까. 물론 Silverlight로도 데스크탑 앱을 만들 수있고, 몇몇 그런 프로그램들이 있다. SNS 프로그램인 Seesmic의 이런 저런 프로그램들이 Silverlight로 만들어졌다.
이건 마치 Adobe가 ActiveScript를 그대로 이용하는 Air라는 것을 만든 것과 일맥상통한다. 사실 Silverlight는 Flash+Air랑 경쟁하기 위해 나온 것이다. 하지만 그들은 원래가 Web을 주 타겟으로 하는 것이다. 물론 Web에서 할 수있는 것 이상을 한다. 특히나 Silverlight는 C# .NET/C+ .NET 등으로 만드니까. 프레임워크도 .NET의 subset을 이용하고.
아무튼 주요 타겟이 Web이라는 점은 확실하다. 그런 상황에서 개발 환경을 HTML/JavaScript로 가게 되면 어떤게 더 타격을 받을까? WPF? Silverlight? 내가 보기엔 Silverlight다. 그의 생존도 WPF의 인기에 좌우될 것이다.

Apple은 XML로 UI를 기술하는데 좀 미지근한 거 같다. 현재 Interface Builder file인 nib은 xib로 변했다. xib는  nib을 XML로 기술해서, SCC (Source Code Control) 서버에 올리기 쉽게 만들고, 비교하기도 쉽게 만든 것이다. xib에는 UI의 기술도 들어가지만, class object의 instance들의 관계들을 기술해 놓기도 했다. 즉 WPF에서의 XAML이 XML로 UI를 기술하고 스타일쉬트를 이용해서 그 UI의 모양을 바꾸는데 집중하는 반면, Apple은 그보다 더 넓은 것에 집중한다.

하지만 iOS때문에 그 발전은 아무도 신경 안쓰는거 같다.
특히나 GNUStep에서도 Renaissance 프로젝트로 XML처럼 Mozilla의 XUL이나 MS의 XAML과 같은 접근을 시도했는데, 왜 Apple은 안할까? iOS때문에 바쁘고 아마 컴퓨팅의 미래를 tablet등의 mobile로 잡기도 해서이겠지만, 이전 1990년대에 Linux계에 들이쳤던 theme 열품의 부작용과 Apple 자체의 Appearance Manager 프로젝트를 통해, UI customization에 자유를 지나치게 부과하면 end user들에게 오히려 혼돈을 초래할 수있다는 것을 이해하고 있기 때문에 그런지도 모른다.
오히려 Apple은 iOS 5에서 storyboard와 같은, UI를 개발하기에 편하게 만드는 기술을 내 놓았다.

WPF 등이 look을 설계하는데 촛점을 맞추었다면, Storyboard는 UI 요소들간에 관계를 설정하고, 이 화면 다음에 어떤 화면이 나오고.. 하는 것들을 코딩이 아니라 visual하게 기술하면 자동으로 프로그램을 만드는 식으로, 더 실질적인 접근법을 취했다.

내가 Harris에서 나이 어린 프로그래머들에게, 그리고 말이 통하는 사람들에게 기술 개발의 역사 흐름을 이해하라고 강조하는건, 단순히 가쉽거리를 알라는 뜻이 아니다. 기술의 흐름, 왜 이런 저런 것이 나왔는지를 알아야, 개발을 하면서 어떤 기술을 택할지 판단할 수있으며, 코딩 자체도 그것을 알고 하는 것과 모르고 하는 것에 차이가 있기 때문이다. 그런 것을 모르고 하는 사람들의 코드를 보면, 돌아는 가는데, 왜 그 기술을 만들었나, 무엇을 해결하려고, 무엇을 더 편하게 하려고, 무엇을 더 강력하게 하려고라는 것엔 전혀 부합되지 않는 것을 쉽게 볼 수있다.
근데 이상하다. 요샌 그런 것을 아는 사람들이 별로 없는거 같다. 아무래도 S/W개발자들이 값싼 이민자들로 채워지는게 한 몫하는거 같다. 물론 외국인 이민 개발자들이 지식이 더 얕다는 것은 아니다. 하지만 상당 부분, 전공만 CS등 공학을 하고, 열의가 없는 사람들이 아무래도 70년대 80년대보다 비율면에서 많을 것은 자명한 것이고, 영어가 native인 상태에서 기술 관련 책을 읽고 받아들이는 속도는 외국인이 (아무리 인도인이라고 해도. 영어를 할 뿐이지 그들의 사고 방식이나 태도까지, 열정적고 컴퓨터를 좋아하는 native 개발자보단 못하다고 생각한다. 인도애들도 처음엔 발음은 후져도 영어는 잘하나보다 했는데, 가만히 보니 그런 것이 아니더라. 잡담이나 남에게 말싸움할때 밀리지 않을 정도지, 뭐랄까.. 언어를 사용가능하다가 아닌 그 이면의 어떤 그 무엇.. 그것까지 능통한건 아니라는 것이다. 물론 미국인들도 미국인 나름이다. 하지만 같은 혹은 비슷한 열정을 갖고 있다고 했을때, 누가 더 기술 습득을 빨리해서 한번이라도 더 스스로 생각할 시간을 갖고, 더 시도해 보겠는가?  그것은 요새 나오는 컴퓨터 프로그래밍 책을 80년대 90년대초의 그것들과 비교하면 쉽게 느낄 수있다. 요새는 설명만 장황하지, 제대로된 소스코드 리스트하나 없는 책도 부지기수다. 지 나름대로 뭐 계산한다고 수식 써놨는데.. 그거 보면 한심하다고 생각되는 경우가 부지기수다. 미국은 일단 CS 전공자들은 수학 못한다고 하니까. 근데 EE 애들도 그렇다. 물론 어떤 어려운 문제를 주고 나한테 풀어보라. 하면 그들보다 내가 못 풀수도 있다. 하지만 그런 이야기가 아니라 얼마나 수학을 생활화하고, 얼마나 자연스럽게 접근하고 그런 문제의 이야기다. 죽자고 달겨들때야, 그들이 더 잘 할 수도있겠지. 나는 준비가 안되어 있고, 까먹은 것도 많으니)

또 삼천포...


아무튼 Apple의 관심은 그런거 같다.
그런 측면에서 요번 사태를 놓고 보면?
글쎄다... WPF 공부 더 하지 않은게 잘한 결정이다?
근데 이 포스트는 소스 코드가 한줄도 없으니 (요샌 점점 이런 기술 동향에 대해서 이야기하는 거 같은데.. ) Hot Potato로 옮겨야겠다.

0 comments:

Post a Comment

All comments are moderated. So, please wait until your comment is reviewed.