19.6. Đóng góp cho cuốn sách này

Đóng góp của readers giúp chúng tôi cải thiện cuốn sách này. Nếu bạn tìm thấy một lỗi đánh máy, một liên kết lỗi thời, một cái gì đó mà bạn nghĩ rằng chúng tôi đã bỏ lỡ một trích dẫn, trong đó mã trông không thanh lịch hoặc nơi một lời giải thích là không rõ ràng, vui lòng đóng góp lại và giúp chúng tôi giúp đỡ độc giả của chúng tôi. Mặc dù trong các cuốn sách thông thường, sự chậm trễ giữa các lần chạy in (và do đó giữa các sửa lỗi đánh máy) có thể được đo bằng nhiều năm, thường mất hàng giờ đến nhiều ngày để kết hợp cải tiến trong cuốn sách này. Điều này là tất cả có thể do kiểm soát phiên bản và kiểm tra tích hợp liên tục. Để làm như vậy, bạn cần phải gửi một pull request vào kho lưu trữ GitHub. Khi yêu cầu kéo của bạn được hợp nhất vào kho lưu trữ mã của tác giả, bạn sẽ trở thành người đóng góp.

19.6.1. Thay đổi văn bản nhỏ

Các đóng góp phổ biến nhất là chỉnh sửa một câu hoặc sửa lỗi chính tả. Chúng tôi khuyên bạn nên tìm tệp nguồn trong github repo để xác định vị trí tệp nguồn, đây là tệp markdown. Sau đó, bạn nhấp vào nút “Chỉnh sửa tệp này” ở góc trên bên phải để thực hiện các thay đổi của bạn trong tệp markdown.

../_images/edit-file.png

Fig. 19.6.1 Edit the file on Github.

Sau khi bạn hoàn tất, hãy điền vào mô tả thay đổi của bạn trong bảng “Đề xuất thay đổi tệp” ở phía dưới trang và sau đó nhấp vào nút “Đề xuất thay đổi tệp”. Nó sẽ chuyển hướng bạn đến một trang mới để xem xét các thay đổi của bạn (Fig. 19.6.7). Nếu mọi thứ đều tốt, bạn có thể gửi yêu cầu kéo bằng cách nhấp vào nút “Tạo yêu cầu kéo”.

19.6.2. Đề xuất một sự thay đổi lớn

Nếu bạn có kế hoạch cập nhật một phần lớn văn bản hoặc mã, thì bạn cần biết thêm một chút về định dạng cuốn sách này đang sử dụng. Tệp nguồn dựa trên markdown format với một tập hợp các phần mở rộng thông qua gói d2lbook như đề cập đến phương trình, hình ảnh, chương và trích dẫn. Bạn có thể sử dụng bất kỳ trình chỉnh sửa Markdown nào để mở các tệp này và thực hiện các thay đổi của mình.

Nếu bạn muốn thay đổi mã, chúng tôi khuyên bạn nên sử dụng Jupyter để mở các tệp Markdown này như được mô tả trong Section 19.1. Để bạn có thể chạy và kiểm tra các thay đổi của bạn. Vui lòng nhớ xóa tất cả các đầu ra trước khi gửi các thay đổi của bạn, hệ thống CI của chúng tôi sẽ thực hiện các phần bạn cập nhật để tạo ra kết quả đầu ra.

Một số phần có thể hỗ trợ nhiều triển khai framework, bạn có thể sử dụng d2lbook để kích hoạt một framework cụ thể, do đó các triển khai framework khác trở thành các khối mã Markdown và sẽ không được thực thi khi bạn “Run All” trong Jupyter. Nói cách khác, lần đầu tiên cài đặt d2lbook bằng cách chạy

pip install git+https://github.com/d2l-ai/d2l-book

Sau đó, trong thư mục gốc của d2l-en, bạn có thể kích hoạt một triển khai cụ thể bằng cách chạy một trong các lệnh sau:

