BuddyPress 5.0.0-beta1

Hi !

Weโ€™ve just published the 1st beta version of our next major release. You can read more about it here: https://buddypress.org/2019/08/buddypress-5-0-0-beta1/

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๐Ÿ‘จ๐Ÿฝโ€๐Ÿ’ป

#5-0-0

BP Dev Chat Summary, August 21

5.0.0โ€™s schedule

Here are three important dates about our next major version:

  1. First beta release: August 28.
  2. First release candidate: ~ September 16.
  3. 5.0.0 release: ~ September 30.

BP Invitations API

@dcavins has committed this new API to manage Invitations/Membership Requests across components. The first BP Component to enjoy it is naturally the Groups one. Many thanks and huge congratulations for the accomplished work ๐Ÿ‘๐Ÿค. Seeย #6210ย for more details about it.

BP REST API

Code improvements

  • He also adapted the Group Invites and the Group Membership Requests endpoints so that they are now using the BP Invitations API.
  • The create_item() method of the Group Membership controller is now taking in charge the action to let members join a public group.
  • WP_REST_Server::DELETABLE methods are now all returning an object with two keys. The first one informs about the success of the DELETE request and the second one contains the previous BP object as it existed before its deletion.

Documentation

The content is almost ready! Documenting the Group Invites and the Group Membership Requests endpoints (the last ones) will be achieved before the beta release.

Making it available from BuddyPress.org is in very good hands @johnjamesjacoby will work on it asap to try to have it ready around beta release so that it should be easier for contributors to play with the BP REST API during our Beta/RC release steps.

How the BP REST API will be included into BuddyPress Core for this beta release?

To keep working from our BP REST GitHub repository to fix potential bugs / improvements, we will include it during our build process a bit like what happens today with BP CLI: see this comment on #7156 for more details.

This means:

  • the BP REST API plugin, if active, will take over BuddyPress, making it easier to carry on maintaining it from GitHub during the Beta/RC time.
  • If contributors are using trunk to beta test, theyโ€™ll need to npm install & grunt build to get the BP REST API into this build.

5.0.0 milestoneโ€™s remaining tickets

  • #8046 & 8093ย have been moved to next release.
  • #8103 (BP Legacy Companion Stylesheet for Twenty Nineteen) is kept during the beta/RC to leave a last opportunity to include it before final release if it gets some contributions/testing.
  • #8123 will be committed asap & before beta release.

Beta Release tasks

  • @im4th will take in charge the beta release packaging
  • @dcavins will try to post on this blog to introduce the BP Invitations API
  • We still need to write the announcement post for BuddyPress.org. A draft for it is available on BuddyPress.org (the title is BuddyPress 5.0.0-beta1), donโ€™t hesitate to add the information you think are important to mention. Iโ€™ll polish the writing part ๐Ÿ–ผ ๐Ÿ“

Next dev-chat

It will happen onย September 4th at 19:00 UTCย inย #BuddyPressย slack channel. Of course is something goes wrong with right after the beta release, weโ€™ll always be able to meet next week.

#5-0-0

BP Dev Chat Agenda: August 21, 2019

This is the agenda for our next Dev Chat which will happen thisย Wednesday at 19:00ย UTC inย #BuddyPress.

  1. BP REST API
    • Latest updates about the code.
    • Documentation.
    • Letโ€™s decide about how we will include the BP REST API in the beta release, seeย #7156
  2. Potential tickets to move to next/future release.
  3. Beta Release tasks repartition (Beta1 is scheduled to the week after this dev-chat).

If you have anything you wish to add to this agenda or specific items related to those listed above, please leave a comment below.

#5-0-0

BP Dev Chat Summary: August 7, 2019

5.0.0โ€™s schedule

At the end of our discussions, considering the work we still have to achieve to feel satisfied about ourselves, weโ€™ve decided to postpone the first beta release to the last week of August. Our new targeted date for 5.0.0-beta 1 is August 28. Thanks for everyoneโ€™s comprehension ๐Ÿ™

BP REST API focus

NB: we didnโ€™t have enough time to decide about โ€œhow to include the BP REST API into BuddyPress Coreโ€œ. We will do it during our next dev chat. In the meantime, youโ€™re welcome to contribute to #7156.

Documentation

Weโ€™re making great progress on this topic. More than 50% of our endpoints are now documented. @im4th shared the link of the testing site we use waiting for #4601 to be fixed (@im4th and @espellcaste are ๐Ÿคž).

Writing this documentation is also very helpful to improve the API code: 10 pull requests were generated and merged so far.

@im4th is ๐Ÿ’ฏ confident all the endpoints introduced into version 5.0.0 of BuddyPress will be documented before its public release.

