GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf ·...

Post on 16-Aug-2020

12 views 0 download

Transcript of GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf ·...

GHC development flow

Takenobu T.

Rev. 2017-Feb-01WIP

walking guide for new contributors

NOTE- This is not an official document by the ghc development team.- Please refer to the official documents in detail.- This information is current as of Feb, 2017.

Overall relationship

Development layers

Haskell packages

GHC compiler

+ Core Libraries

Haskell LanguageHaskell 98, Haskell 2010,

Haskell 2020

Compiler + Runtime system base, array, process,...

vector parsec parallel network ...

Main ML : haskell-prime at haskell.org [5]

Steering by Haskell 2020 Committee [6]

Main ML : libraries at haskell.org [3]

Steering by Core Libraries Committee [4]

Main ML : ghc-devs at haskell.org [1]

Steering by GHC Committee [2]

GHC compiler Haskell Core Libraries

Language Report

GLUT lens

GHC compiler development flow

code development

GHC compiler development flow (overview)

report

wiki

pages

infra-

structure

tools

committer

create and

update pages

construct and

maintain infra

release management

[8] [9]

[13] [14]

[12]

[7]

report the bug fix the bug

proposal

[10][11]

add the feature

GHC compiler code development flow

release management

direct

commit

patch

flow

report the bug fix the bug

committer

[9]

report[8]

proposal

add the feature

[10][11]

Report flow

create the ticket

[8][15]

Please consult ghc-devs ML if you worry.

code development

ticket

[1]

Various ticket states of trac

New

Assigned

Patch

Merge

Closed

create a ticket

acquire ownership(set “Owner” field”)

create a patch and request review

(set “Differential Rev(s)” field”)

merge the patch to target branches

resolved(set “Milestone” field”)

The ticket is waiting for someone to look at it and/or

discussion is underway on how to fix the issue.

There is a patch to fix the issue that is awaiting review.

A patch fixing the issue is present in the `master` branch and

we are considering backporting it to the stable branch.

As of the release listed in the "Milestone" field the bug is

considered resolved.

ticket[15]

patch

patch

master

Someone has said they are working on fixing the issue.

Proposal flow

write the proposal

create the ticket

discussion

update the ticket

wait for approval

write the proposal

discussion

wait for approval

ghc-proposals process on githubtraditional process on trac [10] [11]

pull request

Please refer to the documentation in details.code development

create the ticket

wiki

ticket

ticket

ticket

revise proposal

request review by

steering committee

ticket

create the ticket

add a test case

fix the bug

validation

Patch flow

create the ticket

add a test case

fix the bug

validation

code review

update the ticket

[9]

[15]

[17]

[18]

Please refer to the documentation in details.

ticket

ticket

[16]

release management

pull request

code review[18]

large patch small patch non-accepted

Github PR processregular process

[23]

[9]

Document development flow

Various documents

Trac wiki (GHC wiki) The GHC users guide Core Libraries documents

Haskell wiki Hackage documents

...Haskell

GHC

wiki.haskell.org

...

hackage.haskell.org

ghc.haskell.org/trac/ghc/wiki downloads.haskell.org/~ghc/

latest/docs/html/users_guide

downloads.haskell.org/~ghc/

latest/docs/html/libraries

about GHC’s implementation

* how GHC works

* how to modify it

[13][29] [31][32] [32]

Document development of GHC

wiki

Trac wiki (GHC wiki)

Trac wiki markup

HTML

The GHC users guide

.rst format

HTML

haddock format

in source code

HTML

PDF

[13] [28] [30]

Haskell wiki

wiki markup

HTML

Hackage documents

haddock format

in source code

HTML

...Haskell

GHC...

Core Libraries documents

[29] [31][32] [32]

Trac wiki description flow

create a page update a page

There are no formal process to discuss or review.

Please consult ghc-devs ML if you worry.

automated generation of HTML

wiki[13]

page page

log in

register account[24]

[24]

[13][24][27]

[26][24][25] [24][25]

[1]

Infrastructure tools

