Updates from July, 2010 Toggle Comment Threads | Keyboard Shortcuts

  • Dan Cole 8:52 pm on July 30, 2010 Permalink | Reply
    Tags: ,   

    Plugin Directory: Community 

    As one of two 3.org groups tasked with improving the WordPress.org Plugin Directory, the Plugin Directory: Community (PDC) group has read through all the Potential WordPress.org Improvements and has weighed what ideas would best improve the community and would be manageable to do before development on WordPress 3.1 starts. This group is tasked with improving the user interaction with the directory, the authors, and the rest of the community. Here are the ideas that have made it to the final round of the selection process:

    • A standardized taxonomy for organizing plugins and making tags more relevant.
    • Allow filtering of plugin search results based on version compatibility.
    • Allow the community to publicly ‘Like’ plugins.
    • Allow plugin pages to display hash-style URLs from the Read Me file.
    • UI Improvements for i8n support.
    • Allow users to publicly review plugins.
    • Small UI changes to the Plugin Directory
    • Plugin Adoption Stats
    • The formation of a Plugin Security Review Team.

    PDC would like for each of you, members of the WordPress community, to look over these ideas and suggest ways of how they could be best implemented. We would like each of these ideas to be sustainable for the long term, meaning they would not create overwhelming work for people contributing to the community or have a negative impact on portions of the community.

    To get the ball rolling with one of these ideas, the Plugin Security Review Team, we would like to suggest that responsibilities and obligations of this team be ramped up in stages. Instead of just throwing nearly 11,000 plugins at the team and having the them read every line of code, the team would pro-actively develop solutions that would aid developers in making their own plugin more secure. The Plugin Security Review Team could provide detailed tutorials, presentations, working examples, scanning programs, or any other ideas as they see fit.

    The PDC group is open to ideas, suggestions, and help, feel free to contact any of our members: Peter Westwood, Austin Matzko, Dan Cole, Brian Layman, and Michael Torbert. Hopefully with the communities’ help and feedback we will be able to implement all of these ideas.

     
    • Mike Schinkel 9:18 pm on July 30, 2010 Permalink | Reply

      One idea I’ve been bouncing around is to have a color-coding (and an accessibility equivalent) for plugin ratings based on the number of ratings a plugin has. Clearly a plugin with one 5 star rating (typically from it’s own developer) looks good at first glance but that rating means little. I’d far prefer to see a 4 star rating for a plugin that has been rated 100 or a thousand times.

      Suggestion: Calculate and graph the distribution of the count of ratings that are given to plugins and then find natural break points in the distribution much like how a college professor grades on a curve. Hopefully you’ll find between 4 to 7 ranges and then for each range assign a color for the stars starting with a gray and moving toward a bright yellow. The plugins with less vivid colors but high average star ratings will give an easy indicator that a few people think highly of the plugin, but the few plugins with very vivid stars and a high average star rating are the real winners. Thoughts?

    • Gautam 8:29 am on July 31, 2010 Permalink | Reply

      Can you elaborate on plugin adoption process? IMO, only some ellegible members should be allowed to take over abandoned plugins. Otherwise, people/companies may take over it, put some ads/more links/bad coding/spam/footer links etc.

      • Peter Westwood 1:53 pm on July 31, 2010 Permalink | Reply

        We don’t have a particular process in mind yet.

        It is one of the things we intend on trying to create over the next few weeks as part of the output of our 3.org team

      • Dan Cole 4:49 pm on July 31, 2010 Permalink | Reply

        Were looking into doing a more detailed version of plugin stats, looking at user adoption. The PDC group decided that allowing developers to adopt plugins belonged to the Plugin Directory: Support & Management group. I think both Plugin Directory teams should chat to clear up some of the gray areas between the two tasks we’ve been assigned to.

    • Mike Schinkel 8:15 pm on July 31, 2010 Permalink | Reply

      Other things I’d love to see about plugins are 1.) when first available, 2.) how many updates. A plugin that was first uploaded last week is less likely to be mature than one first uploaded 2 years ago with 17 updates, for example.

    • mark. 4:12 am on August 1, 2010 Permalink | Reply

      “Allow the community to publicly ‘Like’ plugins.”

      I had to double check I wasn’t on Facebook… Is this a replacement for the star rating, or is it just to tie into the community profiles (ie, Jon likes x plugins)?

      • Dan Cole 3:30 pm on August 1, 2010 Permalink | Reply

        When I worded that, I was thinking of the WordPress.com ‘Like’ button. My thoughts were for something in the community profiles, where people could see how many plugins you like, as well as the list of those plugins. Each plugin page would also have a list of people who liked the plugin. I didn’t think of replacing the star rating system, but it’s a possibility if people are on-board.

        • mark. 4:45 pm on August 2, 2010 Permalink

          This is semi-unrelated to my original post, but what I’d like to see before completely new features are added is a few updates to the old ones; case in point, people shouldn’t be allowed to say “Doesn’t Work” without filing a report (can be private or public) as to why it didn’t work for them.

          I hate seeing that on my plugins and not knowing what to do to help fix it. If it’s a valid issue people should have no problem entering a two line description (or more if they’re really nice!) and if it’s just a bad day for somebody it would slow them down enough to reconsider.

        • Dan Cole 2:04 am on August 3, 2010 Permalink

          Mark, the report part of the “Doesn’t Work” problem, is on the PDC list. The bullet of it was kicked off this post because of a poor choice of words that obscured things.

    • Jane Wells 11:51 pm on August 1, 2010 Permalink | Reply

      I don’t love the Like idea. I’d rather have a place in profiles where .org users can ID what plugins they actively use, and show their ratings/reviews for them.

      • Paul Gregory 8:28 am on August 2, 2010 Permalink | Reply

        Profiles should list all plugin reviews, positive and negative.

        A “plugins I actively use” section could be useful too, but I think people would be more likely to fill this in if their efforts made their life easier. I know the focus is on the .org site but this data could be fairly easily made available to WP to make it easier to add commonly used plugins.

        So whenever I set up a new site, I could go to Plugins > Add New, change the dropdown to “User”, search for my own ID and easily see my favourite plugins. Even more usefully, I could see a colleague’s list (or vice versa). This would save a lot of time.

        I’m not fussed whether adding plugins to my profile list is called “Like”, “Add to Favourites” or “Add to public list of plugins I actively use but may merely tolerate”. I suspect however that a phrase that is widely understood but inaccurate will prove most suitable.

        • Dan Cole 1:58 am on August 3, 2010 Permalink

          I realise now, that ‘Recommend’ would have been a better word to use to describe my view.

          Hopefully this 3.org update will continue as a full-time gig for a few developers, because their are a lot of useful things that could be done to the WP.org site. I’ll be sure to create WordPress.org Trac tickets for the great ideas that are not developed.

      • Dan Cole 1:50 am on August 3, 2010 Permalink | Reply

        To go further into you view Jane, what would your vote (+/-1) be for 1) Bookmarking plugins, 2) Marking plugins as favourites, 3) Showing actively used plugin, 4) Reviewed plugins, 5) Recommending plugins? Basically, I’m trying to get at how exclusive/inclusive should using, ID-ing, and reviewing plugins be?

      • Mike Schinkel 2:14 am on August 3, 2010 Permalink | Reply

        @Jane: If people have to work at recommendations the 90-9-1 rule[1] says only 1% of users will do it.

        What about adding a new plugin to be distributed with WordPress called (something like) “Rate My Plugins” that will let users from their own WordPress dashboard give their opinion of the plugins that they are currently using and have their recommendations submitted by to 3.org? Such a plugin could put notices on their dashboard showing plugins they’ve not rated and/or written a recommendation for complete with a one-click way to make specific notices go away. And If they want all notices to go away they go simply disable the plugin. This plugin could ask for a rating on deactivation too.

        Of course this would only be worthwhile if bundled with WordPress because <1% would actually take the effort to download and use such a plugin. Worth consideration?

        [1] http://www.useit.com/alertbox/participation_inequality.html

        @Dan: +1 on the continued development of 3.org.

    • Mike Schinkel 4:53 pm on August 2, 2010 Permalink | Reply

      I’d really like to see anonymous reporting back to WordPress.org on plugin usage so we could generate stats on what plugins are really in use.

      • Azizur Rahman 10:07 am on August 3, 2010 Permalink | Reply

        Anonymous reporting is good but in some environment it would not be allowed. I have worked in such environment.

        • Andrew Nacin 6:51 pm on August 5, 2010 Permalink

          We have reporting via the plugin update check. We don’t collect what is active and what isn’t, nor do though I believe we should. But we can provide plugin developers with basic aggregate stats they can use to identify which versions of WP they should support, whether they can force PHP5 without deserting a lot of their userbase (no longer an issue, but a historical example nonetheless), etc.

        • Mike Schinkel 6:55 pm on August 5, 2010 Permalink

          @Azizhur I guess I should have been explicit with my assuming optionality of this request.
          @Nacin: Why should we not collect which plugins are in use, anonymously and with explicit approval by the site owner? It would be hugely beneficial to know which ones are actually being used vs. just which ones were downloaded for evaluation.

        • Andrew Nacin 8:20 pm on August 5, 2010 Permalink

          Mike, that sounds like a good idea for a plugin that, as a primary purpose, puts plugin ratings (works/doesn’t work, +1/-1, reviews, etc) directly in the administration area.

        • Mike Schinkel 8:33 pm on August 5, 2010 Permalink

          @Andrew I guess I was bitten by the implication again; see elsewhere on this page where I said “Of course this would only be worthwhile if bundled with WordPress because <1% would actually take the effort to download and use such a plugin." Without a large and non-self selected sampling (ignoring the opt outs) the statistics generated would be meaningless.

        • Andrew Nacin 9:22 pm on August 5, 2010 Permalink

          Let me clarify/amend my position. I do think we should be collecting active versus inactive stats. I think the whole ‘explicit approval’ thing confused me with something else I’ve been thinking about.

    • Azizur Rahman 10:11 am on August 3, 2010 Permalink | Reply

      I would like to see the Plugin Security Review Team clearly label or block plugins download from wordpress.org that has verifiable vulnerability until the author/developer fixed it. http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=wordpress has list of some of them.

      • Dan Cole 11:39 pm on August 5, 2010 Permalink | Reply

        In the immediate future, this will not be possible to do. The team would have to read millions of lines of code, most of which are not standardized, or clearly laid out. However, if things with the Plugin Security Review Teams go well and the team decides to move in this direction, then maybe we would see labelling or blocking of insecure plugins in a year or two by this new team.

      • Andrew Nacin 11:49 pm on August 5, 2010 Permalink | Reply

        I’m pretty sure the current policy is to disable any plugin listing that has a major security flaw pending a fix. Labeling a plugin as abandoned, etc. (what have you) is fine, but for seriously insecure plugins, the proper contact would be plugins@wordpress.org or security@wordpress.org, I think.

    • Sergey Biryukov 11:55 pm on August 10, 2010 Permalink | Reply

      It would be great to have the Plugin Directory available in different languages, along with the plugin descriptions and installation instructions.

    • Brian 11:54 am on October 2, 2010 Permalink | Reply

      I like the idea of user profiles with plugins used, ratings and reviews. I don’t need to know the name but I would love some stats on users to determine authority. 1 idea — “__% of users that downloaded this plugin also downloaded X, Y & Z plugins” My biggest pet peeve right now though is the search functionality. This should include: the version, which could use: reported by dev, broken/works data. I would also suggest forcing login to download this could then be used to track downloads and request feedback. Users could then see what they have already looked at, reviewed, rated and a feature I would love would be the ability to remove plugins from searches so they don’t keep looking at the same plugins. Login would also increase reporting, reviews, rating for better dev feedback.

  • Jane Wells 6:22 pm on July 30, 2010 Permalink | Reply
    Tags:   

    Hear about Justin Shreve’s GSoC project (a Suggestions Theme to use in the Ideas forum) in #wordpress-gsoc @ irc.freenode.net at 4:30 eastern today (about 2 hours from now).

     
  • Andrew Nacin 11:33 pm on July 29, 2010 Permalink | Reply
    Tags: ,   

    WordPress 3.0.1 is released. 55 tickets went into it. I opened the 3.0.2 milestone last week, and just now I’ve closed 3.0.1.

    We pushed 3.0.1 twice, the second time about 20 minutes later, as we forgot about #14454. Not a big deal, but we’ve recommended over Twitter and on the announcement that you update again if you downloaded it before 2200 UTC.

    We did a db version bump with the hope that we could force the API to return 3.0.1 again if you’re not at the proper version, but we don’t pass the db version via wp_update_check(). (@todo).

     
    • Ben 10:22 am on July 30, 2010 Permalink | Reply

      Just out of curiosity, would it be so bad to just have pushed to 3.0.2 instead of pushing twice? I’m guessing that most people wouldn’t mind about updating to 3.0.2 instead of 3.0.1 or about the fact that it would only contain 1 bugfix ;-) I’m asking, not knowing what’s going on for a release behind the scenes of course…

  • Peter Westwood 9:10 pm on July 28, 2010 Permalink | Reply  

    Agenda for July 29th 2010 dev chat 

    • 3.0.1 Status Check
    • 3.org teams updates
     
  • Ryan Boren 12:15 am on July 28, 2010 Permalink | Reply
    Tags: , network   

    The wordpress.org infrastructure work has reminded me how much I dislike having the Super Admin/Network Admin pages appearing alongside the regular per-blog admin pages. I think the Super Admin menu should go away, away to a separate network admin area. Ticket 14435 is where I’m scratching this itch. The patches there move the network admin pages to wp-admin/network/. It is a completely separate admin area just for network management. It is available only from the main site url. Visiting wp-admin/network from other blogs in the network will redirect to the one true place. If you have multiple networks, they each will have a network admin area.

    While I was in there I added a network plugins.php. Network activations and deactivations happen here and only here. Network activate/deactivate is no longer available from the blog admins.

    Thoughts?

     
    • Jane Wells 12:17 am on July 28, 2010 Permalink | Reply

      Agreed. We can brush up the UI for these screens in 3.1.

    • Alex M. 12:21 am on July 28, 2010 Permalink | Reply

      Sounds good to me and will make it less confusing.

    • John Blackbourn 12:22 am on July 28, 2010 Permalink | Reply

      This bugs me too, and is especially confusing when you’re on the network admin page but everything else is telling you you’re in the admin area for a member blog. +1

    • John Blackbourn 12:25 am on July 28, 2010 Permalink | Reply

      Off-topic: Why is this post tagged with ‘multisite’ and ‘network’ yet only the ‘multisite’ tag is clickable? (Underneath Ryan’s name at the top.)

      • Ryan Boren 12:29 am on July 28, 2010 Permalink | Reply

        I think because this is the only post in that tag.

      • Alex M. 12:30 am on July 28, 2010 Permalink | Reply

        It’s only clickable if there are other posts with that tag. Note the “(3)” following “multisite” — that’s how many posts there are with that tag.

        EDIT: Bah, too slow! :)

    • Lloyd Budd 4:18 pm on July 28, 2010 Permalink | Reply

      I like this.
      I’m a little hesitant of “It is available only from the main site url.” Super/Network admin being able to be in the context of the current blog is very handy. It saves a lot of extra text entry and clicks having to look up a blog.

      I think there are benefits of making it blatant that one is logged in as a super admin. It’s a good reminder not to be ;-)

      • Ryan Boren 4:50 pm on July 28, 2010 Permalink | Reply

        There are definitely some work flow advantages to allowing network admin to be in the context of the current blog. Things like being able to “Add user to current blog” from network/users.php would be nice. We need to document some common work flows and see how best to accommodate them.

      • Ryan Boren 4:58 pm on July 28, 2010 Permalink | Reply

        Other things to consider. Make the Network Admin link sensitive to context. Link to network/themes.php if on themes page. Link to site editor if on other pages. Or, add an action to Favorite Actions for super admins.

      • Ron 5:00 pm on July 28, 2010 Permalink | Reply

        From a workflow perspective, I agree with Lloyd. I was going to suggest using context variables, but I see Ryan beat me to it :D

        • Ryan Boren 7:56 pm on July 30, 2010 Permalink

          I added some code to save the blog ID for the last blog admin area visited. This allows linking back to that blog from the network admin. Just an experiment. I really like having a canonical network admin and this is an attempt to have it both ways. :-)

  • Ryan Boren 2:55 pm on July 27, 2010 Permalink | Reply
    Tags:   

    Marked 3.0.1 as RC. Grab the Beta Tester plugin and set it to “Point release nightlies” to upgrade from 3.0 to 3.0.1-RC1.

    3.0.1 has been added to the compatibility dropdown in the plugins dir. 3.0.1 is marked as equivalent to 3.0 so the automatic updater should report 3.0 compatible plugins as being 3.0.1 compatible as well.

     
  • Peter Westwood 6:54 am on July 27, 2010 Permalink | Reply
    Tags:   

    Suggest agenda items for July 29th 2010 dev chat

     
  • scribu 8:54 am on July 23, 2010 Permalink | Reply  

    Trac Component Cleanup 

    As discussed in yesterday’s meetup, here’s a list of proposed changes to the Components in Trac:

    1. Merge Optimization into Performance: they’re basically the same

    2. Remove JavaScript: tickets should be moved to specific features, like Menus, Widgets etc.

    3. Create Libraries component: tickets dealing with upgrading third party libraries, like jQuery or SimplePie, should go there.

    4. Merge TinyMCE into Editor: there should be a single component that deals with the editor as a whole.

    Thoughts?

    After this is done, I plan to document each component in the Codex, so that we have a clear description of what goes where.

     
    • Mr mist 9:54 am on July 23, 2010 Permalink | Reply

      Megre Export and Import into one?

    • Dion Hulse 10:16 am on July 23, 2010 Permalink | Reply

      Some generic terms could also be renamed to fit their purpose, For example, is “HTTP” for HTTP-level responses? Or as it was originally intended as, tickets for the WP_HTTP class, perhaps “WP_HTTP” could be used instead.

      Another one, is Upgrade/Install, Originally intended for Automated systems bugs, but now, often includes DB Upgrade issues. The 2 are similar, and so can live together really, but that just goes back to the Generic names sometimes.

      • scribu 10:21 am on July 23, 2010 Permalink | Reply

        Perhaps a clearer name would be HTTP API?

        Regarding Upgrade/Install, the problem is that the automated upgrade feature involves several other components: HTTP & Filesystem.

        • Dion Hulse 10:24 am on July 23, 2010 Permalink

          Actually, make that 3 types in the HTTP component. WP_HTTP Issues, Outgoing Header issues, and also SSL URL’s, #14360

          HTTP API would probably suit more, but not entirely sold on it either.

          I agree with the Upgrade/Install though, The problem with some of these is that its entirely possibly to have a bug in the Upgrade, but its due to a bug in HTTP, and same for other areas. Categorizing by ‘Components’ in such interlinked systems is often confusing. I wont go into what it should be though ;)

    • Ryan McCue 1:01 pm on July 23, 2010 Permalink | Reply

      +1 for tagging libraries. Being able to see SimplePie issues via a feed would be better than how I currently do it (search, which can have broken feeds). Even better if you could auto-cc me to all SimplePie issues (I’m not sure if that’s possible though).

  • Aaron Jorbin 8:22 pm on July 22, 2010 Permalink | Reply
    Tags: , ,   

    Plugin Developer Handbook Planning 

    I’ve started brainstorming ideas for the plugin developer handbook and have come up with a pretty long list of topics that I think should be covered. Some of these will be chapters on their own, some will be combined together and others still need to be thought of. For right now, the best feedback you could give me is to tell me what I missed and what you think might be out of scope.

    A couple of notes:

    • I tried to include chapters so that both novice and experienced developers will be able use it. Hence ideas such as knowing the difference between the different languages used in WordPress.
    • Some things, while listed, I think will include warnings and language that discourages it. The two that stand out to me are: Custom database tables and Custom Option Pages.

    Alright, now for the list:

    • Introduction
    • Languages of WP – Differences between PHP, HTML, CSS, JS
    • WP Coding Standards
    • Organizing plugin files
    • Planning your plugin
    • Name Spacing
    • Adding Styles and Scripts
    • Actions / Filters
      • How to use them
      • How to add them to your theme so other plugins can use them
    • Shortcodes
    • Widgets
    • Front End Forms
    • Ajax
      • Front end ajax
      • Back End ajax
    • Roles and Capabilities and users
      • Custom caps
      • User Meta
    • Comments
      • Comment Meta
      • interacting with comment filters
    • Options
      • Adding options to existing admin pages
      • Adding your own pages
    • transients
    • Translating / Internationalization
    • Custom Taxonomies
    • Custom Post Types
    • Scheduled events (pseudo-cron)
    • Activation / Removal hooks
    • Interacting with the database
      • Adding Tables / interacting with them
    • Security
      • Kses
      • Escaping
      • Capabilities check
      • Nonces – Props Eric
    • Interacting with remote URLs
      • atom / rss
    • Interacting with WP_Query
    • Media
      • Media and Post relations (Send to editor)
    • Modifying / Creating URLs
    • MultiSite specific Compatibility
    • General Tips / Tricks / Notes (Ideally a tip or two from many different devs)
    • Adding Admin Notices
    • Giving your plugin the WordPress look (Hopefully the style guide will be finished before then).
    • Pluggable Functions
    • Admin Meta Boxes
    • Dashboard Widgets
    • Extending Tiny MCE
    • A Good Development Environment
    • Development Process
     
    • Mike Schinkel 8:25 pm on July 22, 2010 Permalink | Reply

      Wow, that’s an incredibly good list. Kudos.

      I think that to improve that list will probably take just working on it to realize what’s missing but otherwise it’s incredible.

    • Rahul Bansal 8:30 pm on July 22, 2010 Permalink | Reply

      Such a handbook will be a real treat for plugin developers.
      Being in business, I keep hearing from developers that wordpress codex is too primitive and wordpress lacks documentation a CMS need to win enterprise userbase.
      I guess such handbook can fill that void.

    • Eric Marden 8:59 pm on July 22, 2010 Permalink | Reply

      I’d also cover functions.php. While a theme file, the techniques are largely the same.

      • Aaron Jorbin 9:22 pm on July 22, 2010 Permalink | Reply

        I think the eventual Theme dev handbook will cover that more (and will share alot of chapters/sections with this handbook)

        • Eric Marden 9:24 pm on July 22, 2010 Permalink

          I think its a topic worth touching on in Plugin Dev Handbook, but covering fully in Theme Handbook.

        • Aaron Jorbin 9:27 pm on July 22, 2010 Permalink

          How do you think it should be covered? What in do you think plugin devs need to know about theme functions.php files?

        • Mike Schinkel 9:31 pm on July 22, 2010 Permalink

          For one, functions.php is a great place to start testing out proof-of-concept functionality that may be later moved into a proper plugin. Discussing that and the process of moving from proof of concept testing to actual plugin might be helpful.

        • Aaron Jorbin 9:50 pm on July 22, 2010 Permalink

          I’ve added a section on development enviorment that could probobly cover that unless there is something else I am missing?

          I think I’m also going to add a Development Process section.

        • Mike Schinkel 9:58 pm on July 22, 2010 Permalink

          Good idea. Elaborating, it would be nice to talk about setting up a local development environment on at least Windows, Mac OS X and generic Linux.

        • Eric Marden 10:00 pm on July 22, 2010 Permalink

          I’d say that it should probably cover:

          • The differences between functions.php and plugin files.
          • What’s available and not available to you in functions.php
          • When you should use it instead of a plugin

          Then point folks to the theme dev hand book.

        • Aaron Jorbin 4:55 am on July 23, 2010 Permalink

          Eric – I think the first and the third parts would be good, I think the second is straying a bit too much into theme development and might be out of scope. This is designed to be one in a series of handbooks with the focus specifically on Plugin development. While a lot of the information within this handbook will also be in the theme developer handbook, I’d prefer it not confuse the two too much.

          Mike – That’s exactly what I meant by setting up a development environment. I imagine that section is going to be heavy on links and lighter on content though.

        • Eric Marden 2:26 pm on July 23, 2010 Permalink

          Aaron – Sounds good to me. As long as their some mention of it, and pointers to more, I think it will help people avoid confusion and concur that you get into theme land pretty quickly when using the functions.php bridge.

          Mike – I agree with Aaron here, Dev Environment, while useful, is a bit out of scope. Pointing people to some good links is best, but this topic, I feel, should only be touched on in the scope of why its a good idea, not how to make it happen.

        • Mike Schinkel 2:35 pm on July 23, 2010 Permalink

          @Eric: While not completely disagreeing I will say that the biggest “hump” I had to get over before I could finally be productive was getting a dev environment set up (I had been on Windows+ASP+IIS+SQL Server for 10+ years so LAMP/WAMP/MAMP was all foreign to me.) After I finally was able to get help getting it all set up (3+ years ago, for Drupal at the time) I was rapidly able to gain relevant skills because each step was such a small step from the one before compare with the initial setup. I’ve also taught a lot of people WordPress over the past 2 years (~100 people) in workshop environments and the most important step for almost all of them is getting the development environment set up. So given how little one can do without it compared to with it and given how big a hurdle it can be to set up I would suggest we at least consider giving it more weight than we might otherwise give it if it were not such a critical path to productivity. JMTCW.

        • Eric Marden 7:22 pm on July 23, 2010 Permalink

          @Mike

          While I don’t disagree that a local development environment is a huge boon to productivity and is an important topic, it starts to delve into the area of systems administration – one of the reasons I feel that a lot of new developers struggle with it, avoid it, or don’t even know they should or could have a local server. What I’m suggesting is limiting the topic to just the essentials and letting other sources deal with all of the other variables.

          In other words, it could look something like this:

          • Here’s WAMP (windows)
          • Here’s MAMP (mac)
          • Here’s apt-get (linux)
          • Here’s how to configure a VHOST to serve one WP site.

          As soon as we try to help them worry about multiple virtual hosts, the specifics of configuring Apache, managing the /etc/hosts file for overriding DNS this topic soon becomes unwieldy and given that it is not essential for you to have one to develop a plugin we shouldn’t try to create even a shadow of a full blown HOWTO on the topic.

          Trust me, I’m the guy who has stepped in on a project and wouldn’t write a single line of code until the entire team got a local dev environment installed. But if there’s one thing I know about this topic is that getting the perfect set-up is almost impossible and the way they other guy did it is always “wrong”. Do I hand compile or use a package manager? Install binary components myself and tie them together in the configuration? A virtual machine with ubuntu? Or use a prepackaged all-in-one solution? Even the level of choice in this area, as you can see, can be overwhelming on its own and we haven’t even begun to tell you which steps to follow.

          Another reason to err on the side of simplicity (and letting other sources guide the users more deeply) is that anything put in this handbook will end up generating questions on the forums, #wordpress and wp-hackers and shouldn’t we really be in the business of supporting WordPress and not their (particular) local server?

          My 2 cents,

          ~e

        • Mike Schinkel 10:34 pm on July 23, 2010 Permalink

          @Eric Fair points.  

          One thing that I would personally like to see is it be _comprehensive; that would have helped me so much 2 years ago and I’d like to see others not have to go thru the same. If topics are collectively deemed as being too much of whatever then I’d argue at least that we cover the topic by curating a list of articles and solutions even if they point off WordPress.org. Then, for example, we could find a multiple VHOST article that covers concerns related to WordPress or if one can’t be found then one of us could write one on our blog and link to it. FWIW multiplier VHOSTs were one of the more difficult things to figure out yet one of the ones I cannot image being without today. Ironically it was really not difficult, I just had to learn a few arcane details. those details would make a great article.

          As for the other comment you made let me relate a story and I apologize that it is off topic for the develop handbook. Shortly after graduating college, probably 1992 I attended a presentation to entrepreneurs where the message hit home and has stuck with me for my adult like. In a nutshell the person made the point that if you have something you are “selling” (in our case we are all advocating for WordPress) then it is in your win best interest to make sure the prospective customer has as easy a time being able to acquire and use your solution as possible. If there is anything that would cause prospects to stall and go elsewhere, or simply not “purchase” at all then it is incumbent upon you to handle that problem for them or at least make the problem appear to go away.  

          So yes one can argue that we want to support WordPress only and not help people with their server setups and from a standpoint of purity you would be right. OTOH if we in fact do care about seeing a lot more people adopt WordPress then such perspective may be self-defeating. Note that the solution may not always be to “brute force” it but instead may be to divide and conquer (i.e. maybe we solve the problem by working with web hosts to minimize the problems, educate prospective users on which hosts have the least problems and then provide support for the remaining.) JMTCW.

        • Tim 10:54 pm on July 23, 2010 Permalink

          Discussion of Dev Environments, to some degree, would be good. Rather than focusing on specific environments, maybe a better way to approach this section in the handbook would be to encourage standardized ways of reporting what versions of WordPress (version number and single vs. Multi-Site testing), PHP and MySQL a plugin has been tested on. Right now, there’s a “tested up to” tag in the plugin header, but there isn’t a consistent way to report PHP/MySQL version requirements.

          Or perhaps this belongs in a new section covering “Writing a good readme file”?

        • Matt 11:07 pm on July 23, 2010 Permalink

          Small handbooks, loosely joined.

        • Aaron Jorbin 1:57 am on July 24, 2010 Permalink

          Anything more then a passing reference is going to be too much. I don’t want this devolving into a 800 page coffee table book that no one actually reads.. It’s for WordPress Plugin Development, not system administration. Perhaps there will be another book focused on that.

    • Eric Marden 9:00 pm on July 22, 2010 Permalink | Reply

      Also don’t forget to talk about nonces. Probably under security and/or options pages.

    • Denis 9:05 pm on July 22, 2010 Permalink | Reply

      I think you’re missing an important bit: the WP flow, with an outline of the hooks and when they occur, in what order, what they’re used for, etc. And most importantly, how to not interfere with other plugins on the same hook… (eg never call remove_action(myhook, myfunc) on myhook.)

      • Aaron Jorbin 9:26 pm on July 22, 2010 Permalink | Reply

        I think the API reference is going to more so cover flow. The actions section will definitely cover proper use of actions and priority.

    • Eric Marden 9:25 pm on July 22, 2010 Permalink | Reply

      Media probably covers this a bit, but overriding the javascript send_to_editor was a recent find of mine and is worth covering. I’m guessing there are other Javascript ‘hooks’ (timymce stuff?).

    • Aaron Jorbin 9:48 pm on July 22, 2010 Permalink | Reply

      Added:
      Pluggable Functions
      Admin Meta Boxes
      Dashboard Widgets
      A Good Development Environment

      • Eric Marden 10:09 pm on July 22, 2010 Permalink | Reply

        • PHP Docblocks
        • Licensing and Distribution
        • Promoting your Plugin
        • Best Practices with JS/CSS (like not using !important in your CSS, etc)
        • PHP Best Practices ( i.e. Coding with E_ALL on, avoiding common Notices/Warnings)
        • SVN
        • Releasing your Plugin on WP.org
        • ReadMe.txt and plugin comment header
        • Data Import/Export
        • Migrations (WP_RELOCATE)

        Obviously we’re getting into the minutiae now, and some of this stuff can be and probably is implied by some of what’s above, but thought I’d offer them up anyway. Also some of this may be running into other hand book territory.

        Is this going to be collaboratively written, and if so where and on what platform?

        • Aaron Jorbin 4:59 am on July 23, 2010 Permalink

          I’m not sure if migrations would really fall under the purview of a plugin developer. I think that might fit better for a WordPress administrator book.

          For Import/Export, I assume you mean import/export of plugin data. Correct?

        • Ryan McCue 1:12 pm on July 23, 2010 Permalink

          Apologies for the off-topic reply, but what precisely is WP_RELOCATE? I can’t find a reference to it anywhere in code, and there’s only one reference to it on wp-hackers.

      • Eric Marden 2:33 pm on July 23, 2010 Permalink | Reply

        Ryan – sorry its RELOCATE, documented here: http://codex.wordpress.org/Changing_The_Site_URL#Relocate_method

        Aaron – You may be right. I continue to suggest things from a more holistic WP Developer mind set. Maybe we need a handbook that integrates admin, theme, and plugin from a top down approach, where these topics so far have been a bit more ground up. (small component effecting larger whole).

    • Mike Schinkel 10:01 pm on July 22, 2010 Permalink | Reply

      Floating an idea. This could turn out to be a killer book if packaged as such, and might catch interest if available at major bookstores from people who might not otherwise dig into the topic. What about coordinating with a major publisher where the proceeds go to the WordPress Foundation? Again, just an idea to consider.

      • Matt 10:44 pm on July 22, 2010 Permalink | Reply

        We can cross that bridge when we get there. I wish all of the WP books thus far had been under an OS license but most authors aren’t going to have that sort of leverage with their publisher. I had one tell me “books are hard, why would we allow anyone to take the content!” Yes, ma’am, software is hard too. :)

        Now we’re completely off-topic, but here’s a link everyone should read:

        http://diveintomark.org/archives/2009/10/19/the-point

        • Mike Schinkel 11:12 pm on July 22, 2010 Permalink

          Yep, the idea is definitely premature but I figured it would be better to have in the back of our minds if doing so was an option. FWIW.

        • Stephen R 3:05 am on July 25, 2010 Permalink

          There’s an SVN book that is… not sure if it’s open source but they givve it away for free on the web site, or you can buy the physical book from O’Reilly. S not totally without precedent in books.

    • mercime 5:31 am on July 23, 2010 Permalink | Reply

      Plugin which create table/s in DB to add Uninstall function
      Cheers

      • Aaron Jorbin 11:53 am on July 23, 2010 Permalink | Reply

        That is part of the reason that people will be encouraged to use the existing data structures whenever feasible, but yes, that will be a part of custom tables.

    • João Pedro Pereira 10:21 am on July 23, 2010 Permalink | Reply

      Excelent list, Nothing to add besides TEST, TEST, TEST!

    • arena 11:39 am on July 23, 2010 Permalink | Reply

      Hi ! your list lacks structure.

      Most of the topics are related to the numerous wp api’s

      i would add the following topic
      . admin (menus, admin pages, clean coding (not loading js or css if current admin page is not related to plugin))

      • Aaron Jorbin 12:00 pm on July 23, 2010 Permalink | Reply

        Actually it does have structure, it’s an unordered list with list items that sometimes contain unordered lists :)

        For menus, I assume you are referring to interacting with the new nav menu items?

        Clean coding will certainly be a part of the WP coding standards and proper use of wp_enqueue_script / style (i.e. adding it to the right hook) will definitely be a part of the adding styles and scripts section.

        • arena 4:20 pm on July 23, 2010 Permalink

          i was refering to admin menus

    • filosofo 3:31 pm on July 23, 2010 Permalink | Reply

      Who is the proposed audience, and what do you see as the niche for this document in a world of grep, googling, and the Codex? It would be good to determine that before investing too much time in the wrong topics or too many details.

      Languages of WP – Differences between PHP, HTML, CSS, JS

      I don’t know the exact intended audience, but if it’s “developers” by any reasonable definition it should exclude someone who doesn’t know the difference between PHP and JS. That person needs to be doing remedial programming–maybe read Master PHP in 24 Hours or whatever—first.

      • Admin Meta Boxes
      • Dashboard Widgets
      • Extending Tiny MCE

      I suspect that’s the kind of detail that won’t do any potential audience much good. If you’re at the place that you’re ready to extend TinyMCE, you’re just going to google how to do it. If you’re new to WordPress plugin development, being blasted by a firehose of details will probably impress upon you the potential of WP, but it’s unlikely most of those details will stick. Or worse, the wrong details will stick to the detriment of more important ones.

      My suggestions: make the audience to comprise those with a reasonable knowledge of PHP, MySQL, and JS; neither beginners nor those who have an advanced knowledge of WP in particular. The former need more than you could possibly provide, and the latter don’t need your help.

      And don’t think of it as an academic course, in which someone can dedicate a semester to studying every topic. That’s not how most developers with jobs learn. Instead, pick a few truly core concepts, the ones that are necessary and sufficient to getting a typical plugin running. Then you can let code examples hint at some of the other details: they will be enough to spark interest without making the reader feel unduly burdened.

      • Eric Marden 7:31 pm on July 23, 2010 Permalink | Reply

        @filosofo

        I think that this plugin should serve more than just beginners. Even a mention of what’s possible (by covering all of the various extension points in WP) and cross linking to the function reference in the Codex will be a huge help to all developers, beginners and advanced alike. I, for one, am a bit sick of having to grep the code base just to look up a function signature or having to trace the code to discover that there is an undocumented filter buried in the middle of one of the functions that get called – the exact filter I need to write my plugin cleanly. I kind of see this handbook as a part comprehensive overview and part getting started guide.

        However, I do agree that a discussion on the difference between various languages and technologies used in the construction of a WP plugin is unwarranted and does provide a small barrier to entry for this part of the docs. Right now all the Codex has is this: “WARNING: Programming Code Ahead!” or something like that.

        • filosofo 7:43 pm on July 23, 2010 Permalink

          I think that this plugin should serve more than just beginners. Even a mention of what’s possible (by covering all of the various extension points in WP) and cross linking to the function reference in the Codex will be a huge help to all developers, beginners and advanced alike.

          Well, I guess it really depends on what the purpose of the handbook is supposed to be (its niche). To me what you’re describing sounds more like an annotated index of the Codex, or maybe even just the Codex already. That would seemingly be only a quantitative, not qualitative change from what’s already available.

        • Aaron Jorbin 2:25 am on July 24, 2010 Permalink

          @filosofo
          I view this as being a compliment to the API reference, but more focussed on Narrative explanations and explaining full API sections. While the API reference will tell you that register_taxonomy is used to create or modify a taxonomy object, and what arguments it takes, the handbook will explain what you can do with that taxonomy after it’s created.

          Will someone like you, who has a deep knowledge of the code turn to the handbook first? Doubtful. I imagine you’ll find what you need in the code. Might you turn to it if you have never used the HTTP api and want to get an idea of some best practices and a understanding of how you can use that in concert with Simple pie? Perhaps. Will someone building there first through fourth plugin find it useful? Absolutely.

          The reason I have the differences between languages is in part to help weed out the people that aren’t willing to learn more. I don’t view that as being as very long section. I imagine it being similar to http://aaron.jorb.in/blog/2010/01/you-better-know-the-basics/ , but better written. Then a simple: “Not scared to continue? Well onward to Victory!”

          For some of the sections (like TinyMCE editor), I actually think it might be best to keep it simple and point them to a small handfull of plugins that are doing it so that they can read some actual code. That’s open for thought though

    • jeremyclarke 4:56 pm on July 23, 2010 Permalink | Reply

      This looks great!

      It’s a small detail, but It seems to me that the “Actions/Filters” section should come before “Adding Styles and Scripts”. As far as I know, adding styles/scripts is done through the API so knowing how the API works first is probably a good investment ;)

      I’m pretty sure you would have changed it during the writing but figured I’d mention it as an excuse to tell you the list looks great and I’m excited for the result :)

      • Aaron Jorbin 3:55 am on July 26, 2010 Permalink | Reply

        The order above was in no way meant to imply the order the chapter would actually come in. It’s more so the order I brainstormed them in.

    • Jacob Santos 8:35 pm on July 23, 2010 Permalink | Reply

      It would be better to organize it in two or three sections.

      • Plugin System
      • How to Develop
      • WordPress Library Guides

      The Plugin System should include the introduction, what filters and actions are, how they work, how to add action and filters. Why and how they might be added to your themes and plugins.

      How to develop section should include WordPress coding standards, Subversion, WordPress Extend, adding plugins, checking out, how to work with the support and Trac Ticketing. Could also include notes on PHP docblocks, unit testing, and general ui testing.

      The WordPress Library Guides will include the large portion of the guide which would include every individual API section in WordPress and WordPress Admin.

      • Aaron Jorbin 3:59 am on July 26, 2010 Permalink | Reply

        My next step is actually to synthesize all this feedback and try to come up with a more coherent outline. What you’re proposing is pretty similiar to what I have in mind. Thanks Jacob!

    • bentrem 2:08 am on July 24, 2010 Permalink | Reply

      Are you setting up to co-author? Cuz I’ve been following DAV since *blush* a long time (see MozDawg on DAV and Docs, notes for which I started shortly after Netscape “released the code”.) Reason I ask: however slow the progress, progress there’s been. Now my first instinct was to shout out “This is a good start on a wiki page!” but I choked it back with something like, “Yaaa … yet.another dusty bit-rotted wiki page”.
      Social dynamics.
      Too bad GWave and GBuzz suck so completely when operationalized.
      p.s. I got started Analogous Techniques next month but my “army of 1″ batteries are flat / dead.

    • Stephen R 3:10 am on July 25, 2010 Permalink | Reply

      I think this is a really excellent idea. Part of the problem is making sure it will be updated over time and not grow stale == a problem oftentimes in Codex.

      Something you might add: a section on “final polish” — little things like adding the “Setup” link from the Manage Plugins page straight to your settings page. There are lots of little useful touches that aren’t purely core function of the plugin, but just make it a lot nicer in the details.

      • Aaron Jorbin 4:01 am on July 26, 2010 Permalink | Reply

        That tip is one that I think would be perfect for the General Tips / Tricks / Notes section. At a later date and time I’ll solicit those.

    • Ramon Fincken 1:30 am on July 26, 2010 Permalink | Reply

      Nice!

      Perhaps handy:
      Scheduled events (pseudo-cron) + Ajax frontend > http://www.ramonfincken.com/permalink/topic187.html

    • Mike Schinkel 3:42 am on July 27, 2010 Permalink | Reply

      I see you have transients (Transients API?[1]) but I don’t see any reference to the Settings API[2]?

      [1] http://codex.wordpress.org/Transients_API
      [2] http://codex.wordpress.org/Settings_API

      • jeremyclarke 3:01 pm on July 28, 2010 Permalink | Reply

        I think he just didn’t refer to it as the Settings API but he has:

        Options
        * Adding options to existing admin pages
        * Adding your own pages

        I think the first one would be the Settings API. Though its a good point that the section about adding settings pages should refer to the Settings API by name so that its brand is strengthened.

    • Byron 3:34 am on July 28, 2010 Permalink | Reply

      This Handbook is badly needed. It could seriously raise the average quality of WordPress plugins (my own could have benefitted tremendously when I start out a year-and-a-half ago). If it wasn’t for Vladimir Prelovac’s plugin book, I’d still be trying to start fire with sticks. Will this be open to contributors?

    • Jeff Sayre 3:04 pm on July 28, 2010 Permalink | Reply

      Aaron -

      Have you seen my article on WordPress action and filter events (hooks)? It could be useful for part of the information in the section on this subject. I have also created a plugin developers’ tool called the WordPress Hook Sniffer plugin. I just released an updated version this morning.

    • Marjorie Roswell 1:03 pm on September 17, 2010 Permalink | Reply

      Some questions that come to mind: Where should we look for the handbook? Online? In print? When? Will the handbook be available in draft form as its being developed?

  • Otto 1:25 pm on July 22, 2010 Permalink | Reply
    Tags: , , resolved,   

    Plugin authors can now change the “Resolved” status on support topics made about their plugins on .org.

    Note: This only works when the topic is made from the plugins area, using the “Got something to say? Need help? Write a new topic.” link at the bottom of the plugins screen. Topics that are simply manually tagged with the name of the plugin won’t work.

    Mods and higher can still change the resolved status on any topic, as always. So you may not be able to see this change easily. :)

     
    • Ipstenu 1:33 pm on July 22, 2010 Permalink | Reply

      WOOT! This is awesome! Yay for upgrades!

    • scribu 1:47 pm on July 22, 2010 Permalink | Reply

      Diving in now :D

      • scribu 1:49 pm on July 22, 2010 Permalink | Reply

        Erm, yes I can see the dropdown now, but clicking “Change” doesn’t have any effect.

    • Rich Pedley 2:24 pm on July 22, 2010 Permalink | Reply

      I get the same on this thread:
      http://wordpress.org/support/topic/413925
      trying to change the status from ‘not a support question’ to ‘resolved’ it remains as ‘not a support question’
      (Using that thread as a test.)

      • Otto 2:32 pm on July 22, 2010 Permalink | Reply

        Hrmmm.. Okay, I’m looking into it. Seems there’s something I missed.

        • Otto 2:44 pm on July 22, 2010 Permalink

          Yep, there was. It’s a bit hard to test this sort of thing when I already had the ability to change that status. Testing as myself bypasses the specific piece of code I was trying to test.

          Still, should be working now. I think. :)

        • Rich Pedley 2:49 pm on July 22, 2010 Permalink

          Looks like it is – excellent work, thanks Otto.

          Now all we need is a way to seeall threads for all our plugins on one page ;)

        • scribu 2:54 pm on July 22, 2010 Permalink

          @Otto: yep, works now.

          @Rich Pedley: I don’t think that’s a good idea. Popular plugins have 1000s of threads.

        • scribu 2:55 pm on July 22, 2010 Permalink

          Oh, you mean combined. Yeah, that would be nice.

        • Rich Pedley 3:03 pm on July 22, 2010 Permalink

          yes combined, and paginated of course. I’ve only got a few and I’d find it useful, I dare say others would as well.

    • JLeuze 3:22 pm on July 22, 2010 Permalink | Reply

      Awesome, I resolved all of the support topics for my plugin and it worked perfectly!

      Thanks, this will be a really helpful addition. While you’re tweaking the forums, is there an easy way to exclude the sticky posts from the No Replies view?

    • Pat 1:33 am on July 23, 2010 Permalink | Reply

      Is there another way to tell when a topic is made from the plugins area?

      There are a suspiciously large number of my plugin’s support topics that I cannot change the “Resolved” status for, and their titles take the same form as topics where this feature is actually offered to me. :) Just want to make sure this is working as intended. Thanks Otto!

      • Otto 2:44 pm on July 25, 2010 Permalink | Reply

        Well, yes. If you can change the resolved status, it was made from the plugin area. :D

        Seriously, when you use that link to make a new topic, some metadata gets added to the topic on the back end which marks what plugin the topic is about. I use that meta info to do a lookup on the plugin and determine who can adjust the resolved status.

        But, if somebody makes a topic and just makes it look similar, with tags and the title and such, then it will still show up in the list of topics about that plugin (as that uses tags), but not have the hidden meta info.

        I intentionally did not use the tags, because anybody can adjust them.

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
Follow

Get every new post delivered to your Inbox.

Join 906 other followers