Firefox에 대한 저의 첫 번째 공헌입니다.

최초로 my personal blog년에 출판되었다.
지난 몇 년 동안 나는 most of my projects을 개원하여 작은 프로젝트에 공헌을 했다.그러나 나는 줄곧 대형적이고 유행하는 개원 프로젝트에 기여하고 싶었다.지난달에 나는 마침내 이렇게 할 시간이 생겼다. 나는 모질라 Firefox의 자바스크립트 엔진인 Spider Monkey에 패치를 제출했는데 이 패치는 11월 2일에 받아들여졌다.

나는 매일 Firefox를 사용한다.나는 모질라가 가지고 있는 프라이버시와 인터넷 개방의 가치관과 원칙을 감상하고 믿는다.그 밖에 나는 이 프로젝트에서 자원봉사를 하는 사람들을 가장 존중한다.그래서 다른 사람에게 보답하는 느낌이 좋다!
이 직위는 두 가지 목적이 있다.
  • 에 저의 경력을 기록하여 모질라(또는 기타 중대한 개원 프로젝트)에 기여하도록 격려하시기 바랍니다
  • 은 모질라에게 처음으로 공헌한 사람들의 지침이다. 그들은 상당히 복잡한 과정을 가지고 있기 때문에 나는 너와 내가 같은 실수를 반복하기를 원하지 않는다!
  • 오류 찾기


    나의 패치는 this bug을 복구했고, Codetribute을 통해 그것을 찾았다."good first bug"필터를 사용하여 초보자에게 친절한 bug를 찾을 수 있습니다.CodeAttribute는 버그만 나열합니다.그것들은 실제로 모질라의 버그 추적기 BugZilla에 있다.일단 당신이 흥미를 느끼는 버그를 발견하면, 다른 사람이 그것을 연구하고 있는지 확인하세요.없으면 처리하고자 하는 설명을 추가하십시오.
    원본 코드, 프로젝트 구축, 테스트 실행 등을 얻기 위해 명령을 검색해야 합니다.예를 들어 여기는 SpiderMonkey's getting started guide입니다.이것은 Firefox의 프로젝트/모듈에 따라 다릅니다.

    내가 고친 버그.


    JavaScript 해상도 보고서의 오류를 개선하는 데 기여했습니다.다행히도 나는 디지털 구분자라는 자바스크립트의 새로운 특성을 연구하기 시작했다.이렇게 하면 숫자 사이에 밑줄을 추가하여 긴 숫자 문자의 가독성을 높일 수 있습니다.이 기능은 2019년 10월 말에 Firefox 70에서 발표되며, 나의 패치는 Firefox 72에서 발표될 것이다.
    // Hard to read
    let i = 1000000;
    
    // Numeric separators improve readability
    let i = 1_000_000;
    
    ES6 specification은 두 숫자 사이의 숫자 구분자로 밑줄을 사용할 수 있습니다.그 밖에 숫자 문자는 밑줄로 끝날 수 없다.따라서 다음 코드 행은 불법입니다.
    let i = 100__0;
    
    let j = 100_;
    
    Firefox 70에서 이 코드를 실행하면 두 가지 상황에서 동일한 오류가 발생합니다.

    일리가 있다, 그렇지?그러나 Spider Monkey 팀은 이러한 상황에 대해 별도의 오류 메시지를 제공하기를 희망합니다.다음은 Firefox Nightly의 화면 캡처입니다. 여기에는 패치가 포함되어 있습니다.

    이러한 오류 메시지는 상하문에서 감지된 것으로 프로그래머의 기대에 더욱 부합된다.

    수정 프로그램 작성


    고맙게도 모질라는 BugZilla 라인 복구에 대한 상세한 설명을 제공했다.따라서 이것은 단지 몇 줄의 C++ 문제일 뿐이다.이것은 정말 간단하다.
    패치 here을 볼 수 있습니다.
    궁금한 점이 있으면 BugZilla 라인에 댓글을 남기거나 IRC의 해당 팀에 연락하십시오.모질라의 지역사회는 믿을 수 없이 환영하고 남을 돕는 것을 좋아하며 똑똑하고 인내심을 가지고 있다.질문을 망설이지 마라.소통이 관건이다.이것은 내가 이 과정에서 배운 가장 중요한 일 중의 하나다.

    슬라이스 생성


    변경 사항을 완료하고 테스트를 실행하고 제출을 준비하면 로컬 Mercurial 저장소에 제출할 수 있습니다.
    // view the changed files
    hg status
    
    // view your changes
    hg diff
    
    // stage all of your changes
    hg add .
    
    // commit the staged changes
    hg commit -m "Bug 1589072 - Improve numeric separators error messages"
    
    제출 메시지에 대해서는 위 형식을 사용하십시오.이 숫자는 bug의 ID입니다. 다음 메시지는 제목입니다. 모두 BugZilla에서 왔습니다.

    패치 제출


    이것은 가장 어려운 부분이자 나의 최악의 부분이다.모질라는 자신의 인프라를 사용하기 때문에 GitHub에서 Pull 요청을 여는 것처럼 쉽지 않다.
    우선, 당신은 당신의 패치를 제출하여 심사해야 합니다.Mozilla는 이를 위해 Phabricator을 사용합니다.패치를 제출하려면 moz-phab이라는 명령행 도구를 사용해야 합니다.this guide에 따라 Phabricator 계정을 설정하고 moz-phab을 로컬에 설치합니다.
    그런 다음 터미널을 열고 cd을 Firefox 저장소에 넣습니다.moz-phab을 실행하면 변경 사항을 Phabricator로 전송하고 수정판을 만들 수 있습니다.링크가 터미널에 나타납니다.
    Phabricator 사용에 대한 자세한 내용은 workflow walkthrough을 참조하십시오.

    코드 검토


    이제 팀의 누군가가 패치를 볼 때까지 기다려야 합니다.그들은 약간의 변화를 요구하거나 건의를 제기할 수도 있다.필요한 변경을 진행하다.마찬가지로 질문이나 문제가 있으면 팀과 소통하고 해결하세요!

    패치 변경 내용 제출


    이것이 바로 네가 조심해야 할 곳이다.hg commitmoz-phab을 다시 실행하기만 하면 변경 사항을 Phabricator로 전송할 수 있다고 가정할 수 있습니다.만약 네가 이렇게 한다면, 너는 최종적으로 Phabricator에 새로운 버전을 만들 것이다.이것은 내가 저지른 잘못이다.
    새 제출을 만들 수 없습니다.반대로 변경 사항을 원본 제출에 추가합니다.다음을 사용할 수 있습니다.
    hg commit --amend
    
    -m 플래그를 추가하지 마십시오.위의 명령만 실행하면 텍스트 편집기를 열어 메시지를 제출할 수 있습니다.한마디 더;그것은 이전과 같을 수 있다.다음 행에 다음을 추가합니다.
    Differential revision: <link-to-original-phabricator-revision>
    
    // for example:
    Differential revision: https://phabricator.services.mozilla.com/D51134
    
    이것은 moz-phab에 이 제출이 원시 패치에 대한 수정임을 알려 줍니다.따라서 이 변경 사항을 같은 버전에 추가합니다.이제 Phabricator에서 개정을 볼 수 있습니다.

    검수와 착륙


    만약 심사자가 당신의 변경에 만족한다면, 그는/그녀는 당신의 수정 절차를 받아들일 것입니다.다음은 누군가가 당신의 패치를 로그인하기를 기다려야 합니다.나는 완전히 확실하지는 않지만, 이것은 당신의 패치를 central repository에 제출하는 것을 의미한다고 생각합니다.모질라의 한 경장이 당신을 위해 이 일을 할 것입니다. 만약 당신이 이 글을 읽고 있다면, 당신은 제출 권한이 없을 가능성이 높기 때문입니다.
    일단 완성되면, 그럼 축하합니다!너는 첫 번째 패치를 완성하고 그것을 제출했을 뿐만 아니라, 그것을 받아들였다.Firefox 야간 버전에서 변경 사항을 실시간으로 확인할 수 있습니다.

    결론


    나는 이 문장이 그것의 목표 중 하나(또는 둘을 겸유)에 도달하기를 바란다. 너를 격려하든지, 너를 돕든지.나는 이 과정이 아무리 작고 간단해도 자랑스럽다.앞으로 정기적으로 Firefox에 기여하고 싶습니다.
    우리는 의도적이든 무의식적이든 매일 소스 오픈 소프트웨어를 사용하고 있다.시간과 기술이 있다면 공헌하세요!보답하는 느낌이 매우 기묘하다.
    오늘은 여기까지, 다음에 보자!
    PS: 제 친구에게 감사를 드립니다. spaCy에 대한 공헌이 저를 이렇게 하도록 격려했습니다!

    좋은 웹페이지 즐겨찾기