Daybreakin Things

Posted
Filed under 컴퓨터

아래의 태터캠프 후기 글에서도 언급했지만 스킨 규격에 대한 내 생각을 한번 죽 정리해보고자 한다.

기존 스킨 규격의 특징

  • 각종 치환자와 블록 태그들의 집합체.
  • 드림위버나 나모 같은 위지윅 에디터에서 바로 편집할 수 있다. 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의 의미 퇴색이 문제.

매우 괴상한 규격을 만들긴 했지만 나름대로 이런 고민들을 하고 있다. 좋은 의견 있으면 꼭 댓글이나 트랙백으로 달아주었으면 좋겠고, 차기 스킨 규격 제작에 꼭 반영할 수 있도록 노력하겠다.

사실 이런 걸 두고 정말 '공학적인 문제' 또는 '정답 없는 문제'라고 말할 수 있겠지. ㅠ_ㅠ 이런 문제를 학교 수업에서는 거의(?) 다루지 않는데, 과연 교수님들한테 이런 상황을 설명하면 어떤 대답을 하실지 궁금하다. ('그냥 너가 알아서 해' 이런 거 빼고.)