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

23
GHC development flow Takenobu T. Rev. 2017-Feb-01 WIP walking guide for new contributors

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

Page 1: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

GHC development flow

Takenobu T.

Rev. 2017-Feb-01WIP

walking guide for new contributors

Page 2: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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.

Page 3: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

Overall relationship

Page 4: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 5: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

GHC compiler development flow

Page 6: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 7: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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]

Page 8: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

Report flow

create the ticket

[8][15]

Please consult ghc-devs ML if you worry.

code development

ticket

[1]

Page 9: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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.

Page 10: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 11: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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]

Page 12: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

Document development flow

Page 13: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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]

Page 14: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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]

Page 15: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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]

Page 16: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

Infrastructure tools

Page 17: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 18: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

References

Page 19: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 20: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 21: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 22: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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

Page 23: GHC development flow - GitHub Pagestakenobu-hs.github.io/downloads/ghc_development_flow.pdf · Development layers Haskell packages GHC compiler + Core Libraries Haskell Language Haskell

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