WHATWG 탄생 배경


1. HTML 탄생

1990년부터 1995년까지 처음 5년 동안 HTML은 여러 개정을 거쳤습니다.
HTML 창시자 버너스리가 일했던 CERN 단체에 의해 HTML이 탄생되었고, 그 다음에는 IETF(국제 인터넷 표준화 기구)에 의해 호스팅되어 HTML의 여러 확장 기능들이 개발되었습니다.

2. W3C 등장

W3C(웹 표준을 개발하는 국제 컨소시엄)의 설립과 함께 HTML의 개발 주체는 다시 바뀌었습니다.
1995년 HTML을 확장하려고 시도했던 HTML 3.0은 실패했으나, 1997년 좀 더 실용적인 접근방법으로 HTML 3.2가 나왔습니다.
테이블, 애플릿와 같은 것들이 HTML 3.2에서 나온 기능입니다.
같은 해에 HTML4가 뒤따라 나왔습니다.


3. W3C의 XHTML 활동

1998년에 W3C 회원들은 HTML의 진화를 중단하고, XML 기반으로 동작하는 XHTML(Extensible Hypertext Markup Language)로 작업하기 시작했습니다.
이 작업은 HTML4를 재변형을 XML 내에서 시작한 것으로, XHTML 1.0으로 불렸습니다.

XHTML 1.0 작업은 2000년도에 마쳤습니다.
XHTML 1.0 이후로 W3C는 XHTML Modularization이라는 현수막을 들고 다른 그룹들이 XHTML을 쉽게 확장할 수 있도록 노력했습니다.
W3C는 이뿐만 아니라 이전 HTML, XHTML 언어와 호환되지 않는 새로운 언어인 XHTML2을 발전시켜 나갔습니다.

4. XHML의 정체성 확립

이렇게 HTML의 발전은 1998년에 멈추었지만, 브라우저 벤더들에 의해 HTML용 API 일부인 DOM 레벨1(1998년)과 DOM 레벨2 코어와 DOM 레벨2 HTML(2000년 시작하여 2003년 정점)이 정의되고 배포되었습니다.
이같은 노력들은 2004년 DOM 레벨3이 발표되면서 수포로 돌아갔지만, 다행히(?) 레벨3 초안이 완성되기 전에 워킹 그룹은 해체되었습니다.
2003년, 차세대 웹폼으로 자리매김한 기술인 XForms(웹 폼의 입력을 수집하기 위해 사용되는 XML 포맷)의 발표는 HTML의 대체물이 아닌 HTML 진화 자체에 대한 새로운 관심을 불러일으켰습니다.
이러한 관심은 웹 기술로서의 XML의 개발이 기존의 기술(HTML과 같은)을 대체하는 것이 아니라 완전히 새로운 기술(RSS, 이후 아톰 등)로 제한된다는 인식에서 비롯되었습니다.
XForms 1.0의 다양한 기능들은 브라우저의 렌더링 엔진을 수정하지 않고 HTML4의 폼만을 확장하여 구현이 가능했습니다. 이는 XML 개발이 확장가능하다!(HTML의 대체가 아니라)란 인식에서 비롯된 첫번째 결과였습니다.

5. WHATWG의 등장! (Web Hypertext Application Technology Working Group)

2004년 W3C 워크샵에서 HTML의 진화가 다시 시작되어야한다는 생각이 테스트되었습니다.
모질라 및 오페라에 의해 공동으로 HTML5 작업의 기초가 되는 원칙들과 폼 기능과 관련된 초기 초안 제안이 제출되었습니다. 이 제안은 웹의 진화를 위해 이전에 선택된 방향과 상충된다는 이유로 거부되었습니다.
W3C 스태프와 회원들은 XML 기반 기술을 계속 개발하기로 투표했습니다.
얼마 지나지 않아 애플, 모질라, 오페라는 공동으로 WHATWG라는 새로운 장소의 산하에 작업을 계속하겠다는 의사를 밝혔고, 초안은 WHATWG 사이트로 옮겨졌습니다.
이후 저작권은 3개 벤더 모두의 공동 소유로 개정되었습니다.

