아래의 태터캠프 후기 글에서도 언급했지만 스킨 규격에 대한 내 생각을 한번 죽 정리해보고자 한다.
기존 스킨 규격의 특징
- 각종 치환자와 블록 태그들의 집합체.
- 드림위버나 나모 같은 위지윅 에디터에서 바로 편집할 수 있다. HTML을 가장 높은 자유도로 편집 가능.
TTSKIN 2.0 (draft)의 특징
- 치환자 및 블록 태그 최소화, HTML의 자유도를 거의 없앰.
- CSS Selector만 맞추면 디자인과 마크업을 분리할 수 있다. (웹표준 기반의 개발방법론에서 스킨 규격은 publisher의 역할이라고 볼 수 있다.)
- 각 서비스가 큼지막한 치환 영역을 '알아서' 렌더링한다. 스킨이 같아도 각 서비스가 원하는 기능을 맘대로 집어넣을 수 있는 여지가 많다.
기존 스킨의 문제점
- 여러 서비스에서 같은 규격을 사용하다보니, 각자가 원하는 기능을 추가하기 위해선 치환자를 추가해야 하는데 어떤 형식으로 만들어야 하는지에 대한 정의가 없기 때문에 통일성이 없다. (고로 스킨을 다 따로 만들어야 한다)
- 치환자 및 블록 태그의 종류가 너무 많고, 어떤 것은 html 태그 덩어리를 생성하고 어떤 것은 단순한 문자열이나 숫자만 생성하고, 또 어떤 것은 특정 html 태그 안의 속성을 생성하기도 하는 등 사용법이 다 달라 이미 있는 스킨을 고치기는 비교적 쉬워도 새로 만들기는 어렵다.
TTSKIN 2.0의 문제점
- 디자이너가 편집 결과물을 직접 보면서 작업하기 힘들다.
- 순수한 웹표준 기반 개발방법론에 익숙하지 않은 사람들은 '이게 뭥미?' 상태.
- HTML에 대한 지나친 제약?
개발자(스킨 규격을 해석하는 소프트웨어를 만드는 사람들)가 원하는 것
- 해석 속도가 빠르게 나오도록 구현할 수 있어야 한다.
- php 코드 등이 실행될 여지를 없애서 보안성을 높여야 한다.
- 여러 서비스에서 서로 다른 기능을 구현하더라도 하나의 스펙으로 추상화하여 다같이 통용될 수 있다면 멋질 것이다. (새로운 기능 추가에 대한 확장성이 뛰어나야 한다)
디자이너(스킨 규격을 이용해 스킨을 만드는 사람들)가 원하는 것
- 일단 무조건 만들기 쉬운 게 짱. 이해하기 쉬워야 한다.
- 만들면서 레퍼런스를 복잡하게 뒤질 필요가 없으면 좋겠다. (외울 것이 적어야 한다)
- 실제 스킨이 적용된 결과를 바로바로 보면서 작업할 수 있어야 한다.
- HTML과 CSS를 최대한 맘대로 건드릴 수 있으면 좋겠다.
사용자가 원하는 것
- 기존에 있는 스킨 가지고 내가 원하는 그 무엇(위젯이 될 수도 있고, 라이선스 표시 같은 것이 될 수도 있고)을 쉽게 넣을 수 있었으면 좋겠다.
- 비록 개발자나 디자이너 수준은 아니더라도 좀 쉽게 내맘대로 조작하면 좋겠다.
- 하나의 스킨 가지고 여러 곳에 복사해서 써먹을 수 있으면 좋겠다.
Trade-off가 일어나는 부분
- HTML에 대한 자유도 vs. 서비스 독립성
- 뛰어난 확장성을 가진 규격 vs. 디자이너들의 이해도
몇 가지 대안들
- Django Template처럼 간단한 프로그래밍이 가능한 템플릿 엔진을 도입한다.
- 기존에 있는 것을 쓰기엔 무거워 보이고, 직접 구현하기에도 만만하지 않음.
- 확장성도 뛰어나고 HTML 자유도도 높지만 역시 디자이너들의 이해도 문제가 걸림.
- 기존 스킨 규격에서 치환자들만 다시 정리한다.
- 어쩌면 여러 면에서 가장 현실적인 대안.
- 확장성을 어떻게 확보할 것인지가 관건.
- 그냥 다 포기하고 각 서비스 알아서 독자 규격 사용하도록 놔둔다.
- Project Tattertools의 의미 퇴색이 문제.
매우 괴상한 규격을 만들긴 했지만 나름대로 이런 고민들을 하고 있다. 좋은 의견 있으면 꼭 댓글이나 트랙백으로 달아주었으면 좋겠고, 차기 스킨 규격 제작에 꼭 반영할 수 있도록 노력하겠다.
사실 이런 걸 두고 정말 '공학적인 문제' 또는 '정답 없는 문제'라고 말할 수 있겠지. ㅠ_ㅠ 이런 문제를 학교 수업에서는 거의(?) 다루지 않는데, 과연 교수님들한테 이런 상황을 설명하면 어떤 대답을 하실지 궁금하다. ('그냥 너가 알아서 해' 이런 거 빼고.)