Hi everyone, sorry for being…

Hi everyone, sorry for being inactive recently. I thought I’d give you a heads up that I’ll be mostly offline for the next two weeks as I do final exams. This is also the reason for my inactivity in the past few weeks, and I’d like to apologise for this. I’ll be back to being active from the 13th onwards.

You may have noticed today that I moved the repo to WP-API/WP-API, and I’ve added everyone to the Contributors team. This allows assigning you guys as owners of tickets, while still keeping pushing privileges separate. It also emphasises that the project is no longer just mine. 🙂 I’ve also moved the auxiliary projects (the reference client and multisite addon plugin) to the organisation. (This means you should also be able to track all issues at once via the organisation issues page.)

I’ve also gone ahead and merged all of the pull requests that we had open. I’ve given push access to @japh and @mordauk to merge in bug fixes and small feature additions, while any bigger changes can wait until we’re back to having weekly IRC meetings again. I’m aiming for a 0.7 release on the 13th with all the changes so far (and any new ones), after which we’ll go back to weekly releases and meetings.

If you’ve got any comments, I’m around for a bit, and I’ll be available via email for anything urgent.

Alright, after a short break…

Alright, after a short break on my behalf, let’s start getting you guys set up to contribute. The model I’d like to use for managing the project is the same one I use for most of my projects; that is, groups of changes always go in pull requests. If you’ve contributed to wp-cli, you’ll know what I mean. In a nutshell:

  • Fork the main project on GitHub
  • For a new feature, create a new branch locally and commit to that branch
  • Create a pull request (or attach your branch to an existing issue if possible)
  • I’ll review and merge

With the exception of major features, I’ll merge everyone’s pull requests as soon as possible. Non-team contributions will need sign off by at least one team member (ideally not me, to ensure there’s a few people checking), while team contributions will be merged basically straight away.

In the case of major features, file a pull request and then post here for discussion. Major features will need a rough consensus to get in, plus sign off from the team leader (hey, that’s me!).

Why am I not just giving you all commit access? For accountability reasons (especially since this is aimed at going into core), I’d like to make sure every change is signed off by myself. (One committer for the team seems the right sort of scale, since even with the size of core, it only has a handful of committers. Unlike core though, I want to move fast. :)) Rest assured that I’ll be proactive about merging your code.

Why are we not using Trac for issue tracking? Core Trac isn’t really the right place for this at the moment (but it will be eventually as we merge in), and the GSOC Trac isn’t really a great place for this either, since GSOC is over now.

As an example, I filed two enhancements, and @mordauk filed a bug fix as a pull request.

I finally got around to…

I finally got around to publishing my post on the development process that I’m looking to try and use here, so I’d recommend having a read of the post. I think we’re off to a fairly good start already, so thanks for being awesome so far. 🙂

Securing the WordPress JSON API

Hi all,

Thanks to Ryan for adding me to the team. I’m excited to see WordPress finally embrace a RESTful API and look forward to help in ways that can make best use of my potential contributions.

Speaking of, I wanted to continue the discussion about authentication and make a high level proposal. I was going to post it here but it got too long as to be overwhelming so I decided to dust off my old blog that hasn’t seen any new posts for years; ironically now there are two posts there this week.

Anyway, here it is and I’m going to redirect the comments back here:

Heads up: no team meeting…

Heads up: no team meeting this week, but I’ll be publishing a blog post on some process and meta issues instead. Does anyone have anything they’d like to raise in lieu of the meeting?

At the meeting this morning,…

At the meeting this morning, I articulated some of my thoughts about this o2 and what it’s meant to be. Basically, IRC meetings are typically horrible, and make/core is more of a blog, so this is intended to fill the gap and act as a home for discussion. (Imagine it as a sort of mailing list.) The less we can worry about making it to a meeting on time, the more we can worry about getting the job done. (Don’t worry though, I’ll be available for office hours on IRC every week at this time.) Along those lines, please post whenever you have a question, idea, or something general to discuss.

So, now for that discussion. Summer of Code officially ended today, so I can start giving you commit access to the project. I’ll get that set up in the next week or so and mention the best way for development to work. Out of interest, who’s familiar with git, and/or who would prefer to use Subversion?

