Internships at Microsoft Research, Cambridge
Microsoft Research Cambridge runs a PhD student internship programme is mainly for graduate students in mid-PhD. This is not an absolute requirement; for example, post-PhD is certainly possible. It has an annual cycle, with applications due by end Feb. The internship itself is for 12 weeks, usually over the summer, but the precise timing is flexible. You don't need to be an EU citizen.
Nowadays internships typically need to be focused on one of the lab's big projects, and that mostly doesn't include GHC. MSRC internship opportunities are advertised here
What is an internship?
An internship is a paid post at Microsoft Research in Cambridge (MSRC). You get to work on a project agreed, usually in advance, with your MSRC sponsor. Both parties benefit. You get to work in a leading-edge research lab, with fantastic people floating around all the time. We get the benefit of your hard work, and perhaps the start of a collaborative relationship.
In principle, Microsoft owns any intellectual property you generate, but this isn't relevant for an open-source project like GHC. You're also strongly encouraged to publish your work as a paper, often written jointly with your sponsor.
Who is eligible?
Internships are aimed primarily at students currently studying for a PhD. It's not a cast-iron requirement, but if you are pre-PhD you'd need to argue that you were rather exceptional in some way.
Past internships on Haskell and GHC
Here are some past projects (in approximate date order):
- 2014: Joachim Breitner made
foldla good consumer wrt. list fusion
- 2013: Jan Stolarek worked on Cmm optimizations and added new primops
- 2013: Richard Eisenberg implemented closed type families
- 2010: David Terei worked on the LLVM back end
- 2008: Thomas Schilling worked on the GHC API, and Scion
- 2008: Jost Berthold worked on parallel evaluation
- 2007: Dan Licata implemented view patterns
- 2007: Peng Li worked on a new concurrency substrate for GHC
- 2007: Michael Adams worked on refactoring the code generator, and  John Dias took the same ideas much further.
- 2007: Bernie Pope implemented the GHCi debugger
- 2007: Ben Lippmeier implemented a new register allocator
- 2006: Roshan James wrote a parallel garbage collector
- 2006: Kevin Donnelly changed GHC's intermediate language to support equality constraints
- Geoff Washburn made the first implementation of GADTs in GHC
- Dimitrios Vitytonis worked on type inference for impredicative polymorphism
- Krasimir Angelov completed and released Visual Haskell
Here a bunch of suggestions.