Code improvements

In addition to these PRs @dcavins has been working hard on adapting the Group Invites and the Group Request Membership endpoints to the new BP Invitations API. @espellcaste & @im4th โ€˜s reviews of his patches led to 2 important conversations during the dev chat.

What endpoint should handle the action โ€œa user joins a groupโ€?

While @boonebgorges intuitively expects a POST request to the Group Membership endpoint to succeed if the group is public, I was wondering if โ€œjoining a public groupโ€ could be interpreted as โ€œrequesting an already accepted membership requestโ€ and as such use the Group Request Membership endpoint instead. @dcavins informed the second option would generate a consistency issue as the response object wouldnโ€™t fit with โ€œjoining a public groupโ€œ. We decided to use the first option (See PR209).

How should we build the response object to the WP_REST_Server::DELETABLE methods?

So far we were returning the object as it existed before its deletion for all endpoints excepting for the Members endpoint. The Members controller is actually extending the WordPress Users one : so we decided to follow WordPress way of building the response object in this case. See PR210.

BP Invitations API

Seeย #6210ย for more details about the API. @im4th & @dcavins are confident about committing the changes into BuddyPress Core to make the API available to everyone for 5.0.0 ๐Ÿ™Œ. A Back compatibility mechanism is in place and our testing did great. The soonest the patch will be converted, the best it will be to finish the needed adaptations of the BP REST API (See PR206). @dcavins will work asap ๐Ÿ’ช on the committing task, making sure to split the patch into small & consistent chunks.

5.0.0 milestoneโ€™s tickets

As we were already playing overtimes for 30 minutes for this dev chat, we will decide about whether to move the remaining tickets to a next/future release or not during our next dev chat.

If you have CSS skills, you are very welcome to contribute on #8103. If youโ€™re not familiar with working with Trac patches, weโ€™ve put together this Twenty Nineteen child theme to make things easier for you.

Next dev-chat

It will happen onย August 21th at 19:00 UTCย inย #BuddyPressย slack channel. As @im4th said at the end of this dev-chat:

Letโ€™s meet again in 2 weeks with everything ready for a beta release the week afterย ๐Ÿ’ช ๐Ÿ™Œ

#5-0-0

BP Dev Chat Agenda: August 7, 2019

This is the agenda for our next Dev Chat which will happen this Wednesday at 19:00 UTC in #BuddyPress.

