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 very pleased to be participating as a mentoring organization again this year. Students 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 working with WordPress, you should be proficient in PHP (and JavaScript if your project involves a significant amount of front-end code), and have familiarized yourself with the WordPress codebase.
Please see Jane's GSOC 2011 Timeline post at WordPress Development Updates.
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. If you share one of their passions, why not make that idea your own? Also, check out the ideas from 2009.
Note that you can't take 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 students, you will have to code it from scratch.
WordPress has a number of fully open source popular mobile apps including one for Android that has several hundred thousand users. There is a new wave of Android-based (Honeycomb) tablets coming out, let's adapt our phone-optimized app to work well on these newer, bigger-screen devices. (If you like mobile development check out the Tracs for each app, there are some other potential ideas there.)
The WordPress web admin works okay 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 login to the menus to comment moderation and make it sing on a touch device. Bonus points for expanding into JS and adding gestures where they make sense, like comment moderation.
This is an idea that's been suggested many times and it never seems to make it into a release. We'd love for someone to take this one. When you first set up a WordPress site, there are certain steps you have to go through. Pick a theme, change 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 track of how many of these things you've done, and marked off your progress, much as LinkedIn does when you set up a profile. Each successive login 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 last year's project, Mike Whitfield - Setup Meter.
WordPress sends out a bunch of email notifications for new users, comments, 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, makes them more readable, and is optimized and tested across common web mail clients, desktop mail clients, and phones including iPhone, Android mail, and Blackberry.
WordPress generally gets good reviews for accessibility, but we can always do better. Sometimes there's a split though... providing the best possible experience on modern browsers with JavaScript enabled for the average user is not always the same as providing the best possible experience for people who need extra-large minimum font sizes, click targets, no JavaScript, etc. This project would be to create a version of the admin that is optimized for these users: large fonts, high contrast, no JavaScript, large click targets, etc. This project would be done as a plugin, but if successful, would likely 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 requirements and coding techniques to be compliant. Design help will be available from the UI/accessibility groups as needed.
WordPress saves post revisions, but changes to theme files are not recorded, though the presentation layer is sometimes just as important. Build a versioning system for template files within the theme editor.
For a starting point, see last year's project, Andrew Nacin - Theme Revisions.
Improve comment moderation in the administration pages so that when threaded comments are enabled they are displayed when moderating individual posts comments. 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 last year's project, Matt Harzewski - Comments.
In the coming year, the WordPress media handling functions are expected to be redesigned, with new features added and significant recoding of existing features, some of which will be moved into core plugins. There will be many components to the media overhaul, any of which could make a great Summer of Code project. We'll be looking to add things like slideshows, better gallery functions, creating more user settings for media files and templates, and dozens of other features that could be packaged up for SoC projects.
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 Plugins), and then export/import the database. It’s pretty straight forward, but still more complex than many users are capable of.
However, if you want to change 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 serialized array (almost all the options, including things like widget settings, text widget text, etc).
The goal of this project would be to make a these kinds of transitions simple and smooth. If only the domain is changing, then when the user updates the WordPress URL we would update internal links in their posts, settings, image 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, plugins, etc).
For a similar project, see last year's project, Brian McKenna - Automatic Migration
The WordPress for Android app is over a year old now and a lot has changed in mobile user interfaces since. The app could use a refresh to get a user blogging faster, including a 'Dashboard' type home screen to be able to create a new post in just one click. This refresh should remove the current 'tabs' interface and also take advantage of Post Formats for posting pictures, videos, etc. A good example of apps that currently use a dashboard type experience are Facebook and Twitter for Android.
A general idea of where the app should be going can be found on the android developers blog.
The WordPress for BlackBerry app is over two years old now and a lot has changed in BlackBerry user interfaces since. This refresh should give us a completely new UI for latest devices (devices running OS5.0 or higher) including a new Touch release for Touchscreen devices. The app could use a refresh to get a user blogging faster, including a 'Dashboard' type home screen to be able to create a new post in just one click taking advantage of Post Formats for posting pictures, videos, etc.
The Profiles.WordPress.org site is meant to be a place where you can see at a glance a person's involvement with the WordPress project. For example, if you look at Aaron Campbell's profile, you can see that he has 18 plugins, several Trac tickets that he’s been active in over the last couple months, as well as some interactions in the support forums as well as the ideas forum.
The goal of this project would be to create a BuddyPress plugin that would enhance these profile pages and attempt to create a 'rank' based on the user’s activity, which could be used to weight their comments on the Ideas forum, trac tickets, etc. The plugin will need to specifically work on Profiles.WordPress.org but also be something that other sites or projects could benefit from.
Currently I can’t think of that many enhancements to the existing profile information, except maybe showing plugins that the user is a contributor on not just plugins they started. If you have other great ideas, we’d love to hear them.
The rank will need to be well thought out, to make sure that contributors are given better rank than people that leave useless comments on Trac, etc. We could possibly add more weight to patches than to posts, or even look for commits that gave props to the user, etc.
If you look at trac, there are literally 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, such as accessibility, comments, UI cleanup (Jane would love this) or upgrading, or could be a selection of specific tickets you think are important to address and would provide you with a summer challenge. The benefit of this project type is that you will have the entire development community to give you feedback as you work.
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 plugin to install. Each of these instances uses a different method of showing the user what's going on: a spinner, "crunching," and plain text announcements 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.
BuddyPress is a plugin for WordPress that turns a WordPress blog into a social network. Since BuddyPress is still relatively new, there are infinite project possibilities, and we're interested in any proposals that involve extending BuddyPress.
The WordPress theme directory does not currently accept child themes, as WordPress has no way of ensuring that people have the proper parent theme installed. This project would modify WordPress so that it could download child themes and resolve their dependency on a parent theme.
GlotPress is a web-based collaborative translation tool. It is a web alternative to poEdit and the rest desktop gettext editing tools. Code-wise GlotPress is based on BackPress and a tiny MVC layer on top of it. The project will be to add functionality to GlotPress:
You will like the project if you also like object-oriented programming and clean, self-explanatory code.
bbPPress is the forum software of the WordPress family. It is currently being rewritten as a WordPress plugin. It'll need a bulletproof script for upgrading its data from the old standalone version, a bit more integration work, and importers for Vanilla, vBulletin, phpBB, etc.
The current multi-file uploader is in need of upgrading. There are several open source projects that offer well supported uploaders with many new features: use of HTML 5.0 instead of Flash, drag and drop, on the fly resizing, etc. (depending on browser support). The project would have two parts:
The goal of this project would be to upgrade the current uploader in WordPress core while keeping the existing code hooks intact as much as possible.
WordPress is translated into more than five dozen languages. Currently translations for plugins and themes are bundled by the theme or plugin author in the download package, with the translations manually loaded in code. For core, the translations are bundled in localized distributions of WordPress.
The goal of this project would be to separate translations from existing download packages for themes, plugins, and core, by implementing language packs. These packs would be downloaded from the GlotPress installation at translate.wordpress.org (where they would be built on the fly). While language packs may eventually be implemented in WordPress core, this is conceivable as a plugin. The plugin should be able to install a language pack for a specific localization and load it automatically. Ideally, the plugin author would only need to internationalize a plugin and a translator to enter translations into GlotPress, and WordPress should be able to handle the rest.
Work is also necessary in GlotPress for this (support for plugins and themes, ability to build download packages, etc.), so this task can probably serve as two separate projects.
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 make it easier for other theme developers to have this functionality.
WordPress has tests (trac, svn), but they can be improved in a few areas:
There are probably other improvements you could make and you need to have a clear proposal on which issues you want to work on during your GSOC project.
Resources:
WordPress has unit tests (trac, svn) and we're really trying to make unit tests a priority. This should be something that is simple and easy to use that would let plugin authors begin adding unit test to their plugin quickly. It would be great for plugin authors to do the same for a couple reasons:
Additional members from the WordPress open source community may be added as mentors based on project needs.
Additional members of the WordPress core contributor community will help guide students through interaction on the blog we will set up up for this purpose, where they will give feedback on weekly student reports and respond to student questions.
Excited by the possibilities, and want to know what you have to do to apply? Awesome!
Good luck!!!