Skip to content

Google Summer of Code 2018

Danny McClanahan edited this page Jan 23, 2018 · 24 revisions

GSoC 2018

At Twitter, we love Open Source, working with students and Google Summer of Code (GSOC)! What is GSOC? Every year, Google invites students to come up with interesting problems for their favorite 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 and contributing to the open source community, students get paid and get some sweet swag for their work! In our opinion, this is a great opportunity to get involved with open source, improve your skills and help out the community!

Information for Students

These ideas were contributed by our developers and our community, as a starting point. If you wish to submit a proposal based on these ideas, you may wish to contact the developers and find out more about the particular suggestion you're looking at.

Being accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. Simply copying and pasting an idea here will not work. On the other hand, creating a completely new idea without first consulting potential mentors is unlikely to work out.

If there is no specific contact given you can ask questions via the twitter-gsoc mailing list.

Project Ideas

Pants Build Website Redesign

  • Category: Infrastructure/Automation
  • License: Apache 2.0
  • Detailed description of the project:
    • Pants is a collaborative open-source project, built and used by Twitter, Foursquare, Square, Medium and other companies. Your project will be to design, build and revamp the pantsbuild.org documentation website.
  • Expected outcomes for Student:
    • Huge impact within the Open Source Community - Pantsbuild already has users but making the documentation site clearer and more accessible will open up the platform for more eager adoption and even to better support the existing customers.
    • Why it's interesting:
      • Work with Twitter Build Team members directly!
      • Pants is an upstream project used by other projects and organizations too (Square, Kayak, Foursquare, Compass, and others).
    • What you'll learn:
      • Open Source Build Systems
      • Advanced Python Techniques
      • Remote Collaboration
    • Impact for Twitter:
      • Pants is what we use to build Twitter -- thousands of devs depend on it.
      • Pants is used by other projects and organizations too (Square, Kayak, Foursquare, Compass, and others).
  • Deliverables:
  • Skills required:
    • HTML
    • CSS
    • Git
    • Technical Writing
  • Skills preferred:
    • JavaScript
    • Python
    • Graphic Design tools like photoshop
    • UI/UX Experience
    • Github/Github Pages
  • Mentors:
  • Difficulty Rating: Beginner/Intermediate
  • Data Sensitivity: No, it's open source.

Test Metrics Dashboard

  • Category: Fun/Peripheral
  • License: Apache 2.0
  • Detailed description of the project:
    When a company scales to Twitter's size, so does their codebase. Projects start depending on each other in a complex way, and the dependency graph will most certainly grow beyond an individual team's contribution. Prior to code submission, code changes are typically validated by continuous integration (CI) systems that run developer tests against the code changes. Your team will be tasked with designing and building a data visualization tool that will use statistical analysis to distinguish any poor health indicators from recorded test execution metrics from CI (e.g. test flakiness, unusually long compile/execution).
  • Expected outcomes for students:
    • Why it's interesting
      • Explore various web technologies and participate in the full software development life cycle.
      • Get iterative feedback throughout the entire process including design and code reviews.
      • Put your data visualization skills to the test.
      • Work with Twitter's Language Tools team.
    • What you'll learn
      • Learn why continuous integration systems are paramount to ensuring that code remains healthy and how tracking their test execution metrics can build trust and increase developer productivity.
      • Work in a distributed team environment.
      • Build and deploy client-side and server-side Node.js codes.
      • How to write an effective design document.
      • How Continuous Integration systems are used within industry.
      • Open Source project development workflows
      • Product and project management
    • Impact for Twitter/OSS
      • Twitter runs millions of tests everyday.
      • Help Twitter make sense of all their test data and detect code health issues before they become a burden, or worse, an incident.
      • Code health issues are often a hidden cost during early development that doesn't become immediately apparent until it is too late.
      • Not many projects exist in the OSS community that focus on monitoring code health.
  • Deliverables:
    • Requirements Doc (Provided by us)
    • Design Doc (We will provide a template)
    • Mockups/Wireframes
    • Working Prototype
    • (potential stretch goal) Build, package and publish node packages to a global registry.
  • Skills required:
    • HTML
    • CSS
    • JavaScript
    • Data structures
    • Data analysis
  • Skills preferred:
    • Node.js
    • React.js
    • Webpack
    • Yarn
    • HTTP fundamentals
    • Data visualization
    • Algorithms
  • Mentors:
  • Difficulty rating: Beginner/Intermediate
  • Data sensitivity: None (Mock data will be used)

Improve Finatra HTTP Client functionality and API

  • Project Category: Core Development
  • Project License: Apache 2.0
  • Detailed description of the project:
    • Finatra is Twitter's Scala framework for easily building microservices. It it primarily an MVC framework which supports both HTTP and Thrift protocols with a focus on testability. It used in hundreds of services at Twitter. Your team's tasks will be to update the Finatra HTTP Client library to the Finagle 6 APIs via Finagle's MethodBuilder for clients and provide a more robust API for users trying to connect to HTTP services.
    • You will be adding features including but not limited to:
      • Support flexible retry and response classification, proxy configuration.
      • Add support for the HttpClientModule to bind multiple http clients to the object graph (see Finatra user guide section on binding annotations).
      • Add more testing.
    • The goal is to accomplish this in a backwards-compatible way if possible, but if necessary, we can deprecate current approach for a a new parallel API and implementation.
  • Expected outcomes for Student:
    • A chance to contribute and work on a foundational piece of the Finatra framework which is a central piece of Twitter's backend infrastructure and microservices architecture. A well-functioning http client (à la Apache's HTTPClient) in Scala and built on Finagle is missing. The Finatra and Finagle communities would be very appreciative of work in this area.
  • Deliverables:
    • Design document (based on provided Twitter Template)
    • Port to new Finagle 6 API
    • Use new MethodBuilder API/Classes
    • Implement new Client functionality from Design Doc
    • Specifying Retries for requests
    • Specify Response Classification (stop on 500? Look at errors on a 200?)
    • Proxy Configuration (exists in Finagle, doesn't exist here)
  • Skills required:
    • HTTP fundamentals
    • data structures
  • Skills preferred:
    • git
    • GitHub
    • Scala
    • API design
    • dependency injection experience (ideally with Guice)
    • experience with RPC
  • Mentors:
  • Difficulty Rating: Intermediate
  • Data Sensitivity: None.

General Proposal Requirements

Proposals will be submitted via http://summerofcode.withgoogle.com, therefore plain text is the best way to go. We expect your application to be in the range of <=1000 words. Anything less than that will probably not contain enough information for us to determine whether you are the right person for the job. Your proposal should contain at least the following information, but feel free to include anything that you think is relevant:

  • Please include your name and twitter handle!
  • Title of your proposal
  • Abstract of your proposal
  • A link to your GitHub profile
  • Detailed description of your idea including explanation on why is it innovative
  • Description of previous work, existing solutions (links to prototypes, bibliography are more than welcome)
  • Mention the details of your academic studies, any previous work, internships
  • Any relevant skills that will help you to achieve the goal (programming languages, frameworks)?
  • Any previous open-source projects (or even previous GSoC) you have contributed to?
  • Do you plan to have any other commitments during SoC that may affect you work? Any vacations/holidays planned?
  • Contact details

Good luck!


Accepted Projects

For 2018, @TwitterOSS accepted X students to work on Y different open source projects:

Clone this wiki locally