미디어위키 |
|
사이트 종류 | <colbgcolor=#fff,#1f2023> 위키위키 |
개설일 | 2002년 1월 25일 ([age(2002-01-25)]주년) |
버전 | 1.42.1[기준] |
크기 | 37MB |
운영체제 | Microsoft Windows | macOS | Linux | FreeBSD | OpenBSD | 솔라리스 |
개발 언어 | PHP |
사용 언어 | 459개 # |
영리 여부 | 비영리 |
소유자 | 위키미디어 재단, 미디어위키 봉사자 |
라이선스 | GPLv2 |
관련 사이트 |
[clearfix]
1. 개요
위키미디어 재단에서 개발, 배포하는 세계적인 설치형 위키 프로그램으로 오픈소스 위키 엔진. PHP 기반이고, 라이선스는 GPLv2+를 사용한다. 이 엔진을 쓰는 가장 잘 알려진 위키는 위키백과로, 이 엔진 자체가 처음부터 위키백과를 위해 만들어진 것이다. 단, 미디어위키가 위키백과에 처음 쓰인 건 2002년으로, 미디어위키 개발 전의 초창기에는 유스모드 위키를 사용했다.2. 특징
파일 기반이 아닌 DB 데이터베이스를 사용한다. 기본적으로 MySQL을 사용하나, PostgreSQL, SQLite도 사용 가능하다. 위키백과를 위해 개발되고 최신 기술 도입이 빠른 엔진이라서 성능 최적화가 그다지 좋지 않다. 개인 레벨 이상의 규모를 가진 위키중 다수가 이 엔진을 사용하는 이유는 미디어위키 특유의 강력한 기능과 DB를 지원하는 위키 엔진 중 미디어위키 이외에 서비스용 위키에 쓸만한 엔진이 거의 없기 때문이다. 한국어 지원 여부도 마찬가지로, wikimatrix.org의 통계에 따르면 위키 엔진중 절반 가까이가 DB를 지원하지만, 한국어 지원 엔진은 모두 합쳐도 10여종에 불과하다. 당장 the seed는 비공개 소프트웨어이며 대체 엔진으로 imitated-seed를 사용할 수 있지만 나무마크가 완전히 지원되지 않으며 버그도 많고, 오픈나무는 아무리 미디어위키가 최적화 등 조금 부족한 면이 있지만, 미디어위키 대비 부족한점이 한두가지가 아니다.설치 및 사용을 위하여 MySQL 5.5.8 이상, PHP 7.4.3 이상을 최소 사양으로 요구한다.
국내에 웹호스팅은 XpressEngine이나 워드프레스 등의 주요 PHP 솔루션들의 최소사양이 버전 5.3 이상으로 올라감에 따라 PHP 버전을 5.3 대로 올렸으나 5.5 버전대는 지원하지 않는 곳이 있으니 사전에 확인이 필요하다.
최신 안정 버전은 1.41.0 버전이고, 최신 LTS 버전도 마찬가지로 1.39.1 버전이다.
미디어위키의 버전을 살펴보면 LTS(Long Term Support)라고 표기된 버전이 있는데, 이 버전은 다른 버전보다 지원기간이 길다. 보통 미디어위키의 프로그래밍이 이전 버전에서 크게 변경되면 일반 버전은 1년, LTS라고 표기된 버전은 3년간 지원이 계속된다. 알파 버전은 미리보기 버전이며, 일반적인 방법으론 다운로드가 불가능하고 Git를 통해 받아야한다.
메일링 리스트에 등록하면 버전업이나 보안패치시 메일을 통해 알려준다.
다른 위키 엔진[2]보다 매우 다양한 기능들을 제공한다. 특히 분류(Category) 기능은 상당히 유용하게 잘 짜여져있다. 1.2.5 미만의 모니위키의 경우 분류를 하려면 분류용 문서를 따로 만든 뒤 일일이 수동으로 추가해야 되지만,[3] 미디어위키는 분류 문서를 만들어 두고 문서 아무데나 대충 "분류:XXX"만 입력해 두면 자동으로 분류된다.
여담으로 설치기에 문화어가 존재한다.
3. 장단점
3.1. 장점
- 개발 및 개선이 활발하게 이루어지고 있다.
- 검색 기능이 강력하다.
- 현존하는 위키 엔진 중에서는 가장 많은 수의 기능을 지원한다.
- 확장 기능(Extension)을 통해 여러가지 기능 추가가 가능하다.
- 여러 가지 스킨을 쓸 수 있다.
- 인스톨러 페이지가 지원되어 설치의 복잡함이 줄어들었다.[4]
- 대부분의 기능이 한국어 번역과 지원이 잘 되어 있다. 만약 번역이 되어 있지 않은 메시지가 있다면 이곳의 MediaWiki 프로젝트에서 번역할 수 있다.
- VisualEditor라는 기능을 통해 WYSIWYG을 지원한다.
- 서버 파일이나 스킨을 수정할 필요 없이 사용자가 직접 CSS를 수정하고 자바스크립트를 적용할 수 있다. 다만 개별 사용자별 CSS는 설정 파일에서 켜주어야 한다.
3.2. 단점
- 전체 위키문법이 상당히 복잡하다.[5] 특히 표 그리기 문법이 복잡하기로 악명이 높으며, 주석 문법[6]도 골치 아픈 편이다. 그리고 HTML 태그를 그대로 쓰거나 HTML과 유사한 <태그></태그> 마크업을 쓰는 경우도 많다. 다만 HTML 문법은 CSS나 자바스크립트를 적용하거나 데이터를 크롤링하기 훨씬 수월하므로 양날의 검이라고도 볼 수 있다.[7][8]
- 확장기능 중 나무마크 확장 기능이 있다. 흔히 오리마크라고 부른다. 유지보수가 안된지 오래되어 일부 지원이 안되는 문법이 있긴 하지만 어려운 문법을 나무위키 문법으로 대체하기에 좋다. 단, 설치 시 문법 충돌이 생길 수 있다.
- 대형 프로젝트를 대상으로 개발되었기 때문에, 소규모로 쓰기에는 상당히 무거운 편이다.
- DB가 필요하다. 이 때문에 개인 PC에 설치하기에는 난이도가 높은 편이다.[9] XAMPP나 APMSETUP, 오토셋과 같은 웹 서버 통합 설치툴을 사용하면 가능하나 해당 툴의 유지 관리가 초보자에게는 어렵다. 다만 미디어위키는 개인 PC에 설치해서 개인용으로 쓰라는 엔진이 아니며, APM 내지 EPM이 설치된 서버 컴퓨터에 설치해서 서비스형 위키를 돌리는 것을 기본 전제로 하는 엔진이다.
- 대부분의 기능이 번역된 위키 엔진답지 않게, 미디어위키 설명서의 영어 이외의 언어 지원이 부실하다. 모니위키보다는 낫지만 도움말은 여전히 부실한 편. 쉬운 문제는 위키백과의 문법 도움말을 사용할 수 있지만, 설치나 스킨, API나 확장기능(Extension) 등의 관리 및 개발자용 도움말은 얄짤없이 공홈에서 봐야 하며 거의 다 영어다.
- 구 버전의 경우 최신 자바스크립트 지원이 부실하다. 서버에서 먼저 자바스크립트를 걸러내는데[10], 이 걸러내는 데 쓰는 문법이 구형인 에크마스크립트2012 문법인지라 최신 문법인 ES6을 쓴다 할지라도 걸러져서 파싱이 안 될 수 있다. 1.36부터 리소스로더의 ES6 지원을 시작하였고 1.41부터 기본적으로 소도구 확장 기능으로 대체 가능한 모듈 문법을 제외한 ES6을 지원한다. 그러나 아직 async/await 등의 ES8 지원이 안 되기 때문에 최신 자바스크립트 개발 동향을 따라가지 못하고 있다.
- 위키문법의 복잡함을 극복하기 위한 차원에서 VisualEditor을 통해 WYSIWYG을 지원하고 있지만, 일반적인 위키 편집방식에 익숙한 유저의 입장에서는 오히려 이 쪽이 더 쓰기 불편한 면도 있다.
- 문서를 삭제한 후 해당 문서가 삭제 전엔 어떤 모습이었는지 볼 수 있는 방법이 없다. 미디어위키 엔진 특성상 문서의 역사 기록까지 전부 지워버리기 때문이다. 이 때문에 삭제 기능은 운영진 전용 기능으로 고정되어 있다.
-
토론 페이지가 스레드형[11]이 아니고 일반 문서에 위키문법을 사용한다.
그냥 넣어주면 안되나 - PHP 언어를 사용하므로 SPA가 지원되지 않는다.
4. 미디어위키를 사용하는 위키
- 위키백과를 포함한 위키미디어 프로젝트: http://www.wikimedia.org
- FANDOM: https://community.fandom.com/ko/wiki - FANDOM식 미디어위키는 미디어위키를 약간 변형한 것이여서 조금 다르다. 물론 위키 문법 같은 것들에는 딱히 지장은 없다.
- Miraheze: https://www.miraheze.org/ - 미디어위키를 사용하는 위키 호스팅 서비스이다.
- 언사이클로피디아: http://en.uncyclopedia.co
- 백괴사전: http://uncyclopedia.kr - 언사이클로피디아의 한국어판이다.
- 리버티게임: http://libertyga.me - 백괴게임의 포크로 시작된 위키이다.
-
디시위키: http://wiki.dcinside.com - 누리위키: http://nuriwiki.net/wiki/
- 스레디키: http://thredic.com/wiki/
-
위키쨩: http://wiki-chan.net - 제이위키: http://jwiki.kr
- 제타위키: http://www.zetawiki.com
- 페미위키: https://femiwiki.com
- 풋케위키: http://footballk.net/mediawiki
- IMFDB: http://www.imfdb.org/wiki/Main_Page
-
IT위키: http://itwiki.kr/ - 우리가요: https://www.urigayo.kr/
- 위키소다: https://wikisoda.com/
-
단어위키: http://wordwiki.net -
위키도키 : http://wkdk.me - 오미니아 위키: http://omnia.kro.kr
-
비트맵 위키: https://wiki.kuzeent.com -
피니위키: http://finiwiki.com - 다미위키: https://wiki.lgyofficial.com
- 샵위키: https://shopwiki.kr
- 웃참위키: https://ootchampedia.miraheze.org
- 루리위키: https://wiki.ruliweb.com
- 디비카페: http://dbcafe.co.kr - Oracle Database 관련 정보 제공
5. 기타 기능
5.1. 편집 필터
-
미디어위키에서는 편집 필터(Abusefilter)라는 시스템이 존재한다. 사용자의 조건[12], 문서의 조건[13], 동작[14] 등 각종 주어진 변수와 문법을 이용하여 조건식을 프로그래밍하여 해당 조건에 맞는 편집을 저장하는 것을 시도하면 편집 필터가 작동한다.
위키백과의 편집 필터 로고
편집 필터를 사용함으로써 문서 훼손이나 뻘문서 생성 등을 방지할 수 있다. 편집 필터가 작동하면 설정에 따라 태그, 경고[15], 불허[16], 차단[17], 모든 권한 해제 등의 조치가 자동으로 취해진다. 조치를 여러 개를 클릭하면 그 조치가 한번에 다 이루어진다. 속도 제한이라는 개념도 존재하는데, 특정 시간 동안 특정 단위로 묶어서[18] 조건에 맞는 편집이 특정 횟수가 넘었을때만 작동한다. 속도 제한을 무시하는 권한이 존재하는데, 이 권한을 가진 사용자에게는 제한이 설정되어 있는 편집 필터는 무용지물이다. 횟수에 따라 조치를 다르게 할 수 있는 설정은 없으며, 굳이 그렇게 한다면 발동 조건은 동일하고 속도 제한과 조치가 다른 편집 필터를 여러 개 만드는 수밖에 없다. 편집 필터 규정을 반복적으로 위반할 시 처벌을 강하게 하는 것도 비슷한 이유로 편집 필터를 여러 개 설정해야 한다.
- 미디어위키에서는 편집 필터가 작동할 경우 편집 필터가 작동한 기록이 남는다. 따라서 장난을 시도한 것도 기록이 남을 수 있다. 위키백과의 예시
5.2. 미디어 위키 알림
나무위키의 위키엔진인 the seed와 비교해 보았을때 상당히 강력한 기능을 가지고 있다. Echo 확장기능을 통해 구현된다. 문서가 되돌려졌을 때 사용자에게 알림을 전달하는 기능이 있고, 그 외에 나무위키에서도 지원하는 사용자 토론이 편집되었을 때 알림을 보내주는 기능과 다른 문서나 토론에서 자신이 언급되었을 때 알려주는 기능도 있다.6. 기타
- 미디어위키와 Invision Power Board(IPB)라는 상용 게시판 소프트웨어를 결합한 Ipbwiki라는 소프트웨어도 있다. 개별 위키 문서의 토론 페이지를 IPB 기반의 게시판으로 바꿔 주고, 위키 본문에 BBCode를 사용할 수 있게 만들어 준다. 물론 미디어위키를 개발한 위키미디어 재단이나 IPB를 만든 Invision Power Services라는 곳과는 무관한 프로그래머들이 두 소프트웨어를 수정, 결합해 내놓고 있다. 그러니 Ipbwiki를 사용하고자 할 경우 주의할 것.
7. 관련 문서
8. 외부 링크
- 공식 사이트: http://www.mediawiki.org
- 한국어 사이트: http://www.mediawiki.org/wiki/MediaWiki/ko
- 다운로드: http://www.mediawiki.org/wiki/Download
- 저장소: https://gerrit.wikimedia.org/g/mediawiki/core
- 깃허브 리포지터리: https://github.com/wikimedia/mediawiki
[기준]
2024년
9월 9일
[2]
모니위키나
도쿠위키 등
[3]
모니위키에도 분류가 있다. 단 분류를 보려면, 역링크를 이용해야 한다. 다만 미디어위키식 분류도 1.2.5에 도입되었다.
[4]
미디어위키 파일을 서버에 올린 후 설정 페이지에 접속하면 알아서 서버의 현황을 확인하여 설치가 가능한지 여부를 알려준다. 모니위키의 설치 페이지보다 더욱 직관적이고 각 항목마다 도움말이 배정되어 설치 자체가 어렵지는 않게 되었다. 그리고 2012년 5월 하반기에 설치 메시지가 한국어로 번역되어 미디어위키 1.20부터 지원한다.
[5]
참고 링크 및
번역 링크 참조. 이는 후술할 오리마크 등의 확장 기능으로 해결 가능하다. MediaWiki의 공식 확장기능인 VisualEditor로 쉽게 편집할 수 있다. 특히 표 만드는 게 많이 어려워서
사이트까지 나왔다.
[6]
나무마크의 경우 주석 문법이 간단하며 주석이 노출될 위치를 지정하지 않아도 된다 그 덕분에 나무위키가 주석이 겁나 많다고 놀림을 받는 원인이 되었다. 하지만 미디어위키 문법은 주석 넣는 것도 복잡하고(<ref>주석 내용</ref>) 주석이 노출될 위치도 반드시 지정을 해줘야 한다(<references />). 그런데 이마저도 미디어위키 기본 탑재 기능이 아니라 주석 확장기능을 추가로 깔아줘야 작동한다. 다만 요즘에는 설치 시에 기본적으로 제공하는 확장기능 중 하나이다. 그리고 주석이 노출될 위치를 별도로 지정하지 않으면 알아서 맨 밑에 표시하지만, 스킨이나 미디어위키:Common.css 문서를 수정하지 않는 이상 나무위키처럼 주석 부분과 본문이 구분되지 않는다.
[7]
예를 들어 밑줄은 <u>밑줄</u>로 써줘야 하고, 각주 또한 <ref>각주</ref>로 써줘야 한다. 이건 일반적으로 사용할 일이 적어서라고 봐야할 듯.
[8]
단
나무마크보다 편리한 부분도 있다. 틀(template)의 경우 미디어위키의 문법이 단순하다. 미디어위키에서는 {{틀 이름|첫 번째 변수|두 번째 변수|...}} 또는 {{틀 이름|변수 이름1=변수1|변수 이름2=변수2|...}} 형식으로 쓰면 틀이 삽입된다. 또 미디어위키는 나무마크와 달리 문서의 목차가 들어갈 위치를 굳이 지정할 필요가 없다. 미디어위키에서는 목차에 관한 명령어를 삽입하지 않을 경우 문단 수가 4개 이상이면 알아서 첫 번째 문단 위에 목차를 생성한다.
[9]
단, sqlite도 지원하기 때문에 sqlite를 사용하면 간단해진다.
[10]
이것을 리소스로더라고 부른다.
[11]
확장기능이 따로 있다.
[12]
사용자 이름, 가진 권한, 계정 생성 후 지난 시간 등
[13]
이름공간, 문서 제목, 편집 후 바이트 차이, 문서에 포함된 내용 등
[14]
문서 편집, 이동, 삭제 등
[15]
편집을 저장하기 전에 한 번 경고를 하며, 이후에도 저장 버튼을 누르면 저장된다. 불허의 하위호환이다.
[16]
편집 필터 조건에 해당되는 편집을 시스템적으로 완전히 막는다.
[17]
편집 필터 조건에 해당하는 편집을 하는 순간 자동으로 차단되며, 당연히 해당되는 편집은 시스템적으로 막히므로 불허의 상위호환이다. 차단 기간은 로그인/비로그인 사용자를 별도로 지정할 수 있다.
[18]
사이트 전체, 문서 단위, 사용자/IP 단위 등