Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to Contribute Go

How to Contribute Go

Go Conference 2016 Spring

Shinji Tanaka

April 23, 2016
Tweet

More Decks by Shinji Tanaka

Other Decks in Technology

Transcript

  1. How to 

    Contribute Go
    Hatena Co., Ltd.
    Shinji Tanaka @stanaka

    View Slide

  2. Shinji Tanaka
    @stanaka / id:stanaka
    Hatena Co., Ltd. CTO
    2

    View Slide

  3. One day, a tool couldn’t start
    • only on Amazon Linux 2016.03
    $ some-tool (linux/386 build)
    Trace/breakpoint trap
    $

    View Slide

  4. >> Trace/breakpoint trap <<

    View Slide

  5. modify_ldt
    • System call called at the boot
    process of Go 386 binary.
    • Disabled on Amazon Linux 2016.04
    $ cat /boot/config-4.4.5-15.26.amzn1.x86_64 \
    | grep MODIFY_LDT
    # CONFIG_MODIFY_LDT_SYSCALL is not set
    https://github.com/golang/go/issues/14795

    View Slide

  6. Die or Contribute
    • O.K. Let’s contribute.

    View Slide

  7. How to fix it (partial diff)
    https://github.com/golang/go/commit/
    0f86d1edfb87fddb2c7f50d177b67f48219151f3

    View Slide

  8. Go’s Assembler
    • It’s like a Plan-9 assembler
    TEXT runtime·profileloop(SB),NOSPLIT,$8
    MOVQ $runtime·profileloop1(SB), CX
    MOVQ CX, 0(SP)
    CALL runtime·externalthreadhandler(SB)
    RET

    View Slide

  9. Merged!!

    View Slide

  10. Go contribute
    Outline

    View Slide

  11. Contribution Guidelines
    IUUQTHPMBOHPSHEPDDPOUSJCVUFIUNM

    View Slide

  12. File an Issues on GitHub
    • https://github.com/golang/go/issues/14795

    View Slide

  13. git codereview
    • Subcommand of git for Go code
    review.
    git codereview change
    git codereview mail
    git codereview …
    [alias]
    change = codereview change
    gofmt = codereview gofmt
    mail = codereview mail
    pending = codereview pending
    submit = codereview submit
    sync = codereview sync

    View Slide

  14. git codereview change
    • Make a change on some branch
    • Same as
    git codereview change
    git checkout -b branch
    git branch --set-upstream-to origin/master
    git commit

    View Slide

  15. Detailed commit message
    runtime: use set_thread_area instead of modify_ldt on linux/386
    linux/386 depends on modify_ldt system call, but recent Linux kernels can disable this
    system call. Any Go programs built as linux/386 crash with the message 'Trace/
    breakpoint trap'.
    The kernel config CONFIG_MODIFY_LDT_SYSCALL, which control enable/disable
    modify_ldt, is disabled on Amazon Linux 2016.03.
    This fixes this problem by using set_thread_area instead of modify_ldt on linux/386.
    Fixes #14795.

    View Slide

  16. git codereview mail
    • Push to go-review
    • Same as
    git codereview mail
    git push origin HEAD:refs/for/master.

    View Slide

  17. Revise the commit
    • change & mail again

    View Slide

  18. Gerrit
    https://go-review.googlesource.com/

    View Slide

  19. Code reviewing #1

    View Slide

  20. Code reviewing #2

    View Slide

  21. Save as Draft & Reply

    View Slide

  22. Merged!!
    • ‘Code-Review +2’ is required.
    • +2 approved
    • +1 LGTM, but not approved
    • Maybe this fix released with Go 1.7?

    View Slide

  23. Let’s Contribute Go
    We’re hiring

    View Slide