What Am I Working On?

Feels like a good time to let everyone know my current active project and what to upcoming releases to expect. Currently CB Activity is the active project. This means that's the project being focused on outside of bug fixes since we will of course interrupt any active project to fix bugs. In addition to this Joomla 4 compatibility testing and fixing is still being done as issues are discovered. We've addressed the majority of Joomla 4 issues already in latest build release of CB. More details about CB Activity development below.

CB Activity 6.0.0 will be a significant rewrite. It will only migrate from CB Activity 5.0.0 so please be sure your install is up to date. CB Activity is undergoing massive performance improvements and structure changes to move it towards scaleability. CB Activity 6.0.0 has been performance tested against 5 MILLION unique activity entries and clocks in at a blazing fast 2ms (milliseconds!). This means you'll be able to put your trust into CB Activity to deliver high performance activity streams looong into the future for your site!

All the database queries have been touched.  All costly _users and _comprofiler table joins have been removed. This means posts belonging to deleted user, banned users, or blocked users are allowed. By default deleted user posts will also be deleted, banned users posts will stop linking to their profile, and blocked users posts will become unpublished. This significantly helps optimize the query away from doing these costly joins. Next all ordering has been changed to no longer be date based. This means all posts will display in the order they were created. So you may notice some posts out of order, but that's normal. This leads us into cursor based pagination. Currently CB Activity is using offset pagination. This basically fails after 30+ pages with a database of 1 million activity. This is due to how the database has to go through previous pages to reach the desired page and gets slower with each page. The cursor based pagination completely eliminates this. That means whether page 1 or page 100 you get the same performance and makes infinite scroll actually pleasant to use.

Global posts have been removed. These were always out of context and were used as a strange means of making site wide announcements that showed on every stream out of context. If you need global posts I suggest instead making a custom stream for those global posts (e.g. set its asset to "global") then add that streams asset to any stream you want those global posts shown on.

Pinned posts have been removed. This pulled a post out of its database order and pushed it to the top. This is awful on the query optimization and constantly caused expensive filesorts. There are no plans for an alternative or workaround for pinned post removal. It's officially a deprecated and removed feature.

First page paging limit has been removed. This allowed you supply a different limit for the first page of a stream (e.g. first page shows 5 for first page then 10 for next page). This was removed due to the difficulty of detecting first page during cursor based paging and hurt query caching.

Stored streams are coming. A stored stream is a preconfigured stream object that can be reused. Currently streams are dynamically generated, stored in user session, and rebuilt on each page load. This is slow, prevents linking to activity, and prevents cross-stream rebuilding (e.g. a post from Stream A shown on Stream B will display based off Stream B parameters instead of Stream A parameters). This will bring significantly improved support for UNLIMITED streams.

Likes, Follows, and Notifications "streams" will be replaced with static APIs. It never made sense for likes/follows to be their own streams. These will be changed to a generic set of FAST APIs for liking/following things. Notifications never made sense to allow different notification streams. Notifications will be reduced down purely to be profile notifications (as they are by default) and remove support for making custom notification streams.

A LOT of new features are planned that would just turn this into an even longer wall of text so I highly recommend checking out our forge below to see what's coming.


There isn't a timeline for this at this time, but it's currently under development as we speak and on its way. The primary goal of this release is optimization more than anything, but some great new things will absolutely be coming!

krileon's Avatar
krileon replied the topic: #331572 2 weeks 2 days ago
The new live preview for mentions almost complete. A lot of improvements made to the JavaScript to make this possible. Below is how it currently looks. Still subject to some further design improvements. The inserted mentions do have unique CSS so they can be restyled as needed as well.



As you can see you've a full autocomplete built in. This will search site wide for any user for mentioning. This can be customized to mention: all users, connections only, or moderators only (useful for helpdesk like usecases!).

This should be feature complete sometime next week and then the live preview of hashtags can be implemented.
krileon's Avatar
krileon replied the topic: #331361 4 weeks 2 days ago
Another quick update. A custom WYSIWYG editor is being put together for CB Activity finally. Currently when making a post it's just a textarea input. This will now become a contenteditable div that shows you an exact or close to exact preview of what your post will look like. Example as follows.