d2lbook activate mxnet chapter_multilayer-perceptrons/mlp-scratch.md
d2lbook activate pytorch chapter_multilayer-perceptrons/mlp-scratch.md
d2lbook activate tensorflow chapter_multilayer-perceptrons/mlp-scratch.md

Trước khi gửi các thay đổi của bạn, vui lòng xóa tất cả các đầu ra khối mã và kích hoạt tất cả bởi

d2lbook activate all chapter_multilayer-perceptrons/mlp-scratch.md

Nếu bạn thêm một khối mã mới không cho triển khai mặc định, đó là MXNet, vui lòng sử dụng # @tab to mark this block on the beginning line. For example, # @tab pytorch for a PyTorch code block, # @tab tensorflow for a TensorFlow code block, or # @tab all một khối mã được chia sẻ cho tất cả các triển khai. Bạn có thể tham khảo d2lbook để biết thêm thông tin.

19.6.3. Thêm một phần mới hoặc một triển khai khung mới

Nếu bạn muốn tạo một chương mới, ví dụ: học tập củng cố hoặc thêm triển khai các framework mới, chẳng hạn như TensorFlow, vui lòng liên hệ với các tác giả trước, bằng cách gửi email hoặc sử dụng github issues.

19.6.4. Gửi một thay đổi lớn

Chúng tôi khuyên bạn nên sử dụng quy trình git tiêu chuẩn để gửi một thay đổi lớn. Tóm lại, quá trình hoạt động như được mô tả trong Fig. 19.6.2.

../_images/contribute.svg

Fig. 19.6.2 Contributing to the book.

Chúng tôi sẽ hướng dẫn bạn qua các bước chi tiết. Nếu bạn đã quen thuộc với Git, bạn có thể bỏ qua phần này. Đối với cụ thể, chúng tôi giả định rằng tên người dùng của người đóng góp là “astonzhang”.

19.6.4.1. Cài đặt Git

Sách mã nguồn mở Git mô tả how to install Git. Điều này thường hoạt động thông qua apt install git trên Ubuntu Linux, bằng cách cài đặt các công cụ phát triển Xcode trên macOS hoặc bằng cách sử dụng desktop client của GitHub. Nếu bạn không có tài khoản GitHub, bạn cần đăng ký một tài khoản.

19.6.4.2. Đăng nhập vào GitHub

Nhập address kho lưu trữ mã của cuốn sách trong trình duyệt của bạn. Nhấp vào nút Fork trong hộp màu đỏ ở phía trên bên phải của Fig. 19.6.3, để tạo một bản sao của kho lưu trữ của cuốn sách này. Đây là bây giờ * bản sao của bạn* và bạn có thể thay đổi nó bất kỳ cách nào bạn muốn.

../_images/git-fork.png

Fig. 19.6.3 The code repository page.

Bây giờ, kho lưu trữ mã của cuốn sách này sẽ được chia nhỏ (tức là sao chép) vào tên người dùng của bạn, chẳng hạn như astonzhang/d2l-en được hiển thị ở phía trên bên trái của ảnh chụp màn hình Fig. 19.6.4.

../_images/git-forked.png

Fig. 19.6.4 Fork the code repository.

19.6.4.3. Nhân bản kho lưu trữ

Để sao chép kho lưu trữ (tức là, để tạo một bản sao địa phương) chúng ta cần phải có được địa chỉ kho lưu trữ của nó. Nút màu xanh lá cây trong Fig. 19.6.5 hiển thị điều này. Đảm bảo rằng bản sao cục bộ của bạn được cập nhật với kho lưu trữ chính nếu bạn quyết định giữ fork này lâu hơn. Bây giờ chỉ cần làm theo các hướng dẫn trong Cài đặt để bắt đầu. Sự khác biệt chính là bây giờ bạn đang tải xuống * fork riêng của bạn* của kho lưu trữ.

../_images/git-clone.png

Fig. 19.6.5 Git clone.

# Replace your_github_username with your GitHub username
git clone https://github.com/your_github_username/d2l-en.git

