How we count our users
This post is also available in: 日本語 Русский Français Español Deutsch Nederlands Српски Português Български 简体中文
Update: The project to remove our unique ID stalled after we encountered unexpected deviations in the number of users counted using other methods. We spent a lot of time researching and understanding the reasons for this. We have concluded that the numbers we get using a unique id are more accurate, so we are sticking with it at the moment. It’s as important not to over-count as it is not to under-count as we develop Vivaldi.
Starting with Vivaldi 2.7, user counting was changed to gradually drop the use of unique IDs.
- For now an additional request to our user counting endpoint is made. This request is similar to the old one and includes the unique ID, but contains additional parameters that will be used by the new unique ID-free implementation.
- A few versions later, the old user counting request will be removed.
- Even later, the unique ID will be eliminated from the new request altogether. We will keep generating it locally to aid with counting on computers with several Vivaldi installations, but it will only be used locally.
The code used to generate the new request is written entirely in C++ and will be published with our source releases, allowing you to check that the code does what we claim it does.
Implementing user counting
We decided to change how we count Vivaldi’s users because some people see the use of a unique ID as a form of tracking and we want to avoid that. When we found a better way to count our users in a way that doesn’t require the unique ID, we decided to implement it.
The many stages of the implementation are required to make sure the new code works as intended and that we can trust the numbers reported by the new code.
Why we count Vivaldi users?
We need to know the number of our users because having more users gives us the ability to develop Vivaldi. This mostly comes down to building partnerships for making revenue and technical partnerships, such as the one with Razer Chroma. The more accurate the numbers, the better deals and support we can get.
We count:
- daily users;
- weekly users;
- monthly users.
We also get information about:
- when a new user runs Vivaldi for the first time;
- how long the user has had the browser;
- the number of inactive days to see returning users;
- CPU architecture;
- screen resolution;
- user agent.
The last three aren’t related to user counting, but the information lets us know what sort of machines we are designing Vivaldi for.
Counting multiple installations
Since it’s possible to have multiple Vivaldi instances on the same system through, for example, Standalone installs, this makes counting more difficult.
When someone installs Vivaldi multiple times on their computer, using separate profiles, we want to count them as one user.
On the other hand, when several people use their own standalone Vivaldi installation (using their own portable drive) on the same computer, on the same Operating System account, we want to count them as separate users.
To be able to distinguish between those cases, we keep one copy of the unique ID as part of the LocalState file and one copy within the OS user profile. If one of the copies is missing, it is set up again using the other available copy. If both copies are present but do not match, we can assume that we are running a standalone installation that was moved to another system (second scenario). In all other cases, we assume the first scenario.
For that purpose, we will keep generating and storing unique IDs after we have stopped sending them. They will only be used to know whether Vivaldi has to cooperate with other installations on the system to make sure to only be counted once.