How to become a MediaWiki hacker/ko

이 문서는 개발자가 MediaWiki core 및 MediaWiki 확장 개발에 기여하는 데 필요한 기본 기술을 배우도록 돕기 위해 작성되었습니다. MediaWiki로 작업할 때 대부분의 경우, 자신이 무엇을 하고 있는지 정말로 알지 못하는 한 MediaWiki 코어를 해킹하고 싶지 않음에 유의하십시오.

Wikimedia 개발을 시작하는 주요 경로는 멘토링을 제공하는 Wikimedia 프로젝트에 기여하는 것입니다. 멘토링이 없는 대안은 좋은 첫 번째 버그를 수정하는 것입니다.

이미 미디어위키 개발에 익숙하다면, 를 방문하십시요.

미디어위키 공동체에 참여하는 다른 방법을 보려면  항목을 참고하십시오.

개요
미디어위키는 위키백과, 위키백과의 자매 프로젝트, 그리고 전 세계 수천 개의 위키 사이트를 지원하는 소프트웨어입니다.

미디어위키는 PHP 프로그래밍 언어로 작성되었습니다. 등을 포함하는 다른 언어들로 작성되었습니다. 클라이언트 JavaScript 라이브러리로 jQuery를 사용합니다.

MediaWiki는 주로 LAMP 플랫폼 의 대부분의 운영 체제에서 실행됩니다. MediaWiki는 주로 MySQL 또는 MariaDB 데이터베이스 서버를 사용합니다.

개발은 오픈 소스 스타일로 진행됩니다. 는 온라인에서 대부분 조정되고 Wikimedia Foundation에서 지원하지만 자원 봉사 커뮤니티 개발자도 큰 역할을 합니다.


 * 다양한 메일링 목록과 IRC 채널들 에서 개발 논의가 이루어지고 있습니다. 메인 개발자 목록은 여기 있습니다. wikitech-l. 주요 개발자 IRC 채널은 및 입니다.
 * 소스 코드는 Git 개정 관리 시스템을 사용하여 관리되며 here에서 볼 수 있습니다.
 * 코드 검토는 에서 수행되며 여기에서 볼 수 있습니다. 이 튜토리얼을 따르십시오 패치를 제출하기 위해 Git 및 Gerrit를 설정하십시오.
 * 버그 보고 및 작업은 Phabricator에서 관리되며 여기에서 볼 수 있습니다.

이 페이지는 또한 미디어위키 기여자가 되는데 도움을 줄것입니다. 이 문서는 튜토리얼이 아닙니다; 이 문서는 단지 필요한 것을 배울 수 있는 다양한 장소를 알려줍니다.

개발 환경 구축하기
대부분의 프로젝트는 Git과 Gerrit를 사용합니다. Gerrit tutorial에 따라 개발자 계정을 설정하세요. 그런 다음 코드를 다운로드하고, 변경하고, 테스트하고, 패치를 제출할 수 있습니다. 사전 구성된 가상 머신 설정(Docker 또는 Vagrant)을 사용하거나 수동 구성 접근 방식을 사용하여 개발 환경을 설정하는 두 가지 방법이 있습니다.

도커 개발 환경

 * MediaWiki Docker – Docker를 사용하여 MediaWiki를 실행합니다(Linux, Windows 또는 macOS 호스트에서 사용할 수 있음). This is the recommended method.

You can also try the experimental mwcli tool which provides basic orchestration functionality for MediaWiki docker containers.

Vagrant 를 이용한 가상 머신

 * Vagrant 설치 — 이 단계는 Linux 가상 머신(Linux, Windows 또는 Mac 호스트에서 사용할 수 있음) 내부의 모든 요구 사항과 함께 MediaWiki 서버를 설치합니다.

Vagrant is a powerful tool, but it is more complex and less robust than Docker, and significantly more resource-intensive. It is mainly aimed at developers who need to set up complex, flexible environments, e.g. for testing the interaction of multiple extensions.

수동 설치

 * 설치 요구 사항 — 하드웨어 요구 사항을 확인하고 LAMP, MAMP 또는 WAMP 서버(Linux, Mac 또는 Windows, Apache, MySQL/MariaDB 및 PHP 포함)를 설치합니다.
 * — Git에서 최신 소스 코드를 다운로드합니다.
 * — 설치 및 초기 구성을 계속합니다.
 * 경고 및 오류를 조기에 표시하도록 환경에서 다양한 디버그 모드를 설정합니다.

