Community Builder 3.0 Planning Update

After a lot of internal discussions we've another update regarding the plans for Community Builder 3.0. We've touched on a few things in this blog about CB 3.0, but we've some more news about the direction we'd like to take CB 3.0. Check out the details below!

We've done a heavy review of Joomla 4 and the direction it is going. Joomla 4 now has a completely and totally modern framework. Most JavaScript has been rewritten to ES6 vanilla JS and continues its efforts to remove jQuery. This is also the direction we want to go. Basically Joomla 4 and CB 3.x ideals are in line with one another.

Our original plan was to continue to distance ourselves from Joomla by using less and less Joomla API. The end result would be a standalone application within Joomla. However this brought up the question of what this does for YOU as a member of this community and frankly it doesn't do a whole lot. Just makes things slightly easier for us to maintain. The main goal was to eventually reach a point where we could release a standalone version of Community Builder, but that's a non-issue because our framework would just be Joomlas so we can still do exactly that.

Currently we've now decided to effectively go more or less all-in on Joomla 4. We'll be rewriting CB 3.x to follow Joomla 4 modern component structure. This will allow CB to more deeply integrate with Joomla. This means we'll be able to provide Joomla powered CLI, WebService, and API endpoints for CB to allow for easier external integration with CB (e.g. a mobile app could interact with CB easily).

The biggest benefit of going effectively all-in is we'll be expanding our features into Joomla scope. What we mean by this is CB fields will no longer be CB fields. They will be Joomla fields and in theory could be used anywhere Joomla fields can be used. In addition to this we'd like to drop our plugin system. Instead of installing CB plugins as CB plugins they'll become standalone Joomla extensions. So for example if you just want an activity stream you could install CB Activity and nothing else. The way that will work is we will be extracting all of our API into our CBLib as is the case for currently a large portion of our API. This generic library can then be utilized by the standalone CB extensions. The CB Joomla component itself will exclusively provide profiles.

Now as for the plans for Standalone and Wordpress. We still want to do those and this is essentially how it'd work. First we'd create a custom Joomla build. This is easy enough just using normal build processes internally as Joomlas core components can easily be excluded using this. This custom build would restrict Joomla features to only those relevant to CB to provide a streamlined experience. This would include custom backend and frontend templates. We would then effectively have a standalone CB running on Joomla framework. The idea is then to just run this inside Wordpress with a Wordpress plugin to bridge the two. Wordpress integration would be very far off as would Standalone since we've a lot of work preparing CB 3.x and our plugins as is.

In regards to Symfony we will still be using what Symfony components that are relevant to our needs so that's basically unchanged. Specifically we will be using Twig as our template engine, which will also just be Joomla layouts to allow overriding.

For our JavaScript framework we have chosen to go with AlpineJS. This is to allow us to make simple JS components. We will be dropping jQuery entirely. Any jQuery loaded by for example CB Auto Actions and its Code action will just call Joomlas API to do so.

Now for the hard part. The timeline. We don't really have one right now. We need Joomla 4 to reach a stable state before we can technically begin this rewrite. So we're first waiting on that, BUT that's not going to stop development. We will continue to be working on CB 2.x and its plugins even while CB 3.x is being developed since CB 3.x will take quite some time to rewrite into the new Joomla 4 structure.

You maybe wondering how things will work moving from CB 2.x to 3.x and the plan is to provide migration from the final release of CB 2.x and its respective plugins. This means migration from CB 1.x to CB 3.x will not be possible and you will have to daisy chain your upgrades if you're still on CB 1.x. The same applies for plugins as we want to take this chance to clear out old code.

Hope this brings some further clarity for the future of CB. That we're still here and will continue to be here for years to come. You can depend on us to continue pushing forward. Please keep in mind this is just a sharing of internal discussion and planning as we thought it'd be a good idea to get the community involved so this is all subject to change of course.

activha's Avatar
activha replied the topic: #324020 3 years 3 weeks ago
Wonderful news !
We've been relying on you and bet on your developments for years and that was the best decision we ever made !
thanks for your wise next steps

Facebook Twitter LinkedIn