Tool relation

Phabricator

issue tracking

and discussion

Harbormaster GHC builderArcanist

Trac (ticket)

Git

ghc-devs ML

Trac (wiki)

code review

automated buildphabricator cli

discussion

information

code repository

Travis

automated build

issue tracking,

discussion and PR

Github

code management

communication

[18]

[19] [20] [21]

[17]

[1]

[18]

[13]

[15]

[11]

wiki

ticket

Perf[22]

various builds

performance regression

References

References

[1] ghc-devs -- GHC development discussion

https://mail.haskell.org/mailman/listinfo/ghc-devs

[2] The GHC Steering Committee

https://github.com/ghc-proposals/ghc-proposals/blob/master/steering-committee.rst

[3] Libraries -- Discussion about libraries for Haskell

https://mail.haskell.org/cgi-bin/mailman/listinfo/libraries

[4] Core Libraries Committee

https://wiki.haskell.org/Core_Libraries_Committee

[5] Haskell-prime -- Haskell' - A Haskell Standard Revision - discussion list

https://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-prime

[6] Welcome to Haskell'

https://prime.haskell.org

[7] The Glasgow Haskell Team

https://ghc.haskell.org/trac/ghc/wiki/TeamGHC

[8] Reporting bugs in GHC

https://ghc.haskell.org/trac/ghc/wiki/ReportABug

[9] How to contribute a patch to GHC

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/FixingBugs

[10] How to contribute a new feature to GHC

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/AddingFeatures

References

[11] GHC Proposals

https://github.com/ghc-proposals/ghc-proposals

[12] Release management and branches

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Releases

[13] Welcome to the GHC Developer Wiki

https://ghc.haskell.org/trac/ghc/wiki

[14] Developer’s Infrastructure

https://ghc.haskell.org/trac/ghc/wiki/Infrastructure

[15] The Bug Tracker

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/BugTracker

[16] Adding new test cases

https://ghc.haskell.org/trac/ghc/wiki/Building/RunningTests/Adding

[17] Using git with GHC

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Git

[18] Using Phabricator for GHC development

https://ghc.haskell.org/trac/ghc/wiki/Phabricator

[19] Harbormaster: continuous integration & patch building for GHC

https://ghc.haskell.org/trac/ghc/wiki/Phabricator/Harbormaster

[20] Travis

https://ghc.haskell.org/trac/ghc/wiki/Travis

References

[21] The GHC Builder

https://ghc.haskell.org/trac/ghc/wiki/Builder

[22] perf

https://perf.haskell.org/ghc

[23] Accept PRs on GitHub

https://github.com/ghc-proposals/ghc-proposals/pull/11

References

[24] Notes on Trac Wiki formatting

https://ghc.haskell.org/trac/ghc/wiki/TracWikiMisc

[25] WikiFormatting

https://ghc.haskell.org/trac/ghc/wiki/WikiFormatting

[26] Steps to Add a New Wiki Page

https://ghc.haskell.org/trac/ghc/wiki/WikiNewPage

[27] The Trac Wiki System

https://ghc.haskell.org/trac/ghc/wiki/TracWiki

[28] source:ghc/docs/users_guide

https://ghc.haskell.org/trac/ghc/browser/ghc/docs/users_guide

[29] Glasgow Haskell Compiler Users Guide

https://downloads.haskell.org/~ghc/latest/docs/html/users_guide

[30] source:ghc/libraries

https://ghc.haskell.org/trac/ghc/browser/ghc/libraries

[31] Haskell Hierarchical Libraries

https://downloads.haskell.org/~ghc/latest/docs/html/libraries

[32] How to contribute a patch to GHC

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/FixingBugs

References

See also

[33] Working on GHC

https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions

[34] Resources for newcomers to GHC

https://ghc.haskell.org/trac/ghc/wiki/Newcomers

[35] Haskell :: Reddit

https://www.reddit.com/r/haskell

[36] IRC Channels

https://www.haskell.org/irc

http://ircbrowse.net/ghc