19.6.4.4. Chỉnh sửa sách và đẩy

Bây giờ là lúc để chỉnh sửa cuốn sách. Tốt nhất là chỉnh sửa sổ ghi chép trong Jupyter theo hướng dẫn trong Section 19.1. Thực hiện các thay đổi và kiểm tra xem chúng có ổn không. Giả sử chúng ta đã sửa đổi một lỗi đánh máy trong tập tin ~/d2l-en/chapter_appendix_tools/how-to-contribute.md. Sau đó, bạn có thể kiểm tra những tập tin bạn đã thay đổi:

Tại thời điểm này Git sẽ nhắc rằng tập tin chapter_appendix_tools/how-to-contribute.md đã được sửa đổi.

mylaptop:d2l-en me$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   chapter_appendix_tools/how-to-contribute.md

Sau khi xác nhận rằng đây là những gì bạn muốn, hãy thực hiện lệnh sau:

git add chapter_appendix_tools/how-to-contribute.md
git commit -m 'fix typo in git documentation'
git push

Mã đã thay đổi sau đó sẽ nằm trong ngã ba cá nhân của kho lưu trữ. Để yêu cầu bổ sung thay đổi của bạn, bạn phải tạo một yêu cầu kéo cho kho lưu trữ chính thức của cuốn sách.

19.6.4.5. Yêu cầu kéo

Như thể hiện trong Fig. 19.6.6, đi đến ngã ba của kho lưu trữ trên GitHub và chọn “New pull request”. Thao tác này sẽ mở ra một màn hình hiển thị cho bạn những thay đổi giữa các chỉnh sửa của bạn và những gì hiện tại trong kho lưu trữ chính của cuốn sách.

../_images/git-newpr.png

Fig. 19.6.6 Pull Request.

19.6.4.6. Gửi yêu cầu kéo

Cuối cùng, gửi yêu cầu kéo bằng cách nhấp vào nút như thể hiện trong Fig. 19.6.7. Đảm bảo mô tả những thay đổi bạn đã thực hiện trong yêu cầu kéo. Điều này sẽ giúp các tác giả xem xét nó dễ dàng hơn và hợp nhất nó với cuốn sách. Tùy thuộc vào những thay đổi, điều này có thể được chấp nhận ngay lập tức, bị từ chối hoặc nhiều khả năng hơn, bạn sẽ nhận được một số phản hồi về những thay đổi. Một khi bạn đã kết hợp chúng, bạn rất tốt để đi.

../_images/git-createpr.png

Fig. 19.6.7 Create Pull Request.

Yêu cầu kéo của bạn sẽ xuất hiện trong danh sách các yêu cầu trong kho lưu trữ chính. Chúng tôi sẽ cố gắng hết sức để xử lý nó một cách nhanh chóng.

19.6.5. Tóm tắt

  • Bạn có thể sử dụng GitHub để đóng góp cho cuốn sách này.

  • Bạn có thể chỉnh sửa tệp trên GitHub trực tiếp cho các thay đổi nhỏ.

  • Đối với một thay đổi lớn, vui lòng ngã ba kho lưu trữ, chỉnh sửa mọi thứ cục bộ và chỉ đóng góp trở lại một khi bạn đã sẵn sàng.

  • Yêu cầu kéo là cách đóng góp đang được gói lại. Cố gắng không gửi yêu cầu kéo khổng lồ vì điều này khiến họ khó hiểu và kết hợp. Tốt hơn gửi một số cái nhỏ hơn.

19.6.6. Bài tập

  1. Sao và ngã ba kho lưu trữ d2l-en.

  2. Tìm một số mã cần cải tiến và gửi yêu cầu kéo.

  3. Tìm một tài liệu tham khảo mà chúng tôi đã bỏ lỡ và gửi yêu cầu kéo.

  4. Nó thường là một thực hành tốt hơn để tạo một yêu cầu kéo bằng cách sử dụng một nhánh mới. Tìm hiểu làm thế nào để làm điều đó với Git branching.

Discussions