Skip to content

Google Summer of Code 2012

luocaihua edited this page Apr 28, 2015 · 35 revisions

Google Summer of Code 2012

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!

We hope to participate in GSOC for the first time this year.

Information for Students

These ideas were contributed by our developers and our community, they are only meant to be 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 @TwitterOSS or via the twitter-gsoc mailing list.

Adding a Proposal

Please follow this template:

  • Brief explanation:
  • Expected results:
  • Knowledge Prerequisite:
  • Mentor:

When adding an idea to this section, please try to include the following data.

If you are not a developer but have a good idea for a proposal, get in contact with relevant developers first or @TwitterOSS.

Project Ideas

Improved Bootstrap Customize Experience

  • Brief explanation: New Bootstrap Customize Experience, see the old one: http://twitter.github.com/bootstrap/download.html
  • Expected results: A more full featured and dynamic builder page. Thinking something which handles dependencies, has more variables, color pickers, sliders, etc. Should be the best custom download page on the internet basically. This would also include improving the backend (performance & flexibility - currently written in Node, could rewrite in something else). The backend should be opensourced at the end of the project as well.
  • Knowledge Prerequisite: Javascript, CSS, (Node, or something similar)
  • Mentor: Jacob Thornton (@fat) & Mark Otto (@mdo)

Event-driven Framework for Twitter4J

  • Brief explanation: This is a proposal to build an event-driven framework to make Twitter-integrated app development more easier. The framework will cover (1) Timeline retrieval - efficiently and transparently retrieve user timelines using the REST API, Search API and Streaming API (2) Persistence / cache - store Tweet, User, Avatar, Direct Message in persistent store and|or cache (3) Event dispatch - dispatch events to application classes

  • Expected results: A set of test cases, a framework and an example code of the framework.

  • Knowledge Prerequisite: Java language, Java thread model, JUnit (optional: Maven, git, GitHub, Object Oriented Design)

  • Mentor: Yusuke Yamamoto (@yusuke)

  • Interested in this? join the list: GSoC Twitter4J

MySQL codec

  • Brief explanation: Implement the MySQL protocol as a codec in finagle.
  • Knowledge Prerequisite: Scala, familiarity with asynchronous IO, network protocols.
  • Mentor: Marius Eriksen (@marius) and Blake Matheny (@bmatheny)

Graph compression and new algorithms

  • Brief explanation: Experiment and innovate with graph compression in Cassovary. Also implement some new algorithms, and explore performance trade-offs with compression.
  • Expected results: A few compressed versions of the various graph data structures contributed to Cassovary, and a study of performance trade-offs of some algorithms like random walks. As just one example, you will be coding up the Layered Label propagation algorithm.
  • Knowledge Prerequisite: Scala, algorithms, basic graph theory.
  • Mentor: Pankaj Gupta (@pankaj) and Aneesh Sharma (@aneeshs)

Bringing awesome internationalization capabilities to Ruby

  • Explanation
    • Research and implement several algorithms specified by the ICU (International Components for Unicode), an industry standard, by augmenting the twitter_cldr Ruby Gem. Algorithms include text normalization, collation (sorting/searching), and casing (upper, lower) in any locale.
    • Use data from the Unicode Consortium's CLDR (Common Locale Data Repository) to make plurals, lists, and currencies easy to format in any locale.
    • Add pseudo-Unicode capabilities to Ruby 1.8 strings (1.9 has much better Unicode support).
  • Expected results: Completion of 2 or 3 of the aforementioned algorithms, plenty of good unit tests.
  • Knowledge Prerequisite:
    • Ruby or similar scripting language
    • Ruby Gems
    • Knowledge of Unicode a plus
    • Familiarity with a foreign language a plus
  • Mentor: Cameron Dutro (@camertron)

Security and authentication

  • Brief explanation: Add security and authentication support to Mesos (including integration with LDAP).
  • Knowledge Prerequisite: C++
  • Mentor: Benjamin Hindman (@benh) and Vinod Kone (@vinodkone)

Advanced allocators

  • Brief explanation: Build advanced allocators into Mesos in order to run more complicated framework mixes
  • Knowledge Prerequisite: C++
  • Mentor: Benjamin Hindman (@benh) and Vinod Kone (@vinodkone)

Build higher-level API

  • Brief explanation: There's a lot of room for higher level abstractions on top of Storm that would make it easy to do things like compose functions, do streaming joins, and do streaming aggregations. A Cascading-like API on Storm would be fantastic.
  • Knowledge Prerequisite: Java and experience with distributed computation
  • Mentor: Nathan Marz (@nathanmarz)

Online machine learning algorithms

  • Brief explanation: The goal of this project is to build the Mahout for Storm. Proposals should indicate what online machine learning algorithms you want to implement and potential use cases for those algorithms.
  • Expected results: Implementation of a number of reusable machine learning algorithms
  • Knowledge Prerequisite: Java, machine learning background
  • Mentor: Nathan Marz (@nathanmarz)

Non-JVM language DSL

  • Brief explanation: Storm topologies are Thrift structures underneath the hood, and Storm lets you define bolts/spouts in other languages. So it's possible to make DSL's for Storm that don't use Java at all. The goal of this project is to produce a DSL for Storm in a non-JVM language, making the DSL API as seamless as the Java API.
  • Expected results: A complete and tested non-JVM DSL.
  • Knowledge Prerequisite: Java and a non-JVM language in which to implement the DSL
  • Mentor: Nathan Marz (@nathanmarz)

Improve Storm's UI and diagnostics

  • Brief explanation: Storm has a basic UI that shows stats about latency and throughput through each step of a Storm topology. A lot of work could be done to a) provide better visualizations of the data, and b) collect more data from the tasks so that better diagnostics can be provided to users.
  • Knowledge Prerequisite: Clojure
  • Mentor: Nathan Marz (@nathanmarz)

Project

Project URL

Project Idea (e.g., New Feature)

  • Brief explanation:
  • Expected results:
  • Knowledge Prerequisite:
  • Mentor:

General Proposal Requirements

Proposals will be submitted via http://socghop.appspot.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
  • 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!