Skip to content

2018 Ideas

Robin Dupret edited this page Mar 5, 2018 · 11 revisions

This page hosts the ideas list for Google Summer of Code 2018.

You can discuss the ideas posted here in our mailing list. Don't hesitate to send your original ideas as well!

Here's some ideas to get you started:

Server Timing Middleware

The W3C proposes a new specification called Server Timing which enables the server to communicate performance metrics to the browser. These metrics can be various, from specifying a cache miss to giving the time the database took to load data.

We would love to introduce a new Rack middleware that would add the different HTTP headers needed to bring this API to Rails applications. Your proposal can include the metrics you would find interesting to communicate and eventual settings that could be customized by the user.

Skills: Ruby, Rack

Modernizing Error Pages

The Rails website and welcome page got a welcome redesign for the Rails 5 release. However, the current design of error pages doesn't follow this new style. We would love to make styling a bit more consistent.

Moreover, some pages display errors that require action from the user like when the migrations are pending. It would be interesting to propose a way for the user to act on those errors straight from the error page. The project can introduce the concept of actionable errors and how to implement and integrate them with the new error pages. Your project can also integrate with the Web Console gem to remix the style of the console, so it fits with the whole redesign.

Skills: Ruby, Rack, JavaScript

Proactive Rails Update Helper

Every Rails update carries a lot of changes and it may be hard to keep track of them if you don't follow our tracker or newsletter. We would love to power-up a bit of statistical analysis and run through users applications suggesting using the new patterns or updated functionality with examples straight from the user's code.

Your proposal can include output examples and snippets of the potential API used to define new patterns, etc.

Skills: Ruby

Long Running Ruby and Rails Benchmarks

During previous Google Summer of Code, we have already launched and improved RubyBench.org but we need more time to polish and refine it. We would like a student to work again on this project. Here are some features that you can include in your proposal:

  1. Allow certain members to run "git bisect" like operation for a custom benchmark script
  2. Improve our reports with the whole community. For example, we could automatically detect performance regressions in our Rails benchmarks and report back to the Rails team
  3. Work on improving micro and macro Rails benchmarks

Read Sam Saffron's blog post and vist RubyBench community site for previous discussions.

Mentors: Guo Xiang Tan

Skills: Ruby, Docker, Rails, Linux

Improve Rails Testing Ecosystem

Rails 6 will certainly only support Ruby 2.4 and up. This means that, this will cut down a big part of our test suite matrix. That speeds-up test runs, but we can still make the suite better and faster.

In your proposal give suggestions for how to improve the test suite speed. Areas you can look into include parallelizing the tests, running only tests related to changes as well as general speed improvements.

The goal of the project is to make open source contributions easier. We want Travis to shorten the time it takes to see if something broke in a new Pull Request.

A first step at this has been done during the Google Summer of Code 2015 through the ttnt project but this never got integrated into Rails' repository. Your proposal could include ideas to ease integration and use of this tool.

Example of improvements:

Mentors: Robin Dupret

Skills: Ruby, Minitest, Travis-CI

Propose Your Own?

If nothing on this list interests you, you can always propose your own. Drop an email to the mailing list with your idea and see if any mentors would be interested in sponsoring your project.

Keep in mind that a self-directed project like this has a pretty high bar to clear – you would need to be knowledgeable/experienced enough to find the right project to work on, plus you need to be quite motivated/passionate about your project and take the lead. But if that sounds like you, we would love to have you onboard!

Clone this wiki locally