We also need to discuss authentication. At the moment, the API only supports Basic authentication. The idea here was to implement the most basic thing that would work, and leave everything else to plugins. From the feedback I’ve had though, this might not be enough, and implementing some sort of token-based authentication might be needed. I’m hesitant to do this, given the size of the code needed to deal with it, so I’d love to hear your thoughts on it.

I also have a collection…

I also have a collection of random thoughts about items we might need to look at.

  • Mobile team meetings: The next mobile team meeting is on Monday 24th at 16:00 UTC; can anyone make it there? I’d love to hear feedback from them and ensure they’re involved as much as possible, as they’ll be one of the big consumers of the API.
  • Beginning core integration: The API has a bunch of functions that are basically transforming internal data into external, serialisable data, and vice versa. These aren’t particularly specific to the API (and in fact, I’m sure wp-cli would love these), so they’re prime candidates for initial integration into core. Likewise for various helper functions (datetime handling is a big one there).
  • Front-end Editor: One of the other Features as Plugins is a Front-end Editor. This is still in the “investigating” phase right now, but I’ve suggested that it’d be a great candidate for using the API. I don’t want to hold up other teams pending our work, but seems like it could be a good place to work together.
  • Twenty Fifteen? Aiming for integration in Q1 2014, we might want to start thinking long term about pushing theme developers towards using the API for more interactive themes. A core theme based on the API would be great for this.

I’ll be making a post…

I’ll be making a post on make/core shortly summarising what I’ve done in the past week, but figured I’d give you guys the scoop. Along with some CPT-related stuff, I’ve spent the past week reworking the documentation for the plugin and I’d love to hear your feedback on it. For any of you who haven’t had a chance to mess with the API yet, I’d be interested to hear what you think of the documentation, and if there’s anything in there we can start to improve on.

As a reminder, our next meeting is on Monday 23rd at 21:00 UTC (Tuesday 07:00 AEST, Monday 17:00 EST, Monday 14:00 PST). Plan for this week is for me to start working on getting you guys set up to start hacking, discuss options and meta, and make a decision on authentication. Again, let me know if you’ve got any ideas for the agenda for this week.

The first meeting was held…

The first meeting was held this morning; thanks to those of you who made it. (I realise that the previous post actually linked to the time for next week, so apologies to those who didn’t realise it was today.) For those who missed it, please check out the logs.

We discussed the timeline for core integration and noted that while the 3.8 integration phase is pretty close, 3.9 will be Q1 2014 and is a better (albeit less solid) target to aim for. We decided that the following items should be in-scope for the first version:

  • Taxonomies
  • Users (although maybe only basic handling will be required here)
  • Options
  • Meta
  • Multisite

With regards to the options and meta APIs, we’ll need to decide on a whitelist/blacklist approach there. (Nacin helpfully mentioned the register_meta() and is_protected_meta() functions designed for this purpose.) We also need to think about how we handle serialized data there. It was mentioned that the dotcom/Jetpack API uses a custom filter here instead, but I think we should rely on the built-in ones with an additional filter on top.

The topic of authentication also came up. While OAuth 2 is out (it requires HTTPS), OAuth 1 is a frontrunner for core integration here. I’m hesitant to give a definite answer on whether this would be included in core or in a plugin (due to the complexity), but this is something we’ll need to discuss in the future more. (I also have a plugin that does OAuth 1, which could give us a nice start there in either case.)

Next meeting (Monday 24th at 21:00 UTC), we’ll start to hash out meta/option handling and get back to the authentication issue. (Also note that next week we’ll have the meeting in #wordpress-dev instead.) In the mean time, watch out for a post on how to get started contributing since we can start writing code now.

Any comments/thoughts on the meeting items (scope specifically)?

Looks like our best time…

Looks like our best time for meetings is Monday at 21:00 UTC (07:00 Tuesday AEST, 17:00 Monday EST, 14:00 Monday PST), so let’s start off with that and refine it as needed. I hope to see you all in #wordpress-core-plugins then!

Topic for the first week is scoping out the project and creating a timeline. If you have time, try out the API and get an idea of what’s already there before the meeting so we’re all on the same page. If you can’t make it to this meeting, don’t worry, as I’ll post a summary and the scope here afterwards.

If you have any topics to suggest, or any part of the scope that you can think of already, comment here and I’ll make sure we get to it in the meeting. Please feel free to post here at any time, everyone has author privileges for a reason. @markoheijnen has also mentioned that he’s looking into creating a WordCamp-related app based on the API, which is pretty awesome.