How to start with GHC development?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
26 messages Options
12
Reply | Threaded
Open this post in threaded view
|

How to start with GHC development?

Jan Stolarek
Dear list,

I'm reposting my message from Haskell-cafe here since this seems like a more appropriate place to
ask this question. I would like to learn about internals of GHC and contribute to its development
in the future. I read a couple of papers that give a very general overview of GHC (chapter from
AoS, papers about inliner and multicore support) and I'm thinking what direction should I pursue
now. I got the GHC sources and started reading commentary on the wiki, but it seems that entry
barrier is very high.

Aside from the problem of understanding the whole project organization itself, I also don't have
background on implementation of functional languages. In fact I have a rather basic knowledge of
compilers in general - I only took Stanford's online course on Compilers at Coursera. I was
thinking that perhaps I should read SPJs "Implementing Functional Languages: a tutorial" or "The
Implementation Of Functional Languages" book to learn more about theory? On the other hand I
don't know if getting stuck in theory for next couple of months is a good idea.

I would greatly appreciate any advice and help.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Tim Watson
I'm in a very similar position. Have some background knowledge and would love to contribute to ghc in the future hut the barrier to entry is pretty high even though I've some familiarity with compiler theory, have a long history with functional languages like ml/ocaml and a background in c that might mean contributing to the runtime system in the future could be an area where I make myself useful.

More pointers to resources and research materials would be most helpful.

Tim

On 13 Dec 2012, at 08:56, Jan Stolarek <[hidden email]> wrote:

> Dear list,
>
> I'm reposting my message from Haskell-cafe here since this seems like a more appropriate place to
> ask this question. I would like to learn about internals of GHC and contribute to its development
> in the future. I read a couple of papers that give a very general overview of GHC (chapter from
> AoS, papers about inliner and multicore support) and I'm thinking what direction should I pursue
> now. I got the GHC sources and started reading commentary on the wiki, but it seems that entry
> barrier is very high.
>
> Aside from the problem of understanding the whole project organization itself, I also don't have
> background on implementation of functional languages. In fact I have a rather basic knowledge of
> compilers in general - I only took Stanford's online course on Compilers at Coursera. I was
> thinking that perhaps I should read SPJs "Implementing Functional Languages: a tutorial" or "The
> Implementation Of Functional Languages" book to learn more about theory? On the other hand I
> don't know if getting stuck in theory for next couple of months is a good idea.
>
> I would greatly appreciate any advice and help.
>
> Janek
>
> _______________________________________________
> Glasgow-haskell-users mailing list
> [hidden email]
> http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Chris Nicholls
In reply to this post by Jan Stolarek
Hi Jan,

The commentary is a great place to start to understand the GHC pipeline. In fact, GHC is an incredibly well documented project. However, being a place where a lot of new theory gets tested, its' also one of the densest and most intimidating (It's perhaps the only source code I've read that frequently  provides references to research papers as comments). So to some extent, to work on it probably does require bashing against some theory for a while. 

It also depends on the part of the pipeline that you're interested in. There's quite a difference between, say, the typechecker, and the codegen stages, and they require rather different knowledge. 

And this is where I'm a little stuck too. I have a reasonably good picture of GHC's pipeline, having worked on it for my master's thesis, and I'd like to get more involved and possibly even contribute something useful. But I'm not sure where to start. There is the 'Notes on proposed or in progress (but out of tree) GHC compiler features' but it's hard to tell what has been started, or even nearly completed (and none of them seem that 'entry level'). 

What's the best way to get started? Bug fixes? Writing a toy plugin? I don't have a huge amount of time to offer, but I would like to learn to help! 


On Thu, Dec 13, 2012 at 8:56 AM, Jan Stolarek <[hidden email]> wrote:
Dear list,

I'm reposting my message from Haskell-cafe here since this seems like a more appropriate place to
ask this question. I would like to learn about internals of GHC and contribute to its development
in the future. I read a couple of papers that give a very general overview of GHC (chapter from
AoS, papers about inliner and multicore support) and I'm thinking what direction should I pursue
now. I got the GHC sources and started reading commentary on the wiki, but it seems that entry
barrier is very high.

