Core Dev Chat Summary for January 20, 2016

This summary includes pertinent developer conversations in Slack before and right after the official chat time last week.

Trac Tickets

Email API and customisation features (#6592) Three hours before dev chat, @boonebgorges and @djpaulgibbs had a long and interesting discussion about the new Email API. Topics covered: standardizing verbs for method names, choosing taxonomy for Email Types to give admins the option of implementing multiple templates, among others. Latest: @djpaulgibbs has since updated the `amazing-emails` branch at https://github.com/paulgibbs/buddypress/

XProfile field database schema (#6350) @johnjamesjacoby will be writing down his vision for improving the xProfile tables.

Groups: Add Profile Fields and Profile Field Groups (#6783) From an enhancement for the Groups component, @im4th has proposed a change in direction to making this a generic component which would work for any object (Members, Groups, and Blogs) in ticket. @im4th consulted with @johnjamesjacoby about the best way forward.

Comment syncing between activity and post comments for Custom Post Types (#6482) @imath and @rayisme deliberated and agreed on adding `bp_activity_type_supports()` which works similar to WP’s `post_type_supports()` function. This would provide some flexibility if/when more features are added to BP activity types in the future.

General Administration

Messaging

A lively brainstorming session arose from a proposal by @johnjamesjacoby to replace the old “social network” association used for the past 8 years. There were slogans, taglines, and observations shared during and even after the chat:

• If we’re going to change it, can we think of it more as a strategic/goal/mission statement—more than just a tag line? ~@dcavins
• Social network” and “in a box” are both icky. Something having to do with “community” is better than “social network”. As for “in a box”, it glosses over the developer-focused flexibility of BP, which IMO is one of its strong points. ~ @boonebgorges
• It (“BP as a platform”) seems technically accurate, and speaks to the breadth of purpose, and I think it’s meaningful to a non-technical audience. I think we have two audiences – network builders and developers – so maybe our branding should have two parts too ~ @boonebgorges

BuddyPress. Go Social. Build Communities. Create Networks. ~ @mercime
Enabling Community Platforms ~ @hnla
Building Blocks for your Community ~ @jjj
Community toolbox ~ @karmatosed
Community components you can put together in a very easy and funny way ~@im4th
A suite of social components for building communities ~ @pollyplummer
BuddyPress. A developer/professional platform that can scale up to millions of users. ~ @mercime
BuddyPress: Create your own community space ~ @rayisme
You have the users, BuddyPress (has) the building blocks to kit out your community to the fullest ~@netweb
BuddyPress, an online community building kit ~ @robkk

Fun & flexible software for online communities, teams, and groups.
BuddyPress helps you build any type of community website using WordPress, with member profiles, activity streams, user groups, messaging, and more.
~ @johnjamesjacoby

New BudddyPress.org Theme

@johnjamesjacoby noted that the “theme needs a complete revamp and redesign to make it more attractive. I would like for BuddyPress & bbPress to be powered by the same theme, so that they are effectively co-branded as such.” Someone’s going to be tapped to work on the new theme.

Slack log: https://wordpress.slack.com/archives/buddypress/p1453320187003820

#dev-chat

#6350, #6482, #6592, #6783

Dev Chat Summary for August 12, 2015

BuddyPress 2.3.3

Release Date: After WP 4.3.0 rolls out next week.

There are three open tickets:

  • Wrong shape of the CROP size of the group thumbnail (#6551)
  • Mentions.js fails on wp-admin post editor (#6487)
  • WP 4.3 changes in WP_List_Table (#6465)

@djpaulgibbs has volunteered to help move these tickets forward.

BuddyPress 2.4.0

Add UI for adding Profile Header Images for Users and Groups

  • (#6570) @im4th opened the conversation which lasted ~ one hour on the best way forward for this new feature. This resulted with great feedback from @johnjamesjacoby, @rayisme, @djpaulgibbs, and @hnla.
  • Points made:
    1. Feature is available for all themes. bp-legacy‘s member-header.php gets the new hotness, and nothing gets broken if the feature is not activated.
    2. Create new template part with new markup, styles, and JS as needed
    3. Integrate a flexible header image for admin-area profiles, user dashboard
    4. If a custom template part is used in theme, then nothing happens because theme compatibility would never include anything in bp-legacy. If they are relying on theme compatibility and bp-legacy then they get the new markup and CSS that we give them.
    5. Users/theme authors will be able to edit their home.php template to support this new feature
  • More to follow. Odds are, there will be some fast and furious work coming soon.

Conversation replies don’t immediately inherit the HTML of custom templates

  • (#6572) @rayisme introduced a new template part to replace the hardcoded markup used to render a single message item in ticket. Discussion in dev chat then ensued to solve one of the two hard things to do in computer science, naming things . Consensus was reached on the name of the new template part, simply message.php.
  • Update: Patch has been committed to core.

@since standard not parseable with phpDocumentor 2

  • (#6576) @since tags throughout the BuddyPress project needs to be revised/updated to parse docs correctly in preparation for developer.buddypress.org.
  • @tw2113 will be working on this.

Attachment API conflicts with wp_enqueue_media()

BuddyCamp Brighton, U.K.

This event was a success based on the feedback from the attendees. Congratulations to @djpaulgibbs and @karmatosed, organizers of the first BuddyCamp in Europe, as well as to all the speakers and presenters!

  • @im4th has posted about his BuddyCamp experience in français along with his slides at his site.
  • @modemlooper has uploaded his BuddyCamp video about mobilizing your BuddyPress site @ Dropbox.

If you want to include links to your BuddyCamp Brighton slides/videos or photos, post a comment below and we’ll add it to the list above.

Slack log: https://wordpress.slack.com/archives/buddypress/p1439406192001125

#6465, #6487, #6551, #6570, #6572, #6574, #6576, #dev-chat

Dev Chat Summary for June 3, 2015

This post includes updates since the dev chat last Wednesday.

BuddyPress 2.3.1

New BP Core Team Member

  • We’re pleased to announce the newest member of the BuddyPress Core Team, @hnla (Hugo Ashmore). He is a long-time BuddyPress core contributor, Forums Moderator, Co-Lead of the BP Codex, completed the new BP companion stylesheets for the Twenty Fifteen and Twenty Fourteen themes in this recent dev cycle, and has many tasks scheduled for this year. Hugo is a freelance frontend developer based in London who enjoys Sunday Roast or Curry. Congratulations @hnla!

New BP Rockstar

  • We’re happy to share the news that @dimensionmedia (David Bisset) is the newest BP Rockstar. @dimensionmedia has organized the first U.S. BuddyCamp (and second ever after BuddyCamp Vancouver) in 2013 and continued to do so in 2014 and 2015. That makes him a Rockstar in our books! To top it off, @dimensionmedia is one of the founding members of WordCamp Miami and has organized the event for the last six years. Quite amazing, really. Congratulations @dimensionmedia!
  • You can view the archived livestream for the morning and afternoon BuddyCamp sessions (you need to create a livestream.com account to do so): A.M. sessions – http://livestream.com/accounts/13701773/events/4081950 P.M. sessions – http://livestream.com/accounts/13701773/events/4081959

BuddyPress in WordCamp Lyons, France 2015

  • @im4th has given a 40-minute grand tour of the “BuddyPress Ocean” last Friday, June 5th, aboard possibly the first ever “floating WordCamp” in Lyons. He has just posted about the event at our BuddyPress.org blog. He has included images, links to his slideshow, and gists for making BuddyPress work for you in different scenarios, among other tidbits.
  • Check out https://buddypress.org/2015/06/boarding-the-wordcamp-lyon/
  • #wclyons photos by Manuel Schmalstieg are available at https://www.flickr.com/photos/kinetoskop/sets/72157653729160548

@im4th presenting the BuddyPress ocean. Image by Éric Wayaffe

BuddyCamp in Brighton, U.K. 2015

  • Mark your calendars! The first BuddyCamp outside of North America has been greenlighted. Our very own @DJPaulGibbs and @karmatosed are co-organizers of the first BuddyCamp in the U.K. which will be happening on August 8, 2015 in the beautiful seaside city of Brighton, a 2-hour drive south of London. The calls for speakers and sponsors are now open!
  • Keep an eye on the BuddyCamp Brighton site as things develop over the coming weeks @ http://brighton.buddycamp.org/2015/

#dev-chat

Happy #weekly-updates, everyone. If you…

Happy #weekly-updates, everyone. If you haven’t read @karmatosed‘s posts on the state of the template pack, or @boonebgorges performance improvement numbers, go do that. Both are must-reads.

Beta 2 will be arriving this week. If you’ve contributed to the project this last week, thanks so much — share here what you did. 🙂

The state of the template pack

As most know by now, the template pack isn’t going to be part of 2.0. Whilst this is a little sad, it’s for the best. It wasn’t ready and there is no point releasing something that isn’t going to be amazing.

That all said, the focus for the template pack should move onto 2.1. I’ve spent a bit of time thinking about this and plan on during April to do something a little different. I will personally work on a fork experimenting with some layouts and interfaces. I feel the project was the casualty of both taking a long time and momentum. I want to take stock and create a fork to play with ‘what could be’.

This will be a short time and will be an attempt to be more brave about this project. The aim is to push and come up with a solution for the navigation and other areas we had to settle for. It won’t be to commit it all, I will post what I create to get feedback and opinions. I think at this stage the project needs this singular focus and experimentation just for a few short weeks.

I will be doing this all on a Github branch called lab on the project here:
https://github.com/karmatosed/buddypress-templates/tree/lab

Perhaps one of the biggest areas that will need hands come the push into 2.1 will be the messages area. I am keen we work on the layout we dropped due to issues. I am optimistic with renewed strength and new development hands we can deal with this. I think this is something we shouldn’t settle for not doing.

Whilst it’s disheartening when we don’t reach a goal, I feel that this template pack will be stronger for this process. Those that have worked on it, thank you. Those that want to work on it for 2.1 – yay thank you and welcome.

As far as ‘what happens next’ goes. I think in a few weeks I will post a summary of my experimentation. We still have the Github project, that won’t go away. Anyone is welcome to work on anything there and test, refine in meantime. We will after that look at the next steps. I’m very keen we get this early into core during 2.1.

#weekly-updates

One of the primary focuses…

One of the primary focuses of BP 2.0 development has been performance. In this post, I’ll share a few numbers that demonstrate the improvements you can expect in the new version.

For testing, I set up a fresh installation of WP 3.8.1, running Twenty Fourteen and the default widget configuration. Using wp-cli-buddypress, I generated 30,000 members and 60,000 activity items. I toggled between various setups, running the latest BP 1.9.x as well as the latest BP trunk (2.0.x). The tests labeled “APC On” were run using APC with a default config (specifically, APCu on PHP 5.5.10) and the WP APC plugin. In these cases, I also primed the cache with a page refresh. Tests labeled “APC Off” do not have persistent object caching enabled.

What follows are statistics about MySQL (number of queries and the total query time). In many cases, there are corresponding improvements in script execution time and memory footprint, but these latter numbers are so dependent on other environmental features that I’ve decided not to include them here. You should take things like “query time” with a grain of salt; the numbers are useful mainly to visualize relative gains. But it’s worth noting that the improvements in query time will become more significant as sites become larger than the dummy site that these numbers come from.

  1. Baseline
    Here are some numbers with BP deactivated, so you can get a sense of what the default WP installation is doing:

    Home page – BP deactivated – APC Off

    # queries: 30
    query time: 0.005503s


    Home page – BP deactivated – APC On

    # queries: 9
    query time: 0.002269s

  2. Activity
    Several important changes were made to the way that BuddyPress activity is queried, including significant improvements in object caching and splitting the query to avoid costly JOINs. Here are some results of looking at the main Activity directory page, default filters, as a logged-out visitor.

    BP 1.9.2 – APC Off

    # queries: 80
    Query time: 0.111316s


    BP 2.0 – APC Off

    # queries: 59
    Query time: 0.046568s


    BP 1.9.2 – APC On

    # queries: 10
    Query time: 0.002157s


    BP 2.0 – APC On

    # queries: 5
    Query time: 0.001317s

  3. Members
    The efficiency of members queries was another area of intense focus during the 2.0 dev cycle. The way that last_activity data is stored and queried was overhauled, and a large number of improvements were made to userdata caching. The following data is from the 234th page of the Members directory, sorted by Last Active (/members/?upage=234), as seen by a logged-out visitor.

    BP 1.9.2 – APC Off

    # queries: 63
    Query time: 0.197926s


    BP 2.0 – APC Off

    # queries: 39
    Query time: 0.0952112s


    BP 1.9.2 – APC On

    # queries: 17
    Query time: 0.184889s


    BP 2.0 – APC On

    # queries: 10
    Query time: 0.091074s

  4. Logged-in data
    Users who are logged in to a BP site carry a lot of data along with them on every page of the site. Userdata is used to build navigation links, to build the admin bar, to populate the Notifications dropdown, etc. We’ve made an effort to make these queries less redundant and more efficent. Here are some numbers from a home page visit by a logged-in user.

    BP 1.9.2 – APC Off

    # queries: 49
    Query time: 0.010246s


    BP 2.0 – APC Off

    # queries: 45
    Query time: 0.008786s


    BP 1.9.2 – APC On

    # queries: 16
    Query time: 0.0042662


    BP 2.0 – APC On

    # queries: 4
    Query time: 0.0012240

You can see that the improvements are significant. The number of queries per page load in each case has been cut by up to 50%, and query time, on average, has been cut by more than 50%. And remember that these numbers are total values – it’s BP on top of WP’s standard queries. That is to say that the query footprint attributable to BP itself has been reduced by up to 75% in many places.

This is not an exhaustive list of benchmarks, but it’s indicative of improvements you should see across most sections of BP sites after the 2.0 upgrade. The improvements will be especially noticeable on very BP installations. If this isn’t good motivation for you to help with the 2.0 beta, I don’t know what is 🙂

#weekly-updates for the week of…

#weekly-updates for the week of 31st March. Remember for this week’s dev chat, the time moved to 19:00 UTC (back one hour from what it was before, because of DST).

What’s everyone been up to?

#5511