모바일 위젯 어플리케이션 요구사항
(Requirements for Mobile Widget Application)
포럼 과제번호: MW2.08-010
TTA 과제번호 : 제안중
Editor: 전종홍 (ETRI, hollobit@etri.re.kr)
표철민 (위자드웍스, charlespyo@gmail.com, pyo@wzdworks.net )
김도완 (SKTelecom, dkimsk@sktelecom.com )
조영운 (위자드웍스, duddns@wzd.com )
Version : 0.2
문서 갱신 내역 / 주요 코멘트
용어 관련 부분을 추가했습니다. -Jonathan Jeon 08. 8. 23. 오후 8:24
W3C의 위젯 요구사항 문서를 참조하여 골격 작업 -Jonathan Jeon 08. 7. 1 오후 2:19
http://www.w3.org/TR/2008/WD-widgets-reqs-20080625/ -Jonathan Jeon 08. 7. 1 오후 2:18
목차와 범위를 1차로 확정하도록 하죠 -Jonathan Jeon 08. 6. 17 오후 8:53
1. 개요
참조: http://www.w3.org/TR/widgets-reqs/ -Jonathan Jeon 08. 8. 22. 오전 9:56
위젯(widget)은 로컬 데이타 또는 웹 상의 데이타를 업데이트하거나 또는 보여주기 위해 동작하는 상호작용이 가능한 단일 목적의 어플리케이션으로, 사용자의 단말 또는 모바일 단말에 쉽게 다운로드되고 설치되는 방식으로 패키징되어 제공된다.
위젯은 독립 어플리케이션(의미상으로 웹 브라우저 밖에서 실행되는)처럼 실행될 수 있고, 또는 웹 문서내에 임베드될 수도 있다. 이 문서에서, 위젯이 실행되는 런타임 환경을 위젯 사용자 에이전트(widget user agent)라 부르고, 실행 중인 위젯은 구동된(instantiated) 위젯이라 불리운다. 위젯 구동(instantiation)에 앞서, 위젯은 위젯 리소스(widget resource)로 존재한다. 위젯 현황에 대한 좀더 많은 정보는 Widget Landscape 문서를 참조하면 된다.
Widget Landscape에서 살펴봤듯이, 웹 상에서 배포하고 설치하기 위한 위젯 리소스의 저자, 패키지, 보안 인증 또는 국제화 등에 대해 현재 공식적인 표준화된 방법은 없다. 위젯 공간 내에서, 많은 성공적인 위젯 사용자 에이전트들이 현재 시장에 있지만, 하나의 위젯 사용자 에이전트를 위해 만들어진 위젯들은 통상 다른 위젯 사용자 에이전트 위에서 실행될 수 없다.
이 문서는 W3C 철학에 따르며, 현재 시장을 선도하는 사용자 에이전트와 기존 웹 브라우저들과 가능한 상호호환될 수 있으며, 장치 독립적인 방법내에서 어떻게 위젯이 설치되고, 패키지화되고, 안전해지고, 서명하고, 만들고/기술할 것인지 표준화하는데 필요한 규격들의 설계 목표와 요구사항들을 나열한다.
Since around 2003, a relatively new kind of application has seen significant proliferation onto desktop computers and, more recently, web-enabled portable devices like mobile phones. This kind of application is generally referred to by developers as a widget engine: a piece of software that is able to run other smaller applications known as widgets or gadgets. On the user's desktop, widgets have gradually taken the place of some traditional single-purpose applications. Typical examples of widgets range from simple clocks, CPU gauges, post-it notes, games, battery-life indicators, to more sophisticated web-enabled widgets like weather forecasters, news readers, email checkers, photo albums and currency converters.
There are literally thousands of unique widgets available for download on the web, which users generally collect to create personal widget inventories. These widget inventories provide users with access to online services that they commonly use. This means that, in a lot of instances, users don't need to open up a web browser to get the information that they want (eg. to check the weather). This is an aspect of widgets that makes them particularly attractive on mobile devices, where the monetary cost of downloading web pages is currently an issue for many users.
For developers, some widgets differ from traditional binary applications in that they are created using the same open technologies used to create web pages. Widget engines mimic, in many ways, the behavior of web browsers: an increasing number are actually built directly on top of web browsers so they are able to render web pages, while others incorporate web browser components such as ECMAScript interpreters. To developers and vendors, this means that most widgets are significantly easier to create than applications developed with lower-level programming languages such as Java and C#.
Amidst the popular rise of widgets and widget engines lay a number of issues for users, developers, current vendors and new vendors wanting to enter the market. By surveying various aspects that pertain to widget user agents, this document discusses these issues so they may be resolved through the W3C standardization process.
As shown in figure 1, a widget is instantiated on a widget user agent and can make use of a number of technologies that serve a different role (eg. distribution and deployment, etc). However, some of those technologies have not yet been formally standardized (items marked with an asterisk), which has contributed to fragmentation across the widget space.