Aside from the problem of understanding the whole project organization itself, I also don't have
background on implementation of functional languages. In fact I have a rather basic knowledge of
compilers in general - I only took Stanford's online course on Compilers at Coursera. I was
thinking that perhaps I should read SPJs "Implementing Functional Languages: a tutorial" or "The
Implementation Of Functional Languages" book to learn more about theory? On the other hand I
don't know if getting stuck in theory for next couple of months is a good idea.

I would greatly appreciate any advice and help.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Yuras Shumovich
On Thu, 2012-12-13 at 09:41 +0000, Chris Nicholls wrote:

> What's the best way to get started? Bug fixes? Writing a toy plugin? I
> don't have a huge amount of time to offer, but I would like to learn to
> help!
>

GHC bug sweep is the way I'm trying to start with:
http://hackage.haskell.org/trac/ghc/wiki/BugSweep
(have no idea whether it is the best way or not :) )

Thanks,
Yuras


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Jan Stolarek
In reply to this post by Chris Nicholls
> So to some extent, to work on it probably does require bashing against some theory for
> a while.
I don't mind that, but on the other hand I don't want to get stuck *only* in theory.

> It also depends on the part of the pipeline that you're interested in.
> There's quite a difference between, say, the typechecker, and the codegen
> stages, and they require rather different knowledge.
I'm aware of that. Right now I'd like to get a general understanding of the project. Later I was
thinking about looking into concurrency and parallelism and perhaps at some point in the future
at the typechecker (I guess this requires lots of theoretical background I don't have).

> And this is where I'm a little stuck too. I have a reasonably good picture
> of GHC's pipeline, having worked on it for my master's thesis, and I'd like
> to get more involved and possibly even contribute something useful. But I'm
> not sure where to start.
Well, that's a bit discouraging - if you worked on it in master's thesis and still don't know
where to start then it this is probably even harder than I suspected.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Chris Nicholls

> And this is where I'm a little stuck too. I have a reasonably good picture
> of GHC's pipeline, having worked on it for my master's thesis, and I'd like
> to get more involved and possibly even contribute something useful. But I'm
> not sure where to start.
Well, that's a bit discouraging - if you worked on it in master's thesis and still don't know
where to start then it this is probably even harder than I suspected.

Sorry! That wasn't what I intended. I meant more that I have a reasonably, good idea of  *how* to work on ghc but not much of idea of *what* I can usefully do.  The work in my thesis turned out not to be that useful, and I'm not sure what to do next. It sounds like you've already got some ideas there though.

Perhaps I shouldn't have hijacked your question with a 'me too' but I suspect there are quite a lot of people who want to contribute, but don't really know where to start. 

Don't be discouraged, its absolutely possible to get your hands dirty without having to understand all the theory and the community is incredibly friendly. 
 As for getting an overview of the pipeline, I found the videos of the talks the Simons gave at the 2006 Hackathon helpful. Perhaps someone with more knowledge than me can comment on how relevant the content is after six years? 

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Jan Stolarek
> Sorry! That wasn't what I intended.
I know, but still... :)

> I meant more that I have a reasonably,  good idea of  *how* to work on ghc
That's what I'm trying to figure out right now. GHC build system looks very complicated and it
seems I'll be spending weeks on understanding it before I can get to the compiler code itself.

> The work in my thesis turned out not to be that useful, and I'm not sure what to do next.
Speaking of your thesis - have you worked out internals of GHC by yourself or did you have someone
with knowledge of GHC supervise your work?

> It sounds like you've already got some ideas there though.
Not really. I know what is interesting for me, but I don't know what exactly I could do.

> Perhaps I shouldn't have hijacked your question with a 'me too'
You didn't hijack it :)

>  As for getting an overview of the pipeline, I found the videos of the
> talks the Simons gave at the 2006 Hackathon helpful.
Thanks, I didn't know about these! I wonder if slides are available? The quality of video and
sound is actually rather low.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Simon Marlow-7
In reply to this post by Yuras Shumovich
On 13/12/12 09:54, Yuras Shumovich wrote:

> On Thu, 2012-12-13 at 09:41 +0000, Chris Nicholls wrote:
>
>> What's the best way to get started? Bug fixes? Writing a toy plugin? I
>> don't have a huge amount of time to offer, but I would like to learn to
>> help!
>>
>
> GHC bug sweep is the way I'm trying to start with:
> http://hackage.haskell.org/trac/ghc/wiki/BugSweep
> (have no idea whether it is the best way or not :) )

The BugSweep was a great idea at the time, but I think it stalled.  Do
feel free to carry on though!  I think it's a great way to learn about
GHC, because it will send you off in random directions investigating things.

While there are lots of old bugs that are now fixed, or have duplicates,
or aren't relevant, etc. there are also lots of old bugs that are still
around because they aren't fixed because they aren't worth the effort.
Still, making even *some* progress on any old bug is worthwhile, even if
it is to point out a workaround that didn't exist before, or update the
test case.  This will generate an email, and since there are people that
read all the Trac emails, occasionally this prods someone else to make
further progress or just close the ticket.

Cheers,
        Simon


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Daniel Trstenjak-2
In reply to this post by Jan Stolarek

Hi Jan,

On Thu, Dec 13, 2012 at 01:56:13PM +0100, Jan Stolarek wrote:
> That's what I'm trying to figure out right now. GHC build system looks very complicated and it
> seems I'll be spending weeks on understanding it before I can get to the compiler code itself.

I think it's easier to have a fix point. Look for something you would
like to add to GHC, for a bug you would like to fix.

Starting at this fix point you can spread out and learn all the
necessary things to be able to implement it.

Sure, you will never know if you know enough to implement it in the most
fitting way for GHC. But I would consider this as part of the learning
process and the GHC developers will give you appropriate feedback.

I think that it's quite hard to learn such a big system like GHC in a top to
bottom manner and for myself it's easier to stay motivated if I've
a concrete task, the learning has a concrete reason.


Greetings,
Daniel

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Chris Nicholls
In reply to this post by Jan Stolarek

On Thu, Dec 13, 2012 at 12:56 PM, Jan Stolarek <[hidden email]> wrote:
Speaking of your thesis - have you worked out internals of GHC by yourself or did you have someone
with knowledge of GHC supervise your work?

I worked on my own, but the GHC folk were very helpful when I got stuck. That was quite a slow tactic in retrospect, I reckon I could have got much further if I'd had the bottle to ask more questions. One problem with the Haskell community is that everyone else seems so much smarter...

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Daniel Trstenjak-2

Hi Chris,

On Thu, Dec 13, 2012 at 02:52:37PM +0000, Chris Nicholls wrote:
> I worked on my own, but the GHC folk were very helpful when I got stuck.
> That was quite a slow tactic in retrospect, I reckon I could have got much
> further if I'd had the bottle to ask more questions. One problem with
> the Haskell community is that everyone else seems so much smarter...

Smart people won't think of you to be dumb because you know less,
because they know how little they know themself. ;)

Fear is such a drawback and the more reserved guys get easily
intimidated by the cocky guys, because they think that the
cocky guys really know what they're doing.


Greetings,
Daniel

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

RE: How to start with GHC development?

Simon Peyton Jones
In reply to this post by Chris Nicholls

This thread has made it clear that we should do more to help people find a “way in” to GHC.  Here is what I have done:

 

·         Started a GHC Reading List page, giving background reading.  It’s just a start; there are many gaps. I would love it if you would all help fill it out.  It’s a wiki.

 

·         Amplified the Working on GHC page.  Again, please help make it more useful.  It’s a wiki.

 

What else would help?   If the answer is X, can anyone help do X?

 

Thanks

 

Simon

 

 

From: [hidden email] [mailto:[hidden email]] On Behalf Of Chris Nicholls
Sent: 13 December 2012 12:00
To: Jan Stolarek
Cc: GHC Users List
Subject: Re: How to start with GHC development?

 

 

