WordPress.org

Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

GSoC2014

Introduction

Howdy Students! Google Summer of Code is a program in which Google sponsors exceptional college students to develop open source code under the guidance of mentoring open source projects. WordPress is applying to be participating as a mentoring organization again this year. This page contains information about potential projects and mentors. Students who complete their summer projects successfully and on time are paid a stipend by Google that adds up to $5,500 for the summer. Project progress is evaluated at midterm and at the end for payment consideration. To apply for a GSoC slot working with WordPress, you should be proficient in PHP and/or jQuery, and have familiarized yourself with the WordPress codebase.

Ideas

If you have your own idea for a project, include it in your application and describe it thoroughly. You are not limited to ideas from this list.

Know you want to propose a GSoC project around WordPress, but aren't sure what you want to do? Below are a few ideas we think would work well as GSoC projects. Also see the popular ideas submitted by members of the WordPress community. Also, check out the ideas from 2013 to get an idea of some past projects.

Note that if you are forking or re-using code, you must clearly identify the code that is being borrowed and that which is original. Your project should include a significant amount of original work.

Project Idea Template (copy this section, paste below, and replace the pasted text with your idea in this format)

Put your project description in a paragraph like this. If there are relevant trac tickets, go ahead and link to them, like #20000. Be as detailed as possible in describing your idea. Don't just say, "unit tests,' or "anything related to the admin." That's not very helpful. For broad things like that, go ahead and like some possible examples.

List examples or parts to the project in this format:

  1. Part I or 1st example. Description.
  2. Part II or 2nd example. Description.

