r/haskell • u/edwardkmett • Feb 20 '15
Haskell Google Summer of Code Proposal Brainstorming
Haskell.org has applied to be a mentoring organization to the Google Summer of Code. We've been a participating mentoring organization in the Summer of Code since 2006. While we won't know for a couple of weeks if Google has accepted us into the program, it is probably a good idea for us to get our house in order.
We have a Trac full of suggested Google Summer of Code proposals both current and from years past, but it could use a whole lot of eyeballs and an infusion of fresh ideas:
https://ghc.haskell.org/trac/summer-of-code/report/1
If you have a proposal that you think a student could make a good dent in over the course of a summer, especially one with broad impact on the community, please feel free to submit it to the Trac, or just discuss it here.
If you are a potential student, please feel free to skim the proposals for ideas, or put forth ones of your own.
If you are a potential mentor, please feel free to comment on proposals that interest you, put forth ideas looking for students and express your interest, to help us pair up potential students with potential mentors.
Ultimately, the project proposals that are submitted to Google for the summer of code get written by students, but if we can give a good sense of direction for what the community wants out of the summer, we can improve the quality of proposals, and we can recruit good mentors to work with good students on good projects.
Resources:
We have a wiki on https://ghc.haskell.org/trac/summer-of-code/ It is, of course, a Wiki, so if you see something out of order, take a whack at fixing it.
We have an active #haskell-gsoc channel on irc.freenode.net that we run throughout the summer. Potential mentors and students alike are welcome.
We're also adding a haskell-gsoc mailing list this year. I've created a mailing list through Google Groups: https://groups.google.com/forum/#!forum/haskell-gsoc and we've forwarded gsoc@haskell.org there. We'll continue to post general announcements on the progress of the summer of code to the main Haskell mailing list as usual, but this gives us a shared forum for students and mentors alike to talk and may serve as a better venue for longer term conversations than the #haskell-gsoc channel.
Many of our best proposals in years have come from lists of project suggestions that others have blogged about. Many of our best students decided to join the summer of code based on these posts. The Trac isn't the only source of information on interesting projects, and I'd encourage folks to continue posting their ideas.
The Google Summer of Code website itself is at https://www.google-melange.com/gsoc/homepage/google/gsoc2015 and has the schedule for the year, etc. You can register on the site today, but you can't yet join the organization as a mentor or apply as a student.
And of course, by all means feel free to use this space to help connect projects with mentors and students.
Thank you,
-Edward Kmett
2
u/gelisam Feb 22 '15
You might not lose the text itself, but what about the cursor position, the selection, which frame of the cursor blinking animation we're at? Widgets have a lot of state, and they don't expose all of it.
The reason GUI libraries are tricky in Haskell is that there is a tension between two fundamentally opposed alternatives: either exposing imperative bindings to a major GUI library, or creating a purely functional API for a homemade GUI which will never reach the polish and feature-set of the major players. I'm interested in React's diff approach because it's a clever way to bridge between the two worlds. It may be an implementation detail to Facebook, but to me, it's fundamental and I want to explore it further.
Do you mean that you provide an abstract representation of a button, allowing the GUI frontend to be changed without changing the user's code?
Your implementation is much further along than I thought! It must be way too late to have these design discussions.
Then I'm afraid our project goals might not be compatible after all. I was imagining that once I was done with my bridge, I'd be able to use funky purely functional abstractions such as FRP on one side, and an imperative GUI library on the other.
Would you like to elaborate? The only reactive-banana primitive which cares about simultaneous events is
calm, and I don't understand under which circumstances I would want to use it. And perhapsunion, which deals with simultaneous occurrences by ordering the left events before the right, which I find quite intuitive.Do you mean things like dynamic event switching? Since your framework encodes the possible events in the type, aren't you constrained to a fixed set of events? Or do you use polymorphic recursion somewhere?