MediaWiki 기능을 개발하기 위해 Wikipedia 데이터베이스 덤프를 다운로드할 필요는 없습니다. 사실, 많은 경우에 특별히 제작된 몇 개의 테스트 페이지가 있는 거의 비어 있는 데이터베이스를 사용하는 것이 더 쉽습니다. 그러나 어떤 이유로 Wikipedia 사본을 갖고 싶다면 덤프받기 를 할 수 있습니다.

PHP
MediaWiki는 PHP로 작성되었으므로 MediaWiki의 핵심을 해킹하려면 PHP에 익숙해져야 합니다.


 * PHP 배우기
 * PHP 튜토리얼 — 다른 수많은 언어로 이용할 수 있습니다. PHP에 대한 지식은 없지만 다른 객체 지향 프로그래밍 언어로 프로그래밍하는 방법을 알고 있다면 PHP를 쉽게 배울 수 있습니다.
 * PHP Programming at Wikibooks.
 * PHP topic at Wikiversity.


 * PHP 리소스:
 * PHP 매뉴얼 — Available in many different languages.
 * PHP coding conventions within the MediaWiki community.


 * 알아야 할 것:
 * The script  in MediaWiki provides a basic PHP interpreter with MediaWiki objects and classes loaded.
 * Also, the script  in MediaWiki is a replacement of   based on PsySH, see Manual:Shell.php

데이터베이스
Many features require some amount of database manipulation, so you'll often need to be familiar with MySQL/MariaDB.


 * MySQL/MariaDB 배우기
 * MySQL 튜토리얼 — From the MySQL 5.0 reference manual.
 * MySQL at Wikibooks.


 * MySQL/MariaDB 리소스
 * MySQL Reference Manuals — Available in many different languages.
 * MariaDB Knowledge Base
 * Database coding conventions within the MediaWiki community.


 * Stuff to know :
 * 당신의 MySQL/MariaDB 코드를 시험해 보세요.
 * MediaWiki currently uses MySQL and MariaDB as the primary database back-end. It also supports other DBMSes, such as PostgreSQL and SQLite. However, almost all developers use MySQL/MariaDB and don't test other DBs, which consequently break on a regular basis. You're therefore advised to use MySQL/MariaDB when testing patches, unless you're specifically trying to improve support for another DB. In the latter case, make sure you're careful not to break MySQL/MariaDB (or write queries that are horribly inefficient in it), since MySQL/MariaDB is what everybody else uses.

자바스크립트와 CSS
JavaScript and CSS have become omnipresent in front-end code. You don't have to be familiar with JavaScript, jQuery and CSS to work on MediaWiki, but you might need to, depending on what you choose to work on.


 * 자바스크립트와 CSS 배우기
 * JavaScript and CSS at Wikibooks.
 * jQuery 가동하기 — jQuery 튜토리얼
 * Learning JavaScript — references and sources.


 * 자바스크립트와 CSS 리소스
 * JavaScript coding conventions within the MediaWiki community.
 * CSS coding conventions within the MediaWiki community.

MediaWiki
The MediaWiki code base is large and some parts are ugly; don't be overwhelmed by it. When you're first starting off, aim to write features or fix bugs which only touch a small region of code.


 * MediaWiki basics and must-reads :
 *  — A high-level overview of the main components of MediaWiki and how they work with each other.
 *  — An overview of why and how to write secure code.


 * 미디어위키 리소스:
 * — A list of important files and links to more detailed information.
 * — A list of hooks. If you're trying to find what part of the codebase does something, often a good place to start is by searching for the related hooks.
 * — An overview of general coding conventions within the MediaWiki community.


 * Code documentation ( class reference ) — Automatically generated documentation from the code and code comments.
 * — 미디어위키 디버깅 가이드
 * — A tool to interact with MediaWiki objects live.

미디어위키 확장기능
If you choose to work on MediaWiki extensions code, the following links provide more information.


 * MediaWiki extensions basics:
 * Developing extensions — How to write an extension for MediaWiki.
 * Extension writing tutorial


 * MediaWiki extensions resources:
 * Best practices for extensions
 * A brief introduction to MediaWiki extension development — A video presentation about how to create a MediaWiki extension (slides).
 * Making a MediaWiki extension — Covers how to develop an extension for MediaWiki, best practices, and how to engage the MediaWiki community. 2011년 2월, 미디어위키 개발자 허브로부터
 * Help for extension developers on the Developer Hub

같이 보기

 * Search for code across repositories
 * – When you've thoroughly read the information in this article, it's time to move on to the information in the developer hub.