BP Dev Chat Summary : september 22, 2021

10.0.0 Progress

  • We started by congratulating @oztaser for the great contribution he brought about SQL performance improvements to the BP Notifications API (See #8426).
  • @dcavins will actively (👈 adding some pressure here 😁) progress about the site membership requests feature. He will also take in charge the issue about the inconsistent behavior of Groups Invites when the friends component is not active inside the Legacy template pack (see #8550)
  • @vapvarun is exploring BuddyPress statistic widgets from a plugin, @im4th challenged him to build Widget Blocks about it in 10.0.0 as well as exploring the mutual friends/mutual groups which are other Widget Block nice candidates (see #8559).
  • Then we had a long discussion about raising the BuddyPress required WordPress version to 5.4 (see #8571). It’s true it’s quite a jump from 4.9 but “Tipton” was released almost 4 years ago, it’s the last WP version before the Block Editor which is probably making it a bit special. WP 5.0 to 5.3 are under 5% of total WordPress installs which makes 5.4 a good candidate for our next required version.

If a WordPress version became obsolete over a year ago, it’s a candidate for removal.
If a WordPress version’s use slips below 5% of all WP installations, it’s a strong candidate for removal.

The BP Codex

Please, share your opinion about the BP 10.0.0 required WordPress version using the comments area 🙏

10.0.0 schedule

  • 10.0.0-beta 1: ~ november 20, 2021,
  • 10.0.0 stable: ~ december 24, 2021 🎄

BP Rewrites feature as a plugin

It’s now possible to enjoy BP Directories as the site’s homepage using the BP Rewrites URL parser.

@sbrajesh shared his first thoughts after testing the plugin. He was a bit surprised not to find the BP Directories into the WordPress pages. In BP Rewrites, BP Directories are using a Custom Post Type without using the corresponding WordPress generated UI. Instead there’s a new URL settings page to customize almost every possible slugs. The last improvement to add about slugs is to support customizable slugs for the Member’s secondary navigation. It’s true the UI used for this settings page should be improved (a lot!).

@im4th informed about the plan for this plugin : it’s not to merge it into BP Core during 10.0.0 (or even 11.0.0) but to release it as a plugin so that a lot more people can easily test it. There’s a ticket about easing hosted on WP.org features as a plugin installation from one of the BuddyPress Admin screens to also simplify this part for users (see #8148). Switching from our Legacy URL Parser to the WP Rewrite API will need a lot more testing to make sure BP plugins and themes are behaving almost like there was no switch!

@im4th strongly encourages all BP Plugin/theme developers to give a test to this feature as a plugin to contribute to the next way BuddyPress will parse URLs.

Open floor

@im4th @dcavins & @vapvarun are going to participate to a Q&A hosted by Birgit Pauli-Haack from the Gutenberg Times on October 28 at 16:00 UTC. If you want to know more about our experience migrating the BP Legacy widgets to Block Widgets during the BuddyPress 9.0.0 “express” release, please join us! More info available there inside the Upcoming Live Q&As section.

Next Dev-Chat

It will happen on October 6 at 19:30 UTC and of course in #BuddyPress. If you have ideas or questions, feel free (and we are strongly encouraging you) to comment this summary to share them!

#10-0-0, #dev-chat, #summary

BP Dev-Chat Agenda September 22, 2021

Hi!

Update: the development meeting has been postponed to next week, same day, same time.

Our development meeting will happen next week (September 22) at 19:30 UTC and of course in #BuddyPress.

Here’s our agenda:

  • 10.0.0 updates about our progress
  • BP Rewrites feature as a plugin updates

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

👋

#10-0-0, #8386, #agenda, #dev-chat

August 18 Dev-Chat summary & September 1st Dev-Chat agenda

Hi everyone, sorry, once again, this summary is published quite late.

August 18 Dev-Chat summary

9.1.1 Security release

@im4th explained the work @dcavins, @johnjamesjacoby and him did about the security fix that was ported back to previous BuddyPress branches (from 9.0 to 2.9): 8 released were packaged in a night. Many thanks to David & John for their help during this amazing night!

10.0.0

  • @sbrajesh informed us he needed some more time to finish the first version of the BP relationships API.
  • We’ve been talking about the Group hierarchy as a possible feature for 10.0.0 @dcavins informed he had previously worked into this area from a custom plugin.
  • The first beta of 10.0.0 should happen on November 20. Target date for the final release is December ~24 🎅🏼

Open floor

  • We’ve been talking about the opportunity to move the dev-chat time but we will finally keep on meeting every other Wednesday at 19:30 UTC. Although it’s very late for @vapvarun & @sbrajesh, they are young enough 👶🏽👶🏾👶🏻 to handle it. Many thanks to them 🤝

September 1st Dev-Chat Agenda

  • Progress about 10.0.0 features.
  • News about the BP Rewrites feature as a plugin.

It will happen later today at 19:30 UTC and of course in #BuddyPress.

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

#10-0-0, #9-1-1, #agenda, #dev-chat, #summary

August 4 Dev-Chat summary & August 18 Dev-Chat agenda

Hi everyone, sorry this summary is published quite late.

August 4 Dev-Chat summary

10.0.0 confirmed top features

  • We confirmed the BP Media component as one of the top features for 10.0.0. As there are many plugins playing into this area, we think packaging it into a separate plugin and make it easy to install from our BP Components Administration screen is the best way to go. Users will be able to choose whether they need these extra lines of code or not 😉.
  • The site membership requests feature to compliment the site membership invites was also confirmed. @dcavins already started working on it suggesting improvements to our BP Signup API (see #8450).

Open floor

  • We also talked about adding the Block based activity post form we’ve been working on from the BP Blocks plugin.
  • @im4th thinks he had progressed enough about the BP Rewrites plugin to completely open it to any contributors. He has published a post about it on this blog a few days after the dev chat.

August 18 Dev-Chat Agenda

  • During last meeting some of us couldn’t attend, so let’s take some more time to talk about other possible top features to confirm for 10.0.0.
  • Let’s move the time of our every other Wednesday meeting so that it’s not happening so late for Asia/Pacific timezones.

It will happen on August 18 at 19:30 UTC and of course in #BuddyPress.

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

#10-0-0, #agenda, #dev-chat, #summary

BP Rewrites, let’s contribute to the next way BuddyPress will parse URLs

Hi BuddyPress Contributors!

Using the WordPress Rewrite API to replace our Legacy URL parser is a challenge we’ve been trying to achieve for 8 years.

It’s a pretty massive and complex change because BuddyPress plugins/themes and even BuddyPress Core 😬 got used to directly write URLs by adding chunks after a directory, a single member item or a single group item permalink.

Today, our Legacy URL parser is analyzing these URL chunks to globally set variables (eg:  buddypress()->current_action) we can check using specific functions (eg: bp_current_action()) to decide how the plugin should behave.

As it’s working mostly fine, we’ve been postponing this change for a while which is making it harder today to actually migrate to the WordPress Rewrite API. As I often write when announcing a release candidate on our official website:

“Release Candidate” means that we believe the new version is ready for release, but with more than 200,000 active installs, hundreds of BuddyPress plugins and Thousands of WordPress themes, it’s possible something was missed. BuddyPress ?.0.0 is slated for release on Month dd, YYYY and we need your help to get there.

Not to mention the potential customizations advanced users can do using specific constants, specific WordPress configurations, or by adding custom code into the mu-plugins directory or inside a bp-custom.php file.

To safely make this change: we need to have enough confidence into the backward compatibility mechanism we’ll put in place. There’s no secret: the only way to reach this level of confidence is to test, test and test again. The more we are to test and the sooner we do these tests during the development cycle, the better it is for end users, plugin developers, theme designers, BP support team, BP development team: anticipating is less painful than healing!

Your contribution is the key to the success of our challenge.

Why migrating? isn’t the Legacy URL parser doing a good job?

It does! But we believe using the WP Rewrite API will improve users BuddyPress experience making it possible to directly use the plugin without having to change the permalink structure if the site is using plain permalinks and making it a piece of cake to customize URL slugs. Moreover, we think following WordPress best practices in this area is important for our project and will help us increase our “forward compatibility” with the WordPress Full Site Editing feature.

BP Rewrites is a “Feature as a plugin” 

We think using the “feature as a plugin” mode can:

  1. make things easier for you (actually us all!) to do this huge amount of testing,
  2. accelerate the development of the code needed to achieve this “WP Rewrites” migration.

1. Once the team will be happy about our improvements on the feature, we’ll make BP Rewrites available from the WordPress.org Plugins directory. To have it running on your site, you’ll simply need to install & activate it like any other plugin. As soon as you deactivate BP Rewrites, it puts everything back to the state it was before its activation.


2. Working on the 9.0.0 release mainly from the BP Blocks GitHub repository showed us it was accelerating our development process. Let’s hope it will be the same for BP Rewrites. We haven’t received more contributions to BP Blocks from GitHub users, but at the very list we make this possible and everyone’s very welcome to contribute to code!

You can already help us with tests & code!

If you’re comfortable with using GitHub and can easily put up a local development environment, or install the BuddyPress one (it requires Docker) or have already one in place, feel free to start contributing to BP Rewrites 😍.

Please take a few minutes to read these contributor guidelines to quickly get started.

What happens once BP Rewrites is activated?

WordPress Plugins Administration screen
PS: the link is Activate on non mulitiste configs.

As soon as you activate BP Rewrites, BuddyPress is using the WordPress Rewrite API, you have no other installation step to achieve. The Legacy directory pages are automatically migrated as specific buddypress custom post type items (let’s call it “BuddyPress directory” post type) used to maintain backward compatibility and make it possible to revert to the BP Legacy URL parser simply by deactivating the BP Rewrites plugin.

If you included BuddyPress pages into a WordPress menu, the menu will automatically be updated to use the “BuddyPress directory” post type.

With BP Rewrites, there’s no need to associate BP Directories with WordPress Pages anymore, as a result the BuddyPress Pages settings administration screen is replaced by the BuddyPress URLs settings administration screen.

Customizing slugs is a piece of cake!

If you go to this new Settings > BuddyPress > URLs administration screen you’ll be able to customize the BuddyPress URL slugs very easily. In the following example I translated the default BuddyPress slugs by their french meaning.

Under the hood changes

To maintain backward compatibility we are still setting global variables (eg:  buddypress()->current_action), so using the specific functions (eg: bp_current_action()) to decide about the behavior of your plugin/theme/custom code can still be done. The only difference is you need to wait a bit longer during the WordPress loading page process to use these functions.

The BP Legacy URL parser is making them available at the 'bp_init' hook (which is very early!) while the BP Rewrite URL parser is now making them available once the WP Query has been parsed: at the 'bp_parse_query' hook. The same “delay” applies to the BuddyPress Components navigation set up, the BuddyPress canonical stack set up and the BuddyPress document title set up.

What still needs to be done?

  • At the risk of being very redundant, we all have to test, test and test again! 
  • We also need to decide about how we can deal with the bad habit we all took when writing BuddyPress URLs into our code base: rather than directly writing URLs by adding chunks after a directory, a single member item or a single group item permalink, we need to introduce Core functions to make sure the custom slugs will be taken in account everywhere. If you look at the code inside the BP Rewrites  src/bp-{component-id}/bp-{component-id}-template.php  files, you’ll see there’s a huge work in front of us, and I’m pretty sure the first alpha version of BP Rewrites missed some “Legacy built” URLs.
  • We’ll probably need to deprecate a lot of functions to achieve the previous point.
  • We need to write PHP Unit Tests !!!
  • We need to document how Plugins/Themes/Custom codes can use our BP Rewrite API.
  • I’m probably missing some points, so don’t hesitate to add your thoughts in comments 👌

Thanks in advance for your contributions 😍

#alpha, #release, #rewrites

July 21 Dev-Chat summary & August 4 Dev-Chat agenda

Hi everyone, sorry this summary is published very late (the day before we’re having another development meeting).

July 21 Dev-Chat summary

9.0.0 early results and feedbacks

  • 9.0.0 “Mico” was released on July 19.
  • Download spike for it happened on July 20 and reached ~33.400 downloads 📈 🎈.
  • Nothing major about it into Support forums, so @imath was able to quote @vapvarun saying: “We did not break anything big” 😅.
  • This BP Blocks focused (& short time framed) release was an interesting experience, thanks to a discussion launched by @johnjamesjacoby a bit before the dev chat, we were able to discuss about the benefits of working from a “feature as a plugin” GitHub repository. In short: it can save us some time ⏱, but bringing back code into our Trac is making us feel safer from being completely GitHub dependent.

10.0.0 is a magic number!

  • 10 is after 9, and we all feel we need to make this release a bit specific.
  • @sbrajesh has been working on the BP Relationship API and is confident he’ll be able to share a first alpha around August 18. 💪
  • Below are our first thoughts about 10.0.0:
    • A “regular” development cycle, Christmas🎄 as a release date could be a good idea!
    • It’s time BuddyPress has a Media Component, Releasing 10.0.0 once it’s ready was suggested 😇
    • Using rewrites to parse BP URLs might be a bit too early but we’ll have a “feature as a plugin” really soon to check what it means in terms of back compatibility with Plugins using the BP Legacy URL parser.
    • Carry on improving the BP REST API by using it more frequently into BP features (like we did for BP Blocks in 9.0.0)
    • A new great BP Theme seems difficult to achieve, unless we have a lot of interested contributors jumping in!
    • A site membership requests feature to compliment the site membership invites.

Nothing’s set in stone yet! Don’t hesitate to show your support for one (or more) of the above points to help us decide. And if you have great ideas, be there to share them with us during our next development meeting 👇

August 4 Dev-Chat Agenda

We had 2 weeks to think about possible features for 10.0.0, let’s decide about the ones we’ll work on during this magically numbered release cycle 🪄.

It will happen on August 4 (tomorrow) at 19:30 UTC and of course in #BuddyPress.

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

#10-0-0, #9-0-0, #agenda, #dev-chat, #summary

BP Dev-Chat Agenda July 21, 2021

Hi!

Our development meeting will happen today (July 21) at 19:30 UTC and of course in #BuddyPress.

Here’s our agenda:

  • 9.0.0 first feedbacks & results
  • 10.0.0 is a symbolic number, first ideas about the focus/features of this development cycle?

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

👋

#10-0-0, #9-0-0, #agenda, #dev-chat

BP Dev-Chat Summary: june 23, 2021

9.0.0 🎯

During yesterday’s development meeting we’ve discussed about @im4th‘s proposal to run the 9.0.0 development cycle very shortly targeting a release date before WordPress 5.8 final release is made available to the planet (~ July 20, 2021)!

@im4th was a bit worried about being too much directive and/or too ambitious, so he specified it was ok to disagree with this proposal. We quickly agreed, but here are some opinions we shared about this idea:

  • “Sounds great.” @sbrajesh
  • “I’m OK with your short cycle just for blocks to support the WP release” @dcavins
  • “I like the idea of very targeted releases” @dcavins
  • “the short release cycle is fine. The reason is good and makes total sense to me” @espellcaste

So we are going to try to do it!

9.0.0 Focus

Blocks!

As WordPress 5.8 is introducing the Widgets Block Editor, we are going to start migrating our legacy widgets. We actually already started the process from the GitHub plugin we use to develop BuddyPress Blocks. The first step is building a block for every BP Widgets and making it possible to transform existing BP Widgets to their corresponding BP Block. BP Widgets won’t disappear in 9.0.0 yet (no worries), but they’ll get a well deserved retirement progressively 😁. You can expect (at least) 10 new BuddyPress Blocks to be introduced in BuddyPress core.

A new follow component (if it’s ready for 9.0.0 release date)

@sbrajesh volunteered to satisfy a frequent request about this feature and he’s very welcome to contribute and lead this effort to make it happen! We talked about the “Followers” plugin @rayisme built which can be a source of inspiration. We’ll organize it from another specific GitHub repository. After the dev-chat, we had a complementary discussion about it, you can have a look at it for more information about early directions about the feature.

And of course, we’ll fix issues related to our latest major release (8.0.0) that may be found.

9.0.0 schedule

  • Beta: July 8.
  • RC: July 12.
  • Final: July 16.

8.0.0 issue “monitoring”

During the dev-chat, we also discussed about the feedbacks we got from the support forums about 8.0.0. We shared our surprise that plugins that appear to rely on BP aren’t tested in the beta window. This is something we need to carry on trying to improve. Working on documentation could be a way. On this topic, @vapvarun informed us he would prepare a list about which documentation resources need updates & then update them one by one 😍. Many thanks to him: it’s a very important work that will benefit to us all.

Next Dev-Chat

It will happen on July 7 at 19:30 UTC and of course in #BuddyPress. If you have ideas or questions, feel free (and we are strongly encouraging you) to comment this summary to share them!

Additional note about meetings during 9.0.0 development cycle

As we are running a short development cycle, @im4th will be available every Wednesday at 19:30 UTC in #BuddyPress for an hour or more time if needed. Don’t hesitate to ping him (@imath) for help or inputs about contributing to this version of BuddyPress.

#9-0-0, #dev-chat, #summary

June 9 Dev-Chat summary & June 23 Dev-Chat agenda

Hi everyone, sorry this summary is published very late (the day before we’re having another development meeting).

June 9 Dev-Chat summary

  • 8.0.0 was released on June 7.
  • Download spike for it happened on June 8 and reached ~27.000 downloads, but I believe we can include the 12.000 packages that were downloaded on release day. The total amount of downloads just after release is 39373.
  • As @vapvarun said: “We did not break anything big” 😅.
  • First issues are about the brand new Members Invitations feature:
    • It looks like some BuddyPress plugins are running some code before BuddyPress is fully ready.
    • It looks like some template overrides made by plugins or themes forgot to update their template pack to include this feature new templates.
    • The 2 above points could have been avoided if their plugin/theme authors had tested our beta/RC releases… That’s why we always ask you for help during our pre-release periods. The more we all test, the best will be the final release.
    • Thanks for @dcavins investigations about these first issues.
  • There will be a 8.1.0 release soon, unless we do a short 9.0.0 release cycle. @im4th would like us to try to have our legacy Widgets migrated as blocks as soon as WordPress 5.8 is released (it is slated to July 20). He’s been working on these 8 new blocks form our BP Blocks GH repository. So far 4 legacy widgets have their corresponding blocks, you can follow his progress (and of course help him) from this GH issue.
  • @vapvarun & @im4th discussed about the BP Attachments Plugin: the goal is to include the User Attachments feature or build a new plugin by the end of the year. The new plugin path is an option considering the various plugins playing into this area.
  • @im4th would also like to progress on migrating BP’s custom URI parser to use WP’s Rewrite API (#4954) from a plugin: if you’re interested about it, let’s team up! Let him know you want to join this project pinging him on WordPress Slack (@imath).

June 23 Dev-Chat Agenda

So here’s the question we need to reply to during tomorrow’s development meeting:

So here’s my plan: July 16 is my birthday and WP 5.8 is slated to July 20. What about releasing BP 9.0 on July 16 with only blocks (and some other fixes of course) ?

@im4th on June 9

It will happen on June 23 at 19:30 UTC and of course in #BuddyPress.

If you have specific/additional points you need to discuss about, please share them into the comments area of this post.

#8-0-0, #9-0-0, #agenda, #dev-chat, #summary

BP 8.0 Introduces Site Membership Invitations

With the release of BuddyPress 8.0, your BuddyPress community can grow organically by referral, attracting new members with personalized invitations from existing members. This feature is deactivated by default but can easily be enabled by visiting the BuddyPress Options screen at WP Admin > Settings > BuddyPress > Options. Enable membership invitations by ticking the checkbox labeled “Allow registered members to invite people to join this network.”

The BuddyPress Options screen, with the new invitations option highlighted.

When invitations are enabled, users can accept an invitation and register for your site even if “Anyone can register” is disabled. This means you can disable public registration and enable invitations to create a site with membership by invitation only. Or, enable public registration and use invitations as just another way to spread the word about your community.

Once invitations are enabled, your members will have access to an Invitations tab in their member profiles. Simply enter a valid email address and optionally add a personalized message to send an invitation to the new potential member via email.

The new member invitations "send invites" screen in a member's profile.

Once invitations are sent, a member can view a list of pending invitations and resend the email or cancel the invitation.

The new member invitations "pending invites" screen in a member's profile.

The invitee receives an email that includes a link to the registration form (with a customized acceptance key that allows access even if public registration is disabled). The message also includes the personalized message from the inviting user and an unsubscribe link which allows the invitee to opt out from future invitations from your site. The email’s content is customizable via the BuddyPress Emails admin interface.

The email sent to the invited user containing a personalized message and acceptance and opt-out links.

If the invitee chooses to accept the invitation, he or she can follow the customized link to the registration form.

The customized registration form that is reached by accepting an invitation.

When a new membership is the result of an invitation, the activity item will be expanded to include the name of the inviter.

The expanded activity item when a new membership is the result of an invitation.

Administration Tools

BuddyPress site admins can also view a list of all invitations and opt-outs from the WP Admin dashboard. The new screens are available at Tools > BuddyPress.

On the “Manage Invitations” screen, site admins can view pending and accepted invitations and choose to resend the email or cancel the invitation.

The WP Admin "Manage Invitation" screen available to BP site admins.

On the “Manage Opt-outs” screen, site admins can see opt-out requests, with a record of what type of email resulted in the opt-out request, and who sent the email. This screen can be used to see if any particular component or plugin or user is abusing the system to send unwanted emails that result in many opt-outs. It is also possible find a specific opt-out by searching for an email address, which is useful, for example, in the case where a user who has previously opted out changes his or her mind and would like to have the opt-out request deleted. Note that the email addresses associated with an opt-out request are hashed before being stored in the database.

The WP Admin "Manage Opt-outs" screen available to BP site admins.

We hope this new feature enriches your BuddyPress commmunity by attracting new, engaged members!

#8-0-0, #invitations, #members