RC1 - Profile visitors are not updating

  • Affected App
    WoltLab Suite Forum

    I'm noticing on Woltlab.com that profile visitors are not updating. I visited a few people and noticed I wasn't listed as a visitor.

  • I messaged Alex about this very same thing back on June 30th 2014. I had visited user's profiles, and I wasn't being displayed as the last visitor to their profiles. I had gone back to their profiles at a later time period, and still wasn't listed as viewing their profiles. I'm not sure what's going on there, but I believe back on June 30th 2014, they were running 4.0 version. So this "issue" has been going on since 4.0.X through 4.1 versions apparently.

  • I messaged Alex about this very same thing back on June 30th 2014. I had visited user's profiles, and I wasn't being displayed as the last visitor to their profiles. I had gone back to their profiles at a later time period, and still wasn't listed as viewing their profiles. I'm not sure what's going on there, but I believe back on June 30th 2014, they were running 4.0 version. Patch Day 2014-07-30 Was the only activity on June 30th 2014. So this "issue" has been going on since 4.0.X through 4.1 versions apparently.

    It may have happened in 4.0.x, but I'm sure they correct it because it was working. It is only now that it appears not to be working. So the two are unrelated.

  • Do you have any example user profiles? I tried visiting both of your profiles and I was instantly shown on the first position with the current date and time. I can't remember any changes to the profile visitors since 4.0 …

    Nick Strohm

    You won't appear on the visitors list if you have selected anything but Everyone for Can View My Online Status.

    Huh... Not what I would expect. Sure, I don't want people knowing when I'm online, but I still want to know if people have viewed a profile

  • Huh... Not what I would expect. Sure, I don't want people knowing when I'm online, but I still want to know if people have viewed a profile

    Logging all visits and then filtering the list by those you can see (= see their online status) would be way too inefficient.

    Filtering means you end up with two things:

    • You have less than 9 visitors shown because some of them have been filtered out, ironically if you click on the View all it will yield a much larger list, you would expect to see at least 9 visitors right away
    • You fetch the latest X entries and check if you can view all of them, if you end up with less than 9, fetch more and check again, in theory this can go to infinity

    Option 1 is clearly not what you would except to happen. Option 2 on the other hand is a performance nightmare because the required effort is no more predictable and loading the user settings (and possible the list of people they follow) is rather expensive.

    Long story short, the system works that way because it is the only possible way to fetch this rather irrelevant data (*) without having any impact on the page load time / performance.

    (*) It might be interesting to see who exactly viewed a profile, but the effort it takes to generate an accurate list does not match the importance of this feature.

  • Logging all visits and then filtering the list by those you can see (= see their online status) would be way too inefficient.

    Filtering means you end up with two things:

    • You have less than 9 visitors shown because some of them have been filtered out, ironically if you click on the View all it will yield a much larger list, you would expect to see at least 9 visitors right away
    • You fetch the latest X entries and check if you can view all of them, if you end up with less than 9, fetch more and check again, in theory this can go to infinity

    Option 1 is clearly not what you would except to happen. Option 2 on the other hand is a performance nightmare because the required effort is no more predictable and loading the user settings (and possible the list of people they follow) is rather expensive.

    Long story short, the system works that way because it is the only possible way to fetch this rather irrelevant data (*) without having any impact on the page load time / performance.

    (*) It might be interesting to see who exactly viewed a profile, but the effort it takes to generate an accurate list does not match the importance of this feature.

    I'm wondering if we're talking about the same thing (or maybe you misunderstood me)....

    I'm OK with it showing only the most recent 9 people. I understand and appreciate that it keeps performance well managed. ;)

    I just did not expect it to exclude people who are invisible. I fail to understand how excluding those people improves performance.

  • What happens though, if someone has a harasser bothering them, but the harasser uses certain online status settings so they never show up as a profile visitor, the victim would never know they've been stalked by their harasser for proof in future incidents? No way to log it, screen shot it, etc.

    "John was harassing me mr admin on Feb 15th 2015 at 5:30pm, here's a screen shot of my/Sarah's profile with John visiting my/her profile at 5:30pm." Oh wait, I can't screen shot the proof, because John used "Registered Users" as Online Status viewing settings, and never shows up as profile visitor. Oops.

    Technically, it should only exclude "Guests" as profile visitors though, for all obvious reasons, they aren't in the system. But no matter a person's user online status settings are, they should display as profile visitor, because they're in the system.

  • I just did not expect it to exclude people who are invisible. I fail to understand how excluding those people improves performance.

    Not saving them makes no difference, but when it comes to display the list of visitors then you got a problem. That was my whole point ;)

    Edit: In case this helps, we're filtering users with (limited) invisibility out to preserve us from running into a performance nightmare when it comes to display the data. In fact the data in database is pre-filtered and contains only visitors where we know that we can safely expose these visitors without violating their privacy settings.

  • Out of curiosity, how many visitors are expected to hit one specific profile at a time to make much difference in performance? Unless you make a sticky thread or announcement for your hundreds or thousands of members to hit one profile at the same exact time period? The only issue I have about all this, is harassers, stalkers, perverts, etc stalking female profiles, and females would never know it.

    Because their harassers or whatever uses another setting other than "Everyone" for viewing their user online status. Sure, the victim could add staff members or report a harassing conversation started by the harasser to the victim, but then again there's still no proof that the harassers went to their profiles repeatedly. And we all know the blocking feature doesn't help in this case (keeping harassers at bay, away from their profiles totally, etc). The privacy thing is good too of course, but at the same time, lacks in other aspects of it.

    Almost as if performance out-weighs stronger privacy features and enhancements. Edit, I think I know what you're referring to about profile visitors, if you have like a few hundred profile visitors to certain users profiles. But still, should have a way to view at least those in the system itself.

    Edited 2 times, last by Smooey (February 15, 2015 at 1:16 AM).

  • Out of curiosity, how many visitors are expected to hit one specific profile at a time to make much difference in performance?

    Please read my full explanation, it is not about concurrent visitors! The relevant part is the thing about fetching visitors again and again until you have 9 visitors that are visible to you due to their privacy settings. For each user we would need to look at their privacy setting and if they selected their followers, we need to fetch the users they're following. That's a lot of roundtrips and potentially a lot of data.

    I guess it is a bit difficult to understand the technical aspect of this, mostly because you lack the knowledge of how the normalized data is stored and how many roundtrips you need to fetch data in small potions (since you don't want to load everything but just need a tiny fraction).

    After all, we're building a software which runs smooth in small forums and those with millions of posts, in order to achieve that you must look closely at the implications when working with big data. We don't care if a feature is okay when ran against a small database, because if it fails with big data then it's a no-go. Writing an efficient software is not about looking at your test sample forum, but looking at how things can turn out.

  • Edit: In case this helps, we're filtering users with (limited) invisibility out to preserve us from running into a performance nightmare when it comes to display the data. In fact the data in database is pre-filtered and contains only visitors where we know that we can safely expose these visitors without violating their privacy settings.

    My whole point was... Don't filter them. All views should be recorded. The privacy setting is only for people to know if you're online or not. It says nothing about not recording who's profiles you view.

    Problem solved.

    • You keep your privacy informing people if you're online or not
    • All profile views are indiscriminately recorded, keep with accuracy
    • You save on performance

    Keeping it simple is usually the best option. ;)

    Edited once, last by Aslan (February 15, 2015 at 1:44 AM).

  • Please read my full explanation, it is not about concurrent visitors! The relevant part is the thing about fetching visitors again and again until you have 9 visitors that are visible to you due to their privacy settings. For each user we would need to look at their privacy setting and if they selected their followers, we need to fetch the users they're following. That's a lot of roundtrips and potentially a lot of data.

    I guess it is a bit difficult to understand the technical aspect of this, mostly because you lack the knowledge of how the normalized data is stored and how many roundtrips you need to fetch data in small potions (since you don't want to load everything but just need a tiny fraction).

    After all, we're building a software which runs smooth in small forums and those with millions of posts, in order to achieve that you must look closely at the implications when working with big data. We don't care if a feature is okay when ran against a small database, because if it fails with big data then it's a no-go. Writing an efficient software is not about looking at your test sample forum, but looking at how things can turn out.

    I'm on board with you now, I follow you. lol. I guess at this point, even if a request for a plugin, is out of question. And everyone will have to live with the fact that they can't view all (actual) profile visitors, even if they're harassed, stalked, etc. It's a shame though. Thanks for detailed explanation Alex.

  • Don't filter them. All views should be recorded. The privacy setting is only for people to know if you're online or not. It says nothing about not recording who's profiles you view.

    This is a popular misconception when it comes to privacy, think of it as bread crumbs, you can collect all these pieces and reconstruct everything. This is a bit like the cell phone towers, they record which phone is currently nearby in order to provide a smooth service. Yet if you take the data from these towsers, you can reconstruct what a single person with his/her cell phone was, where they were, how long they stayed. A profile visit on its own tells nothing, but a whole lot of them tell a story.

    Back on the topic, you're missing a point there. Since you're invisible, you're effectively not online for others. How can you visit profiles if you were offline at that time? No matter from which side you look at it, you will never cover everyone's needs and there is always someone who wants it different.

    Considering that the way it currently behaves is perfectly fine for the absolute majority and this is such a tiny feature, we'll not change it.

  • This is a popular misconception when it comes to privacy, think of it as bread crumbs, you can collect all these pieces and reconstruct everything. This is a bit like the cell phone towers, they record which phone is currently nearby in order to provide a smooth service. Yet if you take the data from these towsers, you can reconstruct what a single person with his/her cell phone was, where they were, how long they stayed. A profile visit on its own tells nothing, but a whole lot of them tell a story.

    By that line of thinking... So do post. And I want that story.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!