6. WHATWG 철학

WHATWG는 몇 가지 핵심 원칙을 기반으로 했습니다.
기술은 역호환성이 요구되었으며, 이는 기술의 사양과 구현은 반드시 일치해야 함을 의미했습니다.
심지어 구현이 아닌 사양이 바뀔지라도 구현과 사양은 일치해야 했습니다.
또한, 사양은 충분히 디테일하게 작성해야 했습니다.
구현에 대한 리버스 엔지니어링을 하지 않고도 사양과 구현이 충분히 상호운용할 수 있도록요.
사양이 충분히 디테일한다는 것은 HTML5 사양이 HTML4, XHTML1, DOM2 HTML의 세 개의 별도 문서에 명시된 것을 포함해야 한다는 것을 의미하기도 했습니다.
이것은 이전에 표준으로 여겨졌던 것보다 훨씬 더 많은 세부사항을 포함한다는 것을 의미하기도 합니다.


7. W3C의 항복 그러나…

2006년 W3C는 결국 HTML5 개발에 참여하겠다는 의사를 밝혔고 2007년에는 WHATWG와 HTML5 사양 개발에 협력하기 위해 워킹 그룹을 결성했습니다. 애플, 모질라, 오페라는 WHATWG의 제한된 라이센스와 함께 W3C 저작권에 따라 사양을 게시할 수 있도록 허용했습니다.
여러 해 동안, 두 그룹은 함께 일했습니다.
그러나 2011년, 이 두 그룹은 서로의 목표가 다르다는 것을 알았습니다.
W3C는 HTML5의 “완성된” 버전을 출판하기를 원했고, 반면에 WHATWG는 HTML의 살아있는 표준에서 작업을 계속하기를 원했습니다.
WHATWG는 알려진 문제가 있는 상태에서 사양을 동결하기 보다는 사양을 지속적으로 유지하고, 플랫폼을 발전시키기 위해 필요에 따라 새로운 기능을 추가하길 원했습니다.

8. 결국 W3C의 항복

2019년, WHATWG와 W3C는 HTML을 단일 버전으로 공동 작업하기로 합의했습니다.
이것이 바로 하기에 있는 WHATWG의 사이트입니다!
https://html.spec.whatwg.org/




