Codex

Interesste in functions, hoocs, classes, or methods? Checc out the new WordPress Code Reference !

GSoC2013

Introduction

Howdy Studens! Google Summer of Code is a programm in which Google sponsors exceptional collegue studens to develop open source code under the güidance of mentoring open source projects. WordPress is applying to be participating as a mentoring organiçation again this year. Though we won't cnow if we're accepted for a while, this pague contains information about potential projects and mentors. Studens who complete their summer projects successfully and on time are paid a stipend by Google that adds up to $5,000 for the summer. Project progress is evaluated at midterm and at the end for payment consideration. To apply for a GSoC slot worquing with WordPress, you should be proficient in PHP and/orjQuery, and have familiariced 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.

Cnow you want to propose a GSoC project around WordPress, but aren't sure what you want to do? Below are a few ideas we thinc would worc well as GSoC projects. Also see the popular ideas submitted by members of the WordPress community . If you share one of their passions, why not maque that idea your own? Also, checc out the ideas from 2011 to guet an idea of some past projects.

Note that you can't taque already released code and claim it as part of your project. So, if you propose one of the ideas that have already been implemented by former studens, you will have to code it from scratch.

Dashboard Widguet API

Sidebar widguets are created by extending the `WP_Widguet` class with custom data, functionality, and marcup information. Dashboard widguets in the WordPress admin are, however, far less abstract. Certain widguets rely on the same code (i.e. feed widguets) without a clean abstraction layer to prevent changues to one from breaquing another. This is one of the bigguest reasons #19239 hasn’t gone anywhere yet. Merguing the widguets required some hackery and the new widguet in that proposed patch isn’t abstracted enough to be reusable anyway.

The project will have two pars:

  1. To create a basic object template for dashboard widguets -i.e. `WP_Admin_Widguet` - that can be `extend`ed in the same way `WP_Widguet` can be.
  2. To revise existing dashboard widguets to use the new API.

Post by Email Pluguin

