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.

https://forge.joomlapolis.com/projects/cb-activity/issues?query_id=85

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: #329886 3 months 22 hours 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 3 months 2 weeks 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 4 months 2 weeks 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 6 months 2 weeks 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 7 months 2 days 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 7 months 2 days 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 7 months 2 days ago
The new tags feature is now nearly fully complete. Below is what to expect.

Searching


Adding


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 7 months 2 weeks 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 7 months 3 weeks ago
Great
krileon's Avatar
krileon replied the topic: #328326 7 months 3 weeks ago
The actions feature has now been completely rewritten and redesigned making this another feature done. Check it out below!

Selector
OLD
NEW
<==>

Suggestions
OLD
NEW
<==>

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 8 months 2 days 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 8 months 1 week 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.

Desktop


Mobile


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 8 months 1 week ago
Do you also change the buttons to trigger actions ? I see a colored one ;-)
krileon's Avatar
krileon replied the topic: #328153 8 months 1 week 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!
OLD
NEW
<==>

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 8 months 2 weeks 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.
OLD
NEW
<==>
krileon's Avatar
krileon replied the topic: #327822 8 months 3 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 8 months 3 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 8 months 4 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 9 months 16 minutes 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 9 months 21 minutes 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 9 months 5 days 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 9 months 2 weeks 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.
krileon's Avatar
krileon replied the topic: #327501 9 months 3 weeks ago
The old emote system is slowly being transformed into the new Sticker system. The idea behind Stickers is to allow for custom emoji, custom gifs, custom HTML inserts (e.g. could insert a video via sticker tag if you want), and more. Below is current progress on the new Stickers selector.



Migration of the old emotes system into the new stickers system will be applied automatically on install so existing installs won't lose any custom emotes. The above is what that'd look like.

Stickers come with categories as well so everything can be categorized. The search bar will let your users filter the stickers by their sticker tag. Sticker history is also being implemented to keep track of previously used stickers so users can quickly reuse their favorites. Sticker history, like emoji history, will be entirely handled browser side.

Both categories and stickers have access permissions allowing for giving users new stickers based off permissions. If they use a sticker they're not authorized to use it simply replaces to an empty string so no cheating the system!

Most of the above is just concept and only working roughly 40%, but I expect it to be finalized next week. After this is a redesign of Reactions (GIFs) to support Giphy and Tenor for GIF sources. They'll be designed to no longer be some goofy ugly select list, but with categorization, favorites system, searching, and advanced caching to massively speed up the usage of reactions.
krileon's Avatar
krileon replied the topic: #327299 10 months 4 days ago
Like Types are a lot more customizable now. You can choose between several different methods for rendering the icon and several different methods for coloring the text. This will allow for robust configuration of like types. The old twimoji (twitter emoji) like types are also now replaced with unicode emoji.



Similar icon/color behavior will be extended to other usages that have icon selection as well.
krileon's Avatar
krileon replied the topic: #327267 10 months 5 days ago
Ok, Likes display behavior has been drastically improved. Comment footer actions has been redone. Comment likes display has been redone. Comments can now detect if it's a reaction. A reaction is an emoji, sticker, or gif. When it detects it's a reaction it suppresses the background display and enlarges the text to 300%. This allows large emoji reactions. Check it out below!



The like buttons and links will also respond to the type of like you've performed. They also will change their color based off that. This means Like Types configuration has gotten a lot more robust to allow for configuring a types primary color which is used to adjust the text color.

You'll also notice the timestamp behavior for comments now uses a shorter display.

Also forgot to mention almost all the margin spacing between elements has been and is being removed. They are all being converted to flex or grid CSS styles. This allows the usage of the "gap" CSS rule to easily customize the spacing, direction, and order of elements. One example is comments direction in activity is reversed. The default order for comments to top down, but with 1 simple CSS rule it's reversed to fit activity discussion flow.

Facebook Twitter LinkedIn