krileon's Avatar
krileon replied the topic: #331345 1 month 1 day ago
Been awhile! Things are still moving along. The vast majority of the core code rewrite is now complete.

Nearly all of CB GroupJive activity and notification handling is now in the core. Once that's done CB Gallery will be moved to core as well as privacy control integration with CB Privacy moved to core.

Once that's complete an official Alpha 1 will be release. Alpha 1 will contain no migration code and will block upgrades of existing installs. Beta 1 will have migration code, but should not be used for production. If that goes well we can move into RC 1 or into a stable release. Still got a lot of coding ahead of me, but things are looking good.

In addition to this custom activity has never been easier. There's a new "custom" folder in the "activity" template folder that will easily let you add custom activity display for any activity you want. You can also override the core activity from there as well. The same applies for notifications.

Also performance has yet again been improved even further with more optimal prefetching queries. The number of queries has been reduced by roughly 30%. The prefetching queries have all been further optimized using more accurate indexes further improving their performance as well. The database has been padded to over 10 MILLION activity entries and is running smoothly.
krileon's Avatar
krileon replied the topic: #329886 4 months 3 weeks ago
Stored comment streams are nearly 70% complete with the old stream classes completely gone now in favor of stored objects. Below is initial management view of those streams (more columns and information to be added later).

You'll notice there's several covering different cases. This is because they can each have their own behaviors like turning off the connected access check. When activity is created it can be assigned a comment stream to use for its comments or it can fallback to the activity streams default comment stream which is 1 of the first 2 streams.

So for example this allows the activity entry for a Joomla article to share its activity comments with comments on the activity itself. Same will apply for CB Gallery as it allows the activity entry and the modal window comments to remain in sync.

During migration some comments or activity might be assigned the incorrect stream, but I will be doing my best to try and migrate everything properly. However there are batch tools for reassigning so don't worry you'll be able to mass-reassign your activity or comments if they are migrated to the wrong stream. The migration has to do some asset matching and try to guess the best fit, but hopefully there won't be too many misses when doing that.
krileon's Avatar
krileon replied the topic: #329744 5 months 1 week ago
Just a sneak peek of the stored streams functionality.

Activity Stream Management:

Activity Stream > Global:

Activity Stream > Filters:

Activity Stream > Activity:

I've tried to organize things a bit better so you're not swimming through a sea of tabs. Asset under Global will have a full fieldset explaining what asset is, how to use it, and its various parts. You'll notice Filters now has a Default as well (this is the All filter). This means asset storage and asset display behavior are now finally officially separate to make things less confusing to configure.

Activity Comments no longer provides a full set of comment stream parameters and you will instead simply select the comment stream you want to use for activity. This will default in most cases to the initially created Activity Comments comment stream.

Activity and Comment streams have separate storage and there's a similar view for configuring your comment streams as well. Migration on install will attempt to generate streams and assign activity to them where possible, but may require you to manually assign some activity to their streams.
krileon's Avatar
krileon replied the topic: #329514 6 months 1 week ago
Just another update so you know I'm still here! :laugh: There hasn't been much to showcase lately since it has been mostly architecture changes. Notifications are completely rewritten now with more efficient one-to-many storage behavior, which allows efficiently sending 1 notification to as many users as you need. No more asset dependency for notifications as they now directly have a strict recipient.

Notifications have now been performance tested for at least 3 million rows as proof of scale-ability. It now also uses cursor paging same as everything else and is not dependent on datetime so you will see notifications "out of order" in regards to datetime since they will now always be ordered based on when they were created.

Once activity and comment streams are redone all the CB Auto Actions behavior for CB Activity will be moved into CB Activity. This means things like rendering activity in groups, toggling various notifications, etc.. will just be core behavior. The idea with using CB Auto Actions for this was to test how to best do this and now we've a solid idea on what direction we want this to go. You'll of course still be able to render streams, create activity, etc.. from CB Auto Actions.

A few weeks were also used to finish up and release CBSubs Options .

It looks like now though it's officially time for the really difficult rewrites. Comment and Activity streams. I'll be starting with comments, which will be given some amazing new functionality. Namely comment depth. You'll be able to specify reply depth allowing comments to function as deep discussion chains if desired.
krileon's Avatar
krileon replied the topic: #328871 8 months 1 week ago
Just a little update to let you know I'm still here! The tags feature rewrite is officially done, but nothing to really show as is just some minor improvements to the modal window with most of the changes being internal code improvements.