Figure 1. A typical widget technology stack and aspects that have require standardization. Please note that this technology stack is intended as a guide, and does not represent the technology stack of any particular user agent.
모바일 위젯에 대한 기술 개요 기술
모바일 위젯에 대한 기술 개요 및 차별성 정리가 필요할 것 같습니다 -Jonathan Jeon 08. 8. 23. 오후 8:15
2. 적합성
이 문서의 규범적 부분내에서 사용하는 키워드 "해야 한다(MUST)", "해서는 안된다(MUST NOT)", "필수(REQUIRED)", "해야 한다(SHALL)", "해서는 안된다(SHALL NOT)", "하도록(SHOULD)", "하지 않도록(SHOULD NOT)", "권장(RECOMMENDED)", "할수 있다(MAY)" 및 "선택적(OPTIONAL)"은 [RFC2119]에서 설명한 바와 같이 해석되어야 한다.
이 문서의 위젯 요구사항은 다음과 같은 W3C의 위젯 표준 및 문서들과 연관을 맺고 있다.
이 밖에도 OMTP의 Bondi Activity 의 문서들과의 연관성도 갖고 있다.
규격 일치화(conforming specification)는 이 문서내에 기술된 하나 또는 다수의 요구사항들을 따르는 것이다. 규격 일치를 위해 그렇게 할 수 없는 기술적으로 합당한 이유가 있는 경우를 제외하고 "할 수 있다(may)" 또는 "하도록 한다(should)" 키워드와 함께 표현된 요구사항들을 따르기 위한 시도를 하도록(SHOULD) 한다.
요구사항을 따르기 어려운 기술적 이유가 있는 경우, 그 내용의 적절함에 대해서는 포럼 WG 멤버들과 함께 논의를 통해 검토할 것이며, W3C 및 국내외 업계, 그리고 외부 멤버들의 공개적인 검토를 받아 진행할 것이다.
3. 설계 목표
이 장은 비규범적이다.
이 장에서는 모바일 위젯 표준화의 주요한 설계 목표들에 대해 기술한다. 뒤에서 도출할 요구사항들은 직접적으로 이러한 설계 목표에 기반하고 있다.
접근성(Accessibility): 규격 일치를 위해 적절한 접근성 가이드라인([WCAG 2.0])을 지원하는 것이 필요하다.
다른 표준과의 호환성(Compatibility with other standards): 규격 일치를 위해 다른 가능한 표준의 직접적인 이용 또는 표준들과의 상호호환성 유지가 필요하다.
실제 개발 사례 또는 업계 모범사례(Current development practice or industry best-practices): 규격 일치를 위해 위젯 개발자들이 현재 이용하고 있는 개발 모범 사례를 고려하거나, 적절한 업계의 모범 사례 (예를 들어 MWBP 와 MWABP 같은)들을 장려하는 것이 필요하다.
장치독립성(Device independence): 규격 일치를 위해 적절한 장치 독립성 가이드라인을 지원하는 것이 필요하다
사용 편의성(Ease of use): 규격 일치를 위해 특별하게 요구되는 소프트웨어 없이 만듦으로 제작자에게 편리하고, 획득과 설치/실행이 최종사용자에게 편리하도록 할 수 있는 위젯 리소스와 같이, 편리한 이용과 불필요한 복잡도를 피하는 해법을 정의하는 것이 필요하다
국제화와 지역화(Internationalization and localization): 규격 일치를 위해 i18n-XML과 같이 위젯 개발 커뮤니티에서 이용되고 있는 현재의 실제적인 국제화 솔루션들을 고려하여, 적절한 국제화와 지역화 가이드라인을 구현하는 것이 필요하다.
상호호환성(Interoperability): 규격 일치를 위해 현재 시장을 선도하는 위젯 사용자 에이전트들이 가능한 호환될 수 있도록 하는 것이 필요하다.
수명 연장(Longevity): 규격 일치를 위해 위젯 리소스가 미래(예를 들어 W3C Process 에서 권장 현황에 따르면 규격이 만들어진 날로부터 100년)에도 처리될 수 있도록 보장하는 방안을 정의하는 것이 필요하다.
보안성(Security): 규격 일치를 위해 적절한 보안 정책들과 프로그래밍 행태를 추천함으로써 디바이스 제조사와 위젯 배포사, 제작자, 최종 사용자들의 보안 걱정을 해소하는 것이 필요하다. 규격 일치를 위해 배포와 설치시 보안 요구사항에 대해서도 고려해야만 한다.
웹과 오프라인 배포(Web and offline distribution): 규격 일치를 위해 최종 사용자가 위젯 리소스를 HTTP를 통해 획득하거나, 로컬 화일 시스템, 블루투스 또는 메시징 시스템과 같이 HTTP 기반이 아닌 (오프라인) 방법들을 통해 획득하는 경우에 대해 다루는 것이 필요가 있다. 추가적으로, 규격 일치를 위해 새롭거나 또는 다른 버전의 위젯이 가능해졌을 때 위젯을 업데이트할 수 있도록 하는 방법을 제공하는 것이 필요하다. 온라인 또는 오프라인 소스에 상관없이 업데이트하는 것이 가능해야 한다.
4. 요구사항
이 절은 규범적이다.
이 절에서는 규격 일치를 위하는 위젯 표준화에 따라 필요한 요구사항들을 열거한다. 이들 요구사항들은 설계 목표에 직접적으로 기반하고 있으며, 여러번의 업계 의견 수렴과 시장을 선도하고 있는 위젯 사용자 에이전트들에 대한 조사들을 통해 나온 결과에 기초하고 있다.
이 절에서는 규격 일치를 위해 위젯의 패키징 포맷의 표준화에 따라 요구되는 요구사항들을 열거한다. 이 절의 목적은 규격 일치를 위한 일반적 패키징 포맷을 살핀다.
규격 일치를 위해 저작권 없고, 공개되고, 시장을 선도하는 위젯 사용자 에이전트를 포함해 폭넓게 구현되고 있으며, 모바일 단말과 호환되는 패키징 포맷을 반드시 권고해야한다(MUST). 부가적으로 규격 일치를 위해 위젯 사용자 에이전트의 일치화가 지원될 수 있도록 반드시 패키징 포맷의 형태를 정확하게 명세해야 한다.
동기(Motivation): 다른 표준과의 호환성(Compatibility with other standards), 웹과 오프라인 배포(Web and offline distribution), 장치독립성(device independence), 사용 편의성(ease of use), 실제 개발 사례 또는 업계 모범사례(current development practice or industry best-practices), 국제화와 지역화(internationalization and localization), 수명 연장(longevity). 근본적 이유(Rationale): 벤더들의 구현 편의성, 제작자의 플랫폼 사용 및 액세스 편의성과 관련하여 상호호환 가능하며 널리 활용가능한 패키징 포맷을 정의하는 것임
규격 일치를 위해 굳이 HTTP 위로 전송하는 경우가 아니더라도 위젯 리소스를 위한 화일 확장자를 정해야 한다. 추가로, 규격 일치를 위해 심지어 HTTP로 전송을 시작한 때라도, 위젯 리소스는 늘 화일 확장자를 포함하는 것을 권장하도록 한다.
동기(Motivation): 장치독립성(device independence), 사용 편의성(ease of use), 웹과 오프라인 배포(Web and offline distribution). 근본적 이유(Rationale): When a MIME Type is not present, as is the case when a widget is instantiated locally from an end-user's storage device, the operating system will sometimes use the file extension to associate the widget resource with the appropriate widget user agent. However, when the widget is distributed over HTTP and a MIME type is present, a file extension may not be required. Note also that, in some cases, Web servers may also rely on a file extension to correctly set a widget resource's MIME type in the HTTP headers.
R3. 내부 추상 구조(Internal Abstract Structure)
R4. 예약 리소스와 디렉토리명(Reserved Resources and Directory Names)
R5. 어드레싱 체계(Addressing Scheme)
R6. 다중언어 리소스명(Multilingual Resource Names)
R7. 국제화 가이드라인(Internationalization Guidelines)
R8. 자동 지역화(Automatic Localization)
R9. 장치독립성(Device Independence)
R10. 데이타 압축(Data Compression)
R11. 디지털 서명(Digital Signature)
R12. MIME 타입(MIME Type)
R13. 위젯 메타데이타(Widget Metadata)
R14. 원작자 명시와 위젯 메타데이타(Authorship and Widget Metadata)
R15. 저작권 공지와 라이센스 메타데이타(Copyright Notice and License Metadata)
R16. 비주얼 렌더링 차원(Visual Rendering Dimensions)
R17. 선언적 부트스트랩(Declarative Bootstrap)
R18. 자동화된 부트스트랩(Automated Bootstrap)
R19. 아이콘화 표현(Iconic Representations)
R20. 환경설정 파라미터(Configuration Parameters)
R21. 보안 선언(Security Declarations)
R22. XML, 마이크로 구문과 스키마(XML, Micro-Syntaxes and Schema)
R23. 환경설정 문서 독립성(Configuration Document Independence)
R24. 인스턴스 위젯 API (Instantiated Widget API)
R25. 런타임 속성 설정하기(Configuring Runtime Properties)
R26. 선호도 얻기와 설정하기(Getting and Setting Preferences)
R27. 위젯 상태 변경 이벤트(Widget State Change Events)
R28. 네트워크 상태 변경 이벤트(Network State Change Events)
R29. 모달 우선순위(Modal Priority)
R30. 디바이스 지정 API와 서비스(Device Specific APIs and Services)
R31. ECMAScript 호환성(ECMAScript Compatibility)
R32. XHR(XMLHttpRequest)
R33. 교차 위젯 통신(Cross-Widget Communication)
R34. 아이콘 API(Icon API)
R35. 환경설정 문서 데이타(Configuration Document Data)
R36. 개방형 기본 시스템 웹 브라우저(Open Default System Web Browser)
R37. 언어 접근성(Language Accessibility)
R38. 부가 디지털 인증서(Additional Digital Certificates)
R39. 최종 사용자 정의 프락시(End-user Declared Proxy)
R40. 자동 업데이트(Automatic Updates)
R41. 선호도 보관 저장소(Persistent Storage of Preferences)
R42. 다중 위젯 인스턴스(Multiple Widget Instances)
R43. 기본 보안 정책(Default Security Policy)
R44. 런타임 보안 예외(Runtime Security Exceptions)
참고