본문 바로가기

기여하기

업데이트됨

번역일: 2026년 9월 7일

이 페이지는 원문이 업데이트되어 번역이 갱신되었습니다.

원문 수정
2026년 9월 5일
번역 갱신
2026년 9월 7일

기여하기

버그 리포트

활발한 협업을 장려하기 위해 Laravel은 GitHub 이슈보다 문제를 직접 해결하는 풀 리퀘스트를 강력히 권장합니다. 실제로 대부분의 공식 패키지에서는 GitHub 이슈 기능 자체가 비활성화되어 있습니다.

문제를 발견했다면, 이슈를 등록하는 대신 문제를 해결하는 풀 리퀘스트를 직접 생성해 주세요. 풀 리퀘스트에는 제목과 함께 문제 및 해결 방법에 대한 명확한 설명이 포함되어야 합니다. 가능한 한 관련 정보를 충분히 담고, 문제를 재현할 수 있는 코드 샘플도 함께 첨부해 주세요. 풀 리퀘스트의 목적은 나 자신뿐 아니라 다른 사람들도 문제와 해결 방법을 쉽게 이해하고 검증할 수 있도록 하는 데 있습니다.

만약 문제를 어떻게 고쳐야 할지 모르겠다면, 코딩 에이전트(AI 코딩 도구)에게 문제 상황을 설명하고 이를 활용해 풀 리퀘스트를 시도해 보는 것도 좋은 방법입니다.

풀 리퀘스트는 "draft(초안)" 상태가 아닌 "ready for review(리뷰 준비 완료)" 상태로 표시되고, 새로운 기능에 대한 모든 테스트가 통과된 경우에만 리뷰가 진행됩니다. "draft" 상태로 오래 방치되어 활동이 없는 풀 리퀘스트는 며칠 후 자동으로 닫힙니다.

Laravel 소스 코드는 GitHub에서 관리되며, Laravel의 각 프로젝트는 다음과 같은 저장소로 나뉘어 있습니다.

지원 관련 질문

Laravel의 GitHub 이슈 트래커는 Laravel 사용법을 묻거나 도움을 요청하는 용도가 아닙니다. 사용법이나 도움이 필요하다면 아래 채널을 이용해 주세요.

어떤 브랜치에 보내야 할까요?

모든 버그 수정은 버그 수정을 지원하는 최신 버전(현재는 13.x)으로 보내야 합니다. 다가올 릴리스에서만 존재하는 기능을 고치는 경우가 아니라면, 버그 수정을 master 브랜치로 보내서는 안 됩니다.

현재 릴리스와 완전히 하위 호환되는 사소한(minor) 기능은 최신 안정 브랜치(현재는 13.x)로 보낼 수 있습니다.

주요(major) 신규 기능이나 하위 호환성을 깨트리는 기능은 항상 다음 릴리스를 준비 중인 master 브랜치로 보내야 합니다.

컴파일된 에셋

laravel/laravel 저장소의 resources/cssresources/js처럼 컴파일 과정을 거치는 파일에 영향을 주는 변경 사항을 제출할 때는, 컴파일된 결과물 파일 자체를 커밋하지 마세요. 컴파일된 파일은 용량이 크기 때문에 메인테이너가 실질적으로 리뷰하기 어렵고, 이 점을 악용해 악성 코드를 Laravel에 주입하는 데 사용될 수도 있습니다. 이러한 위험을 방지하기 위해, 컴파일된 파일은 항상 Laravel 메인테이너가 직접 생성하고 커밋합니다.

AI 기반 기여

Laravel에 제출되는 모든 풀 리퀘스트에 감사드립니다. 다만, 사람의 신중한 검토와 고민 없이 대부분 AI에 의해 생성된 대규모 기여는 받아들여지지 않습니다.

프레임워크에 크거나 복잡한 기여를 할 때 AI 도구의 도움을 받기로 했다면, 제출하기 전에 반드시 그 결과 코드를 스스로 충분히 검토하고, 테스트하고, 이해하고 있어야 합니다.

풀 리퀘스트 설명(description)은 반드시 기여자 본인이 직접 작성해야 합니다. AI가 생성한 설명이 포함된 풀 리퀘스트는 닫힙니다.

전적으로 AI가 생성한 이슈나 풀 리퀘스트를 대량으로 등록하는 행위는 용납되지 않습니다. 이러한 풀 리퀘스트는 리뷰 없이 바로 닫히며, 해당 사용자는 저장소에서 차단될 수 있습니다.

기여자 여러분이 기존 코드베이스를 충분히 익히고, 커뮤니티와 소통하며, 자신이 해결하려는 문제를 스스로 이해하고 신중하게 고민한 결과를 담은 풀 리퀘스트를 제출해 주시기를 권장합니다.

보안 취약점

Laravel에서 보안 취약점을 발견하셨다면, security@laravel.com으로 이메일을 보내주세요. 접수된 모든 보안 취약점은 신속하게 처리됩니다.

코딩 스타일

Laravel은 PSR-2 코딩 표준과 PSR-4 오토로딩 표준을 따릅니다.

PHPDoc

아래는 유효한 Laravel 문서 블록(doc block)의 예시입니다. @param 속성 뒤에는 공백 두 칸, 인자 타입, 다시 공백 두 칸, 그리고 변수명이 순서대로 이어진다는 점에 주목하세요.

/** * Register a binding with the container. * * @param string|array $abstract * @param \Closure|string|null $concrete * @param bool $shared * @return void * * @throws \Exception */ public function bind($abstract, $concrete = null, $shared = false) { // ... }

네이티브 타입 선언을 사용해서 @param이나 @return 속성이 중복되는 경우에는 해당 속성을 제거해도 됩니다.

/**
* Execute the job.
*
* @return void
*/
public function handle(AudioProcessor $processor): void
{
// ...
}

다만 네이티브 타입이 제네릭(generic) 타입인 경우에는, @param이나 @return 속성을 통해 구체적인 제네릭 타입을 명시해 주세요.

/**
* Get the attachments for the message.
*
* @return array<int, \Illuminate\Mail\Mailables\Attachment>
*/
public function attachments(): array
{
return [
Attachment::fromStorage('/path/to/file'),
];
}

StyleCI

코드 스타일이 완벽하지 않아도 걱정하지 마세요! 풀 리퀘스트가 병합된 후에는 StyleCI가 스타일 관련 수정 사항을 자동으로 Laravel 저장소에 반영해 줍니다. 덕분에 우리는 코드 스타일이 아니라 기여의 실제 내용에 집중할 수 있습니다.

행동 강령

Laravel의 행동 강령은 Ruby의 행동 강령을 바탕으로 만들어졌습니다. 행동 강령을 위반하는 사례를 발견하면 Taylor Otwell(taylor@laravel.com)에게 신고할 수 있습니다.

  • 참여자는 자신과 다른 의견에 대해 관용적인 태도를 가져야 합니다.
  • 참여자는 자신의 언어와 행동에 인신공격이나 개인을 비하하는 발언이 없도록 해야 합니다.
  • 다른 사람의 말과 행동을 해석할 때는 항상 선의를 가지고 있다고 가정해야 합니다.
  • 괴롭힘으로 합리적으로 판단될 수 있는 행동은 용납되지 않습니다.

이 문서는 Laravel 공식 문서(MIT)를 한국 개발자를 위해 번역·재구성한 것입니다.

번역일: 2026년 9월 7일