I'm now starting on rewriting the Following feature. Once that is done it'll finally be time to start the stored streams behavior so wonderful new features can be added.

There have also be further UX improvements. On mobile the Likes/Comments buttons collapse down to icons, extended likes (where it shows usernames) collapses down to likes count, long activity comment streams (>= 50 comments) reverse their display (new comment input at the top with comments showing newest to oldest) from "discussion order" as comment streams that long are too hard to follow to be a discussion anymore. On mobile this behavior is also automatically applied so mobile does not need to scroll to comment. In addition to this on mobile comments are initially collapsed. This gives closer to a Twitter feed experience on mobile.

CB Activity is shaping up to be the most powerful social media platform available! It just keeps getting better!
krileon's Avatar
krileon replied the topic: #328741 8 months 3 weeks ago

Looking forward for a first beta, any date estimate ?

Sorry, no date. I'm rewriting 5 year old code so it's taking much longer than I anticipated and also have to constantly interrupt development to deal with other tasks as well (e.g. fix bugs in other products, add minor features, and handle support). So it's basically done when it's done. I will keep this topic updated though anytime I feel I've something to show to try and be as transparent as possible during the development process.

BTW will you implement Activity sharing so that we can share one post only ?

Yup, sharing is planned to allow for reposting and sharing activity via URL.
activha's Avatar
activha replied the topic: #328738 8 months 3 weeks ago
Really nice !!
Looking forward for a first beta, any date estimate ?

BTW will you implement Activity sharing so that we can share one post only ?
krileon's Avatar
krileon replied the topic: #328725 8 months 3 weeks ago
The new tags feature is now nearly fully complete. Below is what to expect.



You can add multiple tags at once as well. By default tags are for connections only, but a new parameter will allow tagging anyone incase you've no need for the connections system (note it will default to this if connections feature is turned off). Custom tags can be inserted as well by supplying a name that doesn't match a found result (this will always be the first entry).

This is also entirely keyboard navigable for accessibility.
krileon's Avatar
krileon replied the topic: #328548 9 months 1 week ago
The tags redesign is going smoothly. Below is a preview of first redesign implementation.

There's still more work to do, but the general idea is you'll get a much better preview of who has been tagged instead of just a name. For reference the below is how tags currently display.

As you can see it's a pretty big leap in visibility and design.
devkumar2's Avatar
devkumar2 replied the topic: #328468 9 months 1 week ago
krileon's Avatar
krileon replied the topic: #328326 9 months 2 weeks ago
The actions feature has now been completely rewritten and redesigned making this another feature done. Check it out below!



Up next is either Tags or Locations. Likely Tags since it's currently a not very well implemented feature that needs to be simplified and cleaned up more.
krileon's Avatar
krileon replied the topic: #328261 9 months 3 weeks ago
Filters are being put on hold since it requires some reworking of streams that'll happen when they become stored in the database (don't worry this is happening in 6.0.0!). Have shifted focus to finishing out the activity feature buttons to their new designs and functionality. Actions are being tackled this time. Below is current progress of their redesign.

You'll notice it's no longer an ugly dropdown select and is now a button select menu. This is entirely styled by grid and utilizes modern JS template usages to improve the client side performance since old usage is using select2 which is incredibly slow and taxing on the page.
krileon's Avatar
krileon replied the topic: #328161 10 months 6 hours ago
The colored button is the theme selection button. Basically same as Facebook here. It's also now in the message action bar same as emoji, stickers, etc.. selection instead of in the footer.

All buttons have also had their btn-sm classes removed so they're not tiny anymore and are now large enough by default to fit a finger tip in them for mobile accessibility. Below is what this looks like on desktop and mobile currently.



Note this is not done. Many more design improvements are still coming. Currently my goal is to rewrite all the features utilized by streams first THEN streams themselves will be rewritten and stored in the database instead of dynamically generated on display. Once that's done a big overhaul of a lot of template files will take place to further extract PHP out of them so the templates will primarily be HTML as a template should be.

Next feature to be redone is filters. The new design is already coming along. Below is what it looks like now.

