Skip to content

Commit f743d2f

Browse files
authored
Merge pull request #591 from scala/gsoc-2017
Add GSOC 2017 page
2 parents 1da45fb + 00c0320 commit f743d2f

File tree

2 files changed

+340
-0
lines changed

2 files changed

+340
-0
lines changed

blog/_posts/2017-02-22-gsoc-2017.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
---
2+
layout: blog
3+
post-type: blog
4+
by: Julien Richard-Foy
5+
title: Google Summer Of Code 2017
6+
---
7+
8+
This year the Scala team applied again for [Google Summer of Code](https://summerofcode.withgoogle.com/).
9+
Scala contributors are welcome to propose project ideas on our
10+
[discussion forums](https://contributors.scala-lang.org/)! Students
11+
can apply for [projects](/gsoc/2017.html) until 3rd of April!

gsoc/2017.md

Lines changed: 329 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,329 @@
1+
---
2+
layout: page
3+
title: "Google Summer of Code 2017 Scala Projects"
4+
---
5+
6+
*This page is work in progress for the upcoming GSOC 2017*
7+
8+
## Google Summer of Code
9+
10+
**This year the Scala team applied again for the [Google Summer of
11+
Code](https://developers.google.com/open-source/gsoc/)
12+
program to work with enthusiastic students on challenging Scala
13+
projects**
14+
15+
This page provides a list of project ideas. The suggestions are only a
16+
starting point for students. We expect students to explore the ideas
17+
in much more detail, preferably with their own suggestions and
18+
detailed plans on how they want to proceed. Don't feel constrained by
19+
the provided list! We welcome any of your own challenging ideas, but
20+
make sure that the proposed project satisfies the [main
21+
requirements](#requirements-and-guidelines) mentioned below.
22+
23+
### How to get involved
24+
25+
The best place to propose and discuss your proposals is our
26+
["contributors"](http://contributors.scala-lang.org/)
27+
discussion forum. This way you will get quickly responses from the whole
28+
Scala community.
29+
30+
### Previous Summer of Code
31+
32+
We encourage you to have a look at our
33+
[2016](http://scala-lang.org/gsoc/2016.html),
34+
[2015](http://scala-lang.org/gsoc/2015.html),
35+
[2014](http://scala-lang.org/gsoc/2014.html),
36+
[2013](http://www.scala-lang.org/news/2013/03/20/gsoc13.html),
37+
[2012](http://www.scala-lang.org/gsoc2012#),
38+
[2011](http://www.scala-lang.org/gsoc2011#),
39+
[Summer of Code 2010](http://www.scala-lang.org/gsoc2010#)
40+
pages to get an idea on what we and you can expect while working on Scala.
41+
42+
## Project Ideas
43+
44+
Here are some project ideas. The list is non-binding and any reasonable
45+
project related to Scala that is proposed by a student will be thoroughly
46+
reviewed.
47+
48+
### String interpolator for XML literals
49+
50+
We have wanted for a long time to deprecate XML literals in Scala and replace them by a string interpolator. That is, instead of
51+
52+
<body>
53+
...
54+
</body>
55+
56+
future Scala programs would use an interpolated string
57+
58+
xml"""
59+
<body>
60+
...
61+
</body>
62+
"""
63+
64+
This project should turn the wish into reality by implementing the
65+
`xml` interpolator. The implementation should re-use most of the
66+
existing infrastructure for xml literals. It would probably be a good
67+
idea to re-package the existing XML parser in the Scala compiler, and
68+
to map interpolated strings to constructors from the existing
69+
`scala.xml` library. Some other aspects need to be re-thought. In
70+
particular name-space management should be handled by implicts
71+
instead of being hard-coded in the Scala typer.
72+
73+
The project is a success if it can support essentially all legal XML
74+
expressions in Scala as interpolated strings. By contrast, support for
75+
XML patterns is optional: it would be nice if we could do it, but it's
76+
not required.
77+
78+
This project is ideal for someone who knows XML basics, and is
79+
interested to learn enough about aspects of the compiler (either Scala 2.12
80+
or Dotty) to identify what can be re-used.
81+
82+
Supervised by [@densh](http://github.com/densh)
83+
84+
### Dotty Documentation Compiler ###
85+
86+
[Dotty](http://dotty.epfl.ch) is the future Scala compiler developed at EPFL.
87+
Getting in to compiler development is usually a very difficult especially when
88+
it comes to compilers for advanced languages like Scala.
89+
90+
Luckily, there are two compilers in the Dotty project. One for the language and
91+
one which acts as a documentation compiler. The docs compiler, alias
92+
"Dottydoc", uses parts of the main compiler to collect semantic information
93+
about the user's source files, it then creates a full-blown static site similar
94+
to Jekyll - featuring an API reference, markdown parsing for documentation,
95+
cross-referencing between docs and API and a blog. Gone is the divide between
96+
what is API and what is documentation. If you visited the Dotty
97+
[website](http://dotty.epfl.ch), then you've seen Dottydoc - that entire site
98+
was generated by it.
99+
100+
If you feel that you want to help shape the future of Scala, either by
101+
contributing to the Dotty compiler or by dramatically improving the tooling
102+
surrounding the Scala language, this is the place to start.
103+
104+
Supervised by [@felixmulder](http://github.com/felixmulder)
105+
106+
### Auto-completion and type information in Scastie
107+
108+
Scastie is an online Scala programming environment. This project would
109+
add support for auto-completion and type information to the online code editor.
110+
That would require to perform calls to the presentation compiler running
111+
on the server-side to retrieve the required informations.
112+
113+
[https://github.com/scalacenter/scastie](https://github.com/scalacenter/scastie)
114+
115+
Supervised by [@MasseGuillaume](https://github.com/MasseGuillaume) and/or
116+
[@julienrf](https://github.com/julienrf)
117+
118+
### Writing interactive programs with Scastie
119+
120+
Scastie is an online Scala programming environment. Currently, programs
121+
written in scastie have limited means of showing an output to users.
122+
This project would add support for writing programs showing images and
123+
interactive animations running in the browser.
124+
125+
[https://github.com/scalacenter/scastie](https://github.com/scalacenter/scastie)
126+
127+
Supervised by [@MasseGuillaume](https://github.com/MasseGuillaume) and/or
128+
[@julienrf](https://github.com/julienrf)
129+
130+
### Reimplement the JDK in Scala-Native
131+
132+
Scala-Native is a new target for Scala. Instead of compiling to bytecode and running on the JVM, we
133+
use llvm to generate native assembly code. We currently do not compile Java to llvm. Therefore we need
134+
to reimplement some parts of JDK such as `java.net.*`, `java.io.*`, `java.nio.*` and `java.util.*`. We are already
135+
reimplementing the JDK and we need your help to increase our coverage. It'a unique chance to learn
136+
how to implement the java api and write low level Scala code.
137+
138+
Supervised by [@MasseGuillaume](https://github.com/MasseGuillaume)
139+
140+
### Slick bug and feature hunt
141+
142+
There are lots of open tickets in the Slick issue tracker. Some which have long
143+
time fallen behind. This project would be about tackling as many of them as
144+
time permits.
145+
146+
[https://github.com/slick/slick/issues](https://github.com/slick/slick/issues)
147+
148+
Supervised by [@cvogt](https://github.com/cvogt) and/or [@szeiger](https://github.com/szeiger)
149+
150+
### CBT plugin initiative
151+
152+
CBT, the new build tool for Scala is making fast progress. In order to be a
153+
viable alternative to the existing choices, many people will need plugins,
154+
which often do not exist yet for CBT. The focus of this project will be
155+
converting builds of popular Scala libraries to CBT and writing whatever
156+
plugins necessary to pull it off. This project gives you the chance to play
157+
with one of the new exciting tools in the Scala world, work on a fairly elegant
158+
Scala code base and sharpen your proficiency in parts of the JDK often
159+
forgotten by Scala developers.
160+
161+
[https://github.com/cvogt/cbt](https://github.com/cvogt/cbt)
162+
163+
Supervised by [@cvogt](https://github.com/cvogt)
164+
165+
### Implementation of the Savina Benchmark Suite using the Reactors Framework
166+
167+
The Savina suite is a benchmark suite for actor-oriented programs.
168+
Its goal is to provide standard benchmarks that enable researchers and
169+
application developers to compare different actor implementations and
170+
identify those that deliver the best performance for a given use-case.
171+
The [Reactors framework](http://reactors.io/) is a novel actor framework
172+
based on the reactor programming model, and offers better composition
173+
and modularity compared to standard actors. So far, only a part of the
174+
Savina suite was ported to the Reactors framework. To make Reactors
175+
fully compliant with Savina, the goal of this project is to implement
176+
the remaining 21 Savina benchmarks using the Reactors framework.
177+
178+
[Savina Benchmark Suite](https://pdfs.semanticscholar.org/b346/9783325ea82d1ded949804a0676acb125484.pdf)
179+
180+
[Reactors Framework](https://github.com/reactors-io/reactors/)
181+
182+
Supervised by [@axel22](https://github.com/axel22)
183+
184+
### Benchmarking the new collections
185+
186+
The standard collections are in the process of being redesigned. We want to
187+
be sure that the new implementation is as efficient as the current one, if not
188+
more efficient. A simple benchmark suite has been implemented but it lacks nice
189+
features like performance regression reports via interactive charts. This project
190+
would require the student to be familiar with benchmarking (especially within
191+
the JVM) and web-based visualization libraries such as d3.
192+
193+
[https://github.com/scala/collection-strawman](https://github.com/scala/collection-strawman)
194+
195+
Supervised by [@julienrf](https://github.com/julienrf)
196+
197+
198+
### Connecting potential contributors with Scala projects via Scaladex
199+
200+
Scaladex is a cool new tool that maps out the known Scala ecosystem by
201+
connecting GitHub users, published binaries, contributor info, documentation
202+
info, and release info of Scala projects. The one thing though that Scaladex
203+
doesn't do yet is connecting potential contributors to Scala projects that are
204+
on the lookout for contributors. Your task if you take on this project would be
205+
to find a way to better connect project maintainers with interested open source
206+
contributors, by building on Scaladex, a web application built with Scala and
207+
Scala.js.
208+
209+
Supervised by [@heathermiller](https://github.com/heathermiller)
210+
211+
212+
### New line-wrapping algorithm for scalafmt
213+
214+
[Scalafmt](https://olafurpg.github.io/scalafmt/) is a code formatter for Scala.
215+
A key feature of scalafmt is that users can define a maximum width (for example 80 characters)
216+
so that long code lines get automatically wrapped into shorter lines.
217+
Currently, scalafmt uses a [token-based best-first search algorithm](https://geirsson.com/assets/olafur.geirsson-scalafmt-thesis.pdf) to wrap long lines.
218+
Both [dartfmt](http://journal.stuffwithstuff.com/2015/09/08/the-hardest-program-ive-ever-written/)
219+
and [clang-format](https://www.youtube.com/watch?v=s7JmdCfI__c) use a similar approach.
220+
This token-based best-first algorithm has [known issues](https://olafurpg.github.io/scalafmt/#Deeplynestedcode) in scalafmt.
221+
222+
The goal of this project would be to explore and implement an alternative line wrapping algorithm for scalafmt.
223+
One promising alternative is the [dynamic-programming algorithm employed by rfmt](https://www.researchgate.net/profile/Phillip_Yelland/publication/284724851_A_New_Approach_to_Optimal_Code_Formatting/links/5657f1e608ae4988a7b58558.pdf)
224+
(see [Python implementation](https://github.com/google/rfmt)).
225+
Another promising algorithm is Philip Wadler's ["prettier printer"](http://homepages.inf.ed.ac.uk/wadler/papers/prettier/prettier.pdf).
226+
The prettier-printer algorithm has been successfully employed by the [prettier](https://github.com/jlongster/prettier) JavaScript formatter.
227+
228+
Supervised by [@olafurpg](https://github.com/olafurpg)
229+
230+
231+
*... Mentors: please insert your projects here. You can use the following template and submit a PR [here](https://github.com/scala/scala-lang). Note that student applications will end on April 3, 2017 ...*
232+
233+
### *Project name*
234+
235+
*Project description.*
236+
237+
*Link to the corresponding code repository, if relevant.*
238+
239+
Supervised by *[@username](https://github.com/username)*.
240+
241+
## Requirements and Guidelines
242+
243+
### General Student Application Requirements
244+
245+
This is the seventh time the Scala project has applied to the Summer of
246+
Code, and from previous years’ experience, increased popularity of the
247+
language and stories of other mentor organizations we expect a high
248+
number of applications. First, be aware of the following:
249+
250+
* Make sure that you understand, fulfill and agree to the general
251+
[Google Summer of Code rules](https://summerofcode.withgoogle.com/rules/)
252+
* The work done during GSoC requires some discipline as
253+
you have to plan your day-to-day activity by
254+
yourself. Nevertheless, you can expect regular contact with your
255+
mentors both via the usual means of communication for you project
256+
as well as personal guidance via email, chat or phone. The mentor is
257+
there for you in case you get stuck or need some guidance during your 3 month coding project.
258+
* The [official SoC timetable](https://summerofcode.withgoogle.com/how-it-works/#timeline)
259+
mentions May 30 as the official start of coding. If you
260+
have time, you are encouraged to research your proposals even
261+
before that (and definitely learn the basics of Scala, if you
262+
haven't done that already).
263+
264+
### Student Application Guidelines
265+
266+
* Student proposals should be very specific. We want to see evidence
267+
that you can succeed in the project. Applications with one-liners
268+
and general descriptions definitely won't make the cut.
269+
* Because of the nature of our projects students must have some
270+
knowledge of the Scala language. Applicants with Scala programming
271+
experience will be preferred. Alternatively, experience with
272+
functional programming could suffice, but in your application we
273+
want to see evidence that you can quickly be productive in Scala.
274+
* You can think of Google Summer of Code as a kind of independent
275+
internship. Therefore, we expect you to work full-time during the
276+
duration. Applicants with other time commitments are unlikely to
277+
be selected. From our previous experience we know that students'
278+
finishing their studies (either Bachelor, Master of PhD) are
279+
likely to be overwhelmed by their final work, so please don't be
280+
too optimistic and carefully plan your time for the project.
281+
* If you are unsure whether your proposal is suitable, feel free to
282+
discuss it on our
283+
["contributors"](http://contributors.scala-lang.org/)
284+
discussion forum. We have many community members on our mailing list
285+
who will quickly answer any of your questions regarding the
286+
project. Mentors are also constantly monitoring the mailing
287+
list. Don't be afraid to ask questions. We’d love to help you out!
288+
289+
### General Proposal Requirements
290+
291+
The proposal will be submitted via the standard web-interface at
292+
[https://summerofcode.withgoogle.com/](https://summerofcode.withgoogle.com/),
293+
therefore plain text is the best way to go. We expect your application
294+
to be in the range of 700-1500 words. Anything less than that will
295+
probably not contain enough information for us to determine whether
296+
or not you are the right person for the job.
297+
298+
Your proposal should contain at least the following information, but
299+
feel free to include anything that you think is relevant:
300+
301+
* Please include your name (weird as it may be, people do forget it)
302+
* Title of your proposal
303+
* Abstract of your proposal
304+
* Detailed description of your idea including explanation on why it
305+
is innovative (maybe you already have a prototype?), what
306+
contribution do you expect to make to the Scala community and why
307+
do you think your project is needed. A rough plan of your
308+
development and possible architecture sketches.
309+
* Description of previous work, existing solutions (links to
310+
prototypes or references are more than welcome!)
311+
* Write us about yourself and convince that you are the right
312+
person for the job (linking to your resume/CV is good but not
313+
sufficient)
314+
* Mention the details of your academic studies, any previous
315+
work, internships
316+
* Any relevant skills that will help you to achieve the goal
317+
(programming languages, frameworks)?
318+
* Any previous open-source projects (or even previous GSoC) you
319+
have contributed to?
320+
* Do you plan to have any other commitments during SoC that may
321+
affect you work? Any vacations/holidays planned? Please be
322+
specific as much as you can.
323+
* If you apply to more than one GSoC project, especially if you also apply
324+
for a project in another organization, specify which project you prefer.
325+
In case two organizations choose to accept your applications,
326+
we can then give you the project that is most important to you.
327+
Preferring the project of another organization will *not* influence our
328+
decision whether to accept your application.
329+
* Contact details (**very important!**)

0 commit comments

Comments
 (0)