이 문서는 대략적인 무들의 구조와 여러분들이 어떻게 무들에 공헌할 수 있는지에 대해 설명하고 있습니다.
아직은 다소 미흡하지만, 결국은 좀 더 나은 문서로 선보일 수 있을 것입니다!
본 문서의 차례
시스텡 운영자의 관점에서, 무들은 다음과 같은 기준에 의하여 설계되었습니다.
- 광범위하고 다양한 운영체제하에서 작동
대개의 웹어플리케이션이 동작되는 운영체제(Linux, Windows, Mac OS X)는 MySQL과 PHP가 연동되어 운영되는 데, 무들 역시 이러한 기반하에서 개발되어 왔습니다. 또한 무들은 데이터베이스의 축약을 위해 ADOdb 라이브러리를 사용하고 있는데, 이는 곧 무들이 열 개 이상의 서로 다른 브랜드의 데이터베이스를 사용할 수 있다는 것을 의미합니다. (그럼에도, 안타깝게도 아직 이 모든 데이터베이스에 대한 테이블 설정만큼은 해결하지 못하고 있습니다.)
- 설치, 운영 및 개선이 용이
초기 무들의 원형(1999)은 향상된 객체지향적 웹어플리케이션 서버인 Zope을 이용하여 만들어졌었습니다. 안타깝게도 그 기술은 매우 훌륭해 보였지만, 공부하기에는 너무 어려웠고 또 시스템 관리자의 관점에서 그리 유연하지도 않았습니다. 반면 PHP언어는 (특히 여러분들이 다른 스크립트 언어로 프로그램을 해 보셨다면) 매우 쉽게 접근할 수 있는 언어였습니다. 일찌감치 학급 지향의 설계를 피하려고 마음먹었고 초보자도 이해할 수 있을 정도로 간단하게 만들려고 하였습니다. 명확한 이름의 함수 라이브러리와 일관성있는 스크립트 파일 형태를 활용함으로써 코드는 가급적 재활용할 수 있게 하였습니다. 또한 PHP는 설치하기도 쉽고(바이너리 코드는 어떤 운영체제에서도 실행 가능) 대부분의 웹 호스팅 서비스에서도 기본으로 지원하고 있다는 점에서 매우 광범위하게 쓸 수 있습니다.
- 구판에서 새판으로의 판올림이 용이
(플러그인 모듈의 버전뿐만 아니라) 설치되어 있는 버전 및 내장된 기능을 기억하고 있기 때문에 (예를 들어 데이터베이스의 명칭을 바꾸고 새로운 필드를 첨가하는 등) 새로운 버전으로 판올림하기가 용이합니다. 예를 들어 유닉스에서 CVS 를 이용한다면, 명령어 라인에서 "cvs update -d" 만 입력하고 사이트의 홈페이지를 한 번 접속하는 것만으로 판올림이 끝납니다.
- 발전 가능한 모듈형 구조
무들은 모듈, 테마, 활동, 인터페이스 언어, 데이터베이스 스키마 그리고 배움터 유형 등의 다양한 기능을 포함하고 있습니다. 또한 어느 누구라도 프로그램 수준에서 다른 기능을 첨가할 수 있고 그 것을 개별적으로 배포할 수 있는 융통성을 허용합니다. 이에 대해서는 다음 절에서 더 논의하기로 하겠습니다.
- 다른 시스템과의 용이한 병합 사용가능
두드러진 무들의 특징 중 하나는 어떤 배움터도 거기에 사용되는 모든 파일들을 서버에 있는 단 하나의 디렉토리에 저장하고 관리한다는 것입니다. 이는 시스템관리자가 개별 교사에게 파일 수준에서 Appletalk, SMB, NFS, FTP, WebDAV 등과 같은 것을 통해 쉼없이 자료를 제공할 수 있는 융통성을 갖게 해 줍니다. 인증 모듈은 무들이 LDAP, IMAP, POP3, NNTP 그리고 다른 데이터베이스 등을 사용자 정보 자원으로 사용할 수 있게 허용합니다. 하지만 아직 더 할 일이 남아 있습니다. 추후 무들의 새 판에는 다음과 같은 기능들을 첨가하려고 합니다: (IMS와 SCORM을 포함해) 무들의 데이터를 XML 기반한 형태로 작성하여 내보내고 불러들이기 편하게 만든다; 화면을 표시함에 있어 좀 더 다양한 문서 표현방식을 도입한다.(이렇게 하면 다른 웹사이트와 통합해서 쓸 때 무리없이 잘 보이게 됩니다).
앞에서 언급하였듯이 무들은 여러 기능이 모여 만들어진 모듈형 프로그램입니다. 여러분이 프로그래머가 아니더라도 무들을 고치거나 기여할 수 있는 방법이 있습니다.
학습 활동
무들에서 가장 중요한 모듈들이 들어었는 곳이 있는데, 그 곳이 바로 'mod' 디렉토리 입니다. 여기에는 숙제(assignment), 간편 설문(choice), 포럼, 퀴즈, 자원 그리고 설문조사의 7 개의 기본 모듈이 들어 있습니다. 각 모듈은 각기 또 하부 디렉토리를 가지고 있는데, 여기에는 다음과 같은 지원 요소와 나름대로 독특한 실행 스크립트를 가지고 있습니다.
- mod.html: 설정 혹은 갱신 할 때 보여지는 화면 설계 형식
- version.php: 메타 정보 및 판올림시 제공되는 코드의 정의
- icon.gif: 모듈을 위한 16x16 아이콘
- db/: (각 데이터베이스 유형에 맞는) 데이터 및 데이터 베이스 테이블에 필요한 모른 SQL 덤프
- index.php: 배움터에서 보여지는 목록 페이지
- view.php: 특정 인스턴스를 보여주기 위한 페이지
- lib.php: 모듈에 의해 정의되는 모든 함수는 여기에 존재해야 함. 만약 모듈명이 widget으로 불려지면, 요구되는 함수는 다음과 같다:
- widget_add_instance() - 위젯의 새로운 인스턴스를 첨가하기 위한 코드
- widget_update_instance() - 기존 인스턴스를 갱신하기 위한 코드
- widget_delete_instance() - 인스턴스를 삭제하기 위한 코드
- widget_user_outline() - 인스턴스를 통해 사용자의 내용에 대한 요약을 제공
- widget_user_complete() - 인스턴스를 통해 사용자의 내용에 대한 상세 내용을 출력
- 혹시 있을지도 모르는 충돌을 막기 위하여, 모듈 함수명은 widget_ 로 시작하였으며 정의된 상수명은 WIDGET_ 로 시작하도록 하였습니다.
- 최근, 각 모듈은 자체에서 쓰이는 문자열을 포함하는 언어 파일들을 포함하게 되었습니다. 아래를 참조하기 바랍니다.
새 학습 활동 모듈을 시작하는 가장 손쉬운 방법은 mod/newmodule_template.zip를 가지고 시작하는 것입니다. 이 것을 내려 받아 압축을 푼 다음, 그 속에 있는 README를 읽고 시키는 대로 하면 됩니다.
그리고 Activities modules forum on Using Moodle에 알려주시면 고맙겠습니다.
테마
테마(혹은 스킨)은 사이트의 겉모양을 규정합니다. 주 배포판에 상당수의 간단한 테마들이 있긴하지만, 여러분이 원한다면 여러분이 좋아하는 색이나 로고, 스타일, 그림등을 이용하여 자신만의 테마를 만들 수 있습니다.
각 테마는 "theme" 이라는 이름의 하부 경로에 있으며 대체로 다음과 같은 파일들이 들어 있습니다.
- config.php: CSS파일들의 작동을 설정. 외부 혹은 내부의 CSS파일을 표준 테마 혹은 상위 테마에 덧붙여 자신만의 테마를 구성할 수 있음.
- styles.php: CSS 파일과의 교량 역활을 함. 아무 것도 수정할 필요 없음.
- header.html: 각 페이지 상단에 삽입됨. 예를들어 페이지 상단에 로고를 첨가하거나 그 내용을 수정하고 싶을 때 필요
- footer.html: 각 페이지의 하단에 삽입됨
- styles_color.css: 색상의 특성에 관한 CSS 스타일 지정
- styles_fonts.css: 글자 유형, 크기, 줄간 간격 등을 지정
- styles_layout.css: 페이지의 면모, 위치 등을 지정
- styles_moz.css: Mozilla의 특징적인 둥근 모서리에 대한 CSS 스타일 지정
현재 쓰고 있는 무들에 자신만의 새로운 테마를 만들어 쓰는 법
- 기존에 있는 테마 폴더를 다른 이름으로 복사. 가급적 표준테마 하나를 복사해서 시작하는 것이 좋음
- config.php를 편집하여 자신의 용도에 맞게 설정
- CSS 파일들을 편집하여 쓰고 싶은 스타일을 첨부
- header.html 및 footer.html 를 편집하여 새로운 로고나 화면틀을 변경
한편 무들을 판올림(Upgrade)할 때 약간 테마가 깨질 수 있다는 사실을 기억하시기 바랍니다. 따라서 여러분 나름대로의 테마를 사용할 때는 배포정보(release note)를 주의깊게 읽어보아 주시기를 부탁드립니다.
무들의 테마에 대한 좀더 자세한 내용은 Moodle Docs안의 테마에 관한 문서를 참조해 주시기 바랍니다.
이에 대한 좀 더 자세한 논의는 Themes forum on Using Moodle를 참조하시기 바랍니다. 만일 여러분이 정말 멋있는 테마를 만들고 이를 다른 사람들과 공유하고 싶다면, 이를 Zip 파일로 묶어 테마포럼에 올려주십시오!
언어
Moodle은 국제화 할 수 있도록 설계되었습니다. 인터페이스의 한 부분으로 표현되는 각 '문자열' 혹은 문서 '페이지'는 언어팩으로부터 가져와 보여집니다. 개개의 언어는 'lang'디렉토리 하부에 있습니다. 다음은 이러한 언어팩의 구성을 보여줍니다.
lang/en - 영어를 위한 모든 파일이 담겨져 있는 디렉토리(예: 영어의 경우)
- moodle.php - 주 기능을 담당하는 모든 문자열
- assignment.php - 숙제 모듈을 위한 문자열
- choice.php - 선택 모듈(choice module)을 위한 문자열
- forum.php - 포럼 모듈을 위한 문자열
- quiz.php - 퀴즈 모듈을 위한 문자열
- resource.php - 자원 모듈을 위한 문자열
- survey.php - 설문조사 모듈을 위한 문자열
- .... 기타 필요한 여러 모듈을 위한 문자열들
문자열은 이러한 파일들로 부터 get_string() 또는 print_string() 함수를 통해 제어됩니다. 각기 다른 언어에서의 다양한 명령을 지원하기 위해 각 문자열은 변수치환을 지원합니다.
예 : $strdueby = get_string("assignmentdueby", "assignment", userdate($date));
만일 해당 언어팩에 그 문자열이 없으면, 자동적으로 동일한 영문 문자열로 대치합니다.lang/en/help - 전체적인 도움말 페이지(팝업창으로 뜸)가 있는 디렉토리
주 도움말 페이지는 이 곳에 위치하지만, 각 모듈에 따른 특별한 도움말은 각기 모듈에 속한 하부 경로에 존재하게 됩니다.
도움말 버튼 기능을 이용하여 필요한 페이지에 도움말 버튼을 삽입할 수 있습니다.
예 : helpbutton("text", "Click here for help about text");
그리고 모듈에서는 다음과 같이 삽입할 수 있습니다.
helpbutton("forumtypes", "Forum types", "forum");
무들에 접속한 상태에서 "Check this language"에 있는 관리 툴을 이용하여 언어를 편집할 수 있음을 주목하십시오. 이를 이용하면 새로운 언어팩을 만들 수 있을 뿐만 아니라, 기존의 언어팩도 쉽게 바꿀 수 있습니다. 만일 여러분이 새로운 언어팩을 만들고자 할 때는 Martin Dougiamas에게 연락해 주시면 고맙겠습니다.
또 Languages forum on Using Moodle에 글을 게재하셔도 됩니다.
만일 여러분이 지속적으로 언어팩을 관리하기를 원하신다면, 저는 여러분에게 직접 관련된 파일을 관리하실 수 있도록 무들의 원본 코드에 접속할 수 있는 CVS 쓰기 권한을 제공할 것입니다.
데이터베이스 스키마(Schemas)
미리 정의된 테이블을 가진, 잘 작동되는 데이터베이스를 제공함으로서, 무들에 있는 단순한 SQL은 어떤 다양한 데이터베이스 브랜드에서도, 전 세계 어디에서나 잘 작동하게 되어있습니다.
데이터 베이스에서 새로 생성되는 테이블의 자동 생성문제는 무들의 초기 설정과정을 통해서 해결하려고 노력하고 있습니다. 모든 데이터베이스가 서로 다르기 때문에, 작동기반에 독립적인 방법으로 이 문제를 해결할 방도는 아직 없습니다. 각 데이터베이스에서 이러한 자동생성 기능을 지원하기 위하여, 특정 데이터베이스의 무들 테이블을 생성하는데 필요한 SQL 목록을 schema로 만들어 둡니다. 이러한 파일들은 개개 모듈의 db안에 하부 디렉토리 속에 있거나 lib/db에 있습니다.
현재는 MySQL과 PostgreSQL만 이러한 방법으로 원활하게 지원되고 있습니다.(다른 브랜드의 데이터베이스에 대한 schema는 아무도 만들지 않았습니다.)
무들1.2 판은 데이터베이스 종류와 무관한 새로운 방법인 XML 스키마를 쓸 예정인데, 이렇게 되면 불필요한 일이 많이 줄어들게 될 것입니다.
배움터 유형
무들은 현재 주별, 주제별 그리고 사회적 형태의 세 배움터 유형을 지원합니다.
다른 코드들 보다 좀 엉성한 것들(그래서 좀 삐걱거리는 것들)이 있는데 이들을 새롭게 다듬는 것은 시간문제 입니다.
만일 여러분들이 필요하거나 바람직한 또 다른 형태의 배움터에 대한 좋은 생각이 있으시면, 제게 연락을 해 주시기 바랍니다. 그러면 추후 배포판에서 가능한 한 구현할 수 있도록 최선을 다하겠습니다.
문서 및 논문 기고
지침서, 기사, 학술적 논문 혹은 어떠한 것이라도 무들에 관한 것을 기고하고 싶으시다면, 언제나 환영합니다!
여러분의 웹에 게재하신 후, 반드시 http://moodle.org/에도 게재해 주시길 부탁드립니다.
버그 추적자로 참여
마지막으로, 저는 여러분이 http://moodle.org/bugs에 "버그 추적자"로 등록하고, 발견되는 오류에 대해 서로 의견을 나누고 잘 못된 것을 바로잡을 수 있기를 간절히 바랍니다.
"버그"에는 비단 무들의 현재 판에 있는 소프트웨어적인 버그뿐만 아니라, 기존 기능에 대한 건설적인 비판이나 새로운 아이디어, 요구되는 기능 등도 포함됩니다. 오픈소스의 아름다움이란 바로 모든 사람이 어떤 방법으로든 참여하고, 모든 사람들이 즐길 수 있는 좀 더 나은 제품이 만들어지도록 서로 돕는데 있다고 생각합니다. 이 프로젝트에 적극적인 여러분의 참여를 바라고 있습니다!
무들을 애용해 주셔서 감사합니다!
수석 개발자, Martin Dougiamas
Version: $Id$