> And this is where I'm a little stuck too. I have a reasonably good picture
> of GHC's pipeline, having worked on it for my master's thesis, and I'd like
> to get more involved and possibly even contribute something useful. But I'm
> not sure where to start.

Well, that's a bit discouraging - if you worked on it in master's thesis and still don't know
where to start then it this is probably even harder than I suspected.

 

Sorry! That wasn't what I intended. I meant more that I have a reasonably, good idea of  *how* to work on ghc but not much of idea of *what* I can usefully do.  The work in my thesis turned out not to be that useful, and I'm not sure what to do next. It sounds like you've already got some ideas there though.

 

Perhaps I shouldn't have hijacked your question with a 'me too' but I suspect there are quite a lot of people who want to contribute, but don't really know where to start. 

 

Don't be discouraged, its absolutely possible to get your hands dirty without having to understand all the theory and the community is incredibly friendly. 

 As for getting an overview of the pipeline, I found the videos of the talks the Simons gave at the 2006 Hackathon helpful. Perhaps someone with more knowledge than me can comment on how relevant the content is after six years? 


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Gershom Bazerman
On 12/14/12 9:44 AM, Simon Peyton-Jones wrote:

This thread has made it clear that we should do more to help people find a “way in” to GHC.  Here is what I have done:

 

·         Started a GHC Reading List page, giving background reading.  It’s just a start; there are many gaps. I would love it if you would all help fill it out.  It’s a wiki.

 

·         Amplified the Working on GHC page.  Again, please help make it more useful.  It’s a wiki.

 

What else would help?   If the answer is X, can anyone help do X?

 

Something else that I think would be useful is a long-term 'wishlist' for ghc, consisting of modest goals from an engineering standpoint. My sense is that these involve factoring subsystems to make them more independent and modular, as well as moving towards parallelizable code, and perhaps the notion of ghc-as-a-service so that one could have a long-running compiler process able to perform individual parts of a pipeline on-demand. The scheme of what needs to change and overall architecture needs to be determined by people with very good knowledge of the compiler as a whole. But individual tasks and areas could be tackled by others wishing to contribute.

I'd also like more of a sense of what work remains to be done to decouple ghci from ghc, such that we could pleasantly produce other ghci-like environments using the same API, and perhaps ultimately treat desktop ghci as one means among many of interacting with ghc-as-a-library. (i.e. how can we get to 'cabal install ghci').

I'm also curious about the state of the plugins pipeline, how comfortable we are with it, and what could potentially be improved (and how that relates to having ghc potentially process externally generated or transformed core).

This is to say, outside of the list of bugs on trac, and outside of potentially researchy new features, what are the sorts of things we would like to make GHC a more dependable, efficient, maintainable, flexible piece of software? The things I'm suggesting a focus on are things that I remember discussion of along these lines. They're perhaps not where core GHC developers feel effort should be focused. But where then *should* it be?

A sense of this might help interested contributors to decide where to direct their efforts.

Thanks,
Gershom

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Jan Stolarek
In reply to this post by Simon Peyton Jones
Dnia piątek, 14 grudnia 2012, Simon Peyton-Jones napisał:
> This thread has made it clear that we should do more to help people find a
> "way in" to GHC.  
Thanks for taking intrest in our efforts Simon :)

After three days of reading through the wiki I came up with some conclusions. The thing that seems
to be most difficult for me is that wiki has a tree structure: every page links to many other
pages. For an unexperienced person it is hard to prioritize information. What do I need to know
first and what can be left out for later? It would be good if this knowledge was somehow
linearized. I found Hackathon lectures to be slightly helpful. Low quality of sound and video
makes it difficult to learn from these particular videos but I think the idea itself is great.
Perhaps it would be possible to create some introductory videos & presentations that would
introduce GHC's build system and architecture? I know this would be a lot of effort but perhaps
it would pay off? I'm thinking something like Coursera class. I would love to see such a thing!

