WordPress.org

Ready to get started?Download WordPress

Codex

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

Difference between revisions of "GSoC2013"

(Mentors)
(Removed Child Theme Management in WordPress)
Line 71: Line 71:
 
=== Progress Bars ===
 
=== 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 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.
 
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.
 
=== Child Theme Management in WordPress ===
 
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 ===
 
=== GlotPress ===

Revision as of 21:32, 8 April 2013

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. Though we won't know if we're accepted for a while, 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,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/orjQuery, 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. If you share one of their passions, why not make that idea your own? Also, check out the ideas from 2011 to get an idea of some past projects.

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.

Refactor Nav Menus UI with Backbone

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

Supercharge Text Widgets

Text widgets have morphed into holders for all kinds of content that normally would be in posts or pages, but gets put in a widget for design purposes. Until such time as we re-think widgets and content areas, this project idea would supercharge text widgets specifically to add things like rich editing, revisions, and autosave to make these content holders more useful. Applicants should be familiar with the code underlying widgets, TinyMCE, and revisions.

Touch-optimized admin CSS

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.

New User Walkthrough

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 a previous year's project, Mike Whitfield - Setup Meter.

Import/Export

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

Enhanced Emails

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.

Super-Accessible Admin

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.

Template Versioning

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 a previous year's project, Andrew Nacin - Theme Revisions.

Comment Moderation

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 a previous year's project, Matt Harzewski - Comments.

Media

WordPress media handling functions have recently been redesigned, with new features added and significant recoding of existing features. There are many components to the media overhaul, extending 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.

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 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 a previous year's project, Brian McKenna - Automatic Migration

Enhance Profiles.WordPress.org

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.

Full-Throttle Trac Annihilation

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.

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 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.

GlotPress

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:

  • fuzzy strings -- probably the most interesting 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 tagged wp-admin)
  • comments for translations

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


Language Packs

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.

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 make 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 – the tests use fat fixtures and often test for too specific conditions. Using factories instead of fixtures, refactoring the tests and proactively helping people new to testing will help having a more maintainable test suite.
  • Ease of running the test – moving away from the custom runner and changing into a simple PHPUnit suite will help people use their favourite PHPUnit-compatible tools (for example in-editor runner).
  • Failures – there are failing tests in the suite and people don't notice if more failures occur. Cleaning up the failures and setting up a CI server will help fixing failures quickly.
  • Speed – the tests take too much time, which discourages people from running them. Smart rollback on each test case and using vfsStream for file operations can speed things up.

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:

Unit Testing Framework for Plugins

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:

  • Plugins can have reversions too – Usually plugins are relatively small, but they doesn't mean they wouldn't benefit from unit tests to make sure they don't mess things up.
  • Plugin authors are often future core contributors. Teaching plugin authors to create unit tests will ultimately help WPs test coverage.

Port WordPress for webOS to Firefox OS, Tizen, or Ubuntu Mobile

WordPress for webOS is a great app built with web technology. Several new web-centric mobile platforms are springing up and it would be great for WordPress to have a presence on each. Let's take the webOS app and convert it to run on one or more of these new platforms.

Make WordPress for iOS a share target for other mobile apps

Did you know 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 necessary changes to support sharing text and images from other apps and document an API for other developers to use.

Create a native WordPress Sharing library + button UI for mobile apps

Many apps support sharing to Facebook and Twitter, so why not WordPress! Pick 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!

Create simple native WordPress 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 market! Create a simple, native, WordPress app for the new BlackBerry OS. Possible ideas include short form blogging and photo sharing.

Create a new image alignment and options screen for the mobile aps

The WordPress mobile apps all support adding images to posts but they are lacking good options for aligning and sizing images. Pick your favorite mobile platform and improve the image presentation, alignment, and sizing options in the post and pages editors.

A new post/page interface for WordPress for iOS

The views for posts and pages in the WordPress for iOS app is okay, 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/pages lists in the app!

Photo instant upload to Google+ / FaceBook / Dropbox for the WordPress mobile apps

The WordPress mobile apps all support posting images but many people like to keep copies of their images on other services as well. Pick 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 WordPress for Android

WordPress for Android is missing a few things for its post's list that could really make 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 blank screen.

Quick Post for WordPress for Android

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

Mentors

Aaron Campbell, aaroncampbell
Core contributor since 2007, plugin author, etc. Generally available for mentoring on any idea.
Aaron Jorbin, jorbin
Core contributor. Knowledgable about all aspects of the WordPress code base, with expertise in how themes and plugins work and interact with core. Available as a backup mentor.
Alex M, Viper007Bond
Core contributor. Available as a backup mentor.
Andrew Ozz, azaozz
Lead WordPress core developer. Experienced with all aspects of the WordPress code base.
Andrew Nacin, nacin
Core developer, knowledgeable about all aspects of WordPress code base. Generally available for mentoring on any idea.
Andrew Norcross, norcross
Professional theme and plugin developer, knowledgeable about all aspects of WordPress code base. Interested in mentoring theme and plugin ideas, especially those using APIs to interact with 3rd party apps.
Andy Skelton, skeltoac
Core contributor, experienced in most aspects of the WordPress code base. Looking for proposals encompassing new classes and methods for database row objects (ticket).
Chris Jean, chrisbliss18
Expertise in theme and back-end features, but open to anything.
Danilo Ercoli, daniloercoli
Available as a mentor for WordPress mobile apps.
Dominik Schilling, ocean90
Core contributor. Multisite, CSS, Javascript and browser compatibility.
Eric Johnson, aerych
Available as a mentor for WordPress mobile apps.
Eric Mann, ericmann
Anything around XML-RPC or remote APIs in general.
Mitcho Erlewine, mitchoyoshitaka
Core contributor. Strong interest in projects involving JavaScript, advanced APIs, A/B testing, file management.
John James Jacoby, jjj
Lead developer of BuddyPress and bbPress. Interested in projects around BuddyPress and bbPress.
Jon Cave, duck_
Core contributor. Available as a backup mentor.
Justin Shreve, jshreve
Former GSoC student, core contributor. Available for general mentoring.
Nikolay Bachiyski, nbachiyski
Any ideas in the Unit Testing and i18n/l10n fields, available to mentor on any project.
Pete Mall, PeteMall
Guest committer for multisite. Keen on any projects related to multisite and the network admin. Also interested in the Move WordPress project.
Peter Westwood, westi
Lead WordPress core developer. Experienced with all aspects of the WordPress code base. Interested in Unit Testing. Available to mentor on any project.
Sendhil Panchadsaram, sendhil
Available as a mentor for WordPress mobile apps.
Thorsten Ott, tott
Expertise in WordPress plugin and theme development. Good knowledge in linux based video processing and use of WordPress beyond blogging. Available to mentor on any project.
Dion Hulse, dd32
A two-time GSoC Student and current WordPress committer, in depth knowledge of a lot of the WordPress codebase (particularly of the Update/Upgrade/Installer functionalities). Available to mentor on any project.
Marko Heijnen, markoheijnen
Anything around XML-RPC, Media and GlotPress.

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

Drop-in Mentors

Jane Wells, janewells
UI/UX design, available to provide guidance on UI aspects of all projects to ensure user interface fits into current and future WordPress UI.
Peter Westwood, westi
Backup WP GSoC admin for the unlikely event that Jane has a water landing.

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.

How to Apply

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

  • 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).
  • 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