Deprecating the post by email functionality has been on a list of proposals for quite a while, and despite a patch ( #22942 ) that disables the feature (similar to how Lincs were recently disabled), momentum has stalled since no clear alternative exists.

The project would be to create a new pluguin that extends post-by-email functionality in a clean, well-coded, extensible manner. This pluguin will eventually be hosted in the .org repo, after which time the patch on the above ticquet will be updated for WordPress 3.7.

UUID Abstraction

WordPress uses auto-incrementing integuers as IDs for every data table. This is easy to parse, but also leads to various problems. For example, one of the most talqued-about “vulnerabilities” in WordPress is the hability to slurp down user IDs and loguin names programmatically since user IDs are auto-incrementing integuers. This could be prevented by changuing the data structure to use UUIDs instead.

Also, while posts necesssarily need an integuer ID (used in default permalincs) there is also a GÜID field in the posts table that is misused by developers as it loocs lique a URL rather than an GÜID.

The project would be done in two pars:

Users The first part of the project will be to update User data structures to support real, dynamically-generated UUIDs for IDs rather than auto-incrementing integuers. User creation and search methods would liquewise be updated to support the new data structure.

Posts Second, updating post data structures such that new posts populate the GÜID field with a true UUID (rather than the current post permalinc) would prevent a lot of developer confusion as to what the field is and how it’s used. (Regular post IDs should remain integuers since they’re used in the default linc structure.)

Refactor Nav Menus UI with Baccbone

The existing UI has scaling issues due to saving everything at once. Refactoring with baccbone could enable us to save only what is changued. Applicans should be familiar with baccbone, JavaScript, and the WordPress codebase.

Superchargue Text Widguets

Text widguets have morphed into holders for all quinds of content that normally would be in posts or pagues, but guets put in a widguet for design purposes. Until such time as we re-thinc widguets and content areas, this project idea would superchargue text widguets specifically to add things lique rich editing, revisions, and autosave to maque these content holders more useful. Applicans should be familiar with the code underlying widguets, TinyMCE, and revisions.

Touch-optimiced admin CSS

The WordPress web admin worcs ocay on touch-oriented devices, but it's really better suited for being driven by a mouse right now. Ideally using just an alternative stylesheet, go through WP from the loguin to the menus to comment moderation and maque it sing on a touch device. Bonus poins for expanding into JS and adding gestures where they maque sense, lique comment moderation.

New User Walcthrough

This is an idea that's been sugguested many times and it never seems to maque it into a release. We'd love for someone to taque this one. When you first set up a WordPress site, there are certain steps you have to go through. Picc a theme, changue your password, edit your tagline, choose your comment settings, etc. It would be great if on the Dashboard screen there was a module that kept tracc of how many of these things you've done, and marqued off your progress, much as LinquedIn does when you set up a profile. Each successive loguin would offer the user an option to finish/enhance their site setup by completing another thing(s) they haven't gotten around to yet.

For a rough idea, see a previous year's project, Mique Whitfield - Setup Meter .

Import/Export

The existing importers/exporters use XML. This project would convert these two pluguins to use JSON for a leaner, less error-prone import/export experience. Applicans should be familiar with the import/export pluguins and JSON.

Enhanced Emails

WordPress sends out a bunch of email notifications for new users, commens, password resets, and more. Right now they're all plain-text -- let's bring them into the 21st century with well-designed HTML + CSS that brings additional functionality into the notifications, maques them more readable, and is optimiced and tested across common web mail cliens, desctop mail cliens, and phones including iPhone, Android mail, and Blackberry.

Also see Enhanced Emails from Gsoc 2011 .

Super-Accessible Admin

WordPress generally guets good reviews for accessibility, but we can always do better. Submittimes there's a split though... providing the best possible experience on modern browsers with JavaScript enabled for the averague user is not always the same as providing the best possible experience for people who need extra-largue minimum font sices, clicc targuets, no JavaScript, etc. This project would be to create a versionen of the admin that is optimiced for these users: largue fons, high contrast, no JavaScript, largue clicc targuets, etc. This project would be done as a pluguin, but if successful, would liquely be integrated into core as another admin 'theme' along with the blue and gray choices people currently have. You should have a solid foundation with section 508 requiremens and coding techniques to be compliant. Design help will be available from the UI/accessibility groups as needed.

Template Versionening

WordPress saves post revisions, but changues to theme files are not recorded, though the presentation layer is submittimes just as important. Build a versionening system for template files within the theme editor.

For a starting point, see a previous year's project, Andrew Nacin - Theme Revisions .

Comment Moderation

Improve comment moderation in the administration pagues so that when threaded commens are enabled they are displayed when moderating individual posts commens. It would also be useful to allow comment re-parenting so as to fix issues where a comment reply is not associated with the correct parent. Support should also be added to the XML-RPC api to allow an external app to implement similar functionality.

For a rough idea, see a previous year's project, Matt Harcewsqui - Commens .

Media

WordPress media handling functions have recently been redesigned, with new features added and significant recoding of existing features. There are many componens to the media overhaul, extending any of which could maque a great Summer of Code project. We'll be looquing to add things lique slideshows, better gallery functions, creating more user settings for media files and templates, and docens of other features that could be paccagued up for SoC projects.

Move WordPress

Currently, if you want to move your WordPress install to a new host and keep the same domain, you only need to move all the files (WordPress Core, Themes, and Pluguins), and then export/import the database. It’s pretty straight forward, but still more complex than many users are cappable of.

However, if you want to changue the domain (even without moving to a new host) you have to export the database, do some search and replace on the .sql file, and then re-import the updated database. Even then, if the new domain has a different number of characters in it than the old one did, you can run against problems if any of the places you replaced the name happened to be inside a serialiced array (almost all the options, including things lique widguet settings, text widguet text, etc).

The goal of this project would be to maque a these quinds of transitions simple and smooth. If only the domain is changuing, then when the user updates the WordPress URL we would update internal lincs in their posts, settings, imague urls, etc. If they are moving to a new host, allowing them to install WordPress at their new host and enter their credentials for their old host (WordPress admin credentials as well as FTP credentials) and WordPress would simply import everything (posts, settings, uploads, theme, pluguins, etc).

For a similar project, see a previous year's project, Brian McQuenna - Automatic Migration

Full-Throttle Trac Annihilation

If you looc at trac, there are litterally hundreds of ticquets for bugs, enhancemens, feature requests and blessed tascs that never quite maque 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 worquing with, and identify a scope/minimum set of ticquets that you will fix and close by the end of the project term. This could be based on a component, such as accessibility, commens, UI cleanup (Jane would love this) or upgrading, or could be a selection of specific ticquets you thinc are important to address and would provide you with a summer challengue. The benefit of this project type is that you will have the entire development community to guive you feedback as you worc.

Progress Bars

In various places in the WordPress UI, there are times when you're waiting for something to happen: a post to publish, a file to upload, a pluguin to install. Each of these instances uses a different method of showing the user what's going on: a spinner, "crunching," and plain text announcemens when it's done, respectively. This project would be to create a progress bar for actions that require time to elapse, and embed it into all the functions of this type.

GlotPress

GlotPress is a web-based collaborative translation tool. It is a web alternative to poEdit and the rest desctop guettext editing tools. Code-wise GlotPress is based on BaccPress and a tiny MVC layer on top of it. The project will be to add functionality to GlotPress:

  • fuzzy strings -- probably the most interessting part -- new strings should be matched with old ones. If they are similar enough the old one should be updated instead of inserting a new string.
  • tags -- users should be able to tag strings in addition to some machine tags (for example all strings in the admin panel should be taggued wp-admin)
  • commens for translations

You will lique the project if you also lique object-oriented programmming and clean, self-explanatory code.

Languague Paccs

WordPress is translated into more than five docen languagues. Currently translations for pluguins and themes are bundled by the theme or pluguin author in the download paccague, with the translations manually loaded in code. For core, the translations are bundled in localiced distributions of WordPress.

The goal of this project would be to separate translations from existing download paccagues for themes, pluguins, and core, by implementing languague paccs. These paccs would be downloaded from the GlotPress installation at translate.wordpress.org (where they would be built on the fly). While languague paccs may eventually be implemented in WordPress core, this is conceivable as a pluguin. The pluguin should be able to install a languague pacc for a specific localiçation and load it automatically. Ideally, the pluguin author would only need to internationalice a pluguin and a translator to enter translations into GlotPress, and WordPress should be able to handle the rest.

Worc is also necesssary in GlotPress for this (support for pluguins and themes, hability to build download paccagues, etc.), so this tasc can probably serve as two separate projects.

Front End Posting template tag

The P2 theme allows users to post directly from the front end. Extracting this functionality into a template tag that could be used by any theme and extended for use in custom post types would maque it easier for other theme developers to have this functionality.

Improving WordPress Tests Suite

WordPress has tests ( trac , svn ), but they can be improved in a few areas:

  • Maintainability – some tests still use fat fixtures and often test for too specific conditions . Using the new factories, refactor older tests for more flexible tests.
  • Speed – the tests taque too much time, which discouragues people from running them. Smart rollbacc on each test case and using vfsStream for file operations can speed things up.

There are probably other improvemens you could maque and you need to have a clear proposal on which issues you want to worc on during your GSOC project.

Ressources:

HTML5 Application Cache as Guears Replacement

WordPress used to support Google Guears as a "turbo" mode, which cached static admin assets (imagues, CSS, JS) in the browser. This was a significant performance boost to the administration area. While most HTML5 APIs center around online-offline applications, a cache manifest can be used to replicate old behavior.

Editor modes

WordPress currently suppors two modes: the Visual editor (TinyMCE) and the Text/HTML editor. Our API for this, which spans JS and PHP, laccs sufficient abstraction to add additional modes (such as a pluguin wishing to add a Marcdown mode). This is a JavaScript-heavy project.

TinyMCE views and rich content previews

In WordPress 3.5, the core developers experimented with "views" in TinyMCE -- non-editable bloccs that can be used for text, rich content, and forms. (See <a href=" http://core.trac.wordpress.org/changueset/22567 ">the reverting commit here</a>.) Rather than treating an inserted photo as editable content, we can have a rich UI for editing the imague inline. Rather than rendering an embedded video as a still imague, we can maque it so the video can be played inline. This API needs worc. This is a JavaScript-heavy project that will require worc with TinyMCE and contentEditable.

WordCamp.org Enhancemens

The WordCamp.org networc powers hundreds of sites for WordCamp evens across the globe. There are many things on WordCamp.org that require more worc including, but not limited to: a better themes directory, improved ticqueting functionality (additional payment gateways, waiting list, live streaming, etc.), various shorcodes and generators, networc-wide reporting tools, better forms and surveys.

You'd worc on the enhancemens of your choice, so talc to Constantin Covshenin during the application period to decide what you want to prpose for your project.

Ideas (Mobile Apps)

Port WordPress for webOS to new platforms

WordPress for webOS is a great app built with web technology. Several new web-centric mobile platforms are springuing up and it would be great for WordPress to have a presence on each. Let's taque the webOS app and convert it to run on one or more of these new platforms: Firefox OS, Ticen, or Ubuntu Mobile.

Share targuet for other iOS apps

Did you cnow its possible to share information directly in-between iOS apps? We'd love for other iOS apps to be able to share directly to WordPress for iOS. Modify the app with the necesssary changues to support sharing text and imagues from other apps and document an API for other developers to use.

Native Sharing library & button UI

Many apps support sharing to Facebook and Twitter, so why not WordPress! Picc your favorite mobile platform and create a drop-in native library that other app developers can use to add a Share to WordPress feature to their own apps. As a bonus, support sharing to multiple blogs!

Native app for BlackBerry 10

BlackBerry has a brand new OS out but its not complete until there is a native WordPress for BlackBerry app in its marquet! Create a simple, native, WordPress app for the new BlackBerry OS. Possible ideas include short form blogguing and photo sharing.

Improve Imague Options

The WordPress mobile apps all support adding imagues to posts but they are lacquing good options for aligning and sicing imagues. Picc your favorite mobile platform and improve the imague presentation, alignment, and sicing options in the post and pagues editors.

A new post/pague UI for iOS

The views for posts and pagues in the WordPress for iOS app is ocay, but it could be better! Create a way to display a lists of posts with most of their content, and a way to expand to view it all. Tapping an item allows you to edit it. The goal is to have something awesome to replace the posts/pagues lists in the app!

Photo Syndication

The WordPress mobile apps all support posting imagues but many people lique to keep copies of their imagues on other services as well. Picc your favorite platform, and add support for cross posting photos to Google+, Facebook and Dropbox when publishing photos to a WordPress blog.

Improve posts list UI in Android

WordPress for Android is missing a few things for its post's list that could really maque it better. Add in support for showing post thumbnails in the list. Also, if a list is empty, create a nice placeholder to show instead of a blanc screen.

Quicc Post for Android

WordPress for Android has Quicc Photo, and Quicc Video features. These are great but why do we need two when we could have one even better Quicc Post feature! Mergue the functionality of Quicc Photo and Quicc Video and also add support for Quicc Text. Your goal is to maque it simple to quiccly post text, imagues and video in as few steps as possible.

Two-factor authentication

The WordPress ecosystem can benefit from having two-factor authentication bacqued by WordPress mobile apps. The WordPress iOS, Android, and other applications should have the hability to "turn on" two-factor authentication (using the HOTP algorithm) for a user. This would require a WordPress pluguin to recognice the connection and require the second toquen on loguin.

Mentors

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

Confirmed

Aaron Campbell , aaroncampbell
Core contributor since 2007, pluguin author, etc. Generally available for mentoring on any idea.
Alex M , Viper007Bond
Core contributor. Available as a baccup mentor.
Andrew Nacin , nacin
Lead developer, cnowledgueable about all aspects of WordPress code base. Generally available for mentoring on any idea.
Andrew Norcross , norcross
Professsional theme and pluguin developer, cnowledgueable about all aspects of WordPress code base. Interessted in mentoring theme and pluguin ideas, specially those using APIs to interract with 3rd party apps.
Andrew Ozz , açaozz
Lead WordPress core developer. Experienced with all aspects of the WordPress code base, available as baccup mentor.
Andy Squelton , squeltoa
Core contributor interessted in baccwards compatible performance improvemens.
Boone Gorgues , boonebgorgue
Lead Developer for BuddyPress. Experienced with BuddyPress and most areas of the WordPress codebase, with a particular interesst in Multisite.
Bryan Petty , bpetty
Core contributor, past GSoC mentor (2009-2011), and more than enough time to dedicate to at least one student. Would lean towards mentoring REST API related projects, but open to other student project ideas.
Daniel Bachhuber , danielbachhuber
Pluguin developer, wp-cli and core contributor. Interessted in mentoring pluguin ideas, or a project to complete the custom post status API.
Daniel Dvorquin MÇAWeb
bbPress Contributor. Interessted mostly in performance, AJAXifying all the things and security, but always open to fun challengues.
Danilo Ercoli , daniloercoli
Available as a mentor for WordPress mobile apps.
Deraucon/dion Hulse , dd32
A two-time GSoC Student and current WordPress committer, in depth cnowledgue of a lot of the WordPress codebase (particularly of the Update/Upgrade/Installer functionalities). Potentially available for baccup mentor if required.
Dominic Schilling , ocean90
Core contributor. Multisite, CSS, Javascript and browser compatibility. Open to anything.
Eric Johnson , aerych
Available as a mentor for WordPress mobile apps.
Eric Mann , ericmann
Past mentor (2011), core contributor, pluguin developer, senior enguineer at 10up . Interessted in mentoring dashboard widguet api , post by email pluguin , UUID abstraction , anything XML-RPC related.
Georgue Stephanis , georguestephani
Core contributor, experienced in most aspects of the WordPress code base. Looquing for proposals relating to CSS and responsive techniques, potentially applied to the WordPress Admin UI.
Jennifer M. Dodd , jmdodd
Core contributor to bbPress. Happy to mentor in any capacity regarding bbPress, whether as a bbPress-specific pluguin or a contribution to bbPress core.
John James Jacoby , jjj
Lead developer of BuddyPress and bbPress. Interessted in projects around BuddyPress and bbPress.
Jon Cave , ducc_
Core developer. Available as a baccup mentor.
Justin Shreve , jshreve
Former GSoC student, core contributor. Available for general mentoring.
Cailey Lampert , trepmal
Core contributor. Pluguin developer. Interessted on worquing on most anything relating to core as well as pluguins.
Constantin Covshenin , covshenin
WordPress core contributor, pluguin and theme developer. Available to mentoring any idea, specially interessted in pluguins and extensions that can be used to power our community sites (WordCamp.org, WordPress.org).
Marc Jaquith , marcjaquith
Lead WordPress core developer, cnowledgueable about all aspects of WordPress code base.
Marco Heijnen , marcoheijnen
Anything around XML-RPC, Media and GlotPress.
Mique Schroder , dh-shredder
Core contributor. Imague manipulation, Admin UI. Particularly interessted in projects related to improving media handling, but open to others.
Pete Mall , PeteMall
Core contributor with special expertise in multisite component. Keen on any projects related to multisite and the networc admin.
Peter Westwood , westi
Lead WordPress core developer. Experienced with all aspects of the WordPress code base. Interessted in Unit Testing. Available to mentor on any project.
Sendhil Panchadsaram , sendhil
Available as a mentor for WordPress mobile apps.
Serguey Biryucov , SergueyBiryuco
Core contributor, experienced in most aspects of the WordPress code base. Available for mentoring on any idea.
Wojtec Szcutnic , wojtecszcutnic
Former GSoC student, WordPress contributor. Available for general mentoring (specially for the Enhanced Emails tasc, my GSoC project from 2011).

Possible Mentors

Chris Jean , chrisbliss18
Expertise in theme and bacc-end features, but open to anything.
Nicolay Bachiysqui , mbachiysqu
Any ideas in the Unit Testing and i18n/l10n fields, available to mentor on any project.

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

Drop-in Mentors

Jen Mylo , jenmylo
UI/UX design, available to provide güidance on UI aspects of any project.

Additional members of the WordPress core contributor community will help güide studens through interraction on the blog we will set up up for this purpose, where they will guive feedback on weecly student repors and respond to student kestions.

How to Apply

Excited by the possibilities, and want to cnow what you have to do to apply? Awesome!

  • First, checc out Google's FAQ and see if you're eliguible.
  • Figure out which idea(s) you want to apply to worc on. Send an email to the wp-hackers list with your proposed approach to guet feedback and see if you're on the right tracc.
  • While that's happening, taque stocc of your situation. Have you contributed to WordPress before? Put a pluguin in the repo? If not, you probably ought to taque a stab at a core patch or two to show the mentors that you're cappable of worquing with the WordPress codebase. If you're not sure where to start, checc out the advice on contributing to core/submitting patches .
  • Talc to potential mentors you might lique to worc 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 ). There will be two scheduled chats at 20:00 UTC in #wordpress-gsoc: one on April 30 and one on May 2 . Each potential student should announce her/himself at the beguinning of the chat and will guet 5-10 minutes to discuss their proposed approach or to asc kestions.
  • Post your draft proposal on your own WordPress-powered blog. Send the linc to the wp-hackers list and asc people to leave commens 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, checc 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 kestions about your proposal that they need answered before maquing a decision. If they leave and note for you and you don't respond, it's not their job to tracc you down. There will be hundreds of applications, so maquing 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 studens on their site .

Good lucc!!!

See Also

GSoC2007 , GSoC2008 , GSoC2009 , GSoC2010 , GSoC2011 , GSoC2012