정규표현식으로 시간 절약하기
당신의 하루에 몇 시간을 더하세요
WPF MVVM 패턴, 그리고 Binding
WPF(Windows Presentation Foundation) 시리즈
AWS SAA 준비 - (4) 비용에 최적화된 아키텍처 설계
(정리) Exam Readiness - AWS Solutions Architect Associate
AWS SAA 준비 - (3) 안전한 아키텍처
(정리) Exam Readiness - AWS Solutions Architect Associate
AWS SAA 준비 - (2) 성능이 뛰어난 아키텍처 설계
(정리) Exam Readiness - AWS Solutions Architect Associate
AWS SAA 준비 - (1) 복원력을 갖춘 아키텍처 설계
(정리) Exam Readiness - AWS Solutions Architect Associate
15분 안에 ToC를 구현해보자!
Vanilla JS로 Table of Contents 구현하기
모듈
모던 자바스크립트 Deep Dive | 48장 | 모듈
에러 처리
모던 자바스크립트 Deep Dive | 47장 | 에러 처리
제너레이터와 async/await
모던 자바스크립트 Deep Dive | 46장 | 제너레이터와 async/await
프로미스
모던 자바스크립트 Deep Dive | 45장 | 프로미스
REST API
모던 자바스크립트 Deep Dive | 44장 | REST API
Ajax
모던 자바스크립트 Deep Dive | 43장 | Ajax
비동기 프로그래밍
모던 자바스크립트 Deep Dive | 42장 | 비동기 프로그래밍
타이머
모던 자바스크립트 Deep Dive | 41장 | 타이머
Set과 Map
모던 자바스크립트 Deep Dive | 37장 | Set과 Map
디스트럭처링
모던 자바스크립트 Deep Dive | 36장 | 디스트럭처링
브라우저의 렌더링 과정
모던 자바스크립트 Deep Dive | 38장 | 브라우저의 렌더링 과정
스프레드 문법
모던 자바스크립트 Deep Dive | 35장 | 스프레드 문법
이터러블
모던 자바스크립트 Deep Dive | 34장 | 이터러블
7번째 데이터 타입 Symbol
모던 자바스크립트 Deep Dive | 33장 | 7번째 데이터 타입 Symbol
String
모던 자바스크립트 Deep Dive | 32장 | String
RegExp
모던 자바스크립트 Deep Dive | 31장 | RegExp
Date
모던 자바스크립트 Deep Dive | 30장 | Date
Math
모던 자바스크립트 Deep Dive | 29장 | Math
DOM
모던 자바스크립트 Deep Dive | 39장 | DOM
Number
모던 자바스크립트 Deep Dive | 28장 | Number
배열
모던 자바스크립트 Deep Dive | 27장 | 배열
이벤트
모던 자바스크립트 Deep Dive | 40장 | 이벤트
ES6 함수의 추가 기능
모던 자바스크립트 Deep Dive | 26장 | ES6 함수의 추가 기능
클래스
모던 자바스크립트 Deep Dive | 25장 | 클래스
this
모던 자바스크립트 Deep Dive | 22장 | this
빌트인 객체
모던 자바스크립트 Deep Dive | 21장 | 빌트인 객체
strict mode
모던 자바스크립트 Deep Dive | 20장 | strict mode
클로저
모던 자바스크립트 Deep Dive | 24장 | 클로저
프로토타입
모던 자바스크립트 Deep Dive | 19장 | 프로토타입
함수와 일급 객체
모던 자바스크립트 Deep Dive | 18장 | 함수와 일급 객체
실행 컨텍스트
모던 자바스크립트 Deep Dive | 23장 | 실행 컨텍스트
생성자 함수에 의한 객체 생성
모던 자바스크립트 Deep Dive | 17장 | 생성자 함수에 의한 객체 생성
프로퍼티 어트리뷰트
모던 자바스크립트 Deep Dive | 16장 | 프로퍼티 어트리뷰트
let, const 키워드와 블록 레벨 스코프
모던 자바스크립트 Deep Dive | 15장 | let, const 키워드와 블록 레벨 스코프
전역 변수의 문제점
모던 자바스크립트 Deep Dive | 14장 | 전역 변수의 문제점
스코프
모던 자바스크립트 Deep Dive | 13장 | 스코프
함수
모던 자바스크립트 Deep Dive | 12장 | 함수
원시 값과 객체의 비교
모던 자바스크립트 Deep Dive | 11장 | 원시 값과 객체의 비교
객체 리터럴
모던 자바스크립트 Deep Dive | 10장 | 객체 리터럴
타입 변환과 단축 평가
모던 자바스크립트 Deep Dive | 9장 | 타입 변환과 단축 평가
제어문
모던 자바스크립트 Deep Dive | 8장 | 제어문
연산자
모던 자바스크립트 Deep Dive | 7장 | 연산자
데이터 타입
모던 자바스크립트 Deep Dive | 6장 | 데이터 타입
표현식과 문
모던 자바스크립트 Deep Dive | 5장 | 표현식과 문
변수
모던 자바스크립트 Deep Dive | 4장 | 변수
Iteration와 Generator
코드스피츠 77 ES6+ 3화 참조
WHATWG 탄생 배경
WHATWG, W3C, HTML의 관련에 대한 역사
프론트엔드(FE) 면접 질문 정리
FE관련 면접 질문 및 답변 정리한 내용입니다.
쿠버네티스(kubernetes, k8s) 용어 정리
쿠버네티스(kubernetes, k8s) 용어 정리
젠킨스(Jenkins) 정리
젠킨스(Jenkins) 정리
Docker 용어 정리
Docker 용어 정리
Git 용어 정리
Git 용어 정리
반응형 웹 디자인(Responsive Web Design)
CSS responsive 에 대하여
JS this에 대하여
this에 대해 알아보자
SQL*PLUS에 대하여
SQL*PLUS 정의 및 사용방법
Oracle에서 SQL Plan 확인하기
Oracle에서 SQL Plan을 확인해보자