Another thing I found difficult is that wiki gives different information on getting the sources.
This page: http://hackage.haskell.org/trac/ghc/wiki/Building/GettingTheSources gives one set of
commands one has to issue to check out the source code, but this page:
http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Git gives a different set of
instructions. For a person that does not know the structure of repositories and the build system
itself this is confusing. I think that at this point people expect - at least I expected - a list
of commands to run in order to get the sources. Having two different possibilities is confusing
as one needs to figure out what these commands actually do. With my current knowledge - or lack
of thereof - I'm unable to correct this on the wiki

> *         Started a GHC Reading List
> page<http://hackage.haskell.org/trac/ghc/wiki/ReadingList>, giving
> background reading.  It's just a start; there are many gaps. I would love
> it if you would all help fill it out.  It's a wiki.
I read some of the listed papers and while they definitely gave me a nice overview of the compiler
I still feel a bit helpless when faced with the actual code. Simon, you listed your books
in "General background" section. I don't doubt they are interesting (I only started reading fisrt
of the books) and if one wants to impement functional languages they are a must. But they are
over 700 pages in total - is reading them an optimal way of getting into GHC development? Well,
if the answer is 'yes' then I'm off to reading, but perhaps there are easier approaches?
Anyway, it's a great idea to have a list of papers and books about architecture of GHC, so I'm
going to fill out DPH section. BTW. GpH page has a nicely prepared list of papers - GHC deserves
the same.

To sum up: I think that wiki has almost all the knowledge needed to get started, but that
knowledge has to be presented to the beginners in a form of some tutorial, presentations or
anything that is linear and guides people by hand.

I hope that was constructive.

Janek

>
>
> *         Amplified the Working on
> GHC<http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions> page.
> Again, please help make it more useful.  It's a wiki.
>
> What else would help?   If the answer is X, can anyone help do X?
>
> Thanks
>
> Simon
>
>
> From: [hidden email]
> [mailto:[hidden email]] On Behalf Of Chris
> Nicholls Sent: 13 December 2012 12:00
> To: Jan Stolarek
> Cc: GHC Users List
> Subject: Re: How to start with GHC development?
>
> > And this is where I'm a little stuck too. I have a reasonably good
> > picture of GHC's pipeline, having worked on it for my master's thesis,
> > and I'd like to get more involved and possibly even contribute something
> > useful. But I'm not sure where to start.
>
> Well, that's a bit discouraging - if you worked on it in master's thesis
> and still don't know where to start then it this is probably even harder
> than I suspected.
>
> Sorry! That wasn't what I intended. I meant more that I have a reasonably,
> good idea of  *how* to work on ghc but not much of idea of *what* I can
> usefully do.  The work in my thesis turned out not to be that useful, and
> I'm not sure what to do next. It sounds like you've already got some ideas
> there though.
>
> Perhaps I shouldn't have hijacked your question with a 'me too' but I
> suspect there are quite a lot of people who want to contribute, but don't
> really know where to start.
>
> Don't be discouraged, its absolutely possible to get your hands dirty
> without having to understand all the theory and the community is incredibly
> friendly. As for getting an overview of the pipeline, I found the videos of
> the talks the Simons gave at the 2006 Hackathon helpful. Perhaps someone
> with more knowledge than me can comment on how relevant the content is
> after six years?



_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Ian Lynagh-2
In reply to this post by Simon Peyton Jones
On Fri, Dec 14, 2012 at 02:44:19PM +0000, Simon Peyton-Jones wrote:
> This thread has made it clear that we should do more to help people find a "way in" to GHC.

I think the main problem is that it's a very broad question. The answer
to "how should I get started" would be completely different for if you
wanted to implement a type system extension, port GHC to a new platform,
or fix a bug in ghci (just to pick 3 examples; I think that trying to
enumerate on a wiki page all the possible ways in which you could get
started would be infeasible).

I just had a quick look at how easy things are to find from
    http://hackage.haskell.org/trac/ghc/
and they look OK to me. One thing I wonder is how understandable the
"commentary" link is to someone who doesn't already know what it is.
Would something like "A developer's guide to GHC" be better? That might
be too long for the sidebar, though.


Thanks
Ian


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

