이걸 적을까 말까 하다가 이 문제를 제기한 사람이 없는것 같아서 적어봅니다.
제가 제로보드로 사이트를 구성하면서 느꼈던 몇가지 문제점들에 대해서 적어보겠습니다.
1. 스킨 디렉토리 구조가 너무 비효율적이다.
스킨 만들기 시작하기도 전에 질렸습니다; 난해한 디렉토리 구조에 너무 복잡했기 때문이죠.
제로보드는 모듈/위젯/애드온으로 각각을 구분하는데 이 프로그램들의 기능들을 보면 '서비스형/관리형/기능성/부가모듈/기타' 나누는데 이 모든 프로그램이 단지 모듈과 위젯/애드온으로만 구분되어 정리되어 있습니다.
프로그램이야 큰 상관은 없지만 자주 업데이트가 일어나는 스킨의 경우 상당히 복잡합니다.zeXE / modules / 모듈프로그램 / skins / 스킨종류 / 스킨파일
zeXE / modules / 모듈프로그램 / skins / 스킨종류 / images / 이미지파일
등등...각각 모듈별로 따로 놓고 봤을때 이러한 구조는 크게 문제는 안될듯 보입니다.
그러나 제로보드가 통합사이트 구축을 목표로 만들어진 프로그램인 만큼, 전체적인 시야에서 본다면 이러한 구조는 비효율적이라 생각됩니다. 수정해야 하는 프로그램들의 스킨을 찾는것도, 관리 하는 것도 복잡하기 때문이죠. 스킨 폴더를 실제 사용하는 사람들은, 홈페이지에 접속하는 네티즌도 아니고 프로그램을 개발하신 개발자도 아닌 사이트를 만드는 유저입니다. 프로그램의 통일성이나 보기 좋은 폴더 보다는 관리/유지가 쉬운 방법이 낫지 않을까요.
2. XE에서 사용된 명칭(용어)이 모호하거나 다른 단어로 쓰여 혼란을 준다.
문서화/매뉴얼 포럼에서는 용어집의 필요성을 이야기한 분이 계시더군요. 서로다른 명칭(용어)이 사용되면 독자 입장에서도 혼란이 오기 때문이죠.
제로보드에서도 스킨과 프로그램에서 많은 용어들이 의미가 불분명하거나 또는 다르게 사용되거나 하는 변수들, 속성들이 많습니다.
예를들어 웹에서 타이틀(title)이라 하면 사이트의 제목으로 통합니다만, 제로보드의 CSS에서는 글 제목에서도 리플 제목에서도 사용됩니다. 또하나 예를들면, 제로보드 프로그램상으론 'vote'라 사용되는 '추천' 변수는 스킨에서는 'recommend' 또는 'vote'로 혼용되어 사용되고 있습니다.
이런 명칭/용어들의 통일성은 프로그램 개발이나 스킨의 공유시에 가장 중요하다고 생각합니다.
3. 제로보드는 스킨에 많은 자유도가 없다.
4. 이외에...
유저가 변형한 프로그램들에 관해서.
이 부분은 제로보드의 자유도가 떨어지기 때문에 일어나는 점이라 생각됩니다. 제로보드는 지금으로서도 충분히 강력한 보드임에는 틀림없습니다만, 문제가 되는 부분은 제로보드에서 옵션으로 또는 간단한 기능 추가등을 유저가 관리자화면에서 변경할 수 없기 때문에 php 코드를 직접변경하는 것으로 이뤄지고 있습니다.
이러한 유저의 개인 변형 프로그램(기존 제로보드에서 약간 수정하여)이 없기 하기 위해서는 제가 볼땐 2가지 방법이 있습니다.
1. 제로보드의 관리자 설정의 자유도를 높이는 것과 2. 제로보드는 기본적인 관리 기능과 API 기능만을 제공하면서 유저의 모듈 개발을 독려하는 것이죠.
1번의 경우 각 모듈을 계속 개발/보수해야하고, 이렇게 관리해야 하는 프로그램들은 계속 늘어나기 시작할 겁니다. 그럼 나중에 가면 그 양은 엄청나게 커질것입니다. 이러한 대규모 프로젝트를 오픈프로젝트로 모두 통제한다는 것은 정말 피곤하고 사실상 거의 불가능하지 않나 생각해 봅니다. (제로님이 제로보드 코어와 모듈, 위젯, 애드온들 모두 직접 감독하고 끌어 나가기에..)
제로보드는 오픈소스를 표방한 만큼 유저들의 자유로운 개발을 장려하고 뒷받침 해줘야 한다고 생각합니다. 그러면서 제로님의 역할은 안정성을 확인하여 공식 모듈로 인정해주는 것이 더 중요해지겠죠. 사실 모듈이라는 것도 이미 완성형이기 때문에 다른게 나온다거나 하기는 힘들 수도 있습니다. (제로보드 기본 게시판 모듈 외에 새로운 게시판 모듈을 개발하는게 낭비다 라고 생각될 정도로...)
제 개인적으로는 제로보드는 기본 기능과 강력한 API의 지원이면 충분하다고 생각하고 있습니다. 새로운 기능 추가는 유저의 몫으로 맡겨야 진정한 오픈소스 프로그램이 되지 않을까요.
그런점에서 제로보드에서 API 부분의 매뉴얼화가 시급하다고 생각합니다.
각 함수의 정의와 사용법 간단한 예제 등... 이런 상세한 매뉴얼이 지원 된다면 아마 좀더 다양한 프로그램들이 나오지 않을까요.
이런것을 생각해본건 와우의 애드온을 보면서 였습니다.
Ace 라는 강력한 애드온 API가 있어서 지금은 정말 다양하고 강력한 기능의 애드온들이 많이 나왔죠. 요즘 애드온은 거의다 Ace를 기반으로 만들어질 만큼...
Ace 애드온은 각각의 기능별로 구분되어서 라이브러리화(표준화) 되어서 필요한 기능만 받아서 사용하도록 되어 있습니다.
이런식의 개발방법은 정말 좋은 방법이라 생각합니다.
아시는 것도 있을테고 이미 논의된 것인데 제가 못보고 적은것들도 있을지도 모르지만; (사이트를 살펴보긴 했는데 제가 못 찾은건지 아니면 권한이 있어야 하는건지 모르겠네요;)
아무튼 스킨 만들다 지쳐서 몇글자 적고 갑니다...;
앞으로도 좋은 프로그램 만들어 주시길... :)
(수정. 보기 불편할거 같아서 정리좀 했습니다;)
동감입니다. 일단 함수세트에 어떤 함수들이 포함되고 함수들이 기본기능이 무엇인지만이라도 명시되었으면 하는 바램입니다. 함수이름을 A~Z까지 늘어놓고 함수의 기능과 args만이라도 달아놓는다면 한결 좋지 않을까 싶네요. 현재로써는 ZBXE안에 어떤 함수가 들어있고 어떤 기능을 하는지 '전혀'파악을 못하고 있습니다. (물론, 실력이 부족해서 그렇기도 합니다.. ^^;;;)
덧붙여서, 스킨이 모든 모듈, 혹은 위젯에 종속적인것도 역시 불만이기 합니다. 화면에 보이는 부분을 수정하기 위해서 포함되어 있는 여러 요소의 위치를 파악하고 찾아들어가서 스킨과 CSS를 보면서 다시 분석하고 적용하고 확인하고 다시 분석하고를 반복하는것도 상당히 피곤한 일이더군요.. 이 부분도 시간이 지나면서 개선되기를 바래봅니다.
물론 현재 상황에서 기대하기는 이른감이 있습니다만.. 레이아웃 + 위젯 + 모듈스킨이 일체화된 형태의.. 예를들면 윈도우즈OS에서 말하는 '테마'와 같은 개념이 도입되는것도 좋지않을까 싶습니다. '(가칭)스킨테마'안에서 뼈대가 되는 부분들의 CSS를 공통분모로 가지고 있고, 나머지 부분을 각각의 요소에 종속되게 구성한다면 만드는 사람의 입장에서도 한결 간편하고, 만들어진 것을 사용하는 입장에서도 일관된 선택이 가능해지지 않을까.. 하고 생각해봅니다.. ^^;;
개인적인 의견을 덧붙이자면...
전체 구조의 틀을 변경한다는 건 의미없는 일일테지만...
전체 구조 및 변수, 함수 정의에 대한 포럼이나 CVS 형태의 관리는
도움이 되지 않을까 싶습니다.
간단한 계산이나 달력 클래스나 함수도 나날이 발전되어 갈 수 있고
일부 정의들이 반영된다면 전체 구조에 영향을 미치지 않는 범주내에서 더욱 원활한 의사소통이 되리라 생각되어 집니다.
그리고, 제 개인적인 추가바램은 (현재 구조로는 좀 불가능하지 않을까 싶지만...)
하나의 보드에 여러가지 스킨을 입히는 구조도 지원되었으면 합니다. (레이아웃외)
어차피 같은 TABLE의 게시판을 2가지 이상의 구조로 보여줄 필요성이 있어서요... ^^;
<!--@if($module_info->default_style == 'webzine')-->
<!--#include("./style.webzine.html")-->
<!--@elseif($module_info->default_style == 'gallery')-->
<!--#include("./style.gallery.html")-->
<!--@elseif($module_info->default_style == 'forum')-->
<!--#include("./style.forum.html")-->
<!--@elseif($module_info->default_style == 'blog')-->
<!--#include("./style.blog.html")-->
<!--@else-->
<!--#include("./style.list.html")-->
<!--@end-->
지금 묘듈이나 그런것은 기본적으로 XE안에 있는 묘듈이 기초가 되어서 (그리고 또 사용자들이 만드시거나) 사용자들이 XE에 필요한 파일들을 만들 수 있도록 하고있어요..
그리고 제로보드는 오픈인데
1.1.0 : 새로운 기능의 추가등이 포함되는 것인데 기본 구조를 크게 바꾸지 않는 이슈들에 대해 등록합니다.
1.0.1 : 바로 전 짝수 버전(1.0.0 이나 1.0.2) 등에서 발생한 버그만 해결하는 마이너 업그레이드 이슈를 등록합니다.
이렇게 한다고 되어있거든요. 그래서 프로그램 추가나 그런것은 없을것 같고 그냥 버그 수정이나 개인이 원한다면 기본패키지에서 제거해주는 식인것 같아요..
아마도 이제부터는 프로그램 추가나 그런것은 없을것 같아요..^^
그리고 API부분의 메뉴얼화가 심각하다고 하셨는데 제가 메뉴얼팀이라 여러 상황을 알거든요..
그런데 그런것은 개발그룹에서 해야 한다고요..