PS: This will be our last Dev Chat before the release of the 5.0.0-beta1 ๐Ÿ˜จ!

  1. BP REST API
    • Letโ€™s decide about how we will include the BP REST API in this release, see #7156
    • Latest updates about the code.
    • Progress made on the documentation.
  2. BP Invitations API (see #6210 & PR197).
  3. Potential tickets to move to next/future release.

If you have anything you wish to add to this agenda or specific items related to those listed above, please leave a comment below.

#5-0-0

A category to store your BuddyPress blocks

Dear BuddyPress block developers,

We thought about you! As the BP REST API will be included into our next major release (5.0.0), it will open up new opportunities to create great features and of course BuddyPress blocks. To make things obvious for our end users, what about storing them into the BuddyPress blocks category weโ€™ve just added to BuddyPress Core (See changeset #12418) ?

Screenshot of the Block selector

To do so, when registering your block type, youโ€™ll just need to set the category property of your block to buddypress. Hereโ€™s an example below.

( function( blocks, element ) {
    var el = element.createElement;

    blocks.registerBlockType( 'bpeb/example-block', {
        title: 'BuddyPress example block',
        description: 'A BuddyPress example block to show how to be listed into the BuddyPress blocks category.',
        icon: 'buddicons-groups',
        category: 'buddypress',
        edit: function() {
            return el(
                'p',
                {},
                'BuddyPress blocks are stored into the BuddyPress blocks category.'
            );
        },
        save: function() {
            return el(
                'p',
                {},
                'BuddyPress blocks are stored into the BuddyPress blocks category.'
            );
        },
    } );
}(
    window.wp.blocks,
    window.wp.element
) );

Get the BuddyPress Example Block from Gist.GitHub | Block Editor Handbook

NB: This category will be available as soon as 5.0.0 will be released.

๐Ÿ˜‰ ๐Ÿ‘‹

#5-0-0

BP Dev Chat Summary: July 24, 2019

Feedbacks about 4.4.0 Security & Maintenance release

4.4.0 has been released on July 23rd and has been downloaded more than 30,000 times since then. No specific feedbacks were posted on our support forums about it. Weโ€™ll keep an eye on how it evolves in the coming days but it looks like it went smoothly.

BP REST API

Documentation site

@johnjamesjacoby is assigned to the Meta Trac ticket which goal is to prepare existing developer.buddypress.org to house the BP REST API documentation.

@espellcaste shared his worries about the time remaining until 5.0.0 release. I think itโ€™s still doable and if weโ€™re short, we will be able to use our ยซ test drive ยป as a fallback. Weโ€™ll only have to buy a domain name more meaningful.

As discussed during the previous dev-chat, Iโ€™ve started writing the documentation into the ยซ WordPress Handbook ยป format copy-pasting parts of the Restsplain generated documentation. Hereโ€™s a first page for the Components endpoint.

The interesting benefit about doing so is the fact itโ€™s a good way to review the BP REST API. If members of the team want to participate to this effort, they just need to ping @im4th to get admin access to the site.

Code improvements

To illustrate the benefit described in the above paragraph, Iโ€™ve (I am @im4th ๐Ÿ˜) shared this pull request (#196) about improving the consistency of the Componentโ€™s endpoint PUT method arguments description/documentation. @espellcaste will look into it and check the other endpoints about the subject.

@espellcaste also worked on adding hooks to the prepare_links() methods when needed and to items collection query parameters. He will also look into this issue to try to understand why a notice error is thrown when removing the avatar original file.

Finally, although @dcavins couldnโ€™t attend our dev-chat, heโ€™s been hardly working on adapting the BP REST API (197) to go along with the new Invitation API (#6210) heโ€™s been building for BuddyPress. I will look into it more deeply asap. My very first feedback would be to rebase the pull request as there is one merge conflict (probably due to the hooks recently added by @espellcaste)

5.0.0 milestoneโ€™s tickets

At the end of the previous topic, @im4th informed he would probably open a new ticket to improve the bp.apiRequest : the dataType argument should default to json, doing so it will save some time to plugin developers using it in the future as REST replies are in JSON.

We did a quick review of the โ€œnewโ€ tickets having patches, in particular @boonebgorges and @im4th talked about #8013 to decide about the name of the additional key to use for the exporter item names displayed to regular users. @im4th agreed with @boonebgorges it was best to bp prefix the name.

@espellcaste decided to move #7018 to next release to concentrate on the last BP REST API tasks.

About the list of patches I mentioned into the July 10thโ€™s dev-chat summary. Iโ€™ve decided to commit the three crossed out ones (the first 3, if you prefer) below and leave some more time to the BP Legacy Twenty Nineteen companion stylesheet.

About this last ticket, it would be great to have some feedbacks about it as Iโ€™m unsure I made the right CSS decisions about it.

BuddyPress & the Gutenberg project

As requested by @espellcaste into this comment of the dev-chat agenda we kept some time to discuss about this topic or more precisely about the first ideas we have to benefit from the Gutenberg project (Phase 1 โ€“ editor & Phase 2 โ€“ widgets).

The first very important thing @im4th wanted to highlight is:

BuddyPress Blocks will be easier to create by us or plugin developers thanks to the BP REST API: I think itโ€™s a very important point, because the Gutenberg project mainly use REST.

Iโ€™ve been thinking about this since the dev-chat and I think we really need to have this ticket fixed for 5.0.0 release : #8116 BP Blocks category.

Then we had difficulties to understand each others and I think thatโ€™s because the Block Editor is often called Gutenberg ๐Ÿ˜‡.

Theme Compat API โ€œvsโ€ Block API

@boonebgorges shared very important points comparing the Block API to our Theme compatibility API.

Gutenberg does something similar to what our theme compat does. It provides a way to place dynamic content in the โ€œcontentโ€ area of a theme template.

Retrospectively, I would add that the Gutenberg team is working on a โ€œJSON templatingโ€ feature, but Iโ€™m unsure it will be overridable : I think โ€œoverridabilityโ€ is a great feature of our Theme Compat API.

What does the BuddyPress community want/need ?

@espellcaste think itโ€™s important we get our community members expectations about this topic.

another thing I think would be important is to see what the community wantโ€ฆ try to get the info somehowโ€ฆ. specially from bp theme authorsโ€ฆ

A lot of things could be improved but that doesnโ€™t mean it will have the most impactโ€ฆ

I think heโ€™s 100% right, so instead of dropping the ideas we talked about during the dev-chat, I guess we need to organize them a little and let you give us your opinions about it. It would help us a lot to decide what will be our next steps into this area. So stay tuned! Weโ€™ll soon be back to you ๐Ÿค—.

Next dev-chat

It will happen onย August 7th at 19:00 UTCย inย #BuddyPressย slack channel. We will have 1 week left beforeย 5.0.0 first betaย so letโ€™s get our last tasks done during the next 2 weeks ๐Ÿ’ช.

#4-4-0, #5-0-0