wren ng thornton
In reply to this post by Gershom Bazerman
On 12/14/12 10:56 AM, Gershom Bazerman wrote:

> On 12/14/12 9:44 AM, Simon Peyton-Jones wrote:
>>
>> This thread has made it clear that we should do more to help people
>> find a "way in" to GHC.  Here is what I have done:
>>
>> ·Started a GHC Reading List page
>> <http://hackage.haskell.org/trac/ghc/wiki/ReadingList>, giving
>> background reading.  It's just a start; there are many gaps. I would
>> love it if you would all help fill it out.  It's a wiki.
>>
>> ·Amplified the Working on GHC
>> <http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions> page.
>> Again, please help make it more useful. It's a wiki.
>>
>> What else would help?   If the answer is X, can anyone help do X?
>
> Something else that I think would be useful is a long-term 'wishlist'
> for ghc, consisting of modest goals from an engineering standpoint.
> [...]
> A sense of this might help interested contributors to decide where to
> direct their efforts.

I agree wholeheartedly. A lot of times fixing bugs requires one to
already have a good idea how everything is structured. And research
features require one to be interested/able to do research. In my
experience with other projects, the more mid-term engineering tasks tend
to be a great place to get started.

Now, I wonder, how should we go about setting this up? Wiki pages are
good for the more long-term or more visionary sorts of goals, but
they're too liable to get out of date for the short- and mid-term
engineering goals. The bug tracker already has a listing for "tasks"
rather than "bugs"[1]. Perhaps we should be advertising that more? Or
should we tweak the tracker settings to provide a better venue for these
sorts of tasks? The latter would make it easy to have a wiki page on
teaching folks how to search for tasks appropriate to their comfort level...


[1] http://hackage.haskell.org/trac/ghc/report/2

--
Live well,
~wren

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Jan Stolarek
In reply to this post by Ian Lynagh-2
Dnia piątek, 14 grudnia 2012, Ian Lynagh napisał:
> I think the main problem is that it's a very broad question. The answer
> to "how should I get started" would be completely different for if you
> wanted to implement a type system extension, port GHC to a new platform,
> or fix a bug in ghci
All three task have one thing in common though - the GHC build system. Project sources are over
500MB, there are many subrepositories, build scripts etc - this is really intimidating at first
and I guess that seeing all that was a bit discouraging. Now that I know the compiler itself is
about 9MB it doesn't look that bad :) Wiki indeed seems to have all the information required.
It's just that it would be good to give beginners a _precise_ list of things they should read to
begin hacking.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Ian Lynagh-2
On Sat, Dec 15, 2012 at 09:41:12AM +0100, Jan Stolarek wrote:

> Dnia piątek, 14 grudnia 2012, Ian Lynagh napisał:
> > I think the main problem is that it's a very broad question. The answer
> > to "how should I get started" would be completely different for if you
> > wanted to implement a type system extension, port GHC to a new platform,
> > or fix a bug in ghci
> All three task have one thing in common though - the GHC build system. Project sources are over
> 500MB, there are many subrepositories, build scripts etc - this is really intimidating at first
> and I guess that seeing all that was a bit discouraging. Now that I know the compiler itself is
> about 9MB it doesn't look that bad :) Wiki indeed seems to have all the information required.
> It's just that it would be good to give beginners a _precise_ list of things they should read to
> begin hacking.

OK, so how can we improve it?

I've just made one change that might help: On
    http://hackage.haskell.org/trac/ghc/wiki/Building
"Working Conventions" was mentioned in the opening paragraph of
as something to "also see", which perhaps made it sound
like it should be read first, which I don't think was the intention.
I've moved it to the bottom of the list instead, so you won't see it
before going through "Setting up your system for building GHC", "Getting
the sources" and "Getting started with the build system".


Thanks
Ian


_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Jan Stolarek
> OK, so how can we improve it?
First of all I think that materials in the wiki are well organized for people who already have
some knowledge and only need to learn about particular things they don't yet know. In this case I
think it is fine to have wiki pages connected between one another so they form cycles and don't
have a particular ordering.

