Updates from Boone B. Gorges Toggle Comment Threads | Keyboard Shortcuts

  • Boone B. Gorges 3:12 am on April 30, 2013 Permalink | Reply  

    BP 1.7.1 is now available. View the blog post for more info http://buddypress.org/2013/04/buddypress-1-7-1/

     
    • cars 1:10 pm on May 22, 2013 Permalink | Reply

      Shopping for cars is generally a stressful experience.

      It does not have to be, though. With a little knowledge and
      determination, your car shopping experience can be devoid of stress.
      Use the tips that follow to make your car shopping experience one that you enjoy, with a shiny new car to show
      for it.

  • Boone B. Gorges 2:58 pm on April 25, 2013 Permalink | Reply
    Tags:   

    At yesterday’s dev chat, we made some broad decisions about scope, and some specific decisions about timelines, for the BuddyPress 1.8 release cycle.

    Scope

    The major improvements slated for BP 1.8, and the team members who’ve committed to lead them up:

    • meta_query support for the main template loops. See #3521 and Eric Lewis’s preliminary patch for the activity component. (Boone)
    • Migrating to the WP Rewrite API. See #4954. (John)
    • Template hierarchy for BP template parts. See #4639. (Ray)
    • Automatic download and update of language packs. See #4857. (Paul)
    • General tidying of BP UI styling. See #4953. (Tammie)
    • New template pack. See #4952. (Tammie)
    • Miscellaneous improvements to BP_Group_Extension. See #4955. (Boone)
    • Convert group member queries to BP_User_Query. See #4482. (Boone)

    A number of these items (especially #4482 and #4952) are somewhat questionable for 1.8, due to their size and to our tight deadlines. The team may decide partway into the cycle to punt them.

    In addition to the major items listed above, the 1.8 milestone contains a number of smaller enhancements, which can be rolled into the release if folks step up to the plate with patches, testing, and feedback.

    Timetable

    We’re experimenting with a short release cycle: six weeks for feature development, and six weeks for testing. The following dates are of particular interest:

    • June 5, 2013 – End of feature development. Beyond this date, nothing gets committed that is not either a bug with a new feature, or a regression from 1.7.x. Any major features from the list above that are not commit-ready by this date will not be included in BP 1.8. At the dev meeting on June 5, the team will make decisions about borderline cases – features that are partially implemented. We plan to release BP 1.8 beta1 in the days immediately following June 5.
    • July 17, 2013 – BP 1.8 final release

    The timetable is, by design, compressed. As part of our experiment in a shorter dev cycle, we’re going to hold to this proposed schedule as strictly as possible.

    Contribute

    Interested in contributing to BuddyPress during the 1.8 dev cycle? The more the merrier! Join us in our weekly dev chats (see sidebar for details), visit one of the tickets listed above, or dip your toe into the 1.8 milestone. Core devs are generally lingering in freenode #buddypress-dev, so please stop by if you’re looking for a place to start.

     
    • Erlend 10:40 am on April 26, 2013 Permalink | Reply

      I like it. Sounds like a very reasonable scope. Looking forward to a more solid BP_Group_Extension.

  • Boone B. Gorges 8:15 pm on April 17, 2013 Permalink | Reply
    Tags:   

    At next week’s dev meeting (April 24 – see the sidebar of this blog for time details), we’ll be discussing the scope and schedule for the BuddyPress 1.8 release. The tentative plan is to have a short release cycle – 12 weeks from the beginning of development to the final release. The core team is asking that interested parties leave suggestions about what to include in 1.8 in the comments below, for discussion at the Apr 24 chat. And if (especially if) you can commit to doing significant development/testing for a given feature, you should mention that too.

    For reference, here’s what’s already (tentatively) in the 1.8 milestone on Trac: https://buddypress.trac.wordpress.org/query?status=accepted&status=assigned&status=new&status=reopened&milestone=1.8&groupdesc=1&group=priority&col=id&col=summary&col=milestone&col=status&col=type&col=priority&col=component&order=priority See something on that list you want to help with? Feel free to mention that below, too.

     
    • Mills 8:37 pm on April 17, 2013 Permalink | Reply

      I am still experiencing this problem in the ticket below using BuddyPress 1.7 on a live server and with a with a fresh BP 1.7 install on MAMP.

      http://buddypress.trac.wordpress.org/ticket/4573

      • Boone B. Gorges 9:21 pm on April 17, 2013 Permalink | Reply

        Thanks. If you have additional information, please leave it on the Trac ticket – this is not a great place to discuss bugs.

    • hnla 8:53 pm on April 17, 2013 Permalink | Reply

      I’ll add a note about http://buddypress.trac.wordpress.org/ticket/4639 as so much was done by Paul and r-a-y to get this to quite an advance stage it’s worth seeing if possible to complete – I’ll naturally commit significant amounts of heavy encouragement :) but also continuation of the testing I was doing (still have trunk patched with last patch)

      I also added a ticket and patch for registration validation messages the other day, think this is an relatively easy one to polish up and perhaps find a means of testing for spaces in usernames where BP add a em dash in place of. http://buddypress.trac.wordpress.org/ticket/4939 (just noticed Boone responded on that ticket)

      Trac is very bad with not notifying on these pending approval initial tickets :(

      • Ray 7:21 pm on April 24, 2013 Permalink | Reply

        Not much more needs to be done for template hierarchy.

        A decision needs to be made on filenaming convention and we should be good.

        I didn’t want to push anything then b/c 1.7 was in the final stages of being released. But I’ll look into this.

    • Boone B. Gorges 12:08 am on April 18, 2013 Permalink | Reply

      Here are the major things I’d personally like to do for BP 1.8:

      • Convert group member queries to use BP_User_Query. Right now, we’re still doing global table joins in these queries – the last places in BP where that’s in the case. Related ticket: #4482
      • Improvements to BP_Group_Extension. There are quite a few things that developers are currently forced to do manually that we could easily do automatically: creating/checking nonces, checking to see whether the display callbacks should be invoked on a given admin page, more consistent markup requirements on the edit_screen(), create_screen(), admin_screen() methods
      • Implementing a meta_query parameter for bp_has_activities() and bp_has_groups() (and maybe bp_has_members()). Eric Lewis has a proof-of-concept patch on #3521 that uses WP_Meta_Query to do the heavy lifting, so I expect it would be pretty easy to add to these three components.
      • Improvements to Activity Favorites. Currently, favorites are stored as an array in usermeta. This makes them pretty useless for any purpose other than displaying as a list on a user activity page (as we currently do). One possibility is to break them out into their own table/component, so that we can do legitimate querying on them, such as “this activity item has been favorited x times”. Note – this item is sort of a question mark. Could easily be built as a plugin (and maybe should be). Would like feedback.
      • Paul Gibbs 10:34 am on April 20, 2013 Permalink | Reply

        Improvements to activity favourites

        Thinking we should touch this when we and if we decide to build a Like button (Likes = new type of activity item).

        • Boone Gorges 4:35 pm on April 20, 2013 Permalink

          Yes, ‘Like’ is pretty much the same thing as activity favorites. I don’t see what we gain from moving from the Favorites terminology to the Like terminology, especially given that we’ve had Favorites for a long time. Anyway, we can talk about that on a ticket. The idea of storing the favorites as a new activity item type is really smart – I may build a prototype of that, even if we don’t decide to adopt it in BP 1.8.

        • Paul Gibbs 5:44 pm on April 20, 2013 Permalink

      • Boone Gorges 4:41 pm on April 20, 2013 Permalink | Reply

        Paul’s comment reminded me of another improvement I’d at least like to prototype and benchmark: moving user/group last_activity values (especially user) out of user/groupmeta and into the activity table as a new activity type. This issue was discussed and tabled in https://buddypress.trac.wordpress.org/ticket/4060#comment:5. I have a feeling that making this change would dramatically improve the scalability of certain types of user queries, but it needs testing. Also, making this change would require that the activity component (or at least a small subset of it) always be activated, so that’s something to think about in the discussion.

      • Paul Gibbs 5:13 pm on April 29, 2013 Permalink | Reply

        @boonebgorges If you do this, might be worth taking a look at https://buddypress.trac.wordpress.org/ticket/4186

    • Tammie Lister 9:09 pm on April 18, 2013 Permalink | Reply

      I’d like to suggest a UI 2 pronged task :)

      (Some of this comes from a discussion with @djpaulgibbs)

      1. ‘De-defaulting’ of the current components.
      Focusing on buttons, text, messages and notifications. This is a good way for people to get involved in some small tasks in a shorter focus task. It would consist of a list of ‘improvements’ after a UI review of what we currently have. No large changes are being suggested but as part of this any bugs, issues with responsive or hitches could be merged into this task so maybe clean up the UI tickets a bit.

      2. Pick 1 or 2 templates and redesign (doing one at a time).
      This will draw on the work done in TS but also be open to other possibilities. This allows for speed and no hold ups to release in keeping with a faster schedule. I’d suggest the candidates for this would be: Members directory, Groups directory, Profile. I’m keen we do one of the directories as they currently use the same format which doesn’t overly work.

      Both could be done in a ‘mp6 style’ as a plugin to see improvements early on we can revise to avoid having to be in core when other things happening.

      I think both of these could easily be done as part of the 1.8 cycle as not huge but have room to grow or reduce scope (which is good as flexible).

      As part of this TS can also still be worked on as I’d suggest other templates are tackled in later versions.

    • Tammie Lister 9:26 pm on April 18, 2013 Permalink | Reply

      Another possible UI/UX task could be to create an existing users dashboard. It’s in response to the new user experience we now have which is great, but what we lack is an existing user experience. I explored this a bit myself as a thought what is needed is a place where statistics and other ‘site summary’ information could go. A BuddyPress dashboard of sorts.

      Post I discuss this in : http://buddydesignlab.wpengine.com/existing-users-dashboard/
      Image : http://buddydesignlab.wpengine.com/wp-content/uploads/2013/04/note011.png

      It may be something for later versions but just throwing it out there as a possible idea. It could be achieved with minimal first version and then built on – hopefully to keep to the release schedule. It could also vary contents wise depending on who wants to get involved – some interesting statistics stuff could happen or just keep it simple first release with totals, links and summary copy.

    • oc2ps 6:30 pm on April 19, 2013 Permalink | Reply

      I’d like to a greatly increased WP-Admin footprint for BP….Admin options/UI for many of the features that BP provides…
      e.g.
      https://buddypress.trac.wordpress.org/ticket/4130

      • oc2ps 6:31 pm on April 19, 2013 Permalink | Reply

        I mean:
        I’d like to “see” a greatly…*

    • oc2ps 6:32 pm on April 19, 2013 Permalink | Reply

      Email: Easily done, but quite important 2 things:
      1- Include username https://buddypress.trac.wordpress.org/ticket/4731
      2- Resend activation https://buddypress.trac.wordpress.org/ticket/4676

    • Paul Gibbs 10:32 am on April 20, 2013 Permalink | Reply

      Should consider porting bbPress’ log in widget. Seen several threads on the forums asking where BP’s log in widget went in BP 1.7 ;)

    • Paul Gibbs 12:35 pm on April 20, 2013 Permalink | Reply

      Translations

    • John James Jacoby 8:01 pm on April 24, 2013 Permalink | Reply

      • Rewrite Rules
      • Separate Notifications into its own component /via GSoC
      • Ray 8:07 pm on April 24, 2013 Permalink | Reply

        About notifications, I had an idea that notifications could be tied to the activity component. Because notifications are essentially activity items and we already have all the necessary template loops and JS/CSS to do something without too much effort. What was your idea for GSoC?

  • Boone B. Gorges 6:21 pm on April 14, 2013 Permalink | Reply
    Tags:   

    As promised, I’ve started a codex page that explains how to take advantage of BuddyPress’s new automated testing suite when writing unit tests for your own BP plugins. http://codex.buddypress.org/developer/automated-testing/writing-automated-tests-for-buddypress-dependent-plugins/ has lots of details and a working example, but the summary is: require buddypress/tests/includes/loader.php before your own plugin to make sure that BP gets installed and initialized, and require buddypress/tests/includes/testcase.php for access to BP’s testcase class and factories.

    Questions or comments? Please leave them below.

     
  • Boone B. Gorges 3:19 am on April 11, 2013 Permalink | Reply
    Tags:   

    Over the last few months, Paul and I have been building a framework for writing unit and integration tests for BuddyPress. As of tonight, the BuddyPress automated test suite is part of BuddyPress core. (See r6905-6908)

    I’ve started a Codex page about our tests: http://codex.buddypress.org/developer/automated-testing/. The BP tests are modeled after the WordPress suite; you can read much more about how WordPress tests work at https://make.wordpress.org/core/handbook/automated-testing/.

    If you are a BuddyPress plugin developer, or if you contribute to BuddyPress itself, you’re highly encouraged to use, and contribute to, our test suite. The test coverage right now is very, very sparse, but we hope that it will improve as we fix bugs and refactor various parts of the codebase.

    An exciting feature of the BP test suite is that it allows dependent plugins to write tests that invoke BP_UnitTestCase and other BP-specific tools. I will write more about this feature, including examples from my own plugins, in the upcoming days.

    The testcases are located in the tests/testcases subdirectory of BP’s plugin folder. Bug reports and enhancement requests should be reported to BP Trac.

     
    • foxly 5:34 am on April 11, 2013 Permalink | Reply

      THIS!

      Myself and the team are so happy to see BuddyPress is starting to grow up. Whenever the opportunity arises, we’ll do our best to contribute to your test suite.

      ^F^

      • Boone Gorges 12:03 pm on April 11, 2013 Permalink | Reply

        Thanks, Foxly! I spent a lot of time studying Razor and the BPM tests, and while we decided to go in a different direction for a couple of reasons, your stuff served as a major inspiration. Thanks for the prodding over the years :)

    • Stas 7:20 am on April 11, 2013 Permalink | Reply

      Congrats, this is really huge!
      Looking forward to see it growing with every release.

    • Paul Gibbs 11:17 am on April 11, 2013 Permalink | Reply

      BOOM

    • Lachlan 11:50 am on April 11, 2013 Permalink | Reply

      Awesome work all. This and 1.7!
      You guys are kicking goals

  • Boone B. Gorges 6:59 pm on April 8, 2013 Permalink | Reply  

    Hi everyone. BuddyPress 1.7 has just been released. Check out the blog post for more details http://buddypress.org/2013/04/buddypress-1-7-is-now-available/

    Thanks to everyone for your help this release cycle!

     
  • Boone B. Gorges 1:20 am on February 25, 2013 Permalink | Reply
    Tags: ,   

    The theme compatibility layer coming in BuddyPress 1.7 makes it so that any WordPress theme is BP-compatible. If you are an author of an existing theme that supplies its own BuddyPress templates, you can (and should) prevent BuddyPress from running theme compat in the context of your theme. You can do so by putting the following line in your functions.php:


    add_theme_support( 'buddypress' );

    Be sure that you put this line either in the global scope, or in a function that is hooked to 'after_setup_theme' with a priority of less than 100. See http://codex.wordpress.org/Function_Reference/add_theme_support and http://buddypress.trac.wordpress.org/ticket/4846#comment:4 for more information.

    Here’s an explanation of why this change is necessary. In order to maintain full backward-compatibility with existing BP themes, theme compat only kicks in as a fallback. On any given page, BP first checks to see whether it can find the “old” templates in your theme directory (such as groups/single/members.php); if the old template is found, it is used, while if it’s not found, BP supplies the markup using theme compat. This means that, in the case of PHP templates, your legacy BP theme will work seamlessly with BP 1.7+.

    In the case of CSS and JS, however, BP has no reliable way to know whether a theme is providing the necessary files to make your site look and work correctly. Theme compat errs on the side of caution and loads these static assets. But if your theme has also loaded its own version of these files, it may create conflicts in styling, and more importantly, it may cause certain AJAX events to be fired twice. add_theme_support( 'buddypress' ) tells BP that your theme will be taking care of CSS and JS (in addition to PHP templates).

    Note that child themes of bp-default do not need to manually register ‘buddypress’ support; BP assumes it.

    See #4846 for more details.

     
  • Boone B. Gorges 3:04 am on September 7, 2012 Permalink | Reply
    Tags: ,   

    In r6314, the BP_User_Query class was introduced. BP_User_Query is a new way to query members in BuddyPress, modeled after WP_User_Query and designed to scale many, many times better than BP_Core_User::get_users(). The main function used for member queries in BuddyPress, bp_core_get_users(), has been refactored to use the new BP_User_Query by default, supporting the old BP_Core_User::get_users() as a legacy mode only. See #4060 for extensive discussion of the improvement and of the problems it’s designed to solve.

    For the vast majority of BuddyPress installations, the switch to BP_User_Query will be completely seamless. The only break with backward compatibility concerns the filters 'bp_core_get_paged_users_sql' and 'bp_core_get_total_users_sql'. These filters are found in the deprecated BP_Core_User::get_users(), and are intended to allow plugins to modify the user SQL queries directly. Since BP_User_Query totally reworks the way these queries are constructed, there was no way to provide full backward compatibility.

    The only two plugins in the wordpress.org plugin repository that use the filters in question are Achievements (by @djpaulgibbs) and BP Better Directories (by me), and they will be refactored to use BP_User_Query by the time BP 1.7 is marked stable.

    If you’ve never heard of these filters, or you are certain that you’ve never used them, you can stop reading right now. Go svn up and have fun!

    If you have used these filters to customize the SQL queries on a private project, you will need to take action before BP 1.7 is released. You have two options. (I’ll write up detailed examples on the Codex over the upcoming days and weeks – this is just a primer.)

    1. Rewrite your filters. BP_User_Query is designed to be flexible with respect to this kind of customization, so you have several options, depending on what your filters do. If you are adding more WHERE clauses to further limit the members returned by the queries, do the following: Run your own separate SQL query for those WHERE clauses, use the new pre-filter on query parameters – bp_pre_user_query_construct – and add the results of your query to the ‘exclude’ or ‘include’ parameters, as appropriate. If your filters are designed to change user ordering as well as limit the results returned, you can override BP_User_Query‘s user id query by passing a list of user ids to the ‘user_ids’ parameter. Neither of these methods require you to touch any of BP’s core SQL clauses – a major improvement. And if you need to do something even more customized, you can still modify the SQL directly, by using the bp_pre_user_query hook and manipulating the $uid_clauses array.
    2. If you are unable or unwilling to refactor your filters appropriately, you can force BP to use the legacy BP_Core_User::get_users() for user queries by filtering 'bp_use_legacy_user_query' and returning true. (Note that doing so will forgo the performance improvements of BP_User_Query. I don’t recommend using the legacy query if you can help it.)

    Questions or concerns? Please leave a comment here. Found a bug? Please report it on Trac.

     
    • David Bisset 3:07 am on September 7, 2012 Permalink | Reply

      Saw “BP_User_Query” on @bptrac and i went “hhmmmm…”. Very cool and love to see how this speeds things up and scales.

    • Ray 4:07 am on September 24, 2012 Permalink | Reply

      Was just doing a little testing on a few custom BP loops on a displayed user’s page.

      I found that if you previously only used the “include” parameter in the members loop or activity loop, in BP 1.7, you’ll also need to add “user_id=0” to your querystring.

      The reason why is If you don’t set “user_id“, then BP will automatically populate that with the displayed user’s ID, which is not what we want.

      So here’s an example:

      // grab the data for user ID 3
      user_id=0&include=3
  • Boone B. Gorges 3:30 pm on August 25, 2012 Permalink | Reply
    Tags: BP_Core_User, , query, users   

    I’ve just put up a first-draft patch for the new BP_User_Query object, which overhauls (and highly optimizes) the way that BuddyPress performs user queries: #4060. Please read the patch and my comments if you fall into one of the following categories:

    • You’ve developed for a BP installation with a very large userbase and can provide data points
    • You’re a MySQL wonk and can analyze the optimizations provided by BP_User_Query
    • You have developed plugins or other customizations that have used the ‘bp_core_get_paged_users_sql’ or ‘bp_core_get_total_users_sql’ filters, and are concerned about the backward compatibility plan for BP_Core_User::get_users() and these two filters.

    Thanks!

     
    • croixhaug 5:18 pm on August 25, 2012 Permalink | Reply

      This looks like an amazing improvement for large installations. I have a couple customizations using ‘bp_core_get_paged_users_sql’ and ‘bp_core_get_total_users_sql’ so I’ll take a look for any issues with backwards compatibility in those scenarios

    • John James Jacoby 9:20 pm on August 28, 2012 Permalink | Reply

      Cleaned up the patch a bit, but I really like this approach. Will be nice to get this to a place where we can use it for friends, activity, private messages, and other components too.

    • Erlend 7:17 am on August 29, 2012 Permalink | Reply

      Speaking of BuddyPress performance & optimization, has there been any developments relating to this old (massive) discussion?
      http://bpdevel.wordpress.com/2012/03/05/custom-post-types-yesno/

    • Paul Gibbs 8:09 am on August 30, 2012 Permalink | Reply

      The version of my Achievements plugin on wordpress.org filters both those SQL functions. I add another table to the SELECT, add a couple of new WHERE conditions (compare IDs from values the added table), and change the ORDER BY. I doubt the new function will let me query against a custom table?

  • Boone B. Gorges 1:16 pm on August 24, 2012 Permalink | Reply
    Tags: , , ,   

    One of the big features of BuddyPress 1.6 was the new Activity Management panels in the Dashboard, where site admins can edit, delete, and otherwise manage BP activity content. We’d like to keep the More Admin Goodies trend going in BP 1.7. To that end, I’ve made a first pass at a Groups Management panel: #4414.


    The main features of the Group Management panels:

    • Easily view a list of all groups on your installation. Filter by privacy status. Sort by name, ID, last active, number of members. (see screenshot 1)
    • Edit group name, description, settings on a single screen (see screenshot 2)
    • Add group members directly to a group, skipping the invitation process. Features AJAX autosuggest for usernames.
    • Manage existing user roles. Ban, promote, demote, remove multiple members on a single screen.

    A few planned features are not yet implemented in the patch (bulk delete, help text, better styling). On the ticket, we’ve also discussed other enhancement ideas, such as drag-and-drop member role management.

    If you’re interested in this feature, have ideas for how it might be improved, or – especially! – want to help with patches, please visit #4414.

     
    • David Bisset 1:25 pm on August 24, 2012 Permalink | Reply

      Very nice. Remind me of your groups management plugin. :)

    • sillyandrea 1:27 pm on August 24, 2012 Permalink | Reply

      “Add group members directly to a group, skipping the invitation process.”

      Yes! This makes SO MUCH SENSE to have this here in the admin. If you can make your group management plugin obsolete, so much the better. ;)

      • Boone Gorges 1:54 pm on August 24, 2012 Permalink | Reply

        > If you can make your group management plugin obsolete, so much the better

        That’s the idea! And this one hopefully won’t be full of bugs :)

        • David Bisset 1:55 pm on August 24, 2012 Permalink

          As long as this is just as easily expandable as your plugin – it was so easy inserting metadata into the groups list for example.

    • Paul Gibbs 1:43 pm on August 24, 2012 Permalink | Reply

      The ballons icon gives it all the bling.

      • David Bisset 1:55 pm on August 24, 2012 Permalink | Reply

        Group of zombie would be a better fit for “groups”, but i’ll take the balloons icon.

      • mercime 8:04 pm on August 26, 2012 Permalink | Reply

        Agree. Balloons for fun groups :-)

    • imath 2:04 pm on August 24, 2012 Permalink | Reply

      wow !! this is great :)

    • Tammie Lister 3:21 pm on August 24, 2012 Permalink | Reply

      Oooo that is cool :)

    • Paul Gibbs 5:45 pm on August 24, 2012 Permalink | Reply

      I still think we need pagination on the members lists.

      • Boone B. Gorges 7:06 pm on August 24, 2012 Permalink | Reply

        I agree that something has to be done about the size of member lists, but pagination is tricky when there are different types of users. Do you have suggestions for how to do this? Separate pagination for each type?

    • Selu VEga 11:41 pm on August 24, 2012 Permalink | Reply

      What about members on top right column? and what about a unique list with filterable sort of member? I believe that is working for bigger screens but more and more, tablets are leading the change, we need something easy to manage. Great job guys!

    • Duncan 7:46 am on August 27, 2012 Permalink | Reply

      What about ability to lock users into a group, lock in for time period, group expiry after certain time period.

      Really happy to see invite skip process.

      • John James Jacoby 8:56 pm on August 28, 2012 Permalink | Reply

        Neat ideas, though beyond the scope of this enhancement. Would make a great plugin to start!

    • John James Jacoby 9:21 pm on August 28, 2012 Permalink | Reply

      Love it. Great work on this.

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 304 other followers

%d bloggers like this: