Changes between Version 99 and Version 100 of Newcomers


Ignore:
Timestamp:
Jan 4, 2019 12:25:22 AM (8 months ago)
Author:
davide
Comment:

Moved to Contributing.

Legend:

Unmodified
Added
Removed
Modified
  • Newcomers

    v99 v100  
    1 = Resources for newcomers to GHC =
    2 
    3 This page is intended to serve as the first stop for those people who say, "I want to contribute to GHC, but I don't know quite where to begin." Begin here. While the [wiki:Building building guide], [wiki:WorkingConventions working conventions], [wiki:Commentary commentary] and [wiki:Debugging debugging] pages (always linked from the left sidebar) have great information that can come in handy while you're working on your first, or first several patches, this page is intended to have the details you will need to get rolling.
    4 
    5 If you have any questions along the way don't hesitate to reach out to the community. There are people on the [[MailingListsAndIRC|mailing lists and IRC]] who will gladly help you (although you may need to be patient). Don't forget that all GHC developers are still learning; your question is never too silly to ask.
    6 
    7 
    8 == First steps ==
    9 
    10 * See [wiki:Building/QuickStart] to get started building GHC. Expect it all to take roughly between 30 minutes and a couple of hours, depending on your CPU speed, and the number of jobs you can run in parallel. Note that [https://ghc.haskell.org/trac/ghc/wiki/Building/Preparation/Tools building older versions of GHC may require having an older version of GHC on your path].
    11 
    12 * While you are waiting for your build to finish, orient yourself to the general architecture of GHC. This [http://www.aosabook.org/en/ghc.html article] is written by two of the chief architects of GHC, Simon Marlow and Simon Peyton-Jones, is excellent and current (2012).
    13 
    14 * After a successful build, you should have your brand new compiler in `./inplace/bin/ghc-stage2`. (GHCi is launched with `./inplace/bin/ghc-stage2 --interactive`). Try it out.
    15 
    16 == Finding a ticket ==
    17 
    18 Now that you can build GHC, let's get hacking. But first, you'll need to identify a goal. GHC's Trac tickets are a great place to find starting points. You are encouraged to ask for a starting point on IRC or the `ghc-devs` [[MailingListsAndIRC|mailing list]]. There someone familiar with the process can help you find a ticket that matches your expertise and help you when you get stuck.
    19 
    20 If you want to get a taste for possible starting tasks, below is a list of tickets that appear to be "low-hanging fruit" -- things that might be reasonable for a newcomer to GHC hacking. Of course, we can't ever be sure of how hard a task is before doing it, so apologies if one of these is too hard.
    21 
    22 You can add tickets to this list by giving them the `newcomer` Trac keyword.
    23 
    24 **Bugs:**
    25 [[TicketQuery(status=infoneeded,status=new,keywords=~newcomer,owner=,type=bug)]]
    26 **Feature requests:**
    27 [[TicketQuery(status=infoneeded,status=new,keywords=~newcomer,owner=,type=feature request)]]
    28 **Tasks:**
    29 [[TicketQuery(status=infoneeded,status=new,keywords=~newcomer,owner=,type=task)]]
    30 
    31 == Practical advice ==
    32 
    33 * Read up on the steps you are expected to take for [wiki:WorkingConventions/FixingBugs contributing a patch to GHC].
    34 
    35 * See also code reviews in [https://phabricator.haskell.org/differential/ Phabricator]. You can refer to how they have been fixed.
    36 
    37 == Less practical advice ==
    38 
    39 * Don't get scared. GHC is a big codebase, but it makes sense when you stare at it long enough!
    40 
    41 * Don't hesitate to ask questions. We have all been beginners at some point and understand that diving in to GHC can be a challenge. Asking questions will help you make better use of your hacking time.
    42 
    43 * Be forewarned that many pages on the GHC Wiki are somewhat out-of-date. Always check the last modification date. Email `ghc-devs` if you're not sure.
    44 
    45 * You may want to look at these "how it went for me" blog posts.
    46  - [http://rawgit.com/gibiansky/4c54f767bf21a6954b23/raw/67c62c5555f40c6fb67b124307725df168201361/exp.html Hacking on GHC (is not that hard)] by Andrew Gibiansky
    47  - [http://anniecherkaev.com/projects/contributing-to-ghc Contributing to GHC] by Annie Cherkaev
    48  - [https://medium.com/@zw3rk/contributing-to-ghc-290653b63147 Contributing to GHC via Phabricator] by Moritz Angermann
    49 
    50 * There is a blog post series by Stephen Diehl that provides an overview of many important data structures and contains links to other sources of information: [http://www.stephendiehl.com/posts/ghc_01.html Dive into GHC]
    51 
    52 == Need help? ==
    53 
    54 You can email the [http://www.haskell.org/mailman/listinfo/ghc-devs ghc-devs] list, or ask on IRC in `#ghc`.
    55 
    56 Happy hacking!
     1Moved to [wiki:Contributing#NewcomerstoGHC Contributing - Newcomers to GHC]