The plan is to support keyword searching, mentions searching, and hashtag searching in it as well.
activha's Avatar
activha replied the topic: #328154 10 months 7 hours ago
Do you also change the buttons to trigger actions ? I see a colored one ;-)
krileon's Avatar
krileon replied the topic: #328153 10 months 7 hours ago
The new theme selector is now implemented. It includes a much larger preview window for how themes will work. The theme name is now more than just backend organization and can be used to name the theme in the previews. Take a look below!

It can be entirely navigated using keyboard as well. Every node has its appropriate aria labels for accessibility. It's also no longer a very slow select2 usage and is now a lightning fast templated popover.

Themes themselves are also now full width activity. This means they'll expand edge to edge within their activity containers. Take a look below!

krileon's Avatar
krileon replied the topic: #327975 10 months 1 week ago
The new reactions implementation is now complete. Below is a nice comparison from old to new to give you an idea of how much this feature has been redone.
krileon's Avatar
krileon replied the topic: #327822 10 months 2 weeks ago
Another progress update as promised last week the new reactions implementation is now almost 100% complete. Take a look below!

The searching functionality lets you navigate into favorites, trending, and any supported top level categories from Giphy or Tenor.

Focus is returned to search allowing FULL tab navigation with initial tab landing on the back button (each category, gif, button, and search input contains their respective aria-labels for accessibility).

All that remains is paging support and the functionality to actually favorite gifs, which should all be completed early next week and that will wrap up the Reactions functionality rewrite.

This is also entirely mobile ready out of the box and will scale down to fit the window. The same applies for Stickers.
krileon's Avatar
krileon replied the topic: #327808 10 months 2 weeks ago
We'll upgrade CB 2.x to B5 if it's not a ton of work. It's just to be more compatible with J4 and template redesigns that are now using B5. If it's a ton of work it'll just be skipped. Basically a matter of "can I do this in a week?".

TailwindCSS will be used for CB 3.x and our planned CB Framework and won't be used for CB 2.x. It'll also be used for any plugin switching over to CB Framework and becoming standalone. Our templates are going to be rewritten into Joomla layout files so they integrate seamless with Joomla template layout system. They'll use Twig and CB Framework will be providing a Twig renderer for them. So it's a good time to switch CSS frameworks, but for CB 2.x it wouldn't make sense to switch CSS frameworks like that.
activha's Avatar
activha replied the topic: #327798 10 months 3 weeks ago
I had a look on your roadmap and noticed Tailwind CSS that I did not know but which seems very very interesting.
Will it happen on or before Bootstrap 5 support ? Because that may be interesting to shift to it instead of moving from B4 to B5
Can you share your ideas a little more ?
krileon's Avatar
krileon replied the topic: #327780 10 months 3 weeks ago
Bootstrap 4. Switching to Bootstrap 5 has to happen in CB itself. We then would have to add a bunch of B/C classes to bridge the two. B5 is planned sometime in the next 3 months as it's a ton of work for little to no gain so it's not high priority.
activha's Avatar
activha replied the topic: #327779 10 months 3 weeks ago
Good job !
Just a question : is CB Activity 6 based on Bootstrap 5 or is it still on 4 ?
krileon's Avatar
krileon replied the topic: #327683 10 months 4 weeks ago
This weeks update doesn't contain a nice screenshot, but next update should. For this week I've made a massive optimization push. All the JavaScript has been touched. Massive memory improvements, massive speed improvements, and more have been made. This means things like modal windows, editing activity, selecting an emoji, etc.. have all been significantly sped up due to these performance improvements. In most cases you won't even have time to see the loader icon as it loads THAT fast.

Next week the new Reactions UX and support for Tenor GIFs should be complete. It will feature searching, favorites system (like an optional recent GIFs; if you use discord then it'll be exactly the same as that), and categories.
krileon's Avatar
krileon replied the topic: #327577 11 months 1 week ago
The new Stickers usage is now officially complete. It supports history, searching, categories, HTML based icons, image based icons, CSS class based icons, and CSS styles based icon. Categories and stickers have access permissions to control who can or cannot used a specific sticker.

Slowly, but surely each feature in CB Activity is receiving its much deserved rewrite. They'll all be improved with new, better, UX and features.

Facebook Twitter LinkedIn