Skip to content

Hướng dẫn đóng góp (Contribution Guide)

Báo cáo lỗi (Bug Reports)

Để khuyến khích hợp tác tích cực, Laravel đặc biệt khuyến khích pull request, không chỉ báo cáo lỗi. Pull request chỉ được review khi đánh dấu "ready for review" (không ở trạng thái "draft") và tất cả test cho tính năng mới đều pass. Pull request không hoạt động ở trạng thái "draft" sẽ bị đóng sau vài ngày.

Tuy nhiên, nếu bạn gửi bug report, issue phải chứa:

  • Tiêu đềmô tả rõ ràng về vấn đề
  • Thông tin liên quan nhiều nhất có thể
  • Code mẫu minh họa vấn đề

Mục đích của bug report là giúp bạn — và người khác — dễ dàng tái tạo bug và phát triển bản sửa.

GỢI Ý

Nếu phát hiện cảnh báo sai từ DocBlock, PHPStan, hoặc IDE khi sử dụng Laravel, không tạo GitHub issue. Thay vào đó, gửi pull request để sửa.

Source code Laravel được quản lý trên GitHub, với repository cho từng project:

Câu hỏi hỗ trợ (Support Questions)

GitHub issue tracker của Laravel không dùng để hỗ trợ kỹ thuật. Thay vào đó, sử dụng các kênh sau:

Thảo luận phát triển Core (Core Development Discussion)

Bạn có thể đề xuất tính năng mới hoặc cải tiến trong GitHub discussion board của Laravel framework repository. Nếu đề xuất tính năng mới, hãy sẵn sàng implement ít nhất một phần code.

Thảo luận không chính thức diễn ra trong kênh #internals trên Laravel Discord server. Taylor Otwell, maintainer của Laravel, thường có mặt vào các ngày trong tuần từ 8am-5pm (UTC-06:00 hoặc America/Chicago).

Nên gửi PR vào Branch nào? (Which Branch?)

  • Bug fixes → Gửi vào phiên bản mới nhất hỗ trợ bug fix (hiện tại 12.x). Không gửi vào master trừ khi sửa tính năng chỉ tồn tại trong bản sắp phát hành.
  • Minor features (backward compatible) → Gửi vào branch stable mới nhất (hiện tại 12.x).
  • Major features hoặc tính năng có breaking changes → Luôn gửi vào branch master.

Compiled Assets

Nếu thay đổi ảnh hưởng đến file compiled (như resources/css hoặc resources/js trong repo laravel/laravel), không commit file compiled. Do kích thước lớn, chúng không thể được review thực tế. Tất cả file compiled sẽ được generate và commit bởi Laravel maintainer.

Lỗ hổng bảo mật (Security Vulnerabilities)

Nếu phát hiện lỗ hổng bảo mật, gửi email cho Taylor Otwell tại taylor@laravel.com. Tất cả lỗ hổng bảo mật sẽ được xử lý nhanh chóng.

Coding Style

Laravel tuân theo chuẩn PSR-2 coding standard và PSR-4 autoloading standard.

PHPDoc

Ví dụ documentation block hợp lệ (chú ý @param theo sau bởi 2 space, kiểu argument, 2 space, tên biến):

php
/**
 * 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)
{
    // ...
}

Khi @param hoặc @return dư thừa do native types, có thể bỏ:

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

Khi native type là generic, chỉ rõ generic type:

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

StyleCI

Đừng lo lắng nếu code style chưa hoàn hảo! StyleCI sẽ tự động merge các sửa style vào Laravel repository sau khi pull request được merge.

Quy tắc ứng xử (Code of Conduct)

Quy tắc ứng xử của Laravel dựa trên Ruby code of conduct. Mọi vi phạm có thể báo cáo cho Taylor Otwell (taylor@laravel.com):

  • Người tham gia phải tôn trọng các quan điểm đối lập.
  • Người tham gia phải đảm bảo ngôn ngữ và hành động không chứa công kích cá nhân.
  • Khi diễn giải lời nói và hành động của người khác, luôn giả định thiện ý.
  • Hành vi có thể hợp lý coi là quấy rối sẽ không được dung thứ.