요즘은 스마트폰이 대세로 떠오르고 있다.
너도나도 할 것 없이 스마트폰한번 써보자 해서 스마트폰으로 갈아타는 사람들을 쉽게 볼 수 있다.
그런데 이런 사람들중 대부분은 "뭐 이렇게 불편해" 라는 식으로 굉장히 실망을 하거나, 다시 휴대폰으로 돌아가게 된다.
기존 PDA 파워유저들이야 아무리 버그가 많아도 걍 체념하고 쓰겠지만 말이다^^
현재 국내에서 판매중인 스마트폰의 거의 대부분은 Windows Mobile 6.1일 것이다. 노키아가 국내 진출을 재시도 하면서 심비안 사용자들도 많이 늘어나는 것으로 알고 있다.
재밌는 사실은 세계적으로 스마트폰 OS의 점유율을 보면 심비안이 50%를 넘고 그다음이 아이폰, 리눅스, WIndows Mobile은 10%도 채 안된다는 것이다. 심비안이야 노키아가 휴대폰시장 점유율 1위니까 제낀다 치더라도 리눅스보다 점유율이 낮다는건 좀 재미있는 사실이다. 게다가 Windows Mobile의 점유율은 점점 추락하고 있는 실정이다.
MS에서 최근 Windows Phone이라는 전략으로 새로운 모델들을 공개했는데 얼마나 공세를 펼칠지는 잘 모르겠다.
그렇다면 왜 이토록 Windows Mobile이 사람들로부터 까임(?)을 당하는지 살펴보도록 하자.
1. PocketPC?? SmartPhone??
많은 사람들이 혼동하는 부분이기 때문에 여기서 정리하도록 하겠다. 요즘 흔히들 말하는 스마트폰에 대한 이야기는 아니다. 내가 말하려는 것은 MS에서 초기에 어떻게 SmartPhone을 정의했는지를 말하려는 것이다.
Windows Mobile이라는 이름이 등장하기 시작한 것은 5.0버전부터이다. 이전에는 PocketPC2003이라는 것이 있었다. 즉, PocketPC는 MS의 PDA운영체제의 이름이었다. 그런데 이것이 Windows Mobile이라는 이름으로 바뀌게 되면서 Windows Mobile은 여러개의 제품군으로 나뉘게 된다. WIndows Mobile Pocket PC, WIndows Mobile Pocket PC Phone Edition, WIndows Mobile SmartPhone, 이렇게 크게 3개로 나뉘어졌다. 즉 MS의 입장에서는 PocketPC랑 SmartPhone은 다르다는 것이다. 그렇다면 위 3가지 버전의 차이점은 무엇인가? 간단히 살펴보면 다음과 같다.
WIndows Mobile Pocket PC : 일반 PDA
WIndows Mobile Pocket PC PE : 일반 PDA + Phone
WIndows Mobile SmartPhone : SmartPhone
AKU가 6.0으로 올라가면서 Pocket PC라는 이름이 사리지고 각각 Classic, Standard로 명명되었다. 그러나 아직 여전히 SmartPhone은 따로 분류가 되고 있다. 그럼 이 SmartPhone이라는건 뭔데 따로 분류가 되나? 간단히 보면 삼성의 블랙잭은 SmartPhone으로 만든거고 미라지는 PocketPC로 만든거다. 뭔가 설명하기 참 애매하다;;
좀 더 쉽게 차이를 둬 보면 SmartPhone은 터치스크린이 없이 일반 휴대폰처럼 동작하도록 만들어진다. 반면에 PocketPC는 터치스크린이 있고 PDA처럼 만들어진다. 그런데 요즘에 터치스크린 기반 휴대폰을이 생겨나게 되면서 더이상 SmartPhone으로의 개발이 의미가 없어지고 있는 실정이다. 따라서 먼 미래에 나올 WM 7에서는 하나의 버전으로 통합 될 것이라고 알고 있다.
2. 버그의 근원
내가 2년 6개월이라는 길지도 짧지도 않은 시간동안 Windows Mobile을 포팅하면서 느낀건데 제품 출시하고나서 터지는 문제의 원인은 대부분 Phone에서 나온다. 요즘에는 또 겉에 Skin바꾸고 뭐 이상한 기능들 막 집어넣어서 나오기 때문에 Phone 이외의 부분도 많이 버그가 발생할 것이다. 그런건 둘째 치고 기본 상태로 그냥 출시를 하게 되면 십중팔구 아니, 열이면 열 전부 다 Phone쪽에서 문제가 터진다.
그렇다면 왜 WM의 Phone은 항상 안정적이지 못한 상태로 출시가 될까? 일단 WM의 Phone 구조를 살펴볼 필요가 있겠다.
3. CellCore
WM에서 Phone을 개발하는 방법은 크게 두가지가 있다. 첫번째는 휴대폰에서 쓰던 Code를 포팅하는 방법이 있고, 두번째는 MS에서 제공하는 CellCore로 개발하는 것이다. 첫번째 방식은 따지고보면 WM PE는 아니다. 그냥 WM에 자체 모뎀 Driver와 Phone App를 올린 것이다. 요즘 WM기반 스마트폰은 첫번째 방식은 지양하고 CellCore를 올리는 추세이다. 기존에 CellCore기반으로 개발 하던 국내 업체가 삼X이랑 블XX드소프트 두군데 뿐이었는데 요즘에는 다른 곳들도 대세를 따르는 듯 하다.
여하튼 CellCore에는 RIL(Radio Interface layer)이라고 모뎀을 제어하는 드라이버가 있다. 원흉의 시작은 바로 여기라고 봐도 될 듯 하다. RIL에 대한 자세한 설명은 여기서는 생략하도록 하곘다.
내가 CDMA쪽 RIL을 1년 넘게 개발을 했는데 할때마다 느낀점은 코드가 참 조잡하다는 것이다. 일단 CDMA모뎀들은 GSM모뎀과 달리 AT COMMAND가 모뎀마다 다 다르다. 물론 GSM도 OEM Specific한 부분들 때문에 다 다르다고 봐도 된다. 이러한 여러개의 모뎀들을 고려해서 개발하는건 참으로 곤욕이 아닐 수 없다. 일단 RIL Driver자체가 GSM에 맞게 제작되어 있어서 CDMA구조랑은 좀 다르다. 여기에다가 통신사 요구사항에 맞게 단말기를 제작해야 한다. 근데 WIndows Mobile OS의 UI는 범용적이라서 휴대폰이랑 UI를 똑같이 만드는게 참 귀찮고 복잡하다. 이러한 통신사의 과도한 요구에 대한 것도 개발하는데 불만이 많았다. 그리고 RIL뿐만 아닌 CellCore전체 적인 코드 규모가 꽤 길다. 그럼에도 불구하고 Driver부터 Application까지 한두명이 다 구현하는 경향이 있는데, 그렇게 하지 않으면 안되게끔 유기적으로 복잡하게 연결되어 있어서 개발시간에도 차질이 생긴다. Phone쪽을 잘 이해하고 있는 사람이 아니면 구조를 익히는데 시간이 좀 걸리는 부분이다. 나도 아무것도 모르는 상태에서 RIL을 개발하게 되면서 삽질을 많이 했던 것 같다.
그래도 반가운 소식은 CDMA시장이 점점 축소되어 가고 있다는 것이다. 내가 진짜"CDMA는 없어져야 한다"라고 노래를 부르고 다녔는데 불행중 반가운 소식이다.
4. 또다른 문제
현재 Windows Mobile은 치명적인 문제를 안고 있다. 바로 Memory Architecture가 시대에 뒤떨어진다는 문제점이다. 현재 각각의 Process가 사용할 수 있는 최대 메모리는 32MB이다. 그런데 경험상 이건 부족하다. device driver의 경우 대부분 device.exe에 로드된다. 그런데 요즘 스마트폰은 기능이 정말 신기할정도로 많다. 그래서 load되는 driver의 갯수도 많아지는데 이것들이 device.exe에 다 올라가게 되면 분명 32MB를 넘게되고 device.exe가 할당된 memory slot이 꽉차서 load가 안되는 문제가 있었다. 이것도 6.1버전에서 개선을 했다고는 들었는데, 분명 땜빵코드를 집어넣었을 것이다. 그래서 몇몇 driver들을 service.exe로 이동시키는 편법을 쓰기도 하는데, power관련된 문제도 있고 좀 보기 좋지는 않은 것 같다.
그래서 CE6 커널 기반의 WM7이 하루 빨리 나와야 한다고 생각되는데 2010말이나 돼야 볼 수 있을 듯 하다.
또 다른 WM의 약점은 무엇이 있을까? 그것은 바로 범용성에 있다. WM OS는 다양한 플랫폼을 지원한다. x86도 지원하고 ARM, MIPS 다 지원한다. 물론 그에 맞는 BSP는 따로 구하거나 개발해야겠지만 어쨌든 WM은 다양한 플랫폼을 지원한다. 아이폰은 어떨까? 아이폰은 아이폰 하드웨어만 지원하면 된다. 굳이 범용적으로 OS를 만들 필요는 없다.
그럼 이 범용성이 왜 문제가 될까? 소프트웨어를 개발하다보면 구조적으로 잘 짜여진 코드는 대게 한가지 약점이 있다. 바로 속도문제이다. 스마트폰은 PC만큼 빠르지 않기 때문에 속도문제가 있다. WM기반 스마트폰이 아이폰이랑 비교했을때 까이는 이유중에 하나도 속도다. 범용적으로 만들게되면 구조가 완전 다른 HW도 지원해야되기 때문에 layer가 2중 3중으로 마구 생겨나게 되는 것이다. 반면에 아이폰 OS에 누가 그냥 하드코딩 해놔도 불평할 사람은 없을 것이다. 물론 실제로 그렇진 않겠지만..
이런 속도문제나 여러가지 문제때문에 일반적으로 수정하면 안되는 public코드에 개발자는 손을 대고, 다른 모델에도 수정된 public 코드 적용해야 되고 하는 악순환이 점점 반복되게 된다.
뭐 WM개발하는데는 코드내용이 워낙 방대해서 사실 어떤 문제가 터져도 이상하지 않다;;
5. 잡담
대기업은 그렇다치고 중소기업에서 스마트폰을 만든다고 했을 때 어떤일이 발생하는지 알아보도록 하자. 일단 중소기업은 대기업만큼 사람이 많지가 않다. 그리고 고급인력을 구하는데도 어려움이 있다. 그러면 학부 갓 졸업한 초보 개발자들이 아무 것도 모르는 상태에서 맨땅에 헤딩하는 경우도 있다. 요즘에는 여러 군데 교육기관이 있기는 하지만, 모든 것을 가르쳐주지는 않는다.
뭐 일단 새로운 제품을 만드는데 어떻게 만들어지나 한번 볼까? 제품 기획 한 2주한다. 디자인 회의도 하고 기구 설계도 해야된다. 스펙 확정되면 하드웨어랑 소프트웨도 작업에 들어간다. 이렇게 하면 굉장히 빡빡하게 스케쥴이 진행되는 것이다. 이때도 스펙 변경에 대비해 모든 경우를 따져서 설계를 해야한다. 기구랑 하드웨어가 완성되서 단말기가 나오면 소프트웨어는 그걸 받아서 포팅을 한다. 이때 받자마자 write가능하도록 image가 만들어져 있어야 한다. 당연히 바로 안된다. 이래저래 시간이 흐른다. 잘되면 하루이틀, 안되면 한달 두달 기약이 없다. 영업에서는 언제나온다고 이미 이빨 다 까놓은 상태다. 죽어도 일정 맞춰야 한다. 이래저래 해서 QM에 전달할 이미지를 완성한다. 버그가 한 100개 넘게 나온다. 한두명이서 다 잡아야 하니 또 죽어라 한다. 통신사 품질보증도 받아야 한다. 근데 품보 담당자들 성격이 완전 더럽더라. 살살 구슬려가면서 테스트 맡겨야 한다.거기서 또 고칠게 2~30개 나온다. 모뎀문제는 잘 모르겠다. 모뎀업체랑 열라 씨름한다. 결국 품보담당자가 테스트를 잘못했더라.. 또 막 이래저래하다보면 또 MS Logo Test도 받아야 되네;; 테스트 항목이 또 겁내 많다...orz 이래저래 하다보면 OS 버전이 도 업데이트 됐네.. 기획에서 OS업데이트 하자고 한다. 또 테스트 한다. 또 버그가 나온다. 이래저래 하다보면 걍 이래저래 타혐해서 버그있는 상태로 그냥 출시해 버린다. 이렇게 하는게 기간이 1년 그냥 넘는다. 그런데 그놈의 경쟁사회가 뭔지 점점 새로운 칩셋이 빨리나오고 시장에 빨리 새로운 칩셋 적용해서 출시해야 되는데 중소기업인지라 사람이 없네.. 그렇게해서 출시일정이 다른 업체보다 늦어지는 경우도 있다.
대충 이정도로 왜 WM기반 스마트폰이 버그가 있을 수 밖에 없는지를 간단하게나마 끄적여 봤다. 지금은 개발자가 아니라 학생이라는 신분으로 있지만, PDA를 볼때마다 뭐랄까 손이 근질거리는 것이 있다. 그래서 현재 출시된 단말기들의 BSP를 구해보려고 여기저기 쑤시는데 다들 보안이 참 철저한 것 같다^^;; 뭐 이렇듯 문제가 많기는 하지만 뭐랄까 Windows Mobile은 미운정이 들어버려서 그런지 개인적으로는 아이폰보다 WM이 좋다. 그리고 Customizing할 것도 많아서 공돌이들이 가지고놀기 적합하다.;;
원본 위치 <http://blog.naver.com/PostList.nhn?blogId=evo0722&parentCategoryNo=16>
'Hello CE,Mobile' 카테고리의 다른 글
HKEY_CLASSES_ROOT (1) | 2010.11.04 |
---|---|
[Windows Mobile] SIP UI 가 짤리는 현상 (0) | 2010.11.02 |
너무 좋은 스마트폰 한글 입력기 열혈남아su님의 로즈키 (0) | 2010.11.01 |
[Windows Mobile] Programming Camera Driver #6 (0) | 2010.10.28 |
[Windows Mobile] Programming Camera Driver #5 (0) | 2010.10.28 |