-
Notifications
You must be signed in to change notification settings - Fork 822
Google Summer of Code 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!
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.
- 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:
- Competitive Analysis:
- Requirements Doc:
- Must:
- Be Static
- Revenue Neutral (not cost money)
- Run on github pages
- Accept community contributions via git
- Would be nice:
- Style Guide
- Theme Library
- New logo?
- Maybe next time:
- Auto-updated?
- Must:
- Mockups
- Wireframes
- Frontend design
- Website updates deployed
-
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.
- 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.
- 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 way that Finatra HTTP routing works in a backward-compatible way to make it more efficient with an eye to solving several problems:
- It is not currently possible to correctly return a 405 "Method Not Allowed" from the framework and this is directly due to how routing works.
- Improve speed and efficiency of route matching.
-
Expected outcomes for Student:
- This is a chance for someone to impact all HTTP services written with Finatra, including hundreds of services inside Twitter, and multiple other companies. If the speed and efficiency of http route matching can be improved in Finatra, lots of services both inside and outside of Twitter would benefit.
- What you'll learn:
- In depth experience with benchmarking, and performance testing.
- Deep understanding of HTTP protocol and systems.
- Advanced Scala and data structures exposure.
-
Deliverables:
- Design document (based on provided Twitter Template)
- It is not currently possible to correctly return a 405 "Method Not Allowed" from the framework and this is directly due to how routing works.
- Determine the 'verb' and the 'uri' you're applying it to.
- Support a given verb for a given route is current paradigm.
- Improve speed and efficiency of route matching.
- Create and update existing benchmarks.
- Deliver regular reports and visualizations on benchmarks.
- Experiment with new data-structures (currently recursive looping).
- Repeat.
-
Skills required:
- HTTP fundamentals
- data structures
-
Skills preferred:
- git
- GitHub
- Scala
- API design
- dependency injection experience (ideally with Guice)
- benchmarking/performance testing, data visualization.
- Mentors:
- Difficulty Rating: Advanced
- Data Sensitivity: None
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!
For 2018, @TwitterOSS accepted X students to work on Y different open source projects:
Follow us at @TwitterOSS
Google Summer of Code 2018 Projects