How to become a MediaWiki hacker/ko

이 문서는 개발자가 미디어위키 코어 및 미디어위키 확장 개발에 기여하는 데 필요한 기본 기술을 배우도록 돕기 위해 작성되었습니다.

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

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

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

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

미디어위키는 PHP 프로그래밍 언어로 작성되었으며, 일부 지원 도구는 배치 파일, 쉘 스크립트, makefiles 및 파이썬 등을 포함하는 다른 언어들로 작성되었습니다. 클라이언트 JavaScript 라이브러리로 jQuery를 사용합니다.

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

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

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



개발 환경 구축하기
You can install and develop MediaWiki on Linux, Windows, or macOS using any of the three solutions below.

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

도커 개발 환경

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

You can also try the experimental mwcli tool which sets up Docker with a few simple commands and provides basic orchestration functionality for MediaWiki Docker containers. With this you can easily add extensions and features to your container.

If you run it from Windows, Docker shares files between your Windows filesystem and the container filesystem. This can cause MediaWiki to be very slow if you are using WSL2 based engine, due to the poor performance of its shared directory implementation. If you have Windows Pro, you can switch to the Hyper-V backend in the settings of Docker Desktop for better filesystem performance.

An even faster way to run MediaWiki using Docker in Windows (speeds comparable to manually installing) is to clone MediaWiki and run Docker inside WSL (or install and run  inside of WSL). That way there is no shared filesystem overhead. To develop the MediaWiki codebase that is inside the Docker container you can establish a remote connection to it and open the MediaWiki WSL folder in that is in the container using VSCode or PhpStorm.

Vagrant 를 이용한 가상 머신

 * MediaWiki Vagrant – Run MediaWiki on a Linux virtual machine using Vagrant.

Vagrant allows you start a MediaWiki instance you can develop as well as allowing you to add and develop any of 250+ extensions - all with a single command. This saves you installation and configuration time compared to manually installing. It runs faster than Docker on Windows, however slower than Docker on WSL or manually installing.



수동 설치
MediaWiki can be developed by installing it natively on your system and editing its code. Installing it natively means it will run faster than Docker or Vagrant, but it will take more time to configure.


 * 1)  — Check hardware requirements and install dependencies
 * 2)  — Git에서 최신 소스 코드를 다운로드합니다.
 * 3)  — 설치 및 초기 구성을 계속합니다.
 * 4) * 경고 및 오류를 조기에 표시하도록 환경에서 다양한 디버그 모드를 설정합니다.



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


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


 * PHP 리소스:
 * PHP 매뉴얼 — 많은 다양한 언어로 사용가능합니다.
 * PHP coding conventions 미디어위키 커뮤니티 내에 존재합니다.


 * 알아야 할 것:
 * 미디어위키의  스크립트는 미디어위키 객체와 클래스가 로드된 기본 PHP 인터프리터를 제공합니다.
 * 또한 MediaWiki의  스크립트는 PsySH를 기반으로 하는  를 대체합니다. Manual:Shell.php

데이터베이스
많은 기능에는 어느 정도의 데이터베이스 조작이 필요하므로 MySQL/MariaDB에 익숙해야 하는 경우가 많습니다.


 * MySQL/MariaDB 배우기
 * MySQL 튜토리얼 — MySQL 레퍼런스 메뉴얼부터
 * MySQL at Wikibooks.


 * MySQL/MariaDB 리소스
 * MySQL Reference Manuals — 많은 다양한 언어로 사용가능합니다.
 * MariaDB Knowledge Base
 * PHP coding conventions 미디어위키 커뮤니티 내에 존재합니다.


 * 알아야 할 것:
 * 당신의 MySQL/MariaDB 코드를 시험해 보세요.
 * 미디어위키는 현재 MySQL 및 MariaDB를 기본 데이터베이스 백엔드로 사용합니다. PostgreSQL 및 SQLite와 같은 다른 DBMS도 지원합니다. 그러나 거의 모든 개발자는 MySQL/MariaDB를 사용하고 다른 DB를 테스트하지 않기 때문에 정기적으로 중단됩니다. 따라서 특별히 다른 DB에 대한 지원을 개선하려는 것이 아니라면 패치를 테스트할 때 MySQL/MariaDB를 사용하는 것이 좋습니다. 후자의 경우 MySQL/MariaDB가 손상되지 않도록 주의하십시오(또는 끔찍하게 비효율적인 쿼리 작성). MySQL/MariaDB는 모두가 사용하는 것이기 때문입니다.



자바스크립트와 CSS
JavaScript와 CSS는 프론트 엔드 코드에서 어디에나 존재합니다. MediaWiki에서 작업하기 위해 JavaScript, jQuery 및 CSS에 익숙할 필요는 없지만 작업하기로 선택한 항목에 따라 필요할 수도 있습니다.


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


 * 자바스크립트와 CSS 리소스
 * JavaScript 코딩 규칙 MediaWiki 커뮤니티 내에 존재합니다.
 * CSS coding conventions MediaWiki 커뮤니티 내에 존재합니다.

MediaWiki
MediaWiki 코드 기반은 크고 일부는 보기 흉합니다. 그것에 압도되지 마십시오. 처음 시작할 때 기능을 작성하거나 코드의 작은 영역에만 영향을 미치는 버그를 수정하는 것을 목표로 하십시오.


 * 미디어위키의 기본과 필독서:
 *  — MediaWiki의 주요 구성 요소와 이들이 서로 어떻게 작동하는지에 대한 높은 수준의 개요입니다.
 *  — 보안 코드를 작성하는 이유와 방법에 대한 개요입니다.


 * 미디어위키 리소스:
 * — 중요한 파일 목록과 더 자세한 정보에 대한 링크.
 * — 후크 목록입니다. 코드베이스의 어떤 부분이 어떤 작업을 수행하는지 찾으려는 경우 관련 후크를 검색하는 것이 좋은 출발점인 경우가 많습니다.
 * — 미디어위키 커뮤니티의 일반적인 코딩 규칙에 대한 개요입니다.


 * 코드 문서 (class reference) — 코드 및 코드 주석에서 자동으로 생성된 문서.
 * — 미디어위키 디버깅 가이드
 * — 라이브 미디어위키 개체와 상호 작용하는 도구입니다.



미디어위키 확장기능
미디어위키 확장 코드에서 작업하기로 선택한 경우 다음 링크에서 추가 정보를 제공합니다.


 * 미디어위키 확장 기본
 * 확장 개발 — MediaWiki용 확장을 작성하는 방법.
 * 확장 작성 튜토리얼


 * 미디어위키 확장 리소스:
 * 확장에 대한 모범 사례
 * MediaWiki 확장 개발에 대한 간략한 소개 — MediaWiki 확장을 만드는 방법에 대한 비디오 프레젠테이션(slides).
 * MediaWiki 확장 프로그램 만들기 — MediaWiki용 확장 프로그램을 개발하는 방법, 모범 사례 및 MediaWiki 커뮤니티에 참여하는 방법을 다룹니다. 2011년 2월, 미디어위키 개발자 허브로부터
 * 확장 개발자를 위한 도움말 개발자 허브

MediaWiki skins
Manual:How to make a MediaWiki skin is helpful if you choose to work on MediaWiki skins.



같이 보기

 * 저장소 전체에서 코드 검색
 * – 이 문서의 정보를 완전히 읽었으면 개발자 허브의 정보로 넘어갈 차례입니다.