|
| 1 | +import Html exposing (..) |
| 2 | +import Html.Attributes exposing (..) |
| 3 | +import Markdown |
| 4 | + |
| 5 | +import Blog |
| 6 | +import Center |
| 7 | + |
| 8 | + |
| 9 | + |
| 10 | +(=>) = (,) |
| 11 | + |
| 12 | + |
| 13 | +main = |
| 14 | + Blog.blog |
| 15 | + "Elm + Google Summer of Code" |
| 16 | + "" |
| 17 | + Blog.evan |
| 18 | + (Blog.Date 2017 3 1) |
| 19 | + [ Center.markdown "600px" intro |
| 20 | + , div [Center.style "600px"] |
| 21 | + [div [ class "intrinsic-container" ] |
| 22 | + [ iframe |
| 23 | + [ src "https://www.youtube.com/embed/DSjbTC-hvqQ?start=845&end=1608&rel=0&autoplay=0" |
| 24 | + , attribute "allowfullscreen" "" |
| 25 | + ] [] |
| 26 | + ] |
| 27 | + ] |
| 28 | + , Center.markdown "600px" part2 |
| 29 | + ] |
| 30 | + |
| 31 | + |
| 32 | + |
| 33 | +-- CONTENT |
| 34 | + |
| 35 | + |
| 36 | +intro = """ |
| 37 | +
|
| 38 | +Elm is participating in Google Summer of Code! **Undergraduate, masters, and PhD students have the chance to work on Elm over the summer with a stipend and mentorship.** I think this will be fun for students, but it will also be a great way to share knowledge and expertise within the Elm community and broader open source community. |
| 39 | +
|
| 40 | +The rest of this post is about what students and community members can do so that the Elm community gets the most out of this opportunity. Specifically, students can submit project proposals starting on 20 March, and **I think we will get the best proposals if experienced Elm community members help out!** |
| 41 | +
|
| 42 | +
|
| 43 | +> For skimmers, more info is available at [the GSoC FAQ][faq], [the GSoC rules][rules], [Elm’s GSoC entry][org], [the project suggestion page][projects], [this wiki][wiki], and [the #gsoc channel on Slack][slack]. Please read this post if you want to help out though! |
| 44 | +
|
| 45 | +[faq]: https://developers.google.com/open-source/gsoc/faq |
| 46 | +[rules]: https://summerofcode.withgoogle.com/rules/ |
| 47 | +[org]: https://summerofcode.withgoogle.com/organizations/6174333933191168/ |
| 48 | +[projects]: https://github.com/elm-lang/projects/blob/master/README.md |
| 49 | +[wiki]: https://github.com/elm-lang/projects/wiki |
| 50 | +[slack]: https://elmlang.slack.com/messages/gsoc/ |
| 51 | +
|
| 52 | +## Ideal Projects |
| 53 | +
|
| 54 | +Participating in an open source community is more than just writing code. It is about building relationships and collaborating with people. **An ideal project will take your experience with Elm and channel it toward a concrete problem that interests you.** I highly recommend watching 12 minutes of the following talk to understand this better. The video will automatically start at the 14m6s mark, so just press play! |
| 55 | +
|
| 56 | +""" |
| 57 | + |
| 58 | + |
| 59 | +part2 = """ |
| 60 | +
|
| 61 | +When it comes to Google Summer of Code, we have a bunch of constraints that make it easier to pick out great projects: |
| 62 | +
|
| 63 | + * Time is limited. Only about 12 weeks. |
| 64 | + * API design is a craft that takes many years to master, making it a bad project when someone is new and time constrained. |
| 65 | + * Students may not finish everything, so the expected results should be valuable even if not everything is completed. |
| 66 | +
|
| 67 | +I have outlined [a bunch of good community projects](https://github.com/elm-lang/projects/blob/master/README.md), but I want to highlight a few that are ideal for GSoC. |
| 68 | +
|
| 69 | +
|
| 70 | +### Package Search |
| 71 | +
|
| 72 | +The search feature of [package.elm-lang.org](http://package.elm-lang.org/) is quite rudimentary. Community members have already created “type search” [like this](http://klaftertief.github.io/elm-search/) which is really cool, but I think we would benefit from a more traditional search feature as well. I outline some ideas for this [right here](https://github.com/elm-lang/projects/blob/master/README.md#package-search). |
| 73 | +
|
| 74 | +In the end we’d want this service can live on its own server, so if it goes down, it does not take down the package website. It would also take in JSON and give out JSON, so the scope is limited to writing servers, which can be a great learning experience. |
| 75 | +
|
| 76 | +These natural constraints make it a great GSoC project. If the project is incomplete, nothing is blocked. In every case *the community* learns if full-text search is valuable, and if so, how much it costs. And perhaps the project will inspire collaborators or competitors! |
| 77 | +
|
| 78 | +
|
| 79 | +### More Academic Stuff |
| 80 | +
|
| 81 | +There are a few projects that require a stronger background in compilers and programming languages. I think these would be great for older undergrads, masters students, and PhD students. The [project page](https://github.com/elm-lang/projects/blob/master/README.md) lists [exploring monomorphization](https://github.com/elm-lang/projects/blob/master/README.md#explore-monomorphizing-compilers) and [exploring WebAssembly](https://github.com/elm-lang/projects/blob/master/README.md#explore-webassembly). Both of these projects are primarily *exploratory*. In other words, a big part of the results would be a well-written literature review, so even if the technical artifacts are not perfect, they get things going. |
| 82 | +
|
| 83 | +I think there are a bunch of more sophisticated control flow analyses that could be interesting to look into. Maybe that means figuring out test coverage statically or trying to augment [elmjutsu](https://atom.io/packages/elmjutsu) to suggest fancier expressions based on types. So if you see: |
| 84 | +
|
| 85 | +```elm |
| 86 | +longestName : List User -> Int |
| 87 | +longestName users = |
| 88 | + users |
| 89 | + |> List.map .name |
| 90 | + |> ... |
| 91 | +``` |
| 92 | +
|
| 93 | +In the `...` we know we want to get from `List String` to `Int` so we can suggest functions like `List.length`. Perhaps we can rank suggestions based on which file or package they live in. |
| 94 | +
|
| 95 | +Point is, these are projects that push the Elm community in interesting directions, they have a large learning component for both the student and community, and you can achieve a great deal before much coordination is needed. For masters and PhD students, there are ways to fit projects like this into a broader research agenda, but we will have a strong preference for projects that (1) do not require language changes and (2) can reasonably expect a concrete result. |
| 96 | +
|
| 97 | +For folks with the background for this, I encourage you to talk to the creators of projects like elm-test, elm-format, elmjutsu, and sketch-n-sketch to learn what kind of analyses would be most useful in practice! |
| 98 | +
|
| 99 | +
|
| 100 | +## Mentorship |
| 101 | +
|
| 102 | +I have created two collaborative resources for mentorship and support: |
| 103 | +
|
| 104 | + - **The [#gsoc channel](https://elmlang.slack.com/messages/gsoc/) on the Elm slack.** If you want to help students refine projects, keep an eye on it! Once there are accepted projects, I want that channel to be a place for students, mentors, and knowledgeable community members to work together. This way we can quickly learn from the student’s project and they learn from our collective expertise. |
| 105 | +
|
| 106 | + - **The [mentor wiki](https://github.com/elm-lang/projects/wiki).** Students will also have a specific mentor that will meet with them at least once a week. I think finding a match between interests, knowledge, and personalities is important, so please add your information if you are interested in being a mentor. Obviously not everyone can do it, but I think it makes sense to have a bunch of folks willing to help. |
| 107 | +
|
| 108 | +
|
| 109 | +## Thanks and Good Luck |
| 110 | +
|
| 111 | +First, thank you to the folks who helped out with the Google Summer of Code application. I really appreciate your support! |
| 112 | +
|
| 113 | +Second, I am excited to see what kind of proposals we get. Hopefully this blog post helps you refine your ideas into something ambitious and practical! |
| 114 | +
|
| 115 | +
|
| 116 | +""" |
0 commit comments