However as a beginner I'd expect that pages are ordered in a linear way (sorry for repeating
myself, but I think this is important), that every concept is explained in only one place and
that there are no links in the text (even at the end - if the text is structured lineary than I
don't need to decide what to read next, I just go to next section/chapter). This is of course a
perfect situation that seems to be achievable in a book, but probably not in a wiki (wikibook
could be a middle ground?).

Right now there are two pages (I know of...) that instruct how to get the sources:
http://hackage.haskell.org/trac/ghc/wiki/Building/GettingTheSources
http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Git
They list two different places containing the sources: github and darcs.haskell.org. Are these
equivalent? A couple of months ago I played with GHC sources: the ones from github were about
17MB, the ones from haskell.org were much larger (85MB IIRC) so I guess that these might not be
exact mirrors.
Second page gives a nice description of how to set up build trees, but it duplicates information
from the first page (checking out the sources). First page also tells to make a local clone of
the repo but it does not explain why such a clone should be made (the second page does).
I think that merging these two pages into one might be a good idea.
I would definitely like more details on the git workflow, especially the branches. Right now I see
about 40 branches - why so many? Am I required to create my own branch when I start hacking or
should I just go with master?

It seems that many informations in the wiki are duplicated. There are two pages about
repositories:
http://hackage.haskell.org/trac/ghc/wiki/Repositories
http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Repositories
(after reading the first one source tree started to make much more sense - this is one of the
informations *I* would like to get first).

In general I think that for beginers it would be good if the wiki had a form of a book divided
into chapters. I only wonder if it is possible to adjust the wiki for the newbies and at the same
time keep it useful for more experienced developers.

Janek

_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
Reply | Threaded
Open this post in threaded view
|

Re: How to start with GHC development?

Simon Marlow-7
On 15/12/12 14:46, Jan Stolarek wrote:

>> OK, so how can we improve it?
> First of all I think that materials in the wiki are well organized for people who already have
> some knowledge and only need to learn about particular things they don't yet know. In this case I
> think it is fine to have wiki pages connected between one another so they form cycles and don't
> have a particular ordering.
>
> However as a beginner I'd expect that pages are ordered in a linear way (sorry for repeating
> myself, but I think this is important), that every concept is explained in only one place and
> that there are no links in the text (even at the end - if the text is structured lineary than I
> don't need to decide what to read next, I just go to next section/chapter). This is of course a
> perfect situation that seems to be achievable in a book, but probably not in a wiki (wikibook
> could be a middle ground?).
>
> Right now there are two pages (I know of...) that instruct how to get the sources:
> http://hackage.haskell.org/trac/ghc/wiki/Building/GettingTheSources
> http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Git

So the first page here tells you how to get a single source tree so that
you can build it.  The second page tells you how to create a 2-tree
setup for use with GHC's validate; the latter is aimed at people doing
lots of GHC development (which is why it's under WorkingConventions).
Both scenarios are important, and I think it's more important to deal
with the simple case first which is why it is right near the start of
the Building Guide.

Does that help?  Is there something we could add somewhere that would
make it clearer?

> It seems that many informations in the wiki are duplicated. There are two pages about
> repositories:
> http://hackage.haskell.org/trac/ghc/wiki/Repositories
> http://hackage.haskell.org/trac/ghc/wiki/WorkingConventions/Repositories
> (after reading the first one source tree started to make much more sense - this is one of the
> informations *I* would like to get first).

The first page lists the repositories and where the upstreams and
mirrors are.  The second page contains the conventions for working on
other repositories (which is why it's under WorkingConventions).

> In general I think that for beginers it would be good if the wiki had a form of a book divided
> into chapters. I only wonder if it is possible to adjust the wiki for the newbies and at the same
> time keep it useful for more experienced developers.

The nice thing about a wiki is that you don't have to move content
around, you can just make new contents pages that contain whatever
organisation you want. So maybe what you want is a separate page that
links to things to read in a particular order?

Cheers,
        Simon



_______________________________________________
Glasgow-haskell-users mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
12