WordPress.org

Make WordPress Core

Recent Updates Toggle Comment Threads | Keyboard Shortcuts

  • Alexander Hoereth 3:09 pm on August 13, 2013 Permalink | Log in to leave a Comment
    Tags: ,   

    Code Revisions: Week 8 

    I skipped some weeks here; sorry for that. WordPress 3.6 was released and now there is quite some talk about 3.7 and 3.8 ongoing here – I really like the plugin approach! It actually is the same approach recommended to us GSoC students for the projects. Many features which can be put together by core developers when they team up might be essential to WordPress while maybe still not essential as part of core. This way WordPress development could get much more dynamic for the future.

    As of the discussion on my last post 0.6 now primarily uses php -l for syntax checking – if available. If not I am still falling back to eval (#335).

    For the next weeks the plan is now to bring a more code-editor-like look to the code revision viewing: Show indention and lower line spacing etc. This will need some not so pretty overwriting of pluggable functions because most spaces are stripped for diff-creation.

    Further more I will discuss releasing the plugin to the plugin repository with my mentors as preparation to final considerations if or if not this or part of this should get into core.

     
    • Ryan Bayne 3:27 pm on August 13, 2013 Permalink | Log in to Reply

      Great. Looking forward to the code editor improvement. While I’m still learning the core and the ways of WordPress. Things like that will make it just a little easier to take it all in and eventually contribute, eventually :)

    • Shea Bunge 9:40 pm on August 13, 2013 Permalink | Log in to Reply

      I recommend that you use CodeMirror for the code editor.

  • lessbloat 1:09 pm on August 13, 2013 Permalink | Log in to leave a Comment  

    I’m doing some quick research into the wp-admin dashboard (which I plan to look at for 3.8). I’d like to learn more about how you use the dashboard, and how you think it could be better. Please take a few moments and fill out this 5 question survey:

    Take the survey

    Thanks so much for your help!

     
    • equaliser.me 1:20 pm on August 13, 2013 Permalink | Log in to Reply

      A very simple but important thing is a notepad on my dashboard. At the beginning of my working I always use a local texteditor, but making notes online in the backend is so effective.

    • Piet 1:43 pm on August 13, 2013 Permalink | Log in to Reply

      Good survey, hope you will get lots of input/feedback!

    • WebTechGlobal 2:19 pm on August 13, 2013 Permalink | Log in to Reply

      Yes very good direction to be thinking about and something I’m keen to help with. My vision of the dashboard is different modes for different users. So one blog could offer a different dashboard. Each mode focusing on that user rather than a mix of widgets.

      Developer Mode (even if just for newer developers)
      Support Mode (possibly the default and plenty help/troubleshooting tools)
      Statistics/SEO Mode (our Google, Alex, Bing and overall SEO condition all on one screen)
      Blogger Mode (a full Edit Post screen but with a menu for selecting post type and possibly forms for subscribers to request permissions to be author and blog on that very dashboard, there is very little connection between webmaster and visitors in WordPress core other than comments)

    • Hassan 7:02 pm on August 13, 2013 Permalink | Log in to Reply

      Useful survey. It’s about time we give the dashboard page more love. It’s been a bit useless for a while now, except if you have some important plugin widgets there.

  • Frederick Ding 12:00 pm on August 12, 2013 Permalink | Log in to leave a Comment
    Tags: ,   

    Migration update: brief hiatus 

    I’m glad to see the excitement that the recent 3.7/3.8 discussions are generating. I’ll only write a short update today on the importer.

    Since I’ve been moving back to campus and am in the midst of a busy staff training period (as disclosed in my application and timeline), I haven’t been able to get much coding in, and won’t have the time to code new features until next week.

    I’ve received some very helpful feedback that led to resolutions, and will continue fixing bugs in the little time I have this week:

    (I periodically check old and open tickets on Core Trac for the importer/exporter to see what I can handle within the scope of this project.)

    Meanwhile, I’m also examining the Relocate tool‘s handling of large sites — out-of-memory issues — which will eventually be resolved in the bigger picture by integrating it into the importer or attaching it to WP_Importer_Cron so that it, too, can work on a schedule.

    Next Monday, a new beta of the cron-based importer will be tagged and released for download.

     
  • Brian Richards 10:00 pm on August 9, 2013 Permalink | Log in to leave a Comment
    Tags: , inline-docs   

    Better Inline Docs for 3.7 

    For the 3.7 cycle we’re going to focus hard on improving the inline docs throughout WP core. Eric Lewis, Drew Jaynes and myself will be leading this charge, and we invite anyone who is interested to join us.

    You can join us for a meeting on the subject in #wordpress-dev IRC on Tuesday, August 13, 18:00 UTC.

    For the first time ever, we’ll be adding inline docs to the many, many hooks found within core. This is the area I’ll be contributing the most, personally. Since we’ll mostly be marching to the beat of our own drum to document the hooks, so I’d like to use the remainder of this post to explain a bit more about our plan of attack – which we’ll discuss during Tuesday’s meeting.

    Hook Doc Style

    We’ll be using the same inline PHPDoc standard that is used for functions to documenting each of the hooks. This means both short description and long descriptions (where applicable), along with @since and @param tags. We will not be using the @return tag, however, because actions return nothing and filters simply return the first param.

    The DocBlocks will appear, in almost every case, on the line directly preceding the call to do_action() or apply_filters. We feel this is the most logical placement when grokking the code as a human, and also the most convenient position for the parser that will power developer.wordpress.org.

    Some Examples:

    https://gist.github.com/6108890

    https://gist.github.com/6108862

    https://gist.github.com/6108898

    Note that in this third example we are using on the PHPDoc spec for describing hashes in order to document each of the passed items in the array. This, I think, provides a great deal of context for the array and a much greater value to our documentation (especially given the number of filters in core that pass arrays). As an aside, I agree that it may be odd we’re referencing the associative array keys as var names, rather than a string literal, but it’s necessary for parsing the docs properly.

    Some Potential Issues

    1. I know there are a few hooks that appear in more than one location. In this case we’ll be documenting them in just one function and adding a pointer to that function across all other instances. We’ll determine the best way to handle this pointer in the weeks to come, for the immediate future I’ll just be using a shorthand comment for my own references.
    2. Many filters throughout core passed unnamed parameters and just embed the values of their parameters directly. In these instances I look first to core to see if an add_filter() is being called on the filter and then default to the var names passed there. If core is not calling the filter anywhere I’ve used names that seem most logical (e.g. $output)
    3. Several hooks have variable names. I don’e believe this will actually pose an issue, but I do want to make note of it.

    Process

    Because of the sheer volume of things we need to document, the best idea I’ve got so far (as recommended by Mark Jaquith) is to allow anyone willing to contribute an opportunity to “claim” the files they’d like to document. This would grant them a 2 day “lock” on the file(s) to document everything and submit a patch. This will help us minimize or eliminate duplicated efforts and stale patches as much as possible. We’ll likely have 2 separate tickets: one for documenting hooks, one for documenting functions, and all patches will be made directly to those tickets. This could become unwieldy, and we’ll discuss the merits of this approach in Tuesday’s meeting.

    Don’t worry if you really want to help, but can’t attend the meeting. It will all be logged, and we’ll be posting updates back to the blog here (using the inline-docs tag). Once we get underway you’ll be able to track progress directly on the trac tickets.

    Hope you’re as excited about this as I am!

     
    • Chris Olbekson 10:47 pm on August 9, 2013 Permalink | Log in to Reply

      I think this is awesome and much needed. There are also still a lot places in core where @param types are listed as unknown or @return statements are missing. Hopefully we will be able to get all these fixed as well.

    • Pippin Williamson 10:50 pm on August 9, 2013 Permalink | Log in to Reply

      Awesome, this will be excellent.

      I’d be happy to claim a few files. How do plan to track claimed files?

    • Frederick Ding 10:56 pm on August 9, 2013 Permalink | Log in to Reply

      Very excited too — I’d love to contribute, although I can’t make the IRC meeting.

    • Avryl 11:25 pm on August 9, 2013 Permalink | Log in to Reply

      Is it the intention to eventually move the codex to developer.wordpress.org?

      • Siobhan 2:45 pm on August 12, 2013 Permalink | Log in to Reply

        it’s the intention to move parts of the codex to developer.wordpress.org, not the whole thing.

        • Avryl 3:12 pm on August 12, 2013 Permalink | Log in to Reply

          I was just watching your WordCamp video when I got your comment! :)
          Cool, are there any other plans for the codex? Will it continue to use MediaWiki or maybe migrate it to WordPress?

    • Ipstenu (Mika Epstein) 11:42 pm on August 9, 2013 Permalink | Log in to Reply

      I’m interested in this one :)

    • wycks 11:51 pm on August 9, 2013 Permalink | Log in to Reply

      I just happened to be fiddling with hooks broken down per WP file (list is alphabetical per directory from root) maybe you will find it useful http://wycks.github.io/WP-Hooks/index.html (1683 hooks, it might be missing some).

    • Mike Schinkel 1:40 am on August 10, 2013 Permalink | Log in to Reply

      This is really great news. If someone wants to help, how do we easily determine the values for “@since?”

    • Rami Yushuvaev 6:35 am on August 10, 2013 Permalink | Log in to Reply

      What about extra resources and external links found in the codex? can we add them the the inline docs?

    • loru88 8:10 am on August 10, 2013 Permalink | Log in to Reply

      It’s a great news, it is very helpful!
      But I have a proposal, instead of inflate the wordpress source, what about an online documentation for the entire hooks on Codex site and show the piece of code they refers directly online, in a way like many site are doing for showing wordpress source online, for example http://adambrown.info/p/wp_hooks

      • Brian Richards 1:56 pm on August 10, 2013 Permalink | Log in to Reply

        An interesting suggestion.

        Resources like http://adambrown.info/p/wp_hooks are built directly, and automatically, from parsing core. And, if the documentation only lives online, how can we assist developers that are currently working offline? Or someone who is exploring core and does not yet know about the online docs? Or, even if we do know about the online docs, any time we want to understand how something is used/works, we need to leave core and look it up elsewhere. Right?

    • Paul de Wouters 11:14 am on August 10, 2013 Permalink | Log in to Reply

      I’m in!

    • vmassuchetto 8:41 pm on August 10, 2013 Permalink | Log in to Reply

      Awesome! It’s been some years I’ve seen this discussion in wp-hackers, and the main problem was do direct some effort to the task. It’s definitively a huge job!

    • Shea Bunge 6:48 am on August 11, 2013 Permalink | Log in to Reply

      I would be interested in contributing to this, but the IRC hours don’t work with my timezone. Do you have any specs on order of DocBlock sections, or alignment of tags?

    • Siobhan 9:16 am on August 12, 2013 Permalink | Log in to Reply

      I’m interested in helping out with this! :)

    • janw.oostendorp 6:27 pm on August 12, 2013 Permalink | Log in to Reply

      I would realy like to help documenting the hooks. I’ve been waiting to contribute to core and this sounds like something I would like to do.

    • Tom Auger 2:20 pm on August 13, 2013 Permalink | Log in to Reply

      I’m in – been looking for an official push to improve inline docs. I think we should expand the scope to simultaneously updating the Codex entry at the same time. Perhaps once the patch is committed, the creator of that patch then should go and update the relevant Codex entries.

      It would be really great if, as an additional output to this effort, we had a really solid hook reference with a categorized list of hooks on Codex.

      • Tom Auger 2:23 pm on August 13, 2013 Permalink | Log in to Reply

        Oh, and sign me up for wp-admin/media* and wp-admin/includes/media.php (though a 2-day lock seems perhaps a trifle short)

  • Lance Willett 5:06 pm on August 9, 2013 Permalink | Log in to leave a Comment
    Tags: , , twentyfourteen   

    Twenty Fourteen theme project kick-off 

    Are you interested in contributing to the new default theme?

    Twenty Fourteen example

    We’ll kick off office hours for 3.8 cycle next Tuesday August 13, 17 UTC, in #wordpress-dev IRC. Covering goals, scope, and how best to split up tasks. If time allows we can jump into tickets.

    Then throughout the 3.8 cycle making the office hours a habit on Tuesdays and Thursdays at 17 UTC.

    Don’t worry if you can’t make it every single chat—we’ll be posting here with the twentyfourteen tag to keep you updated—and you can follow commits and tickets via Trac.

    For a bit of background on the Twenty Fourteen theme, see notes in #24858 and the already-growing list of open tickets. Let’s get to work!

     
  • Matt Mullenweg 7:20 pm on August 8, 2013 Permalink | Log in to leave a Comment
    Tags:   

    Excellent 3.8 brainstorm session today. People talked about a number of interesting ideas and started to form some groups around them. Not everyone is in IRC, so wanted to give an opportunity for people to post a comment with a given area here, and if you’re interested in contributing to that area reply to that comment. This allows people to connect asynchronously. As people comment please connect with them directly in IRC, email, whatever, and discuss.

    Next week groups will bring more fleshed out proposals for forming a Plugin Project team, including a lead, mockups, user tests, existing plugins…

     
    • Justin Sternberg 7:22 pm on August 8, 2013 Permalink | Log in to Reply

      I’m interested in “Widget overload when there are too many”

    • Konstantin Obenland 7:22 pm on August 8, 2013 Permalink | Log in to Reply

      Featured Content group unite!

    • Mel Choyce 7:22 pm on August 8, 2013 Permalink | Log in to Reply

      I’d like to work on improving the content editing experience, including formatting and content blocks.

    • Japh 7:24 pm on August 8, 2013 Permalink | Log in to Reply

      I’d like to work on the JSON API with @rmccue.

    • Mel Choyce 7:25 pm on August 8, 2013 Permalink | Log in to Reply

      Another idea: improving the screen options panel.

    • Marko Heijnen 7:25 pm on August 8, 2013 Permalink | Log in to Reply

      I like to work on JSON API, widget overload and or Image/Media editing.

    • sara cannon 7:26 pm on August 8, 2013 Permalink | Log in to Reply

      maybe we should separate content blocks from utilizing the customizer? or do you see these completely related?

      • Mel Choyce 7:28 pm on August 8, 2013 Permalink | Log in to Reply

        I see them as totally different, since ideally they’d be within the page and post editor.

      • sara cannon 7:28 pm on August 8, 2013 Permalink | Log in to Reply

        urg that was supposed to be threaded onto @wonderboymusic‘s post

        • Scott Taylor 7:31 pm on August 8, 2013 Permalink | Log in to Reply

          they are different, and touch different pieces of code – the blocks + visual improvements could be a side meta box driven by a plugin, the customizer changes may require rewiring some of the existing JS in core

      • Nick Halsey 8:02 pm on August 8, 2013 Permalink | Log in to Reply

        So basically we could merge widgets into the customizer as site-wide content blocks? That would be awesome.

        In terms of implementation, it might work better to just replace the widgets page with a customizer-like version that has drag-and-drop for widget areas. Although it would be cool if it was all within the same page.

        • Mel Choyce 8:21 pm on August 8, 2013 Permalink | Log in to Reply

          I thought about this a little during the 3.5 cycle: http://cl.ly/image/0A0M0x0E2R25

          • Justin Sternberg 9:12 pm on August 8, 2013 Permalink | Log in to Reply

            I like this idea a lot, but think it would be even cooler if had widget-areas to choose/drag vs individual widgets. A widget-area would just be a package of configured widgets/content-blocks. see discussion: http://core.webdevstudios.com/
            cc: Nick Halsey

            • Nick Halsey 12:09 am on August 9, 2013 Permalink

              That would be cool. But it will be key to make it as conceptually simple as possible; if we aren’t careful we could end up adding another layer of confusion for the average user (widgets of widgets). And if it gets more confusing I see this staying as a plugin rather than merging into core. Not necessarily a bad thing but not the primary goal. I think it’ll be easier to understand once it’s been implemented, though, especially if we can do the customizer part too.

    • Chris Reynolds 7:27 pm on August 8, 2013 Permalink | Log in to Reply

      Interested in helping figure out Help stuffs.

    • Charleston Software Associates 7:27 pm on August 8, 2013 Permalink | Log in to Reply

      I’d like to look at what it takes to implement infinite scroll of paginated lists on wp-admin. Or some better way to navigate through the pages/posts list other than search or “page number guess”.

    • Ricard Torres 7:28 pm on August 8, 2013 Permalink | Log in to Reply

      The Real-Time preview in the edit screen would be so awesome :)

    • Justin Sternberg 7:30 pm on August 8, 2013 Permalink | Log in to Reply

      I’d also like to work on “Global turn off comments.”

    • Peter Chester 7:34 pm on August 8, 2013 Permalink | Log in to Reply

      Upgrades: Differentiate between major and minor upgrades for plugins, themes and maybe even core as a starting point for an eventual auto upgrade system. If the plugin is a major upgrade, then it should have something in the readme to indicate this and messaging for the upgrade can be handled differently in the WP admin

      • Helen Hou-Sandi 7:35 pm on August 8, 2013 Permalink | Log in to Reply

        This doesn’t sound like feature-plugin territory. Also, auto minor updates are already scheduled for 3.7; this is 3.8 planning.

      • Peter Chester 7:35 pm on August 8, 2013 Permalink | Log in to Reply

        It could be a rather simple change that is mostly all about how messaging is changed. Technologically it would be trivial (i think).

    • mt_Suzette 7:36 pm on August 8, 2013 Permalink | Log in to Reply

      I always wondered why there wasn’t a drag and drop interface for sorting the pages in the admin, other than quick editing and specifying an order number or using a plugin. Seems like too basic of a function to have to install a plugin for, ie My Page Order.

    • sara cannon 7:36 pm on August 8, 2013 Permalink | Log in to Reply

      Explore front-end posting / art direction – possibly utilizing the existing customizer

    • schmoo2x 7:39 pm on August 8, 2013 Permalink | Log in to Reply

      Custom Post Type Archives in the Nav Menu builder – I’ve been using static links there for too long! :-)

    • Weston Ruter 7:41 pm on August 8, 2013 Permalink | Log in to Reply

      To add a thread here re: “Collaborative post editing – WebRTC?”

      For realtime collaborative editing of posts (à la Google Docs), I’ve been thinking about how we might leverage WebRTC for this now that it is gaining adoption. Being peer-to-peer, this could be an ideal fit for WordPress which often lacks robust server architectures (e.g. shared hosts) to support many concurrent connections via long polling or WebSockets. WebRTC could also be used to make the Heartbeat API more realtime in terms of what other logged-in users are doing right now (as Heartbeat only updates after 15 seconds by default, and would kill many servers if any more frequent).

      • Weston Ruter 7:43 pm on August 8, 2013 Permalink | Log in to Reply

        For maximum compatibility, WordPress.com could provide a STUN/TURN server (e.g. via Jetpack) to help users who are stuck behind restricted NATs, if they don’t have an existing server that they can leverage. I remember hearing that 20% of users need such extra help to establish these peer-to-peer connections.

    • anseltaft 7:50 pm on August 8, 2013 Permalink | Log in to Reply

      I would love a way to group images into some kind of folder-like structure in the Media Library, a la NextGen Gallery. Such a thing would help asset administration immensely.

    • Mel Choyce 7:51 pm on August 8, 2013 Permalink | Log in to Reply

      This might be a longshot because it literally just got a complete redesign, but anyone interested in Revisions?

    • Faison 8:15 pm on August 8, 2013 Permalink | Log in to Reply

      Something I would have really liked for my last plugin, more filters in the Walker_Nav_Menu class. For example, if I wanted a nav menu that displayed the links without the UL and LI tags, I can remove the UL easily, but the LI’s are hardcoded and much more difficult to remove.

      And maybe we don’t need to solve that with filters. After all, the UL can be removed by changing the wp_nav_menu argument ‘items_wrap’, so maybe it would be possible to just have an ‘item_wrap’? But I could see that being more difficult to code than just adding filters.

      Either way, I feel like that would help open the door for more creativity and control over WordPress menus.

      • Bryan Petty 7:29 am on August 9, 2013 Permalink | Log in to Reply

        This is brainstorming for potential features that we’ve never been able to fit into any release schedule based on time constraints, but what you’re describing doesn’t sound like more than one or two smaller patches to core, which you would have better luck with simply submitting to Trac directly.

    • pekz0r 8:18 pm on August 8, 2013 Permalink | Log in to Reply

      Many great ideas.
      I think the widget management is one of the parts of WordPress that I really think there’s a lot of room for improvement. Widget areas should not be defined by the theme but by the user and then connected to the pages.
      Another thing that I really would like support for in the core is multiple languages. Solutions like WPML isn’t very good and needs add expensive joins on more or less EVERY query. Some kind of support in the standard DB-structure is required for this to work well. Almost all other CMS:es has this.

    • Valerio Souza 8:45 pm on August 8, 2013 Permalink | Log in to Reply

      Use shortcuts for text editors to use editors. Example, ctrl + s to save.

    • s3w47m88 9:08 pm on August 8, 2013 Permalink | Log in to Reply

      Unreasonably overdue and should be one of the highest priority topics: http://wordpress.org/ideas/topic/improved-visual-editor

      • Aaron D. Campbell 1:31 am on August 10, 2013 Permalink | Log in to Reply

        Not sure there’s really a better functioning solution at this point and there’s a lot to be said for the stability that TinyMCE has built up over the year. However, there are several ideas above that are aimed to drastically change this area. One has to do with implementing the customizer to augment functionality or possibly to create real-time previews of your content. Another is to build a content block based system, which may integrate into the existing TinyMCE or may need something altogether different.

    • nikolov.tmw 9:18 pm on August 8, 2013 Permalink | Log in to Reply

      I know that adding multilingual support into core is quite a distant thing yet, but can anyone give me an update of whether this has been discussed lately? I’m personally working on another plugin that would do that and I’m probably not doing it in the best way possible, but so far I’m able to achieve most of the stuff using what WordPress already has(custom post types and custom taxonomies) – so I’m thinking it might not be impossible to do.

    • Alex Mills (Viper007Bond) 9:19 pm on August 8, 2013 Permalink | Log in to Reply

      I’m going to try to get my WP_Query date parameter improvements finished so that hopefully it can make it into 3.8: #18694

    • Pete Mall 10:39 pm on August 8, 2013 Permalink | Log in to Reply

      Anyone interested in Network Admin or general Multisite improvements?

    • developer 1:49 am on August 9, 2013 Permalink | Log in to Reply

      All Sounds Great ! I would like to see installation instructions for everything. I would like it so much that i will start the process soon. I will start creating installation instructions via step by step in pdf , any helpers ? well i will start with some plug-ins, widgets, …… that i use on some of my sites. The step by step pdf will be explained into simple to experience developers to use as a guideline that helps plug-in installation with API configurations.

    • Helen Hou-Sandi 3:21 am on August 9, 2013 Permalink | Log in to Reply

      Possible idea for somebody who might be interested: New User Walkthrough.

    • JakePT 5:19 am on August 9, 2013 Permalink | Log in to Reply

      I want to see WordPress become a bit more friendly to Membership type sites. Without a hodge podge of plugins, WordPress insists on showing registered users the Dashboard and Admin bar. This is especially annoying when they access the Dashboard and see menu items for various plugins that have not been attentive with permissions.

      Some sort of way to put certain users/user levels into a purely front-end mode would be nice.

      • Fab1en 7:35 am on August 9, 2013 Permalink | Log in to Reply

        +1 for this !
        I’m currently working on this type of site, and I succeeded in displaying the WordPress registration form on the frontend and style it, but with some hacks.
        I have also managed to hide the admin bars for a specific category of users and deny them dashboard access (with redirection the a frontend page). Registered users can even use the Media Library to manage their own media files.

        How do you imagine putting this in core ?

      • Erlend Sogge Heggen 1:26 pm on August 10, 2013 Permalink | Log in to Reply

        This should be a coordinated effort together with BuddyPress and bbPress, since those two plugins are already creating their own profile pages for users. Ideally, they’d both have a bare-bones starting point in vanilla WordPress that they’d put their changes on top of. @johnjamesjacoby @djpaul @boonebgorges

    • Lance Willett 6:11 am on August 9, 2013 Permalink | Log in to Reply

      Project idea: Re-imagine the WP.org theme directory for a better user experience.

      More useful and beautiful interface: bigger screenshots and less text-heavy on each page, add mobile screenshots, make the layout responsive. Better preview and theme discovery. Maybe extend the taxonomy and update the filter interface to be Ajax-driven.

      Depending on the exact scope, could also bring the changes into wp-admin/themes.php interface—it needs a revamp also. (Remember multiple screenshots: #19816?)

      • Bryan Petty 7:46 am on August 9, 2013 Permalink | Log in to Reply

        I’m interested in this along with the same for the plugin directory, and it would all coincide nicely with Mert’s GSoC project, however, I’m still waiting on actual working code to be added to meta.svn that I can build off of. :(

        There is one experiment I added to my todo list to try once GSoC has finished for profiles, having seen Mert’s mostly final layout.

        Of course, I should reiterate that I’m not much of a designer, but I can certainly still help with responsive, some JS, and browser testing.

      • Sam Sidler 8:13 am on August 9, 2013 Permalink | Log in to Reply

        Note that most of this project would be related to changes only on wordpress.org and would be separate from the features-as-plugins projects that land in core.

        But we could definitely have a companion project that was focused on improvements to the core theme browser specifically.

        • Matt Mullenweg 5:58 pm on August 9, 2013 Permalink | Log in to Reply

          Actually have thinking for them to be in parallel — a great browsing experience on one should be the same as a great browsing experience on the other. People use the install-from-WP.org feature a ton for plugins and themes and it’s fairly mediocre for both.

      • Amy Hendrix (sabreuse) 2:02 pm on August 9, 2013 Permalink | Log in to Reply

        Love this idea — we’re past due for a refresh of both the overall directory and the individual theme listings.

      • Mel Choyce 6:38 pm on August 9, 2013 Permalink | Log in to Reply

        +1

      • Mel Choyce 9:43 pm on August 9, 2013 Permalink | Log in to Reply

        Would also love a better searching/filtering UI, like .com has: http://cl.ly/image/1q1a2i3C0c42

    • Fab1en 7:27 am on August 9, 2013 Permalink | Log in to Reply

      I would like to work on the native audio/video support there were introduced in 3.6. For quite some time I use WordPress to power media focused websites with MediaElementJS and JWPlayer (see http://www.thepuppinisisters.com, or http://amazonie.arte.tv/). I have ideas to add different format support for the same media element, CDN hosting support, poster image taken from the library, playlist support, …
      I have published a plugin that add those functionalities to previous WordPress versions (http://wordpress.org/support/plugin/1player) but the code is not up-to-date. Do you think this could have its place into the core ?

      • Mel Choyce 6:40 pm on August 9, 2013 Permalink | Log in to Reply

        I love the idea of native playlists, they would have been awesome for me when I was a radio dj. I used to take screenshots of my playlists and post them every week on my radio show’s blog. I can see a lot of use playlists for bands or even just personal blogs.

        • Fab1en 12:39 pm on August 10, 2013 Permalink | Log in to Reply

          The idea for audio or video playlist is to use the already available image gallery interface and make it generate a tag like instead of .

    • Nashwan Doaqan 6:21 pm on August 9, 2013 Permalink | Log in to Reply

      WordPress 3.7 and 3.8 coool! .. I love to help with anything about the API and testing :)
      -

    • Nikos M. 8:57 pm on August 9, 2013 Permalink | Log in to Reply

      @WP Devs and collaborators

      Just one suggestion:

      *make WP FAST (and then a little faster)*

      as a consequence of this suggestion (or as a prerequisite) :

      make WP LESS BLOATED,
      ie without loading a ton of files and classes
      (without sacrificing proper software engineering principles also)

      features abound, but they are not going to be used when the site will be very slow, for any medium-traffic, non-trivial site/application

      this might mean:

      • an alternative DB management (maybe support more DB vendors, not necessarily)
      • heavy re-use of things (variables, dynamic templates, query results)
      • powerful and flexible caching scheme (better built-in than a plugin) it is going to be faster
      • an alternative plugin system (minimize useless calls, integrate more, make it faster)

      keep up the good work

      • Nikos M. 9:12 pm on August 9, 2013 Permalink | Log in to Reply

        also:

        • consider saving most configuration settings in a local php file than the DB (it is going to be faster) (using an API of course)
        • consider using a light-weight template engine which allows for cached dynamic templates

        (thus most template parsing is going to be done only once, faster)

        • consider loading DB values only when needed, on-demand (lazy loading)
        • consider using a full MVC framework for hadling both admin section AND front-end (this is not necessarily faster, but much simpler than loading a ton of fles ie post.php, edit.php etc.., maybe faster, surely faster for development purposes)
        • consider various micro-optimizations in core functions/methods which allow for same results with less memory/cpu resources (plenty of those, the problem is that they are specific to each case) (examples, php has functions which perform similar operations some are faster than others, objects/small classes over arrays, etc..)
    • Marko Heijnen 11:54 pm on August 9, 2013 Permalink | Log in to Reply

      Improving the media experience since users still think it is confusing. Different style of dialog doesn’t help.

      • Fix edit image data dialog. So when you want to change the information of an image in your content it still uses a TinyMCE dialog what looks weird if you inserted the image with the new dialog.
      • Moving the image editor to a dialog so we don’t need to link to the edit media page. The current UX is weird and to me should never made it in 3.5. Opening a new tab to edit an image and then go back and press the refresh link isn’t really user friendly. I would love to see an edit dialog that benefit the styling of the new dialog. I already played with it a bit and currently the dialog looks like: http://i.marko.io/2a/6vtf2qb3r44s4.png. Most likely the filters don’t make sense to have in core but it would be awesome to have this idea in mind for so plugins can enable it.

      -A WP_Image class that handles as an better API for dealing with media attachments. Like currently you can’t create an editor since you don’t know the url. This class also be a wrapper for that. Also it adds the ability to add new image sizes to an image in a few lines of code. A first step to reduce the amount of redundant. See https://github.com/markoheijnen/WP_Image.

      If we can add this things this it would be an awesome 12 months for media inside WordPress.

    • paaljoachim 8:58 am on August 12, 2013 Permalink | Log in to Reply

      I have created a few UI mockups:

      • Using drag&drop templates as a base for a new page/post. Saving a layout as a template for easy page creation.
      • Semi transparent grid to where one drops Elements (header, content, sidebar, footer and widgets. Sort widgets into user defined groups.)
      • Draggable and color labeled sorting.

      and more..
      http://easywebdesigntutorials.com/wordpress/wordpress-mockups/

    • Eddie Moya 7:30 pm on August 12, 2013 Permalink | Log in to Reply

      Widgets General Overhaul. Maybe not all of this for 3.8, and maybe most of it not in core at all ever. Just putting out here to see what bits of this might be interesting to try to work on for core.

      Widgets as a Post Type, Sidebars as a Taxonomy. I have a plugin that is doing this currently, I have been squeezed for time to dedicate to clean it up so I can make it public. However if there were any serious interest for this idea in core (3.8 or not), I would put the pedal to the metal.

      The plugin circumvents WP_Widget_Factory all together, and avoids the several global multidimensional arrays used by core. Instead I create a custom post type called ‘widgets’ and a taxonomy called ‘sidebars’. This leads to a bunch of benefits:

      • Sidebars can be created on the admin side by non-developers
      • Implementations of sidebars in the theme function more like ‘locations’ in menus – because you create the sidebars that populate it in the interface, not in the code.
      • Leverages taxonomy metaboxes to allow instant creation of sidebars.
      • Widget data is stored as Post Meta, instead of single huge serialized array storing all the data for *all* the widgets in a single record.
      • Widgets/sidebars can be exported/imported via WXR.
      • Expansion of the basic idea of what a widget is – widgets can have their own singles pages if desired.
      • My plugin is compatible with all widgets that extend WP_Widget, I have not tried to figure out how to expand compatibility to the older widget – I’m sure something could be figured out (maybe)

      Widget UI – Theres been talk about the Widget UI, I will happily put forward my cleaned up version of the Widgets UI – which is mostly a simple clean view, separated from most of the logic – and maintains all the rest of the normal UI behavior. I would love it if the code for our admin templates was a little more sane – the current widgets ui templates in core are sort of a rats nest. The simple act of already having a clean version of the template might make it easier to make changes to the UI now, and in the future.

      The reason I did the work of abstracting out the Widgets UI on my own was for the sake of sticking the said interface into a post metabox, allowing widgets to be controlled on a post-by-post basis the exact same way that are on the main interface.

      Something I have mentioned to a lot of people – at WordCamps and online.

    • lessbloat 12:32 pm on August 13, 2013 Permalink | Log in to Reply

      I plan to spend some time on 3.7. After that, I’d like to look at the possibility of a dashboard & the welcome screen refresh.

  • Ryan McCue 1:00 am on August 8, 2013 Permalink | Log in to leave a Comment
    Tags: ,   

    JSON REST API: Version 0.4 

    After a week’s hiatus thanks to WCSF and the midsemester review, I’m back with a new release of WP API! Version 0.4 is now available with the following changes:

    • Add Backbone-based models and collections – These are available to your code by declaring a dependency on wp-api (#270)
    • Check json_route before using it (#336)
    • Conditionally load classes (#337)
    • Add additional test helper plugin – Provides code coverage as needed to the API client tests. Currently unused. (#269)
    • Move json_url() and get_json_url() to plugin.php – This allows using both outside of the API itself (#343)
    • getPost(0) now returns an error rather than the latest post (#344)

    As always, the full changes are available if you’re interested.

    This release brings the first version of the Javascript API, based on Backbone models and collections. To use it, simply declare `wp-api` as a dependency to your script, then start using the `wp.api` classes. Here’s a quick example of how to use it:

    var posts = new wp.api.collections.Posts();
    posts.fetch({
    	success: function (posts) {
    		var post = posts.at(0);
    		var title = post.get('title');
    		post.set('title', title + ' (Updated!)');
    		post.save();
    	}
    });
    

    These are intended purely as building blocks for your own software. I had been looking at rewriting P2 partially to use these, however it appears that would require gutting P2 and basically starting from scratch, due to P2′s architecture. I’d love to see what you can do with this though, and bonus points if you can get a API-ified P2!

    The coming week will introduce some specialised page handling as an example of how to enable custom post type support, plus the beginning of the media/attachment-related APIs. These will probably be a fair bit of work, so it’s possible only basic functionality will land next week.

     
  • Andrew Nacin 3:07 am on August 7, 2013 Permalink | Log in to leave a Comment
    Tags: ,   

    WordPress 3.8 meeting Thursday, August 8 

    In his State of the Word keynote, @matt announced that WordPress 3.7 and 3.8 will be developed simultaneously. Trunk would represent 3.7, while for 3.8, potential new features would be developed first as plugins. (3.8 starts at 35:00 in the video.)

    This “features as plugins” method* will allow teams to conceptualize, design, and fully develop features before landing them in core. This removes a lot of the risk of a particular feature introducing uncertainty into a release (see also 3.6, 3.5, 3.4 …) and provides ample room for experimentation, testing, and failure. As we’ve seen with MP6, the autonomy given to a feature team can also allow for more rapid development. And in a way, 3.7 provides a bit of a buffer while we get this new process off the ground.

    As announced at WordCamp San Francisco, Matt is leading the 3.8 release. He identified MP6 as a likely candidate for 3.8, along with the Twenty Fourteen theme. WP 3.7 will be released in October, at which point we’ll begin short window (probably two to three weeks) for any features to be merged for 3.8. If a feature isn’t ready for release by this point in the development cycle, it doesn’t land in core and moves to the next release. The target for WordPress 3.8 is early December.

    On August 8 at 18:00 UTC, Matt will host a WordPress 3.8 meeting in #wordpress-dev on Freenode.

    Thursday’s meeting is a great time to propose features that you’re interested in working on, keeping in mind they may or may not make it into WordPress 3.8. But keep in mind an early December timeline sets up WordPress 3.9 to kick off no later than January. Bring your ideas and thoughts as 3.8 development begins!

    To recap this post and the previous 3.7 post:

    * Yes, this is more or less “feature branches,” but our rich plugin architecture makes it an obvious choice to follow the plugin-based model set by MP6. We have built features in plugins before — distraction-free writing in 3.3, the customizer in 3.4, and media in 3.5 all started as plugins. But they were pegged to a specific development cycle and did not have full teams developed around them, two issues we are now trying to fix.

     
    • Andrew Nacin 3:16 am on August 7, 2013 Permalink | Log in to Reply

      Just a note: All future weekly development meetings (Wednesdays, 2000 UTC) will cover both 3.7 and 3.8 updates and discussion items. Individual 3.8 feature teams will likely schedule their own office hours and such, as well. I understand how 1800 UTC is a terrible time for our friends in Australia and we’ll try to keep them a little more sane without upsetting our friends in Eastern Europe. :-)

    • Gage Morgan 3:34 am on August 7, 2013 Permalink | Log in to Reply

      That’s a very inspirational AND smart idea – building plugins are like making a model piece by piece to demonstrate what the software should look like before actually making any promises that the software will make it into core – if it doesn’t look right, rebuild it or just take it out completely. This will make the design process faster. Indeed, very smart indeed.

      • Scott Kingsley Clark 5:14 am on August 7, 2013 Permalink | Log in to Reply

        Agreed, and building as a plugin should help keep things well abstracted so it can be coded well, or other developers can provide their own ‘take’ on it too.

    • Eric Andrew Lewis 4:04 am on August 8, 2013 Permalink | Log in to Reply

      So working on two versions simultaneously is a practice that won’t be continued, at least for 3.9?

  • Andrew Nacin 7:17 pm on August 6, 2013 Permalink | Log in to leave a Comment
    Tags: ,   

    WordPress 3.7 meeting tomorrow, August 7 

    If you haven’t caught @matt‘s State of the Word keynote at WordCamp San Francisco last weekend, you should. It contains a lot of great insight into how WordPress is used (using data from the 2013 user survey) and what should be expected for WordPress 3.7 and 3.8. (Talk about 3.7 starts at around 33 minutes in.)

    Here’s what was announced: WordPress 3.7 will be released in two months — early October. (Wat.) Jon Cave (@duck_) and I will be leading the release. It will be a quick “platform-focused” release, with a focus on stability and security.

    There are three main things we’d like to get done — language packs, auto-updates for minor releases, and some enhancements to help strengthen user’s passwords. Beyond that, though, the major goal of 3.7 is to offer a bit of a “reset” — which includes a huge cleanup of Trac. We’re currently at 3,800 open tickets, and we’d like to whittle that down as well as make things more manageable for the future. That includes reorganizing our Trac components, making it easier to contribute to certain areas of core (rather than, say, drinking from a single Trac firehose), and trying to organize teams around these components.

    Outside of core, there will also be work on developer.wordpress.org, which will include a hosted code reference and developer handbooks. As part of this, there will be a lot of inline documentation cleanup in 3.7 — potentially including an inline documentation standard for actions and filters.

    Better development tools will also be a goal in 3.7 — see also the post on develop.svn.wordpress.org from earlier.

    This is just the beginning. Please join me on Wednesday, August 7, 20:00 UTC for our weekly developer meeting in #wordpress-dev on freenode.net. I expect 3.7 to be a bit crazy, with a high volume of commits (oh, the days of WordPress 3.0), but also with increasing organization that can help set the stage for future releases. Daily bug scrubs! Rapid development! High tempo! Yay! Who is with me? See you tomorrow.

     
  • Daryl Koopersmith 4:19 pm on August 6, 2013 Permalink | Log in to leave a Comment
    Tags: develop-svn   

    A New Frontier for Core Development 

    In a little over a decade, we’ve made twenty five thousand commits to WordPress. WordPress (along with the web itself) has come a long way, but our development workflow has remained largely the same.

    As a part 3.7, I’ll be leading an effort to revamp and streamline our development workflow. We’re going to bring all of our core components—our code, our tests, and our tooling—under one roof. Developers will be able to use and improve the tools we’re already working with day-to-day, and we’ll be able to add new tools to make working with WordPress even easier.

    We’re also making sure that any changes are compatible with our current workflow, so you won’t have to change the way you work. These changes won’t break any existing checkouts or scripts that use core.svn.wordpress.org. Now that we’ve cleared that up…

    develop.svn.wordpress.org

    This week, we’re creating a new repository: develop.svn.wordpress.org.

    The develop repository will be the new home for all core development. We’re going to sync over all of the commits from core.svn.wordpress.org and will reorganize this new repository to use a new directory structure:

    The src directory

    This is the WordPress core source. All of the existing WordPress core files will be moved into this directory. You’ll develop and test against this directory as usual, but the real power will come from using the rest of the tools in the repository. The contents will be optimized for development, not production (this means uncompressed files—including our internal libraries).

    The tests directory

    We’re going to pull our internal unit tests into this repository as well. This will make testing a cinch, and allow us to commit patches that include changes to both the source and the unit tests. We’ll also add JavaScript unit tests during the 3.7 cycle.

    The tools directory

    Our tools directory will include all of the little things that make our lives as developers easier. To start, we’ll include our internationalization tools, which will allow us to generate pot files from within core. We’ll also include a handful of scripts that some of us use to interact with Trac, like scripts to upload and apply patches.

    The root directory

    This frees up the root directory to include configuration files, allowing WordPress to interact more seamlessly with other applications and services like Travis CI and Composer.

    A build process

    We’ve had an implicit build process in the WordPress codebase for a considerable time now. Most of that process is now contained within bumpbot, a little script that lives on the WordPress.org servers. Whenever we update CSS or JavaScript files, bumpbot comes around, minifies them, and commits the result. Despite bumpbot’s efforts, this process is less than ideal. Our source files (in this case, JavaScript and CSS) live alongside our production-optimized files, which causes confusion and makes contributing to core considerably more difficult. Our built output—the files optimized for machines—shouldn’t live alongside the source code that’s optimized for developers, and beyond that, shouldn’t be tracked in source control.

    We’re adopting Grunt to write a real build process and help us manage and run our various tools. Grunt is a JavaScript task runner that has a robust ecosystem of plugins focused around building modern web applications. We can include tools such as integrated testing, minification, linting (for PHP, JS, and CSS), image optimization, and LiveReload—and that’s just the beginning.

    Using Grunt will be an optional but encouraged part of WordPress development. These tools are all built atop Node.js, which Grunt needs in order to function.

    So what’s happening to core.svn.wordpress.org?

    In a word, nothing. The contents of the core repository have always been optimized for production, and that’s not going to change. core.svn.wordpress.org will now serve as the repository for our built output: every time we make a commit that changes the build, the core build will be updated with a corresponding commit. As mentioned earlier, scripts and checkouts will continue to function as expected. When you download a zip of WordPress, it will still be generated from this repository.

    Let’s get started

    The develop repository will go live soon. For now, I’ve made a preparatory repository available to illustrate the structure I’ve described above, and allow us to experiment with this new workflow. You can learn more about how the tools are installed and used on the repository page. Please provide feedback on this post—the goal is not to build all of the code there first, but to provide insight into the new process.

    Lastly, I’d like to say thank you to all of the contributors who helped shape this idea over the past few months, especially at WordCamp San Francisco’s hack day. Together, we’ve created a structure that elegantly addresses many of our existing problems and opens the door to countless possibilities for better development practices.

     
    • Aaron Jorbin 4:26 pm on August 6, 2013 Permalink | Log in to Reply

      This is incredibly exciting and awesome. It really opens the door for things like #22862 and other modernizations for how WordPress is developed. For now if we want to help, should we open issues and pull requests on the preparatory repository?

      • Andrew Nacin 4:31 pm on August 6, 2013 Permalink | Log in to Reply

        develop.svn.wordpress.org will be going live soon, likely today. We turned issues off on that repository so the conversation wouldn’t be fractured — any general feedback code can happen here for now, while Trac will (upon launch) be the proper place to contribute code.

    • Peter Chester 4:29 pm on August 6, 2013 Permalink | Log in to Reply

      Very cool! Excited to learn more about how we can use Grunt to do this (I’ve never worked with it).

    • Boone Gorges 4:31 pm on August 6, 2013 Permalink | Log in to Reply

      This is extremely exciting. I can’t wait to see how this core change trickles down through the WP dev ecosystem, especially the increased emphasis on automated testing. Thanks to all for your work so far!

    • Andrew Nacin 4:32 pm on August 6, 2013 Permalink | Log in to Reply

      I think the coolest thing about this project is we’re doing it in a backwards compatible way.

    • Ryan Duff 4:36 pm on August 6, 2013 Permalink | Log in to Reply

      I think it’s safe to say, the future is here.

      Awesome news and thanks to everyone involved’s effort to make this happen.

    • Jeff Bowen 4:37 pm on August 6, 2013 Permalink | Log in to Reply

      Very exciting. grunt is super powerful. I’m excited to see how it gets used here.

    • Amy Hendrix (sabreuse) 4:38 pm on August 6, 2013 Permalink | Log in to Reply

      So very excited!

    • Mike Schinkel 4:38 pm on August 6, 2013 Permalink | Log in to Reply

      This is excellent news.

    • Franz Josef Kaiser 4:39 pm on August 6, 2013 Permalink | Log in to Reply

      Yes!

    • Andrew Ryno 4:40 pm on August 6, 2013 Permalink | Log in to Reply

      Been waiting for these changes to occur for a while. Glad 3.6 is finally how so they can happen :)

    • Ryan Duff 4:41 pm on August 6, 2013 Permalink | Log in to Reply

      I do have 1 question, and because someone is bound to ask, we might as well discuss the elephant in the room– why stick with SVN?

      Since core.svn.wordpress.org is staying around and just being pushed to, can’t core development be rolled into git at this point and just use git-svn to push those build commits back to core.svn.wordpress.org?

      Seems like the perfect timing if it were to ever happen.

      • Ryan Duff 4:44 pm on August 6, 2013 Permalink | Log in to Reply

        And sorry, I wasn’t trying to be pushy. Just curious.

        I know SVN is familiar to most. Is there some other technical reason?

      • Alex King 4:49 pm on August 6, 2013 Permalink | Log in to Reply

        • chriscct7 4:51 pm on August 6, 2013 Permalink | Log in to Reply

          Then manually convert the patches and diffs to SVN style isn’t exactly fun

          • Andrew Nacin 6:30 pm on August 6, 2013 Permalink | Log in to Reply

            SVN and Git use the same diff format, and both can be applied with patch.

            • Jonathan D. Johnson (jondavidjohn) 6:58 pm on August 6, 2013 Permalink

              I don’t think he’s saying he wants to use git formatted patch files. I believe the correct sentiment here is that pain of juggling / refreshing patch files period. Creating, Passing Around, and applying patch files feels exceedingly ancient to anyone who cut their teeth on git.

            • chriscct7 10:56 pm on August 6, 2013 Permalink

              I can’t reply directly to Jonathon but exactly what I mean. In an ideal world WordPress would use an open source version of a Github style program with pulls and the issue tracking. I really dislike the vast limitations of Trac.

            • Ryan McCue 2:13 am on August 7, 2013 Permalink

              (They are slightly different; git prefixes paths with `a/` and `b/`, which I don’t think `patch` handles correctly.)

            • Bryan Petty 2:16 am on August 7, 2013 Permalink

              It does handle them correctly as long as you use the right strip level value, but on the other hand, every patch I submit is built from git, except I use diff.noprefix in my repo config that prevents that “a/” / “b/” prefix entirely with every diff, and hopefully everyone is just using that instead, and saving everyone the hassle altogether.

            • Andrew Nacin 3:11 am on August 7, 2013 Permalink

              We’ll be adding a patch application script to the new develop.svn repo that will handle all sorts of incoming formats, including git diff with a/ and b/ prefixes, Trac URLs, core.svn versus develop.svn /src patches, GitHub URLs, etc. We’ll probably also add a diff-and-upload-to-Trac script.

        • Andrew Nacin 4:53 pm on August 6, 2013 Permalink | Log in to Reply

          Congratulations, anyone who runs this, you’ve just cloned the WordPress for Android source. :-) Will fix that.

      • Andrew Nacin 4:51 pm on August 6, 2013 Permalink | Log in to Reply

        Actually, I’m surprised it took this long for a “git” mention in the comments. :-) I had odds on comment one.

        The differences between core.svn and develop.svn — one being a built source as it is now, the other being a full repository with raw source, tools, and configuration — has very little to do with the version control system in use. You can check out our syncing script which would be just as complicated (actually, more so) if it involved Git or git-svn. Nothing here prevents, impedes, or for that matter helps any switch to git. It’s a different conversation.

        • scribu 5:24 pm on August 6, 2013 Permalink | Log in to Reply

          Hi!

          If the development repo would be under git, you’d have to first ask the question:

          Do we want to preserve the commit history (i.e. commits in the production repo should roughly match commits to the src/ directory in the dev repo)?

          If the answer is yes, you will indeed have to do some git-svn gymnastics. If the answer is no, you wouldn’t need git-svn at all. Just copy the files into the prod svn repo and make a commit with a generic message using svn directly.

          But, the question “Why not move directly to git?” is still relevant:

          If you switch to git now, you will only have to maintain core.svn.

          If you switch to git later, you will have to maintain both core.svn and develop.svn.

          • Andrew Nacin 6:01 pm on August 6, 2013 Permalink | Log in to Reply

            Yes, we wanted to maintain history.

            “Moving” implies we’d drop SVN for a new Git repository, which is not desirable. This project in particular was carefully designed to be a simple and painless transition. Switching version control systems would have made adopting this new structure more difficult.

            And more to the point, I’ve mentioned elsewhere that we should aim to become VCS agnostic. That means regardless of what we do now or in the future, there will need to be a develop.svn — either as the canonical repository that is mirrored to Git, or as a mirror of a Git repository. Which is why I said nothing here either impedes or helps Git.

            • scribu 6:45 pm on August 6, 2013 Permalink

              I agree that this step is a big improvement over the previous workflow.

              I don’t have much faith in the idea of being VCS agnostic though, since it implies restricting the workflow to the lowest common denominator, which is SVN.

              It’s like the politically correct way of saying “we use SVN, but have official Git mirrors”.

            • scribu 7:17 pm on August 6, 2013 Permalink

              To clarify, being truly “VCS agnostic” would mean that you’ll also accept pull requests made on the git (not necessarily github) repo and they will have equal visibility with svn patches.

              If you can make trac work seamlessly for both, then great, but I think it’s a waste of resources.

              “This concludes our ranting hour.”

            • Andrew Nacin 7:57 pm on August 6, 2013 Permalink

              Except that the difference between “we use SVN, but have official Git mirrors” and “we use Git, but have official SVN mirrors” is a flipped switch that mostly just affects a dozen committers.

            • Andrew Nacin 8:03 pm on August 6, 2013 Permalink

              But if we moved to Git, we’d need to adapt our workflow for pull requests (to a Git repo or to a GitHub mirror). And we’d need to adapt Trac to fit a change in workflow. Incidentally, we’d have to do all of this to become “agnostic”. You’d also have to consider the amount of time lost by existing contributors trying to immediately shift their current workflows (rather on their own terms), and potentially the number of contributors we lose for what could amount to a major roadblock for contributing. All of that and more easily justifies some resources. They aren’t a waste.

            • wycks 8:30 pm on August 6, 2013 Permalink

              Maybe have a look at something like http://subgit.com/ (bidirectional Subversion to Git replication)

            • scribu 9:00 pm on August 6, 2013 Permalink

              I find myself agreeing with you, Nacin. There still are a lot of people that know SVN, but don’t know Git and there still is this impression that git is hard to learn and/or to use.

              So, yeah, getting to a point where you can accept both svn patches and git pull requests seems like a more pragmatic approach than making a sudden switch from Subversion to Git.

              By the way, Github has great Subversion support:

              https://github.com/blog/966-improved-subversion-client-support

              https://github.com/blog/1178-collaborating-on-github-with-subversion

          • wycks 8:32 pm on August 6, 2013 Permalink | Log in to Reply

            Nevermind it’s It’s closed source, didn’t realize.

            • Andrew Nacin 8:45 pm on August 6, 2013 Permalink

              It also doesn’t work. (We’ve tried.)

            • chriscct7 10:58 pm on August 6, 2013 Permalink

              Github? WordPress could use Enterprise Github or an open source version like Gitlab

          • iamntz 4:12 pm on August 7, 2013 Permalink | Log in to Reply

        • Ryan Duff 9:30 pm on August 6, 2013 Permalink | Log in to Reply

          Ok, so I’ve been pondering this all afternoon and while most questions have been answered in one form or another, what’s the new workflow?

          You’re ditching the traditional svn model of /branches /tags /trunk and going to a more git-like repo structure. And while that’s fine in git because of how branching works, it doesn’t play nice in SVN.

          develop/src essentially becomes trunk. What happens when you need to push a security patch on 3.5? Where and how does that happen?

    • Robert Dall 4:42 pm on August 6, 2013 Permalink | Log in to Reply

      If I understand this correctly dev.svn is where all the beta development will take place but core.svn is where the confirmed code will actually live.

      • Daryl Koopersmith 5:38 pm on August 6, 2013 Permalink | Log in to Reply

        develop.svn is where all of the source code will live—it will be the repository we commit to and build on. The core.svn repository becomes the home for the processed output: the code in core.svn will be generated from the code in develop.svn, and will include production-optimized code (i.e. minified files).

    • Jeremy Felt 4:42 pm on August 6, 2013 Permalink | Log in to Reply

      Freaking awesome! Can’t wait to start using this. Any thoughts from @koop, @nacin, @markjaquith on adding a Vagrantfile to the develop repo as well?

      • Mark Jaquith 4:50 pm on August 6, 2013 Permalink | Log in to Reply

        Indeed, I brought that up while we were discussing this at WordCamp San Francisco. Absolutely something that could be in the cards.

        • Jeremy Felt 4:54 pm on August 6, 2013 Permalink | Log in to Reply

          Beautiful. I will gladly dive into this.

          • Bryan Petty 1:46 am on August 7, 2013 Permalink | Log in to Reply

            I’ve briefly been looking at this myself, and I think there might be some benefit to re-using Puppet Labs’ pre-built vagrant boxes, and using their same process (Veewee) for building new boxes we need that they’re missing (which includes a PHP 5.2 box right now). Puppet’s existing Veewee configurations could easily be cloned with minor modifications too. It’s all flexible, well defined, reproducible, and well automated.

            It should give everyone a great way to quickly spin up esoteric (but supported) hosting environments to hunt down bugs and test new features regardless of what hardware everyone has.

            • Jeremy Felt 4:56 pm on August 7, 2013 Permalink

              I have some (quickly outdated) thoughts that I wrote up on what a core Vagrantfile would accomplish. Need to rewrite that a bit now that all of this magic has been released. I personally don’t care for Puppet and would rather WP.org start with a blank box of our own, though it’d be interesting to compare the benefits. http://jeremyfelt.com/code/2013/07/28/a-wordpress-core-vagrantfile/

      • rilwis 3:44 pm on August 8, 2013 Permalink | Log in to Reply

        Quite interesting idea! All weapons in hand now!

    • Greg Rickaby 4:44 pm on August 6, 2013 Permalink | Log in to Reply

      +1 Ryan Duff

    • Weston Ruter 4:48 pm on August 6, 2013 Permalink | Log in to Reply

      Awesome. And this is the gateway that will allow WordPress to be VCS-agnostic. Can’t wait to submit pull requests to https://github.com/WordPress/WordPress :-)

      See @nacin: https://twitter.com/nacin/status/361200912678662146

    • [email protected] 4:50 pm on August 6, 2013 Permalink | Log in to Reply

      Very exciting guys. I hope this new change will facilitate a general cleanup of tickets in Trac and will make it easier for the community to contribute and get patches committed!

    • Gregory Cornelius 4:55 pm on August 6, 2013 Permalink | Log in to Reply

      I am super excited about this and appreciate the clever approach used to make this shift.

    • Tracy Rotton 5:05 pm on August 6, 2013 Permalink | Log in to Reply

      So does this mean we’re one step closer to using CSS preprocessors? Maybe? A little?

    • Eric Mann 5:08 pm on August 6, 2013 Permalink | Log in to Reply

      Adding JS tests to core is a huge win in my book. Not only does it help make our code more robust, it helps document what the code does. I know many newer devs who struggle to grasp some of the fancier things we’re doing with JS in core – many senior devs, too.

      I would love to help with the JS testing. Just let me know what’s needed :-)

      P.S. Can I make a recommendation for QUnit?

      • Andrew Nacin 5:17 pm on August 6, 2013 Permalink | Log in to Reply

        An earlier revision of this post actually said they’d likely be “QUnit-powered.” It was removed because we didn’t want to suggest we were prematurely choosing a framework. That’s something that should be discussed openly and with all other options considered, rather than being the product of some unilateral decision. (For me at least, our existing relationship with the jQuery project certainly makes QUnit appealing.)

        • Eric Mann 5:25 pm on August 6, 2013 Permalink | Log in to Reply

          Agreed. I’d be open to discussing other frameworks. Just leaning towards QUnit both because of the existing relationship with jQuery and with the easy integration it has with the aforementioned Grunt process.

      • Aaron Jorbin 5:56 pm on August 6, 2013 Permalink | Log in to Reply

        I’m also excited for this part and a fan of QUnit, but it has also been a little while since I looked at all the options out there. I’m planning on spending some time playing with as many as I can later this week/early next week just to see what is out there.

        I think most of the frameworks have grunt integration, so that point is null.

        I think what is going to matter the most is robustness (what will make most of our code testable), ease of use, and cross browserness.

        A jshint file and making it so all of our code follows that will help a lot as well.

        • K.Adam White 8:49 pm on August 6, 2013 Permalink | Log in to Reply

          Aaron’s right, Grunt support is not a significant distinguishing factor anymore. I originally asked Koop & Nacin about QUnit as well, both because of the jQuery connection and the assertion-style syntax’s closer similarity to PHPUnit vs a BDD syntax, but I’m +1 for trying out the options. I’m also excited about looking into running tests in multiple browsers, à la what the jQuery team does with http://swarm.jquery.org/, but landing on a library and getting some tests in certainly comes first!

    • Robert Chapin 5:13 pm on August 6, 2013 Permalink | Log in to Reply

      Is this going to invalidate all pending patches, or can you still accept patches that were generated from core paths?

      • Andrew Nacin 5:19 pm on August 6, 2013 Permalink | Log in to Reply

        Yes, we’ll continue to accept patches that were generated from core paths. (Our patch application scripts will likely end up in this repository, to boot.) So yes, you can continue to make patches off core.svn, though it might be easier if you switch to develop.svn. (If you don’t want to mess with the whole build process, you can check out just the “src” directory and create patches from there.)

        • Jeremy Felt 5:24 pm on August 6, 2013 Permalink | Log in to Reply

          I’ll admit the syncing of commits confuses me. Why not do an SVN external of core.svn into the /src directory?

          • Bryan Petty 5:38 pm on August 6, 2013 Permalink | Log in to Reply

            It would make it impossible to generate patches from SVN across the entire repository if that happened for one, but also it would negate a major benefit of including the unit tests in the same repo – Travis CI wouldn’t work properly that way.

          • Andrew Nacin 5:42 pm on August 6, 2013 Permalink | Log in to Reply

            Avoiding externals was a major goal here. (@koop may be able to elaborate further on those discussions.) We want develop.svn to become the canonical place for all development: code, tests, and tools. As Bryan pointed out, one patch — and one commit — can now include both code and associated tests. It

            core.svn will simply be a build repo, and we are implementing commit syncing because it’s much nicer than having “dumb” syncs. It didn’t take a lot of work for core.svn’s own logs to still be useful, and we felt that was worth it.

    • Terry Sutton 5:23 pm on August 6, 2013 Permalink | Log in to Reply

      Just curious if this will make it easier for beginners to get started or will result in more overhead and make it harder?

      • Andrew Nacin 5:34 pm on August 6, 2013 Permalink | Log in to Reply

        The goal is for this to be no harder. You could still run core.svn, or even just develop.svn’s /src directory — no build process required. We’re not sure it’ll make it easier to get started, but once you do, I reckon it’ll be a lot easier to contribute, in part because of how much more power these tools will bring to existing workflows.

    • Jon Brown 5:32 pm on August 6, 2013 Permalink | Log in to Reply

      This sounds like a good move. What does this mean for SCRIPT_DEBUG? I’m a little unclear how this makes it easier to do development on core since the un-minified/compressed files are no longer handy in a standard install. Again, sounds like a good move, just a little unclear how this changes running trunk.

      Perhaps outside the scope of this topic, but what’s happening with Westi’s WP Beta Tester plugin? Will that install built nightly’s w/o dev files or will that include the un-minified/compressed files?

      Finally, I echo Ryan’s comment, why not switch to git but in conjunction with this even if it’s a separate issue it seems the logical time do it..

      • Amy Hendrix (sabreuse) 5:42 pm on August 6, 2013 Permalink | Log in to Reply

        If I’m understanding all this correctly, develop.svn’s src directory will have development versions of everything, and core.svn will have production files — so if you develop against a src checkout, all the unminified files are right there.

      • Andrew Nacin 5:44 pm on August 6, 2013 Permalink | Log in to Reply

        The un-minified files will still be handy on a standard install (core.svn, a download zip, etc). The difference is that the *minified* files will no longer be in version control (in develop.svn, at least).

        While SCRIPT_DEBUG will still exist, if you are running develop.svn’s “src” directory, it’ll simply be on automatically. (We may turn WP_DEBUG on by default too. wp-dev-config.php? Who knows.) This will make it easier for people to contribute. By not tracking built files, it makes it much more obvious which files to edit.

        • Amy Hendrix (sabreuse) 5:53 pm on August 6, 2013 Permalink | Log in to Reply

          Ooh, I like the wp-dev-config.php idea (or some kind of default development profile, whatever that evolves to be) — I can’t count the number of times I’ve pointed someone toward those two constants, and I’ve forgotten one or the other myself at least as many times.

          • nofearinc 7:59 pm on August 6, 2013 Permalink | Log in to Reply

            I definitely like that idea as well, all debugging snippets could be placed there to facilitate debugging scripts, queries, log data and so forth – all in!

        • Jon Brown 7:31 pm on August 6, 2013 Permalink | Log in to Reply

          Awesome, that all makes great sense. Personal preference wp-config-dev.php, not wp-dev-config.php.

    • Gage Morgan 7:09 pm on August 6, 2013 Permalink | Log in to Reply

      I was at WordCamp Columbus last week, and since being told that I should join the core team, I realize I don’t know how to use PHP. Once I learn, how do I join?

      • K.Adam White 9:18 pm on August 6, 2013 Permalink | Log in to Reply

        Gage: First of all, PHP’s not a requirement — there’s lots of work to do with CSS, JavaScript, documentation, images, and so on, so you’re welcome whether or not you’re a PHP whiz! (Many of us are not). Second, we’re working on some “getting started w/ contributing” guidelines here: http://make.wordpress.org/core/handbook/ Basically, keep an eye out on these make.wordpress.org blogs for interesting issues, then jump in to the discussion!

    • Andrey "Rarst" Savchenko 7:11 pm on August 6, 2013 Permalink | Log in to Reply

      I am not sure about this making it easier to support Composer? Are you considering for Composer package to include this whole new repository with tests and everything, not just core?

      • scribu 7:24 pm on August 6, 2013 Permalink | Log in to Reply

        To be fair, most Composer packages do include their respective test suites.

        • Andrey "Rarst" Savchenko 7:29 pm on August 6, 2013 Permalink | Log in to Reply

          Yes, that was my first thought that by analogy it would make sense… However most Composer packages:

          (1) are much smaller than WP core and there isn’t much of test stuff accordingly (or maybe I just wasn’t paying attention to volume)

          (2) do not expose their folder structure in URL, core doesn’t work like that – any extra levvel in folder structure would be reflected in admin URL

          • Bryan Petty 2:10 am on August 7, 2013 Permalink | Log in to Reply

            I’m not sure there is a hosting company out there that doesn’t let you customize the webroot directory, which they’ve technically already done when they mapped your domain to a default folder. In fact, if that root directory is exposed in your URL, you did something very wrong to begin with because you’ve also now exposed everything else to your webserver (tests, tools and scripts, etc).

            Not that it matters all that much anyway though because anyone using Composer is typically the type of audience that is building out custom servers. For your typical one-click-installers, they’ll still be powered from zip builds off core.svn, not including tests or the extra subdirectory, and they’ll still handle upgrades the same way they always have (along with whatever new automatic security upgrades happen past 3.7).

            For those advanced users making use of Composer, not only can that process of explaining which directory needs to be the webroot be documented, but I think most Composer users are used to configuring that anyway with most new projects built on popular frameworks. It’s “public” for Laravel, “app/webroot” for CakePHP, “web” for Symfony, etc…

            On the other hand, I do understand your concerns here. I’m more worried about how the existing “wordpress-plugin” / theme / muplugin installer types will now be in the wrong location by default unless we also broke wp-content out into the root of the repo alongside “src”, and was simply linked to during dev env config, and copied into the appropriate location in packages during releases. Of course, this is also why composer-installers is not built-in functionality in the first place, and is discouraged when possible, and end-users can still fix this themselves in their project root.

    • adamsilverstein 8:35 pm on August 6, 2013 Permalink | Log in to Reply

      Very exciting, great introductory post & comments – thanks for all the thought that went into the is process already!

    • K.Adam White 9:13 pm on August 6, 2013 Permalink | Log in to Reply

      I’m curious for thoughts on a related subsidiary file re-organization — specifically, moving front-end assets (JS and CSS) out of the root of wp-includes/ and wp-admin/, and into an intermediary folder e.g. wp-includes/static/ and wp-admin/static. I’ve used this structure on a number of standalone projects and themes, and find it provides a useful separation between server-oriented code and browser-oriented code.

      • Andrew Nacin 6:46 am on August 7, 2013 Permalink | Log in to Reply

        Because these are public files, anyone can just reference them in a script src or link href attribute, or use them as part of a script/style enqueue, etc. So we’ll probably hold onto wp-admin/css/$file or wp-includes/css/$file, which is much better than wp-admin/some-file.css, at least.

    • Jeff Waugh 9:31 pm on August 6, 2013 Permalink | Log in to Reply

      Terrific news! :-D

    • Japh 11:44 pm on August 6, 2013 Permalink | Log in to Reply

      Wow, this is super exciting news! Looking forward to jumping back in for 3.7/3.8 development, especially now.

    • Chuck Reynolds 4:15 am on August 7, 2013 Permalink | Log in to Reply

      yuuusssss.. exciting times now through dec. :)

    • Lester Chan 6:34 am on August 7, 2013 Permalink | Log in to Reply

      Any thoughts of including imagemin task in Grunt as well to optimize images?

c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel