https://www.scala-lang.org/The Scala Programming Language :: News2024-03-19T10:45:06+01:00École Polytechnique Fédérale de LausanneCopyright (c) 2002-2024 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, SwitzerlandLightbend transfers ownership of sbt to the Scala Center2023-08-25T00:00:00+02:00https://www.scala-lang.org/news/2023/08/25/sbt-license-transfer<p>As of June 2023, <a href="https://www.lightbend.com">Lightbend</a> has transferred the complete ownership to the <a href="https://scala.epfl.ch">Scala Center</a> of the <a href="https://github.com/sbt">sbt organisation</a> on GitHub, the sbt logo, the <a href="https://twitter.com/scala_sbt">@scala_sbt</a> social media account, and the <a href="https://www.scala-sbt.org">scala-sbt.org</a> domain.
The copyright of sbt’s Apache 2 licence now belongs to the Scala Center, and contributions are now covered by the <a href="https://www.lightbend.com/contribute/cla/scala">Scala CLA</a> (the same as Scala itself).</p>
<p>What does this mean for sbt users?
With the Scala Center as stewards of sbt, we acknowledge the importance of sbt for Scala. We will help the community to continue the development and maintenance of sbt as open source software.</p>
<p>The Scala Center is a regular contributor of sbt. However we don’t have the capacity to commit full-time to active development and maintenance of sbt. The Center is looking for funds which would help us dedicate more active support. You can help as a company by <a href="https://scala.epfl.ch/corporate-membership.html">joining the advisory board</a>, or as an individual by <a href="https://scala.epfl.ch/donate.html">making a donation</a>.</p>
<p>The Scala Center would like to thank <a href="https://github.com/eed3si9n">Eugene Yokota</a>, and present and former members of Lightbend for their stewardship and contributions to sbt over the years.</p>
Kelley Robinson receives community award2019-09-13T00:00:00+02:00https://www.scala-lang.org/news/2019/09/13/bagwell-award-2019<p>We are pleased to announce that the Phil Bagwell Memorial Scala Community Award for 2019 has been awarded to <a href="https://twitter.com/kelleyrobinson">Kelley Robinson</a>. The award was presented in Lausanne at the outset of <a href="https://scaladays.org/">Scala Days</a> 2019.</p>
<p>You can watch the ceremony <a href="https://www.youtube.com/watch?v=HX3lxMhFDbs">here</a>. (The ceremony also included the 2018 award to Kenji Yoshida.)</p>
<p>And here is a <a href="https://www.youtube.com/watch?v=koyufYkatVc">tribute video</a> with remarks from Noel Welsh, Yifan Xing, Eugene Yokota, Holden Karau, Rob Norris, and others.</p>
<h2 id="about-the-winner">About the winner</h2>
<p>Kelley is known to Scala users as:</p>
<ul>
<li>Founder of <a href="https://scalabridge.org">ScalaBridge</a>, a series of
introductory Scala workshops for underrepresented groups, aimed at making
the Scala community more diverse and inclusive. Since its launch in
2016, ScalaBridge has spread around the globe.</li>
<li>Co-creator of the <a href="https://www.scala-lang.org/conduct/">Scala Code of Conduct</a>.</li>
<li>Conference speaker, known for talks such as “Why the Free Monad Isn’t
Free”, “Demystifying Scala”, and “Building a Better Scala Community”.</li>
<li>Developer evangelist at <a href="https://www.twilio.com">Twilio</a>.</li>
</ul>
<h2 id="about-the-award">About the award</h2>
<p>The Bagwell Award is named in honor of Phil Bagwell, who passed away in 2012. In a <a href="https://www.lightbend.com/blog/rip-phil-bagwell">2012 blog post</a>, Martin Odersky remembers Phil and his special place in the Scala community.</p>
<p>The Award Committee consists of previous Award winners (see below). They took <a href="https://www.scala-lang.org/blog/2019/03/01/phil-bagwell-nominations.html">community nominations</a> into consideration.</p>
<p>Past winners of the award:</p>
<ul>
<li>2018: <a href="https://www.scala-lang.org/news/2019/09/13/bagwell-award-2018.html">Kenji Yoshida</a></li>
<li>2017: <a href="https://www.scala-lang.org/news/2017/09/25/bagwell-award-2017.html">Josh Suereth</a></li>
<li>2016: <a href="https://www.scala-lang.org/news/2016/10/26/bagwell-award-2016.html">Erik Osheim</a></li>
<li>2015: <a href="https://scala-lang.org/news/2015/06/25/bagwell-award-2015.html">Bill Venners</a></li>
<li>2014: <a href="https://kojoenv.wordpress.com/2014/09/27/phil-bagwell-award/">Lalit Pant</a></li>
<li>2013: <a href="https://twitter.com/dickwall">Dick Wall</a></li>
</ul>
Kenji Yoshida receives community award2019-09-13T00:00:00+02:00https://www.scala-lang.org/news/2019/09/13/bagwell-award-2018<p>We are pleased to announce that the Phil Bagwell Memorial Scala Community Award for 2018 has been awarded to <a href="https://twitter.com/xuwei_k">Kenji Yoshida</a>. The award was presented in Lausanne at the outset of <a href="https://scaladays.org/">Scala Days</a> 2019.</p>
<!-- the Scala Days link should be replaced with a 2019-specific link, once one is available -->
<p>On stage, Eugene Yokota accepted the award on Yoshida-san’s behalf. You can watch the ceremony <a href="https://www.youtube.com/watch?v=HX3lxMhFDbs">here</a>. (The ceremony also included the 2019 award to Kelley Robinson.)</p>
<p>And here is a <a href="https://www.youtube.com/watch?v=mq-43ds0-pY">tribute video</a> with remarks from Josh Suereth, Eugene Yokota, Rob Norris, and Miles Sabin.</p>
<h2 id="about-the-winner">About the winner</h2>
<p>Yoshida-san is known to Scala users as:</p>
<ul>
<li>Long-term maintainer of <a href="https://github.com/scalaz/scalaz">scalaz</a>, the first library to pioneer full support for pure-functional programming in Scala.</li>
<li>Prominent contributor to Scala 2.13. His many pull requests to the Scala repo were done while he was on parental leave in 2018.</li>
<li>A ubiquitous presence in pull request queues across the Scala open-source world, in literally hundreds of projects. Taken individually, his contributions are often small, but in aggregate, they are essential to our ecosystem’s health.</li>
</ul>
<p>Some of Yoshida-san’s Japanese-language tweets are available in English translation at <a href="https://twitter.com/not_xuwei_k">@not_xuwei_k</a>.</p>
<h2 id="about-the-award">About the award</h2>
<p>The Bagwell Award is named in honor of Phil Bagwell, who passed away in 2012. In a <a href="https://www.lightbend.com/blog/rip-phil-bagwell">2012 blog post</a>, Martin Odersky remembers Phil and his special place in the Scala community.</p>
<p>The Award Committee consists of previous Award winners (see below). They took <a href="https://www.scala-lang.org/blog/2019/03/01/phil-bagwell-nominations.html">community nominations</a> into consideration.</p>
<p>Past winners of the award:</p>
<ul>
<li>2017: <a href="https://www.scala-lang.org/news/2017/09/25/bagwell-award-2017.html">Josh Suereth</a></li>
<li>2016: <a href="https://www.scala-lang.org/news/2016/10/26/bagwell-award-2016.html">Erik Osheim</a></li>
<li>2015: <a href="https://scala-lang.org/news/2015/06/25/bagwell-award-2015.html">Bill Venners</a></li>
<li>2014: <a href="https://kojoenv.wordpress.com/2014/09/27/phil-bagwell-award/">Lalit Pant</a></li>
<li>2013: <a href="https://twitter.com/dickwall">Dick Wall</a></li>
</ul>
New Course: “Programming Reactive Systems”2018-12-20T00:00:00+01:00https://www.scala-lang.org/news/2018/12/20/programming-reactive-systems-course<p>We are excited to announce the release of a new MOOC:
<a href="https://www.edx.org/course/programming-reactive-systems">Programming Reactive Systems</a>!</p>
<p>This seven weeks long course teaches you how to use “reactive programming” techniques
for implementing scalable, resilient and responsive systems. Skills you will learn
include how to:</p>
<ul>
<li>use, transform and sequence asynchronous computations using <code class="language-plaintext highlighter-rouge">Future</code> values,</li>
<li>write concurrent systems based on <a href="https://akka.io">Akka</a> actors,</li>
<li>design systems resilient to failures,</li>
<li>implement systems that scale out according to varying workloads,</li>
<li>define well-typed communication protocols using <strong>Akka Typed</strong>,</li>
<li>process large streams of data with limited resources using <strong>Akka Streams</strong>,</li>
<li>understand how back-pressure controls flows of data.</li>
</ul>
<p>The course is taught by two experts of the field:</p>
<ul>
<li><strong>Roland Kuhn</strong>, former Akka team lead and co-author of the
<a href="https://www.reactivemanifesto.org/">Reactive Manifesto</a>,</li>
<li><strong>Konrad Malawski</strong>, long-time Akka team and
<a href="https://www.reactive-streams.org/">Reactive Streams</a> expert group member.</li>
</ul>
<p>In case you have followed the former “Principles of Functional Reactive
Programming in Scala” course a couple of years ago, this course contains updated
material as well as three weeks of new material on Akka Typed and Akka Streams.</p>
<p>The first session will start on February 18th, 2019. You can
<a href="https://courses.edx.org/register?course_id=course-v1%3AEPFLx%2Bscala-reactiveX%2B1T2019&enrollment_action=enroll&email_opt_in=false">sign up</a>
and audit the course for free or pursue a certificate.</p>
Our MOOCs Now Support The EdX Platform2018-02-27T00:00:00+01:00https://www.scala-lang.org/news/2018/02/27/moocs-edx-support<blockquote>
<p><strong>Update</strong>: After a couple of years experimenting with Open edX, we decided
to shut down these course instances. You can find an up-to-date list of
online courses <a href="https://docs.scala-lang.org/online-courses.html">here</a>.</p>
</blockquote>
<p>We are thrilled to announce that our 4 main MOOCs are now also available
on an <a href="https://courseware.epfl.ch">Open edX instance managed at EPFL</a>.</p>
<p><a href="https://courseware.epfl.ch/"><img src="/resources/img/courseware-scala-moocs.png" alt="" /></a></p>
<p>The content of the courses remains the same as the ones on
<a href="https://www.coursera.org/specializations/scala">Coursera</a>. The differences
are that our platform is free to use and doesn’t deliver certificates (official credentials
that confirm that you successfully completed a course).</p>
<p>As a reminder, the courses are the following:</p>
<ul>
<li>Functional Programming Principles in Scala:
An introduction to functional programming (pure functions, recursion, pattern matching, higher-order
functions, immutable data types, type parameters, equational reasoning),</li>
<li>Functional Program Design in Scala:
A follow-up of the first course, showing how to apply the functional programming style
to larger programs. Covers topics such as monads, lazy evaluation, property-based testing,
futures and dataflow programming.</li>
<li>Parallel Programming:
Introduces the fundamentals of parallel programming, from task parallelism to data parallelism,</li>
<li>Big Data Analysis with Scala and Spark:
Extends the data parallel paradigm to the distributed case (as opposed to shared-memory parallel
or sequential collections), using Spark.</li>
</ul>
<p><a href="https://open.edx.org">Open edX</a> is an open source learning management system that
was originally developed by the <a href="https://edx.org">edX</a> nonprofit.</p>
<p>Our goal is to deliver the courses content in the most accessible way. We
hope you will enjoy the learning experience provided by the Open edX platform.</p>
<p>Happy learning!</p>
Josh Suereth receives community award2017-09-25T00:00:00+02:00https://www.scala-lang.org/news/2017/09/25/bagwell-award-2017<p>We are pleased to announce that the Phil Bagwell Memorial Scala Community Award for 2017 has been awarded to <a href="https://twitter.com/jsuereth">Josh Suereth</a>. The award was presented in the UK’s Lake District at <a href="https://scala.world">Scala World 2017</a>.</p>
<p>Josh has been a prominent member of the Scala community ever since the early
days of the language’s commercial adoption. He is known to Scala users as:</p>
<ul>
<li>author of <em>Scala in Depth</em> and co-author of <em>sbt in Action</em>,
both published by Manning</li>
<li>maintainer of the <a href="https://www.scala-sbt.org">sbt</a> build tool
for several years at Typesafe (the company now known as Lightbend)</li>
<li>leader or contributor to numerous other open source Scala projects
including scala-arm, pickling, and assorted sbt plugins</li>
<li>cohost of the <a href="https://scalawags.tv">Scalawags podcast</a>
(and its predecessor, The Scala Types)</li>
<li>a friendly and tireless conference-goer and presenter (and
organizer of the Scala Lift Off unconference in Virginia in 2009)</li>
<li>a positive force on nearly every online medium devoted to
Scala – mailing lists, chat rooms, Twitter, you name it –
answering any and all questions with tact and humor</li>
</ul>
<p>Here’s a
<a href="https://www.youtube.com/watch?v=0sLixaObVwA">three minute video</a>
of friends and colleagues paying tribute to Josh. The video was shown
when the award was presented.</p>
<p>Josh’s surname is pronounced “Suereth”.</p>
<p>The Bagwell Award is named in honor of Phil Bagwell, who passed away in 2012. In a <a href="https://www.lightbend.com/blog/rip-phil-bagwell">2012 blog post</a>, Martin Odersky remembers Phil and his special place in the Scala community.</p>
<p>Past winners of the award:</p>
<ul>
<li>2016: <a href="https://www.scala-lang.org/news/2016/10/26/bagwell-award-2016.html">Erik Osheim</a></li>
<li>2015: <a href="https://scala-lang.org/news/2015/06/25/bagwell-award-2015.html">Bill Venners</a></li>
<li>2014: <a href="https://kojoenv.wordpress.com/2014/09/27/phil-bagwell-award/">Lalit Pant</a></li>
<li>2013: <a href="https://twitter.com/dickwall">Dick Wall</a></li>
</ul>
Scala 2.11.11, 2.12.2 and 2.13.0-M1 now available!2017-04-18T00:00:00+02:00https://www.scala-lang.org/news/releases-1Q17<p>We are happy to announce three new Scala releases: 2.11.11 concludes the 2.11 series, 2.12.2 brings bug fixes and small improvements, and 2.13.0-M1 sets the scene for modularization and improvements coming in the next major release next year. Many thanks to everyone who contributed!</p>
<p>As part of our ongoing efforts at Lightbend to simplify contributing to Scala, we are thrilled to announce our move to GitHub for <a href="https://github.com/scala/bug">bug reporting</a>, as well as for <a href="https://github.com/scala/scala/releases">release notes</a>.</p>
<p>For the highlights of these three releases, read on.</p>
<!-- break -->
<p><a href="https://github.com/scala/scala/releases/tag/v2.11.11">Scala 2.11.11</a> contains many smaller fixes and a few backports from 2.12. It also features improved error messages on missing dependencies; this improvement was developed by @jvican at the Scala Center under proposal SCP-009, which aims to speed up builds by <a href="https://github.com/scalacenter/classpath-shrinker">shrinking the build classpath</a>.</p>
<p>(Yes, we skipped 2.11.9 and 2.11.10. Special thanks to @xuwei-k and @sjrd for reporting and helping diagnose the regressions in those withdrawn releases.)</p>
<p><a href="https://github.com/scala/scala/releases/tag/v2.12.2">Scala 2.12.2</a> adds support for trailing commas, the first proposal (<a href="https://docs.scala-lang.org/sips/trailing-commas.html">SIP-27</a>) to make it all the way through the revived Scala Improvement Process. Congratulations, @dwijnand!</p>
<p><a href="https://github.com/scala/scala/releases/tag/v2.13.0-M1">Scala 2.13.0-M1</a> (milestone 1) prepares for the next phase of the standard library <a href="https://github.com/scala/scala-dev/issues/323">modularization</a> and the <a href="https://github.com/scala/collection-strawman">collections rework</a>. The parallel collections are now a separate <a href="https://github.com/scala/scala-parallel-collections">module</a>, and many deprecated members have been removed. As a reminder, our <a href="https://github.com/scala/scala-dev/issues/324">full 2.13 roadmap</a> is available for review on GitHub.</p>
Scala 2.13 roadmap2017-03-06T00:00:00+01:00https://www.scala-lang.org/news/roadmap-2.13<p>On behalf of the Scala team at Lightbend, I’d like to share our plans with you, and invite you to join us in shaping Scala’s roadmap for 2017. As this is a collective effort, and roadmaps evolve, we’ve decided to use our development issue tracker to organize our thoughts and open up the discussion for your feedback. Below is the overview of what we plan to work on. Please join the discussion on the <a href="https://github.com/scala/scala-dev/issues/324">roadmap theme issue</a> or any of the issues linked below!</p>
<p>The next release of Scala will focus on the following themes:</p>
<ul>
<li><a href="https://github.com/scala/scala-dev/labels/t%3Aperformance">compiler performance</a></li>
<li><a href="https://github.com/scala/scala-dev/labels/t%3Acollections">simplifying the collections</a></li>
<li><a href="https://github.com/scala/scala-dev/labels/t%3Amodularize">modularizing the standard library</a></li>
<li><a href="https://github.com/scala/scala-dev/labels/t%3Afriendliness">user-friendliness</a></li>
</ul>
<p>We intend to shorten the development cycle a little compared to 2.12, with the first 2.13 release candidate slated for the end of Q1 2018. In 2017, we will release quarterly 2.13 <a href="https://github.com/scala/scala/milestones">milestones</a> so you can get a good sense of the library changes. While Scala 2.11 will come to a halt with 2.11.9 in Q1 2017, we will maintain 2.12 with regular minor releases throughout 2017.</p>
<!-- break -->
<p>In collaboration with the Scala Center, as outlined in <a href="https://github.com/scalacenter/advisoryboard/blob/master/proposals/007-collections.md">SCP-007: Collaborative redesign and implementation of Scala 2.13’s collections library</a> and <a href="https://scala-lang.org/blog/2017/02/28/collections-rework.html">Stefan’s blog post</a>, the collections library rework effort has kicked off at https://github.com/scala/collection-strawman. Our goal is to simplifying usage and improve performance, with a smooth migration path from the current collections. Please <a href="https://github.com/scala/collection-strawman">join</a> and help shape one of the defining parts of Scala!</p>
<p>In tandem, the modularisation of the standard library (begun with Scala 2.11) will continue as part of the <a href="https://www.scala-lang.org/blog/2016/11/28/spp.html">Scala Platform process</a>, to foster innovation in our eco-system while maintaining a stable core. The core consists of the collections and the other standard types, such as <code class="language-plaintext highlighter-rouge">Option</code>, <code class="language-plaintext highlighter-rouge">TupleN</code>, <code class="language-plaintext highlighter-rouge">Either</code> and <code class="language-plaintext highlighter-rouge">Try</code>. Ultimately, we’d like provide even stronger binary compatibility guarantees for the core, with a vibrant complement of modules that evolve more quickly (offering only backwards compatibility). <a href="https://github.com/scala/scala-dev/issues/323">Discuss this theme</a>.</p>
<p>Scala 2.13 is a library release, which means the language itself won’t see big changes. However, we continue to invest heavily in the implementation, with a single goal: make the compiler faster. The first phase of this work involves benchmarking infrastructure, to guide our progress towards a faster compiler. After that, we will attack slowness on all fronts with all available tools. In addition to YourKit and other JVM profilers, which we have been using intensively over the years, we now have a JMH benchmarking harness for the compiler. We are also investigating lower-level performance (cpu caches, memory access patterns, JIT profiles, etc). We are eager to hear your ideas at the compiler performance theme issue. Please head over to <a href="https://github.com/scala/compiler-benchmark">the new compiler-benchmark repo</a> for the benchmarks and the issue tracker, or <a href="https://github.com/scala/scala-dev/issues/322">discuss this theme here</a>.</p>
<p>Finally, there are <a href="https://github.com/scala/scala-dev/issues?q=is%3Aopen+is%3Aissue+milestone%3A2.13+label%3Awishlist">many more things</a> we’d like to include in 2.13. Let us know if you’d like to work on one of these. We’re always happy to help! In addition to GitHub, you’ll find us on our forums and chat rooms.</p>
Google Summer Of Code 20172017-02-22T00:00:00+01:00https://www.scala-lang.org/news/2017/02/22/gsoc-2017<p>This year the Scala team applied again for <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a>.
Scala contributors are welcome to propose project ideas on our
<a href="https://contributors.scala-lang.org/">discussion forums</a>! Students
can apply for <a href="/gsoc/2017/">projects</a> until 3rd of April!</p>
Erik Osheim receives community award2016-10-26T00:00:00+02:00https://www.scala-lang.org/news/2016/10/26/bagwell-award-2016<p>We are pleased to announce that the Phil Bagwell Memorial Scala Community Award for 2016 has been awarded to <a href="https://twitter.com/d6">Erik Osheim</a>. The award was presented in Lake District, UK at <a href="https://scala.world">Scala World 2016</a>.</p>
<p>Erik is known to Scala users as:</p>
<ul>
<li>creator of <a href="https://github.com/non/spire">Spire</a>, a leading library for numerics in Scala</li>
<li>creator of other tools and libraries such as <a href="https://github.com/non/kind-projector">kind-projector</a> (a compiler plugin for type lambdas) and <a href="https://github.com/non/jawn/">jawn</a> (a very fast JSON parser)</li>
<li>leader of the <a href="https://github.com/typelevel/cats">Cats</a> project, which provides abstractions for functional programming in Scala (“cats” being short for “category”, as in category theory)</li>
<li>cofounder of <a href="https://typelevel.org">Typelevel</a>, a Scala community organization dedicated to furthering pure, typeful functional programming in Scala</li>
<li>a friendly and tireless conference-goer and presenter</li>
</ul>
<p>Erik’s 2015 Scala World presentation, “Principles for approachable,
modular, functional libraries”
(<a href="http://plastic-idolatry.com/erik/sw2015-inv.pdf">slides</a>,
<a href="https://www.youtube.com/watch?v=iKyIKozv8a8">video</a>) is a classic on
the subject of open-source library design, not only from a technical
perspective, but with attention to how software communities and
ecosystems operate.</p>
<p>The Bagwell Award is named in honor of Phil Bagwell, who passed away in 2012. In a <a href="https://www.lightbend.com/blog/rip-phil-bagwell">2012 blog post</a>, Martin Odersky remembers Phil and his special place in the Scala community.</p>
<p>Past winners of the award:</p>
<ul>
<li>2015: <a href="https://scala-lang.org/news/2015/06/25/bagwell-award-2015.html">Bill Venners</a></li>
<li>2014: <a href="https://kojoenv.wordpress.com/2014/09/27/phil-bagwell-award/">Lalit Pant</a></li>
<li>2013: <a href="https://twitter.com/dickwall">Dick Wall</a></li>
</ul>
Bill Venners receives community award2015-06-25T00:00:00+02:00https://www.scala-lang.org/news/2015/06/25/bagwell-award-2015<p>We are pleased to announce that the Phil Bagwell Memorial Scala Community Award for 2015 has been awarded to <a href="https://twitter.com/bvenners">Bill Venners</a>. The award was presented in Amsterdam at the outset of <a href="http://event.scaladays.org/scaladays-amsterdam-2015">Scala Days</a>.</p>
<p>Bill is known to Scala users as:</p>
<ul>
<li>creator of <a href="https://www.scalatest.org">ScalaTest</a>, a popular open-source test framework first <a href="https://www.artima.com/weblogs/viewpost.jsp?thread=222678">released in 2008</a>, as well as other tools and libraries such as <a href="https://www.scalactic.org">Scalactic</a></li>
<li>co-author of the first Scala book, <a href="https://www.artima.com/shop/programming_in_scala_3ed"><em>Programming in Scala</em></a> (Artima)</li>
<li>founder of <a href="https://www.artima.com/aboutartima.html">Artima</a>, which continues to publish <a href="https://www.artima.com/shop/catalog">Scala-themed books</a>, and hosted Scala-themed blogs and forums which were important in spreading the news about Scala in its early years</li>
<li>friendly and tireless conference-goer, presenter, and trainer</li>
</ul>
<p>The Bagwell Award is named in honor of Phil Bagwell, who passed away in 2012. In a <a href="https://www.lightbend.com/blog/rip-phil-bagwell">2012 blog post</a>, Martin Odersky remembers Phil and his special place in the Scala community.</p>
<p>Past winners of the award:</p>
<ul>
<li>2014: <a href="https://kojoenv.wordpress.com/2014/09/27/phil-bagwell-award/">Lalit Pant</a></li>
<li>2013: <a href="https://twitter.com/dickwall">Dick Wall</a></li>
</ul>
Google Summer of Code 20152015-03-16T00:00:00+01:00https://www.scala-lang.org/news/2015/03/16/GSoC-projects<p><strong>This year the Scala team applied again for
<a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2015">Google Summer of Code</a>,
and we’re happy to announce that we have been approved to be mentoring organization!
Students can <a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2015">apply</a> for
<a href="https://scala-lang.org/gsoc/2015/">projects</a> until 27th of March!</strong></p>
Google Summer of Code 20142014-02-24T00:00:00+01:00https://www.scala-lang.org/news/2014/02/24/scala-team-approved-to-be-gsoc-mentor-organization<p><strong>This year the Scala team applied again for
<a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2014">Google Summer of Code</a>,
and we’re happy to announce that we have been approved to be mentoring organization!</strong></p>
<h3 id="what-is-google-summer-of-code">What is Google Summer of Code</h3>
<p>Google invites students to come up with interesting, non-trivial problems for
their favourite open-source projects and work on them over the summer.
Participants get support from the community, plus a mentor who makes sure they
don’t get lost and that students meet their goals. Aside from the satisfaction
of solving challenging problems, students get paid for their work. This is an
incredible opportunity to get involved in the Scala community and get helpful
support along the way.</p>
<h3 id="how-to-get-involved">How to get involved</h3>
<p>First, have a look at our <a href="https://www.scala-lang.org/gsoc/2014/">project ideas page</a>. The ideas there are
meant as suggestions to serve as a starting point. We expect students to
explore the ideas in much more detail, preferably with their own suggestions
and detailed plans on how they want to proceed. But don’t feel constrained by
the provided list! We welcome any challenging project idea pertaining to
Scala!</p>
<p>The best place to propose and discuss your proposals is our
<a href="https://groups.google.com/group/scala-language">“scala-language”</a> mailing list. This
way you will get quickly responses from the whole Scala community. If you know
of a potential mentor, it also might be a good idea to also include them in
your discussion on the scala-language mailing list. If not, don’t be afraid to
ask who you might be able to contact in your discussion on scala-language.</p>
<h3 id="previous-summer-of-code">Previous Summer of Code</h3>
<p>We encourage you to have a look at our <a href="https://www.scala-lang.org/old/gsoc2010">Summer of Code 2010</a>,
<a href="https://www.scala-lang.org/old/gsoc2011">2011</a>, <a href="https://www.scala-lang.org/old/gsoc2012">2012</a> and <a href="https://www.scala-lang.org/news/2013/03/20/gsoc13.html">2013</a> pages to get an idea
of kind of projects we undertook in previous years.</p>
<p>Please join us!</p>
10 Years of Scala2014-01-22T00:00:00+01:00https://www.scala-lang.org/news/2014/01/22/10-years-of-scala<p>The first release of Scala
<a href="http://article.gmane.org/gmane.comp.lang.scala/17">happened ten years ago</a>
on January 20th.</p>
<p>Looking back I am stunned how we could have taken an experimental research
language and turned it into a tool for everyday programming that’s used by
hundreds of thousands of developers.
This is even more surprising in that no big company or organization backed Scala.
Instead it was a grassroots movement with many super smart and motivated contributors.
They are far too numerous to be all listed here, but I nevertheless want to thank some
of the contributors by name who influenced the trajectory of Scala in a crucial way.
In particular, there were:</p>
<ul>
<li>The early EPFL contributors around Matthias Zenger, Michel Schinz, Philippe Altherr.</li>
<li>The second wave of EPFL contributors, including Iulian Dragos, Philipp Haller, Lukas Rytz, Tiark Rompf, Stéphane Micheloud, Burak Emir, Vincent Cremet, Ingo Meier, Nikolay Mihaylov, Lex Spoon, Antonio Cunei, Sean McDermid, Erik Stenman.</li>
<li>Early users who told the world about it: John Pretty, Miles Sabin, David Pollak, Dick Wall, Bill Venners, David McIver, Josh Suereth, Jonas Bonér, Viktor Klang, James Iry, Daniel Sobral and many others.</li>
<li>Phil Bagwell, who designed our core collection structures, and was a great spokesperson for the community.</li>
<li>Paul Phillips, who put in amazing work over many years.</li>
<li>The many active open-source committers, including Simon Ochsenreither, Denys Shabalin, Pavel Pavlov, Dominik Gruntz, Rex Kerr.</li>
<li>The Typesafe Scala team: Adriaan Moors, Jason Zaugg, Greg Kossakowski.</li>
<li>The people working hard on giving us good tooling: Scala IDE, IntelliJ, NetBeans, SBT, Ensime.</li>
<li>Lalit Pant, for making Scala accessible to children and Shadaj Laddad for showing how much fun Scala can be.</li>
<li>The people who contributed to our massive open online courses: Heather Miller, Aleksandar Prokopec, Vojin Jovanovic, Lukas Rytz, Nada Amin, Tobias Schlatter, Roland Kuhn, Erik Meijer.</li>
<li>The other people who take Scala forward at EPFL: Hubert Plocinicak, Eugene Burmako, Manohar Jonalagedda, Vlad Ureche, Sandro Stucki, Miguel Garcia, Christopher Vogt.</li>
<li>The vibrant Scala.js team around Sébastien Doeraene and Haoyi Li.</li>
<li>The authors of all the Scala books.</li>
<li>The people writing great open-source libraries using Scala and contributing them back to the public.</li>
</ul>
<p>Drawing up this list, I am humbled by the amount of hard work people have put in to make Scala what it is.
I am sure I have forgotten many others whose contributions were equally crucial.
A big thank you to you all!</p>
<p>Now, looking at the next ten years, I believe we have some truly exciting times ahead.
I’ll write about some of the opportunities and challenges that I see in another post.</p>
New Online Courses2013-08-27T00:00:00+02:00https://www.scala-lang.org/news/2013/08/27/coursera-announcements<p>Last year, the Scala team and I developed a massive open online course
for Principles of Functional Programming in Scala on the Coursera
platform. We were blown away by the success of that course. So far,
it got over 100’000 registrations, with one of the
<a href="http://www.katyjordan.com/MOOCproject.html">highest completion rates</a>
of any open online course.</p>
<p>Today, I am thrilled to announce together with the third iteration
of <a href="https://www.coursera.org/course/progfun">Principles of Functional
Programming</a> two new
offerings.</p>
<h2 id="reactive-programming">Reactive Programming</h2>
<p>First, there will be a successor to the course. It’s called
<a href="https://www.coursera.org/course/reactive">Principles of Reactive
Programming</a>. I am
super-excited to co-teach the course together with Erik Meijer, of Rx
fame, and with Roland Kuhn, the tech lead of the Akka actors
framework. Reactive programming will assume a good grounding in
functional programming and will add topics such different forms of
monads, combining functions and state, composing with futures and
observables, and designing resilient actor systems.</p>
<p>Time wise, the two courses follow each other. Principles of Functional
Programming starts September 16 and goes for 7 weeks, then Principles
of Reactive Programming starts November 4 and also goes for 7 weeks.
So if you want learn about reactive programming but feel your Scala
skills could use some improvement, there’s still time to enroll for
the functional programming course.</p>
<h2 id="personalized-tutorials">Personalized Tutorials</h2>
<p>In a second new development, Typesafe will offer supervised tutorial
classes that follow both classes and run concurrently with them. One
of the challenges of massive online courses is that students get only
automated feedback on their homework assignments. Using Typesafe’s
online tutorial platform, students can enroll in small groups with
an expert tutor who will give detailed feedback on programming
techniques in their homework assignments and elsewhere.</p>
Scala Workshop (Scala2013) Program Announced!2013-05-21T00:00:00+02:00https://www.scala-lang.org/news/2013/05/21/scala-workshop-13<p>The <a href="http://lampwww.epfl.ch/~hmiller/scala2013/program.html">Scala2013 Workshop Program</a> is now available! We’re quite excited about this year’s program– we received a record number of submissions, leading to a first-class program spanning compilation & metaprogramming, parallelism/concurrency, verification & synthesis, debugging tools and more!</p>
<p>In order to accomodate as many quality submissions as we could, we teamed up with the organizers of the <a href="http://lame2013.dei.uc.pt/">LaME’13</a> workshop (short for “Languages for the Multicore Era”) to co-sponsor a special Scala parallelism/concurrency session that will take place on July 1st. That means we will now be having Scala2013 talks on two days– July 1st & 2nd.</p>
<p>Please join us this summer in Montpellier!
For more info, and to register, visit: <a href="http://lampwww.epfl.ch/~hmiller/scala2013/">http://lampwww.epfl.ch/~hmiller/scala2013/</a></p>
Scala Workshop (Scala2013) Student Talks to be Awarded Full ECOOP Registration!2013-04-11T00:00:00+02:00https://www.scala-lang.org/news/2013/04/11/student-talks-sw13<p>Thanks to a generous donation from Typesafe and Oracle Labs, we will be awarding a limited number of accepted student talks with full ECOOP registration (a value of 350EUR). Student talks are designed to be 5-10 minutes in duration, presenting ongoing or completed research related to Scala, or announcing a project that would be of interest to the Scala community. To be considered, simply submit a title and abstract by April 12th (students may update/change title/abstract until the final April 19th deadline) at the <a href="http://lampwww.epfl.ch/~hmiller/scala2013/">Scala2013 website</a>. In addition to student talks, we solicit full research papers, short research papers, and tool demos.</p>
Prof. Philip Wadler to Keynote at the Scala Workshop (Scala2013)!2013-04-11T00:00:00+02:00https://www.scala-lang.org/news/2013/04/11/philip-wadler-sw13<p>We’re excited to announce that Prof. Philip Wadler will be keynoting at this
year’s <a href="http://lampwww.epfl.ch/~hmiller/scala2013/">Scala Workshop (Scala2013)</a>!
Prof. Wadler is Professor of Theoretical
Computer Science at the University of Edinburgh. An ACM Fellow, he is well-
known for his seminal work on effectful computations in purely functional
languages based on monads, as well as his contributions to the design of
Haskell, Java, and XQuery.</p>
<p>The <a href="http://lampwww.epfl.ch/~hmiller/scala2013/">fourth Scala Workshop</a>
is the leading forum for research and development on
or related to the Scala programming language. It will take place July 2nd,
2013, and will be co-located this year with ECOOP, ECMFA, and ECSA in
Montpellier, France.</p>
<p>We solicit full research papers, short papers, tool demos, and student talks.
Abstracts are due April 12 (23:59 Samoa time), full papers/demos/etc are due
April 19th. Students are encouraged to submit talk proposals, as we will be
awarding a limited number of student talks with full ECOOP registrations (a
350EUR value).</p>
Google Summer of Code 2013 Scala Projects2013-03-20T00:00:00+01:00https://www.scala-lang.org/news/2013/03/20/gsoc13<p><strong>This year the Scala team applied again for the <a href="https://code.google.com/soc/">Google Summer of Code</a> program to work with enthusiastic students on challenging Scala projects and got accepted!</strong></p>
<ul>
<li><strong>What is Google Summer of Code</strong></li>
</ul>
<p>Google invites students to come up with interesting, non-trivial problems for their favourite open-source projects and work on them over the summer. Participants get support from the community, plus a mentor who makes sure you don’t get lost and that you meet your goals. Aside from the satisfaction of solving challenging problems, students get paid for their work. But wait, there’s more! Successful participants also receive an official Google Summer of Code t-shirt! This is an incredible opportunity to get involved in the Scala community and get helpful support along the way.</p>
<ul>
<li><strong>Project Ideas</strong></li>
</ul>
<p>Below we have collected a list of project ideas. The suggestions are only a starting point for students. We expect students to explore the ideas in much more detail, preferably with their own suggestions and detailed plans on how they want to proceed. Don’t feel constrained by the provided list! We welcome any of your own challenging ideas, but make sure that the proposed project satisfies the main requirements mentioned here below.</p>
<ul>
<li><strong>How to get involved</strong></li>
</ul>
<p>The best place to propose and discuss your proposals is our “scala-language” mailing list (scala-language @ Google Groups, instructions to subscribe are available at <a href="https://www.scala-lang.org/node/199#scala">https://www.scala-lang.org/node/199#scala</a>). This way you will get quickly responses from the whole Scala community.</p>
<ul>
<li><strong>Previous Summer of Code</strong></li>
</ul>
<p>We encourage you to have a look at our <a href="https://www.scala-lang.org/gsoc2010#">Summer of Code 2010</a>, <a href="https://www.scala-lang.org/gsoc2011#">2011</a> and <a href="https://www.scala-lang.org/gsoc2012#">2012</a> page to get an idea on what we and you can expect while working on Scala.</p>
<p>Please make sure to read <strong>carefully</strong> the instructions at the end of this page for requirements and submission details.</p>
<h1 id="project-ideas">Project Ideas</h1>
<p>Here are some project ideas for you. The list is non-binding and any reasonable project related to Scala that is proposed by student will be thoroughly reviewed.</p>
<hr />
<h2 id="scala-language">Scala language</h2>
<h3 id="prototype-an-extension-of-for-comprehensions-for-scala">Prototype an extension of for-comprehensions for Scala</h3>
<p>The to goal of this project is to extend the desugaring of for-comprehensions in the Scala compiler to support additional operations like grouping or sorting. Similar work has been done for Haskell (see <a href="https://research.microsoft.com/en-us/um/people/simonpj/papers/list-comp/" title="https://research.microsoft.com/en-us/um/people/simonpj/papers/list-comp/">https://research.microsoft.com/en-us/um/people/simonpj/papers/list-comp/</a>). The optimal design for this is not clear yet. We have some written documentation of our past thoughts on the topic you can use as a basis for your own ideas (drafts <a href="https://docs.google.com/document/d/1g6iWTmu-Zrquc2j8OM2vQgATllxXzynBAQB7rOF-Qkk/edit#heading=h.3y9blwy9e9sm">SIP</a> and <a href="https://docs.google.com/document/d/1GyPXaWrQcViZsLZlUL5mysu_GqXiT5HzMENnUVFa1vo/edit">SIP alternative</a>). Your implementation along with a SIP (Scala Improvement Process) proposal, should serve as a proof of concept that could lead to the addition of this feature to the Scala language. We want to work with you in an agile, ticket-based development style with frequent communication and coordination.</p>
<h3 id="alternative--social-scala-documentation">Alternative / social Scala documentation</h3>
<p>This project has two parts. First you will work on generating alternative api documentation formats for Scaladoc. You will need to hook into the scaladoc part of the scala compiler, to access and work with Scaladoc’s code model. We have a small prototype you can use as a starting point. You should then generate documentation in (non-framed, non-js) single/multi-page HTML, PDF, CHM formats. The result should make sensible use of the scaladoc @-commands and you should think about a good way to present apis designed as in cake patterns. HTML-Formats should support external linking to methods. You can use a documentation generator such as Sphinx to help generating different formats. The second part of this project concerns collaboration. You will need to come up with smart and simple ideas and an implementation how to make Scala api documentation more social, favorably in a way that can be shared between the different HTML doc formats. It can be as simple as adding GitHub Links and Disqus or more involved. Make sure to also review the work that has been done on <a href="https://colladoc.github.io/">Colladoc</a>. We are very open for your own new or alternative ideas regarding any aspect of this project. Good knowledge of modern, accessible HTML/CSS and possibly JS will be helpful. We want to work with you in an agile, ticket-based development style with frequent communication and coordination.</p>
<hr />
<h2 id="parallel-collections">Parallel Collections</h2>
<p>Scala Parallel Collections are a data-parallel shared-memory programming framework that was integrated into the Scala Standard Library in version 2.9. <a href="https://docs.scala-lang.org/overviews/parallel-collections/overview.html" title="https://docs.scala-lang.org/overviews/parallel-collections/overview.html">https://docs.scala-lang.org/overviews/parallel-collections/overview.html</a> <a href="https://infoscience.epfl.ch/record/150220/files/pc.pdf" title="https://infoscience.epfl.ch/record/150220/files/pc.pdf">https://infoscience.epfl.ch/record/150220/files/pc.pdf</a></p>
<h3 id="specializing-parallel-collections-with-customized-work-stealing-and-scala-macros">Specializing parallel collections with customized work-stealing and Scala Macros</h3>
<p>The goals of this project are twofold. First, the Parallel Collections scheduler must be extended with work-stealing customized for specific collections. This work-stealing should be based on the work-stealing tree scheduling which we currently have a prototype of. Second, the Scala Macro system should be integrated with the Parallel Collections to generate more efficient operation versions at the callsite where there is more information about the collection type, element type and other parallel operation arguments like higher-order functions. It is desirable that the student is knowledgeable in the Scala programming language and its collections model, has knowledge about concurrent lock-free programming and parallel programming, Java memory model, and has an interest in data-structures in general. Knowledge about the JVM, JIT compilation, benchmarking and the JVM performance model is a plus. Some of the tasks in this project are:</p>
<ul>
<li>replace parallel operation implementations with macro implementations that generate specialized operation instances at the callsite</li>
<li>specialize parallel operation instances for the concrete data-structures</li>
<li>tweak and verify performance on different architectures</li>
<li>implement a comprehensive test suite</li>
<li>implement a comprehensive microbenchmarking suite with performance regression tests</li>
<li>implement several bigger benchmark applications</li>
<li>investigate API improvements and missing parallel operations to support a wider range of problems more effectively (asynchronous execution, in-place bulk modification, etc.)</li>
</ul>
<p>Background:
Currently, the Scala Parallel Collections incur some abstraction penalties, that lead to boxing, virtual calls, and reliance on iterators. With the arrival of Scala Macros, there exists a plethora of optimization opportunities at the library level that allows us to eliminate these inefficiencies. Orthogonally, the scheduling based purely on the fork-join framework (<a href="https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html" title="https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html">https://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html</a>) suffers from several abstraction penalties, and needs to be specialized to achieve better performance and load-balancing.</p>
<hr />
<h2 id="slick">Slick</h2>
<p><a href="https://scala-slick.org/">https://scala-slick.org/</a></p>
<h3 id="schema-manipulations-for-slick">Schema manipulations for Slick</h3>
<p>The goal of this project is to extend Slick to support database schema manipulations (that could be used for writing migration scripts for example). You need to add an API for manipulating existing database schemas (alter columns, change constraints, etc. similar to <a href="https://guides.rubyonrails.org/migrations.html">Rails</a> or <a href="https://code.google.com/p/scala-migrations/" title="https://code.google.com/p/scala-migrations/">https://code.google.com/p/scala-migrations/</a>). In coordination with us, you will have to come up with a sensible set of manipulation operations to be supported and a strategy how to integrate them into Slick considering existing code and code, which is still in development. We want to work with you in an agile, ticket-based development style with frequent communication and coordination.</p>
<h3 id="data-migration-tool">Data migration tool</h3>
<p>The goal of this project is creating a tool for managing data migration scripts based on Slick. We have a rough proof of concept implementation you can base work on at <a href="https://github.com/cvogt/migrations" title="https://github.com/cvogt/migrations">https://github.com/cvogt/migrations</a> . The idea is roughly similar to migrations/evolutions in Ruby on Rails or Scala Play 2. You will need to significantly improve (or re-write) the code of the proof of concept implementation to make it production ready, extend it by futher features and explore some exciting ideas like reliable migrations in a development scenario with branches (like git branches). Your ideas are important to this project. Here is how we see it right now:</p>
<p>Existing features (which all require revision)</p>
<ul>
<li>migration scripts written in Slick/SQL/Scala</li>
<li>diagnostic features for reviewing scripts and database</li>
<li>flexible Scala code-generation for case classes, Slick table objects and custom user code related to the data model</li>
</ul>
<p>Required improvements</p>
<ul>
<li>make it work with all Slick backends (the proof of concept is hard-coded to h2)</li>
<li>make it as production ready as possible</li>
<li>improve it based on comparison with other tools and potential user feedback gathered via mailing list, etc.</li>
</ul>
<p>New feature ideas</p>
<ul>
<li>dumping Slick migration scripts into SQL scripts (desired by potential users)</li>
<li>integration with SQL-file-based migration tools like Play</li>
<li>a version compatibility scheme between generated code and database schema versions</li>
<li>support for a convenient work flow for working with databases and git branches</li>
<li>support for common industry use cases (like pre, during, post shutdown migration scripts)</li>
<li>< your ideas here ></li>
</ul>
<p>What features you need to implement exactly is open and needs to re-evaluated as we go in discussion with you and based on potential user feedback. We want to work with you in an agile, ticket-based development style with frequent communication and coordination.</p>
<hr />
<h2 id="scala-library-as-a-deep-edsl-module">Scala Library as a Deep EDSL Module</h2>
<p>Deep EDSLs intrinsically trade user experience for performance improvements. The Scala library Yin-Yang [1] allows both good user experience and high-performance by keeping parallel implementations of shallow and deep embeddings. Transparent and reliable transformation from the shallow to the deep embedding allows programmer friendly development with the shallow EDSL and good performance in production with the equivalent deep EDSL.</p>
<p>Duplication of code in the parallel shallow embedding requires additional user effort and can lead to diverging semantics of DSLs. In this project we would utilize the implementations of existing Scala libraries/DSLs to generate the adequate deep embeddings. Yin-Yang should be modified to generate high-level IR nodes from existing libraries/DSLs and generate the DSL IR transformers that will lower those high-level nodes into their implementations. The transformers would be generated from shallow implementations by the existing Yin-Yang transformation. Furthermore, the side-effect information [2] will be collected from the Scala annotations and introduced into the deep embedding. The generated DSLs would use the Lightweight Modular Staging [3] as the back-end compiler for the DSLs.</p>
<p>With this project the deep DSL embedding would be greatly simplified. The DSL author would provide the shallow embedding with minimal number of annotations and Yin-Yang >iii) code generation. Finally, the DSL author would provide optimizations on the high-level IR.</p>
<p>The deep embedding of run-time compiled DSLs can further improve performance by utilizing the run-time collected data for optimizations. However, when this data changes the costly recompilation must be performed greatly increasing delay. Another goal of this project would be to investigate the DSL author guided JIT compilation of DSLs. With JIT compilation the run-time compiled DSLs could be utilized in latency critical programs that operate on smaller data (e.g. web servers, compilers, GUI applications).</p>
<p>The grand vision for the project is to generate the DSL modules from the whole Scala Library and provide DSL optimizations for them. These modules could then be used in critical paths of all Scala projects. Due to the magnitude of the project the GSoC candidate would focus on one well defined part.</p>
<p>Skills required for this project are:</p>
<ul>
<li>Good knowledge of Scala:</li>
</ul>
<ol>
<li>Scalable Components</li>
<li>Implicit conversions</li>
<li>Macros</li>
</ol>
<ul>
<li>Basic knowledge of DSL embedding in Scala</li>
</ul>
<p>[1] Yin-Yang: Transparent Deep Embedding of DSLs - <a href="https://web.archive.org/web/20140702193720/https://infoscience.epfl.ch/record/185832">https://web.archive.org/web/20140702193720/https://infoscience.epfl.ch/record/185832</a></p>
<p>[2] Lightweight Polymorphic Effects - <a href="https://infoscience.epfl.ch/record/175240">https://infoscience.epfl.ch/record/175240</a></p>
<p>[3] Lightweight Modular Staging - <a href="https://scala-lms.github.io/">https://scala-lms.github.io/</a></p>
<hr />
<h2 id="constraint-solver-in-scala">Constraint Solver in Scala</h2>
<p>The goal of this project is to develop a reasonably efficient constraint solver in Scala.</p>
<p>You will build on a SAT solver we are currently releasing and will add incremental</p>
<p>SAT solving capabilities as well as reasoning about functional data structures.</p>
<p>Full project description: <a href="https://lara.epfl.ch/w/solver">https://lara.epfl.ch/w/solver</a></p>
<p>Related projects:</p>
<ul>
<li><a href="http://www.verit-solver.org/">http://www.verit-solver.org/</a></li>
<li>Scala^Z3</li>
<li>Kaplan paper: <a href="https://lara.epfl.ch/~kuncak/papers/KoeksalETAL12ConstraintsControl.html">https://lara.epfl.ch/~kuncak/papers/KoeksalETAL12ConstraintsControl.html</a></li>
</ul>
<hr />
<h2 id="kojo">Kojo</h2>
<p><a href="https://www.kogics.net/kojo">https://www.kogics.net/kojo</a></p>
<h3 id="script-tracing-in-kojo">Script Tracing in Kojo</h3>
<p><strong>Motivation/Benefit</strong></p>
<p>This feature will allow users to trace programs within Kojo - to get a better understanding of what/how/when the programs do.</p>
<p><strong>Background</strong></p>
<p><a href="http://gbracha.blogspot.in/2012/11/debug-mode-is-only-mode.html">http://gbracha.blogspot.in/2012/11/debug-mode-is-only-mode.html</a></p>
<p><strong>High Level Specification</strong></p>
<ul>
<li>There are two new UI elements - a trace button and a trace window.</li>
<li>You click on the trace button to trace a program. Trace output goes into the trace window in the form of a trace history.</li>
<li>When a trace run is over (this happens when a program finishes or you stop it), you can go over to the trace history to see the different trace points in the program. These are things like the entry to and exit from every procedure (command or function).</li>
<li>When you click on a trace point, the corresponding source code line is highlighted in the editor, the canvas reverts to its state at that point, and you can view the value of all the visible variables/values at that point in time.</li>
<li>You can move back and forth across the trace history, and jump to any point in the history.</li>
</ul>
<p><a href="https://kogics.wdfiles.com/local--files/gsoc13/GSOC-13.pdf">More information about the project</a></p>
<p><strong>Required Skills</strong></p>
<ul>
<li>Good working knowledge of Scala.</li>
<li>Familiarity with Java and the JVM.</li>
<li>Familiarity with Swing (the Java GUI framework).</li>
<li>Familiarity with 2D graphics.</li>
</ul>
<p><strong>Bonus Skills</strong></p>
<ul>
<li>Experience with JPDA.</li>
<li>Experience with Debugger Implementation.</li>
</ul>
<h3 id="sprite-enhancements-in-kojo">Sprite Enhancements in Kojo</h3>
<p><strong>Motivation/Benefit</strong></p>
<p>This set of features will make it easier for users to write sprite based games, animations, and cartoons within Kojo.</p>
<p><strong>Background</strong></p>
<p>Kojo has historically supported drawing and animation primarily through Vector graphics. This has included the command oriented Turtle graphics and the functional Picture graphics.</p>
<p>In recent times, Kojo has acquired good support for sprite based animation. This has involved:</p>
<ul>
<li>Refinements related to multiple turtles/sprites.</li>
<li>Support for specifying sprite costumes.</li>
<li>Support for cycling through a sequence of sprite costumes during an animation.</li>
<li>Refinements to the translation, rotation, and scaling of sprites.</li>
</ul>
<p><strong>High Level Specification</strong></p>
<p>The next set of required sprite features, which are the goal of this GSOC project, include:</p>
<ul>
<li>
<p>Sprite Collision Detection. This involves:</p>
<ul>
<li>Implementing image edge detection for sprite images (to obtain a vector representation of the sprite image boundary)</li>
<li>Leveraging the vector collision detection support in Kojo to do collision detection for sprites.</li>
<li>Making this feature available via the Kojo API, so that it is available in games/animations.</li>
</ul>
</li>
<li>Sprite Messaging - to allow sprites to communicate with each other.</li>
<li>Sprite ‘Speaking’ and ‘Thinking’ - to enable the display of speaking/thinking bubbles next to sprites for specified durations.</li>
</ul>
<p>The Scratch project (<a href="https://scratch.mit.edu">https://scratch.mit.edu</a>) is a good source of ideas in this area.</p>
<p><strong>Required Skills</strong></p>
<ul>
<li>Good working knowledge of Scala.</li>
<li>Good working knowledge of 2D graphics.</li>
<li>Familiarity with Java and the JVM.</li>
</ul>
<h3 id="friendlier-error-messages-in-kojo">Friendlier Error Messages in Kojo</h3>
<p><strong>Motivation/Benefit</strong></p>
<p>This feature will make it easier for users to understand and recover from syntax errors in their scripts.</p>
<p><strong>Background</strong></p>
<p>One of the areas that needs improvement within Kojo relates to the complexity of the error messages that show up for scripts with syntax errors.</p>
<p><strong>Project Description</strong></p>
<p>There are two approaches to trying to solve this problem:</p>
<ul>
<li>Write custom Scala parsers for different subsets of Scala (Level 1, Level2, etc) that output suitable error messages for Kojo.</li>
<li>Annotate the current error messages with helpful (in the context of Kojo) text. This approach can potentially be very powerful; it can analyze the current code to determine what the user is trying to do, the error location to determine the context of the error, and the error message to determine what went wrong. It can then combine these three elements to help the user understand and fix the error.</li>
</ul>
<p><strong>Required Skills</strong></p>
<ul>
<li>Good working knowledge of Scala.</li>
<li>Good working knowledge of Parser writing.</li>
<li>Familiarity with Swing (the Java GUI framework).</li>
</ul>
<hr />
<h2 id="subscript-httpsubscript-langorg">SubScript (<a href="http://subscript-lang.org/">http://subscript-lang.org/</a>)</h2>
<p>SubScript is a way to extend common programming languages aimed to ease event handling and concurrency. Typical application areas are GUI controllers, text processing applications and discrete event simulations. SubScript is based on a mathematical concurrency theory named Algebra of Communicating Processes (ACP).</p>
<p>You can regard ACP as an extension to Boolean algebra with ‘things that can happen’. These items are glued together with operations such alternative, sequential and parallel compositions. This way ACP combines the essence of grammar specification languages and notions of parallelism.</p>
<p>Adding ACP to a common programming language yields a lightweight alternative for threading concurrency. It also brings the 50 year old but still magic expressiveness of languages for parser generators and compiler compilers, so that SubScript suits language processing. The nondeterministic style combined with concurrency support happens to be very useful for programming GUI controllers. Surprisingly, ACP with a few extras even enables data flow style programming, like you have with pipes in Unix shell language.</p>
<p>Currently a SubScript extension to Scala is available. This comes with a branch of the Scala compiler, a run-time library, support for the Scala-Swing reactive framework and example programs. The “C” part of ACP is not yet supported.</p>
<h3 id="investigate-subscript-on-top-of-javascript">Investigate SubScript on top of JavaScript</h3>
<p>SubScript might as well extend other languages next to Scala. An interesting starter would be JavaScript. The good thing is that as from April 2013 (?) Scala translates into JavaScript. Therefore a single code base of the SubScript VM, which is written in Scala, may also work for JavaScript.</p>
<p>The project would involve some of the following tasks:</p>
<ul>
<li>develop use cases, both for client-side and server-side applications</li>
<li>create a translator for SubScript into JavaScript</li>
<li>extend an existing JavaScript interpreter to understand SubScript</li>
<li>define a strategy to send over SubScript in HTML pagesand have it translated</li>
<li>provide a translator for the SubScript VM source code into JavaScript</li>
<li>JavaScript does not support explicit multithreading; develop an alternative</li>
</ul>
<h3 id="enhance-akka-using-subscript">Enhance Akka using SubScript</h3>
<p>Akka is the Scala actor implementation, very useful for distributed functions. Typically an actor operates a state machine, which is programmed using state variables. This is relatively inconvenient to program and read. SubScript may provide a better alternative for programming actor internals. This project would involve:</p>
<ul>
<li>develop typical actors in two versions: just Scala and SubScript</li>
<li>compare these versions in terms of clearness and conciseness</li>
<li>measure the performance of these versions</li>
<li>make a tutorial</li>
</ul>
<p>More information on SubScriptActors is available at <a href="http://subscript-lang.org/subscript-actors/">http://subscript-lang.org/subscript-actors/</a>.</p>
<p><strong>Generic Tasks & Deliverables</strong>
In each project the student should</p>
<ul>
<li>investigate the problem area: what are current practices: inspect open source projects, how could SubScript help</li>
<li>build software</li>
<li>make a tutorial</li>
<li>measure performance</li>
<li>discuss the pros and cons, and make recommendations for future work</li>
</ul>
<p>Each project has the following generic deliverables:</p>
<ul>
<li>a working plan</li>
<li>a report</li>
<li>a GitHub repository</li>
<li>a Linux VM containing: a complete development environment with build scripts, all developed software in sources and executables, test data, a console with a command history for building and testing</li>
</ul>
<p>Full project descriptions available at <a href="http://subscript-lang.org/student-projects/">http://subscript-lang.org/student-projects/</a></p>
<hr />
<h2 id="saddle-httpssaddlegithubio"><strong>Saddle (</strong><a href="https://saddle.github.io/">https://saddle.github.io</a>)</h2>
<p>Saddle is a new high-performance data manipulation library for Scala. Saddle provides array-backed, indexed, one- and two-dimensional data structures; vectorized numerical calculations; automatic data alignment; and robustness to missing values. Saddle aims to be the easiest and most expressive way to program with structured data on the JVM. Saddle is missing features in a few key areas that the interested student could help implement. The following ideas touch on all aspects of Saddle.</p>
<ul>
<li>CSV (comma-separated value) data output</li>
<li>specialization on Float and Short numeric types</li>
<li>implement sparse matrix data structure</li>
<li>implement diehard random number tests for marsiglia xorshift prng</li>
<li>extend test coverage using ScalaCheck</li>
<li>prototype and implement data visualization using D3/NVD3</li>
</ul>
<p>The student would learn about efficient numerical computing on the JVM, as well as advanced Scala features such as specialization, the typeclass pattern, Java-Scala integration, and D3/NVD3. The interested student would already have a decent working knowledge of Scala and the mechanics of the JVM.</p>
<hr />
<h2 id="ensime-plugin-for-sublime-text">Ensime Plugin for Sublime Text</h2>
<p>The <a href="https://github.com/sublimescala/sublime-ensime">Sublime-Ensime</a> plugin enhances the <a href="https://www.sublimetext.com/2">Sublime Text 2</a> editor with Scala-specific error highlighting, autocompletion and many other features. With about 1.5K downloads, and many users sucessfully using it, we are keen on introducing additional features to provide comprehensive integrated experience. We also expect that users will demand the plugin for <a href="https://www.sublimetext.com/3">Sublime Text 3</a>, but this requires refactoring the plugin, preparing it for running in Python 3.3 and possibly integrating with more recent features such as symbol indexing.</p>
<p>The ideal candidate is fluent in both Python and Scala and currently uses the Sublime Text editor frequently. We also welcome candidates who are active and engage the community via issue reports, mailing lists and forums.</p>
<p>The project will have three phases:</p>
<ol>
<li>Develop several features for the plugin: a) finish the debugger, b) implement refactorings provided by Ensime,</li>
</ol>
<p>c) add support for multiple projects. This phase of the project will target Sublime Text 2, so that all the users of the plugin</p>
<p>will benefit from your contributions.</p>
<ol>
<li>
<p>Port the plugin to Python 3.3 and Sublime Text 3, possibly taking advantage of the features introduced in the new version. A guide can be found on the <a href="https://www.sublimetext.com/docs/3/porting_guide.html">Sublime Text 3 webpage</a>. There’s also the ST3 branch, which has already ported a bulk of functionality.</p>
</li>
<li>
<p>Create a GitHub-flavored-Markdown file for the project detailing the plugin installation and usage and a screencast of using the new plugin.</p>
</li>
</ol>
<p>Before applying, please choose one of the bugs in the current plugin (<a href="https://github.com/sublimescala/sublime-ensime/issues?state=open">https://github.com/sublimescala/sublime-ensime/issues?state=open</a>) and try to fix it, so you see how the plugin works. We do accept partial fixes and simple workarounds, but please do try to fix it yourself.</p>
<p>Resources:</p>
<ol>
<li>
<p>Sublime Text 2 API Reference (<a href="https://www.sublimetext.com/docs/2/api_reference.html">https://www.sublimetext.com/docs/2/api_reference.html</a>);</p>
</li>
<li>
<p>Sublime-Ensime repository (<a href="https://github.com/sublimescala/sublime-ensime">https://github.com/sublimescala/sublime-ensime</a>) and the README (<a href="https://github.com/sublimescala/sublime-ensime/blob/master/README.md">https://github.com/sublimescala/sublime-ensime/blob/master/README.md</a>) with detailed instructions on installing;</p>
</li>
<li>
<p>Sublime-Ensime Issue tracker (<a href="https://github.com/sublimescala/sublime-ensime/issues?state=open">https://github.com/sublimescala/sublime-ensime/issues?state=open</a>);</p>
</li>
<li>
<p>A work in progress Sublime-Ensime hacker’s guide (<a href="https://github.com/VladUreche/sublimescala.github.com/blob/hacker-guide/hacker.md">https://github.com/VladUreche/sublimescala.github.com/blob/hacker-guide/hacker.md</a>).</p>
</li>
</ol>
<p>Contact details for the plugin project</p>
<p><a href="mailto:dev@sublimescala.org">dev@sublimescala.org</a>, <a href="mailto:eugene.burmako@epfl.ch">eugene.burmako@epfl.ch</a>, <a href="mailto:vlad.ureche@epfl.ch">vlad.ureche@epfl.ch</a></p>
<h1 id="requirements-and-guidelines">Requirements and Guidelines</h1>
<h2 id="general-student-application-requirements">General Student Application Requirements</h2>
<p>This is the second time the Scala project has applied to the Summer of Code, and from last years experience, increased popularity of the language and stories of other mentor organizations we expect a high number of applications. First, be aware of the following:</p>
<ul>
<li>Make sure that you understand, fulfill and agree to the general <a href="https://www.google-melange.com/archive/gsoc/2013">Google Summer of Code rules</a></li>
<li>The work done during GSoC requires some discipline from the students as they have to plan their day-to-day activities by themselves. Nevertheless we expect regular contact with the mentors by the usual forms of communication (mail, chat, phone) to make sure that the development is going according to the plan and students don’t get stuck for weeks at a time (3 months may seem long, but in reality it is very easy to run out of time).</li>
<li>The <a href="https://www.google-melange.com/archive/gsoc/2013">official SoC timetable</a> mentions June 17th as the official start of coding, but if you have time you are encouraged to research your proposals even before that (and definitely learn the basics of Scala, if you haven’t done that already). Note that the official time for coding has now shifted more towards summer and autumn (rather than spring and summer).</li>
</ul>
<h2 id="student-application-guidelines">Student Application Guidelines</h2>
<ul>
<li>Student proposals should be very specific. We want to see evidence that you can succeed in the project. Applications with one-liners and general descriptions definitely won’t make the cut.</li>
<li>Because of the nature of our projects students must have at some knowledge of the Scala language. Applicants with Scala programming experience will be preferred. Alternatively, experience with functional programming could suffice, but in your application we want to see evidence that you can quickly be productive in Scala.</li>
<li>You can think of Google Summer of Code as a kind of independent internship. Therefore, we expect you to work full-time during the duration. Applicants with other time commitments are unlikely to be selected. From our previous experience we know that students’ finishing their studies (either Bachelor, Master of PhD) are likely to be overwhelmed by their final work, so please don’t be too optimistic and carefully plan your time for the project.</li>
<li>If you are unsure whether your proposal is suitable, feel free to discuss it on our “scala-language” mailing list (registration instructions are at <a href="https://www.scala-lang.org/node/199#scala">https://www.scala-lang.org/node/199#scala</a>). We have many community members on our mailing list who will quickly answer any of your questions regarding the project. Mentors are also constantly monitoring the mailing list. Don’t be afraid of asking questions, we enjoy solving puzzles like that!</li>
</ul>
<h2 id="general-proposal-requirements">General Proposal Requirements</h2>
<p>The proposal will be submitted via the standard web-interface at <a href="https://www.google-melange.com/gsoc/homepage/google/gsoc2013">https://www.google-melange.com/gsoc/homepage/google/gsoc2013</a>, therefore plain text is the best way to go. We expect your application to be in the range of 700-1500 words. Anything less than that will probably not contain enough information for us to determine whether you are the right person for the job.</p>
<p>Your proposal should contain at least the following information, but feel free to include anything that you think is relevant:</p>
<ul>
<li>Please include your name (weird as it may be, people do forget about it)</li>
<li>Title of your proposal</li>
<li>Abstract of your proposal</li>
<li>Detailed description of your idea including explanation on why is it innovative (maybe you already have some prototype?), what contribution do you expect to make to the Scala community and why do you think your project is needed, a rough plan of your development and possible architecture sketches.</li>
<li>Description of previous work, existing solutions (links to prototypes, bibliography are more than welcome!)</li>
<li>Write us about yourself and convince us that you are the right person for the job (linking to your resume/CV is good but not sufficient)
<ul>
<li>Mention the details of your academic studies, any previous work, internships</li>
<li>Any relevant skills that will help you to achieve the goal (programming languages, frameworks)?</li>
<li>Any previous open-source projects (or even previous GSoC) you have contributed to?</li>
<li>Do you plan to have any other commitments during SoC that may affect you work? Any vacations/holidays planned? Please be specific as much as you can.</li>
</ul>
</li>
<li>Contact details (<strong>very important!</strong>)</li>
</ul>
4th Scala Days Conference to run in New York City2013-03-12T00:00:00+01:00https://www.scala-lang.org/news/2013/03/12/scala-days-4<p>The fourth annual <a href="https://scaladays.org/">Scala Days</a> will be held this year at The Hudson Theater in NYC, June 10th-12th. Now is the time to submit speaking sessions and register to attend!</p>
<p>Scala Days 2013 aims to bring together developers from all corners of the world to share their experiences and new ideas around creating applications with Scala and Scala-based libraries and frameworks. The conference will provide a unique opportunity for Scala users to interact with contributors to the language and related technologies. Martin Odersky will give this year’s keynote, and featured speakers include Jonas Bonér, Viktor Klang and others.</p>
<p>The call for papers will stay open until Monday, April 15th; however, we will announce accepted talks on a rolling basis, so get your proposals in quickly! We are aiming to host a series of Technical Talks, Reports of Real World Applications and Tools Demonstrations. The Scala Days committee also looks for creative ideas from you, so submit any topics you think the community would find exciting, inspiring, thought provoking and interesting!</p>
<p>Please prepare an abstract of your talk (less than 1000 characters), and submit it to <a href="mailto:info@scaladays.org">info@scaladays.org</a></p>