Possible Mentors: Name, Name (Add your name if this was your suggestion. You can also add your name as a possible mentor to other ideas so we know who'll be interested in/capable of mentoring a certain topic if that idea gets a good response from students.

Added By: Name of the person who is adding this idea to the list, so Jen knows who to ping if more detail is needed. (end of section to be copied)

Full-throttle Trac Annihilation

If you look at trac (our ticketing system for WordPress core), there are hundreds of tickets for bugs, enhancements, feature requests and blessed tasks that never quite make it in. Not every GSoC project has to be a big single-feature goal. Helping us improve existing core WordPress code is also very valuable. For a Full-Throttle Trac Annihilation project, you'd want to identify the areas of code you're most comfortable working with, and identify a scope/minimum set of tickets that you will fix and close by the end of the project term.

This could be based on a component, or could be a selection of specific tickets you think are important to address and would provide you with a summer challenge.

  1. Example 1: Component-based scope. Choose a specific component in trac that you will focus on for the summer. The component owner would be one of your mentors, since they would be most likely to commit your patches.
  2. Example 2: Pick a specific set of tickets that address bugs or enhancements you would personally like to see addressed and patch them (and test, and revise, etc).
  3. Example 3: Clean-up duty. There are many tickets on Trac that have patches attached but haven't been committed because the patch needs more testing, the patch is outdated, the request was fixed in a later released but on a different ticket, or the request is an edge case that just hasn't gained any traction. Your job would be to power through as many of these as possible to get them to a point where there's something that can be committed, or to ascertain with the guidance of your mentors if the ticket should just be closed.

Possible Mentors: Any/all lead and commit-level contributors. One benefit of this project type is that you will have the entire development community to give you feedback as you work.

Group Theme/Plugin Combo

We have been using the P2 theme for our contributor group blogs, and many WordCamp organizers set up P2s separate from their main event blogs to use for their organizing teams because with P2 all the functionality is built into the theme rather than being portable with a plugin. While Automattic has been working on a theme+plugin P2 replacement called O2, it has more features than are needed for our community groups. This project would involve several parts:

  1. Create a plugin that adds a template with a front-posting box for logged-in users as well as the live comment publishing that's in p2. May be limited by specific categories, etc.
  2. Test template pages for the handful of non-p2 themes currently used by our community groups/WordCamp sites so that the plugin will look great in action there.
  3. Create a basic theme that includes regular pages and blog templates but has a utility that uses this plugin to create plugin-powered sections.
  4. Work with the team to implement the plugin and/or theme on our relevant existing sites.

Possible Mentors: TBD. Will work with our /community team and /meta team in addition to a specific mentor.

Forms Plugin

We use a lot of forms on our community sites: applications, contact forms, post submissions, sign-up forms, surveys, etc. We currently use a combination of Polldaddy surveys and Jetpack forms, but neither is exactly what we need, and we don't need something as flexible as Gravity Forms or other commercial plugins. This project would focus on creating a forms/surveys plugin based on the needs of the community outreach team to support WordCamps and Meetups, and would be released as a free plugin in the wordpress.org directory upon completion, with the student listed as a lead developer.

Features would include:

  1. Variety of question types
  2. Ability to set display rules with JavaScript rather than page-branching
  3. Some basic reporting/analytics

Possible Mentors: TBD.

New BuddyPress Template Pack

For the out-of-the-box theme experience, BuddyPress originally had bp-member, then bp-default, and now (because of theme compatibility) we rely on bp-legacy, which is largely lifted from bp-default. Some ideas and work has been started around what a next generation default BuddyPress experience could look like, but it's slow going. Some relevant links/tickets:

This is primarily front-end work: HTML, CSS, JS, with some knowledge of PHP & WordPress desirable, but not completely necessary.

Possible Mentors: Tammie Lister, John James Jacoby

bbPress Per Forum Moderation

In bbPress, users can have one of several roles. The most useful (aside from the Keymaster) is the Moderator -- a user that has complete control over the entire forum -- with every topic, every reply, and every topic tag in their jurisdiction. We'd like to allow individual forums to have their own moderators, so users can be empowered only in specific sections of the forums as a whole.

Perhaps adding to the complexity (and fun) here, because bbPress forums are a WordPress custom post type, there's potential to build a per-post permissions API more robust than even WordPress currently comes packaged with.

This is primarily back-end work, with some light front-end to make it all work: knowledge of PHP & WordPress is desirable.

Possible Mentors: Stephen Edgar, John James Jacoby

WordCamp Mobile App

While the sites for individual events at wordcamp.org are usually done with responsive themes, it would be great to have native apps that pull the data from the site into a nicer day-of experience, including some good schedule display/selection, feedback forms, etc. iPhone and Android are the most popular platforms in the community.

Possible Mentors: TBD (Possibly Eric Johnson), Marko Heijnen, Eric Mann

SupportPress as a Plugin

SupportPress is a standalone application based on BackPress (an extraction of the underlying architecture of WordPress that doesn't get much attention anymore) used for email-based communications and team-operated support. It is used by several WordPress contributor groups, including the theme review team, the plugin review team, the WordCamp team, etc. It would be much easier to grow a contributor community around something like this if it was a WordPress plugin rather than a standalone app.

Possible Mentors: Daniel Bachhuber, others.

Turn the Beta Testers Plugin into a QA Plugin

WordPress Beta Tester is the plugin we use for people who want to be able to update to the most recent version of trunk to beta test upcoming releases. However, this plugin only does that one thing --- updates the sites using it to be running the most current version of core. This project would build in a reporting capability, so that someone running the plugin could send information back with error reports etc.

Possible Mentors: Peter Westwood, others.

Multisite - Plugin for sharing database data between sites

Currently there is no way to easily share data across sites on a multisite network, even if it's a closed, trusted, network. Existing options, such as using switch_to_blog(), inline frames, or redirects, don't work well. This could start as a "features-as-plugins" project and maybe eventually make its way into core.

Possible Mentors: TBD (Possibly Jeremy Felt? Nacin?)

Added by: rclilly (updated 02/12/14)

View Comments by Post in WordPress for iOS and Android

The WordPress for iOS and Android native apps let a user view and moderate comments from a single list. It would be nice if a user could also view view and moderate comments on a post by post basis. This project would create a new feature in the iOS and Android apps to view a list of comments for a specific post, as well as view and moderate the comments in the list.

Possible Mentors: Eric Johnson, Aaron Douglas, Maxime Bais

Mobile In-app Search for Posts, Pages, Comments

The WordPress for iOS and Android native apps do not have a way to let you search through the list of posts, pages, or comments synced to the app. Having a simple text search would help users quickly find what they’re looking for without having to spend time hunting through individual items in the posts, pages, and comments lists. This project would add an in-app search feature to the post, pages, and comments lists in the iOS, or Android app.

Possible Mentors: Eric Johnson, Aaron Douglas, Maxime Bais

The Search Initiative

The Search Initiative is a collection of smaller tasks aimed at making searching within the admin panel a more unified, streamlined, simpler experience. We are not looking to change the search experience on the front-end of sites. Instead, the biggest task at present seems to be unifying all the search forms in the administrative interface to feed into a global search. Probably offering tabs for each searchable content type, with a count of the number of entries in each.

There is a decent chunk of work already completed on this from a brainstorming and roughing-bits-in perspective. It had a lot of support from up top, I just didn't have time to keep pushing it forward, but would be delighted to advise anyone interested in pursuing it.

To read all the previous discussions on the topic: http://make.wordpress.org/core/tag/omnisearch/

Possible Mentors: George Stephanis, ?

Added By: George Stephanis

Refactor Nav Menus UI with Backbone.js

The existing UI has scaling issues due to saving everything at once. Refactoring with Backbone.js could enable us to save only what is changed. Applicants should be familiar with Backbone.js, JavaScript, and the WordPress codebase. Take a look at the Media overhaul, Revisions or Manage Themes for existing Backbone.js implementations.

Possible Mentors: Dominik Schilling

Added By: Dominik Schilling

JavaScript Unit Test Coverage

We added qUnit in 2013 and have slowly started adding unit tests, how about jumping in and pushing these along? Some JS may need to be refactored to expose more methods, some files that have some tests already may need more tests added. A possible task in this project this could be making the tinymce tests run via the command line.

Possible Mentors: Aaron Jorbin, Eric Mann

Added By: Aaron Jorbin

Retooling the WordPress Asset Pipeline

The way we enqueue scripts and styles in WP is beginning to show its age. WordPress development is now leveraging Grunt, so we have more tools at our disposal for front-end optimizations than ever before. Tools for concatenation and minification are great, but what if we took advantage of dependency loading in Javascript via RequireJS and precompiled JS manifests via Grunt/r.js? How would we provide back-compat for the thousands of plugins and themes that are already enqueueing scripts and styles? How can we get rid of our dependency on global scope in JavaScript and allow multiple versions of libraries to be loaded when necessary, without interfering with one another. The opportunity here is to really rethink everything.

Possible Mentors: Scott Taylor, Aaron Jorbin

Added By: Scott Taylor

Faster PHP Unit tests

Our PHP Unit tests are slow. Like a bull in molasses. Any ideas for making them run faster? Could we run multiple instances concurrently? Could we eliminate the dependency on the database? No idea is too crazy. The opportunity here is to really rethink everything.


Possible Mentors: Aaron Jorbin, Eric Mann

Added By: Aaron Jorbin

Plugin Dependencies

Add APIs that make it easy for a plugin to specify dependencies that are required to use the plugin. If the dependency is not already installed, install it. Also, detect situations where two plugins reference a dependency that conflicts. Possible sources for inspiration include Composer (PHP), npm (node), Bundler (ruby). See #22316

Possible Mentors: TBD Added By: Gregory Cornelius

Refactor Distraction Free Writing mode and make it the default for the Add New/Edit Post screens

Main purpose of this project would be to update the Distraction Free Writing mode (DFW) to offer better user experience and be more "discoverable".

DFW was updated in WordPress 3.9 as part of the TinyMCE 4.0 upgrade. It is much simpler now: there is no different instance of TinyMCE and no extra textarea (for the Text editor) and title field. Now it is "purely" CSS based, it inserts a modal blocker behind the editor and title without moving them in the DOM.

These changes make it easier to further develop and enhance DFW. It possibly can include couple more components of the "standard" Edit Post screen and eventually keep the standard editor buttons.

This project would have two distinct parts:

  1. UX/UI design including UX testing, wireframes, etc.
  2. Coding, mostly JavaScript and CSS.

It would be developed as a WordPress plugin that will be released on successful completion. (DFW is mostly contained in two JS files that are easy to replace from a plugin.)

Possible Mentors: TBD, Eric Mann

Added By: Andrew Ozz.

Reimagine Core Meta Boxes

The tags and categories metaboxes feel a little dated. Maybe it is time for them to be reworked. While we're at it, maybe we can rethink the old slug and author meta boxes, too.

Possible Mentors: TBD

Added By: Gregory Cornelius

Websockets

Probably a stretch, but it would be awesome if we could figure out a way to add support web socket support to WordPress in cases where the host is able to handle the connections. Ratchet might serve as inspiration.

Possible Mentors: TBD, Eric Mann

Added By: Gregory Cornelius

GlotPress Translation Memory

We use GlotPress to translate WordPress and related tools and websites to tens of languages. It would be really great if GlotPress would ease the translators work by suggesting similar and/or partial matching translations. Related ticket is #97-glotpress that aims to add a glossary feature, and #263-glotpress that propose a method to detect similar strings on import.

Possible Mentors: Yoav Farhi, Marko Heijnen

Added By: Yoav Farhi

GlotPress - Gamification/stats

It would make translation more fun if GlotPress had awesome stats that showed progress vs other languages, and vs other users. Stats should be designed to incentivize short term and long term progress (i.e: how do you encourage someone starting to translate a 5000 string project from scratch?

Possible Mentors: Yoav Farhi

Added By: Yoav Farhi

Mentors

Hey mentors: please don't edit this section without talking to Jen Mylo first. Thanks!

Confirmed

Aaron D. Campbell, aaroncampbell
Core contributor since 2007, plugin author, etc. Generally available for mentoring on any idea.
Aaron Douglas, astralbodies
WordPress for iOS and Android developer primarily although has experience with web development as well. Interest in API and 'glue' of apps.
Aaron Jorbin, jorbin
Core contributor, GSOC Mentor 2011, Experience with many parts of WordPress, but I love JavaScript, Grunt, and unit tests the best.
Alex Mills, Viper007Bond
Core contributor. Interested in APIs, embeds, plugins, and that kind of stuff. PHP-centric.
Amy Hendrix, sabreuse
Core contributor and Community Team. Interested in UI/UX, WordPress.org, community tools. Available as backup or floater.
Andrew Ozz, azaozz
Lead WordPress core developer. Experienced with all aspects of the WordPress code base, but focuses on the editor and JS. Available as backup mentor.
Andy Skelton, skeltoac
WordPress core contributor, plugin, theme and drop-in developer, cross-platform integrator. Got a wild idea?
Bryan Petty, bpetty
Core contributor, past GSoC mentor (2009-2011, 2013). Considering mentor position last year, I'm stepping down to let someone else take primary, but I'm listing myself as a backup still.
Dion Hulse, dd32
Core Committer. Past GSoC student (2007,2008). Past GSoC mentor. Available for mentoring for most things, but specialises in API-related stuff particularly Upgrades & the HTTP API.
Dominik Schilling, ocean90
Core Committer. Past GSoC mentor. Available for mentoring on anything.
Donncha O'Caoimh, donncha
Creator of WordPress MU (became the multisite feature of core WordPress), WP Super Cache, and over a dozen plugins available in the wordpress.org directory. Interested in mentoring projects more focused on back-end development.
Eric Johnson, aerych
Contributor to the WordPress for iOS, Android and Windows Phone apps. Available for mentoring on native app projects. Particularly interested in iOS and Firefox OS.
Eric Mann, ericmann
Core contributor. Interested in APIs, authentication, hooks/extensions, asynchronous JS integration. Both PHP and JS capable.
George Stephanis, georgestephanis
Core contributor and plugin developer. Previously led the Search initiative, happy to help it continue forward. PHP, JS, CSS familiar.
Gregory Cornelius, gcorne
Core contributor and plugin developer. Focused on the editor/media area of core for 3.9.
Ian Dunn, iandunn
Plugin and theme developer on the Meta team, working on WordCamp.org and the other community sites. Interested in anything around WordCamp.org, WordPress.tv, the Make.WordPress.org network, and WordPress.org.
John James Jacoby, johnjamesjacoby
Lead developer of BuddyPress & bbPress, BackPress enthusiast, WordPress critic. Interested in BuddyPress, bbPress, WordPress.org Profiles, and WordPress Multisite/Multinetwork.
Justin Shreve, jshreve
Former GSoC student and mentor, core contributor. Add areas of interest.
Konstantin Kovshenin, kovshenin
WordPress core contributor, plugin and theme developer. Available to mentor pretty much any WordPress related project, especially if it's related to themes.
Mark Jaquith, markjaquith
WordPress lead developer. Interested in helping with applications and meta-mentoring, but not direct student mentorship.
Marko Heijnen, markoheijnen
WordPress core contributor and GlotPress lead developer. Available for mentoring GlotPress, i18n and localization. But also projects involving APIs or image manipulation
Maxime Biais, mbiais
Contributor to WordPress for Android and iOS. Available to mentor native app projects, especially for Android.
Mike Schroder, DH-Shredder
WordPress core contributor interested in image manipulation and general projects. Available for help with applications and as backup mentor.
Mo Jangda, batmoo
Core contributor, plugin author. Available for mentoring on anything.
Wojtek Szkutnik, wojtekszkutnik
Former GSoC student and mentor, WordPress core contributor. Add areas of interest.
Yoav Farhi, yoavf
Core contributor. Available for mentoring on anything, but would love to focus on projects related to GlotPress, i18n and localization.

Additional members from the WordPress open source community will be added as mentors based on project needs.

How to Apply

  • First, check out Google's FAQ and see if you're eligible.
  • Figure out which idea(s) you want to apply to work on. Send an email to the wp-hackers list with your proposed approach to get feedback and see if you're on the right track.
  • While that's happening, take stock of your situation. Have you contributed to WordPress before? Put a plugin in the repo? If not, you probably ought to take a stab at a core patch or two to show the mentors that you're capable of working with the WordPress codebase. If you're not sure where to start, check out the advice on contributing to core/submitting patches.
  • Talk to potential mentors you might like to work with on the project. You can try emailing them, or grabbing them in IRC. Mentors will be in and out of irc.freenode.net #wordpress-gsoc (if you are not familiar with how to access IRC channels, go find out). We will be scheduled several IRC chats in #wordpress-gsoc to give students a chance to talk about their ideas with potential mentors. Each potential student should announce her/himself at the beginning of the chat and will get 5-10 minutes to discuss their proposed approach or to ask questions.
  • Post your draft proposal on your own WordPress-powered blog. Send the link to the wp-hackers list and ask people to leave comments on it.
  • Finally, go to the GSoC site and submit your formal application. Use our Application Template, and fill in all the requested information.
  • After you've applied, check on your application at the GSoC site once or twice a day. This is very important. WordPress mentors will leave you notes on your application if they need more information or have additional questions about your proposal that they need answered before making a decision. If they leave and note for you and you don't respond, it's not their job to track you down. There will be hundreds of applications, so making sure you stay on top of your application will help you compete for the spots we have to fill.
  • Wait. Bite your nails. See a movie. Google will announce the accepted students on their site.

Good luck!!!

See Also

GSoC2007, GSoC2008, GSoC2009, GSoC2010, GSoC2011, GSoC2012