···9292 <div class="data">
9393 Data: <a href="https://relay1.us-east.bsky.network/">Bluesky</a> (<span id="atUpdated"></span>)
9494 </div>
9595- </div>
9595+ </div>
96969797+ <div class="insert-metrics-help"></div>
9898+9999+ </div>
971009898- <details class="help tab metric-help" id="social-metrics-hhi">
9999- <summary>What is HHI?</summary>
100100- <div class="panel">
101101- <p>
102102- The <a href="https://en.wikipedia.org/wiki/Herfindahl%E2%80%93Hirschman_index">Herfindahl–Hirschman
103103- Index</a> (<strong>HHI</strong>) is an indicator from economics used to measure competition between
104104- firms in an industry.
105105- Mathematically, HHI is the sum of the squares of market shares of all servers.
106106- Values close to zero indicate perfectly competitive markets (eg. many servers, with users
107107- spread evenly), while values close to 10000 indicate highly concentrated monopolies (eg.
108108- most users on a single server). In economics, values below 100 are considered
109109- "Highly Competitive", below 1500 is "Unconcentrated", and above 2500 is
110110- considered "Highly Concentrated".
111111- </p>
112112- <p>
113113- This method of measuring centralization for Internet systems is described in the paper
114114- <a href="https://doi.org/10.1145/3718958.3750492">"Formalizing Dependence of Web Infrastructure"
115115- by Habib et al.</a>, which appeared in the <a href="https://conferences.sigcomm.org/sigcomm/2025/">ACM
116116- SIGCOMM conference in 2025</a>. The authors motivate this measure by describing it as a special case
117117- of the "Earth Mover Distance": the amount of "work" it would take to change one statistical distribution
118118- into another. Here, the empirical distribution measured for the system's current deployment is
119119- compared to an idealized fully-decentralized distribution.
120120- </p>
121121- </div>
122122- </details>
123123- <details class="help tab metric-help" id="social-metrics-shannon">
124124- <summary>What is the Shannon Index?</summary>
125125- <div class="panel">
101101+102102+ <div class="container">
103103+ <h2>Hosting Services</h2>
104104+105105+ <details class="help" id="hosting-details">
106106+ <summary>What does this measure?</summary>
107107+ <div>
126108 <p>
127127- The <a href="https://en.wikipedia.org/wiki/Diversity_index#Shannon_index">Shannon Index</a>
128128- is an entropy-based measure used in ecological studies to measure population diversity.
129129- It is computed as Shannon entropy using the natural log: the negative sum over all servers of the "market
130130- share" times the log of the market share. Lower values indicate lower entropy (a high concentration of one species),
131131- while higher values indicate a more even population. In this context,
132132- the maximum value is the natural log of the number of servers.
109109+ For web serving, this site uses data from a number of sources that have been aggregated by the <a href="https://iyp.iijlab.net/">Internet Yellow Pages</a>
110110+ project from <a href="https://www.iijlab.net/">the IIJ Research Laboratory</a>. It uses the worldwide <a href="https://tranco-list.eu/">Tranco Top 1m</a> list of the million most popular websites, compiled by the DistriNet research group. The URLs of these websites'
111111+ front pages are mapped to IP addresses, which are then mapped to <a href="https://www.ripe.net/manage-ips-and-asns/as-numbers/">AS numbers.</a>
112112+ We use the <a href="https://blog.apnic.net/2023/03/21/improving-the-inference-of-sibling-autonomous-systems/">sibling AS</a> dataset from the <a href="https://inetintel.notion.site/Internet-Intelligence-Lab-Georgia-Tech-1a739459e28a4e8084556a5ef518c009">Internet Intelligence Research Lab</a> to aggregate ASes run by the same organization.
113113+ The process is similar to that used by <a href="https://doi.org/10.1145/3718958.3750492">Habib et al. in SIGCOMM 2025</a>, though we use a different data
114114+ source and compute statistics worldwide.
115115+ Note that because this style of measurement looks at the main URL for the site's front page, it will, in many cases,
116116+ count the CDN serving a site rather than the site's origin server.
133117 </p>
134118 <p>
135135- Because the Shannon Index is logarithmic, it is more responsive than HHI to changes in the "smaller players":
136136- participants that are already large do not change the index much when their size changes. Changes in the smaller
137137- participants, on the other hand, are more noticeable in the computed index. Thus, it is a good way of looking
138138- at systems that are undergoing change at the smaller end of the hosting scale.
119119+ For the public git forges, this site uses the number of "origins" of type "git" archived
120120+ by <a href="https://softwareheritage.org">Software Heritage</a>; this is
121121+ roughly equivalent to the number of git repositories they crawl. Software
122122+ Heritage's archive coverage can be found on <a href="https://archive.softwareheritage.org/">their coverage page</a>.
123123+ The likely undercounts the true number of repositories, and each "fork" counts as a separate repository.
139124 </p>
140125 </div>
141141- </details>
142142- </div>
143143-144144-145145- <div class="container">
146146- <h2>Hosting Services</h2>
126126+ </details>
147127148128 <div class="rating">
149149- <h3>Web Hosting</h3>
129129+ <h3>Web Serving</h3>
150130 <h5>Cloudflare, AWS, etc.</h5>
151131 <div id="gageHosting" class="gage"></div>
152132 <div class="shannon">
153133 <div class="index">Shannon Index: <span id="hostingShannon"></span></div>
154134 </div>
135135+ <div class="spacer"></div>
155136 <table>
156137 <tr><th>Hosts</th><td><span id="hostingServers"></span></td></tr>
157138 <tr><th>Biggest</th><td><span id="hostingBiggestAbs"></span></td><td>(<span id="hostingBiggestPct"></span>%)</td></tr>
158139 <tr><th>Rest</th><td><span id="hostingRestAbs"></span></td><td>(<span id="hostingRestPct"></span>%)</td></tr>
159140 </table>
160160- Data: <a href="https://zenodo.org/records/15733582">Habib et al.</a>
141141+ <div class="data">
142142+ Data: <a href="https://iyp.iijlab.net/">IYP</a> (<span id="hostingUpdated"></span>)
143143+ </div>
161144 </div>
162145163146 <div class="rating">
···174157 <tr><th>Biggest</th><td><span id="gitBiggestAbs"></span></td><td>(<span id="gitBiggestPct"></span>%)</td></tr>
175158 <tr><th>Rest</th><td><span id="gitRestAbs"></span></td><td>(<span id="gitRestPct"></span>%)</td></tr>
176159 </table>
177177- Data: <a href="https://archive.softwareheritage.org/">Software Heritage</a>
160160+ <div class="data">
161161+ Data: <a href="https://archive.softwareheritage.org/">Software Heritage</a> (<span id="gitUpdated"></span>)
162162+ </div>
178163 </div>
164164+165165+ <div class="insert-metrics-help"></div>
179166 </div>
180167181168 <div class="container">
182169 <h2>Network Infrastructure</h2>
170170+ <details class="help" id="network-details">
171171+ <summary>What does this measure?</summary>
172172+ <div>
173173+ <p>
174174+ The measurements in this section come from the paper <a href="https://doi.org/10.1145/3718958.3750492">"Formalizing Dependence of Web Infrastructure"
175175+ by Habib et al.</a>, which appeared in the <a href="https://conferences.sigcomm.org/sigcomm/2025/">ACM
176176+ SIGCOMM conference in 2025</a>. The authors of this work collected information for the most popular
177177+ 10,000 websites in 150 countries using <a href="https://developer.chrome.com/docs/crux">Google's CrUX</a> dataset. These measurements were taken once in May 2023.
178178+ </p>
179179+180180+ <p>
181181+ DNS server data is reported by the network (AS) hosting the authoritative nameservers for the domains in the set.
182182+ Certificate authority (CA) data was collected by connecting to the front page of the webserver and finding the root CA of the certificate provided by the server.
183183+ </p>
184184+ </div>
185185+ </details>
183186 <div class="rating">
184187 <h3>DNS Hosting</h3>
185188 <h5>Cloudflare DNS, Amazon Route 53, etc.</h5>
···192195 <tr><th>Biggest</th><td><span id="dnsBiggestAbs"></span></td><td>(<span id="dnsBiggestPct"></span>%)</td></tr>
193196 <tr><th>Rest</th><td><span id="dnsRestAbs"></span></td><td>(<span id="dnsRestPct"></span>%)</td></tr>
194197 </table>
195195- Data: <a href="https://zenodo.org/records/15733582">Habib et al.</a>
198198+ <div class="data">
199199+ Data: <a href="https://zenodo.org/records/15733582">Habib et al.</a> (05-2023)
200200+ </div>
196201 </div>
197202 <div class="rating">
198203 <h3>TLS Certificates</h3>
···206211 <tr><th>Biggest</th><td><span id="certBiggestAbs"></span></td><td>(<span id="certBiggestPct"></span>%)</td></tr>
207212 <tr><th>Rest</th><td><span id="certRestAbs"></span></td><td>(<span id="certRestPct"></span>%)</td></tr>
208213 </table>
209209- Data: <a href="https://zenodo.org/records/15733582">Habib et al.</a>
214214+ <div class="data">
215215+ Data: <a href="https://zenodo.org/records/15733582">Habib et al.</a> (05-2023)
216216+ </div>
210217 </div>
218218+219219+ <div class="insert-metrics-help"></div>
220220+211221 </div>
212222213223 <div class="container">
214224 <p>
215215- This page measures the concentration of user data on the <a
216216- href="https://fediverse.party/">Fediverse</a>, the <a
217217- href="https://atproto.com/">Atmosphere</a>, and public git forges according to the
225225+ This page measures the concentration of user data on a variety of systems according to the
218226 <a href="https://en.wikipedia.org/wiki/Herfindahl%E2%80%93Hirschman_index">Herfindahl–Hirschman
219227 Index</a> (HHI) and the <a href="https://en.wikipedia.org/wiki/Diversity_index#Shannon_index">Shannon Index</a>.
220228 User data is only one way to measure centralization: others include network structure, legal exposure, and
···222230 </p>
223231224232 <p>
225225- </p>
226226-227227- <p>
228228- The <b>Shannon Index</b> is an entropy-based measure used in ecological studies. Because it is logarithmic,
229229- it is more responsive than HHI to changes in the "smaller players".
230230- It is computed as Shannon entropy using the natural log: the negative sum over all servers of the "market
231231- share" times the log of the market share. Lower values indicate lower entropy (a high concentration of one species),
232232- while higher values indicate a more even population. In this context,
233233- the maximum value is the natural log of the number of servers.
234234- </p>
235235-236236- <p>
237237- For the public git forges, this site uses the number of "origins" of type "git" archived
238238- by <a href="https://softwareheritage.org">Software Heritage</a>; this is
239239- roughly equivalent to the number of git repositories they crawl. Software
240240- Heritage's archive coverage can be found on <a href="https://archive.softwareheritage.org/">their coverage page</a>.
241241-242242- </p>
243243-244244- <p>
245233 Code and data are available <a href="https://codeberg.org/ricci/are-we-decentralized-yet">on
246234 Codeberg</a>.
247235 Comments and pull requests, including other metrics for measuring
···249237 </p>
250238251239 <p>
252252- By Rob Ricci: <a href="https://discuss.systems/@ricci">@ricci@discuss.systems</a> /
240240+ By <a href="https://ricci.io/">Rob Ricci</a>: <a href="https://discuss.systems/@ricci">@ricci@discuss.systems</a> /
253241 <a href="https://bsky.app/profile/ricci.io">@ricci.io</a>
254242 </p>
255243···257245 </div>
258246259247248248+ <template id="about-metrics">
249249+ <details>
250250+ <summary>What is HHI?</summary>
251251+ <div class="panel">
252252+ <p>
253253+ The <a href="https://en.wikipedia.org/wiki/Herfindahl%E2%80%93Hirschman_index">Herfindahl–Hirschman
254254+ Index</a> (<strong>HHI</strong>) is an indicator from economics used to measure competition between
255255+ firms in an industry.
256256+ Mathematically, HHI is the sum of the squares of market shares of all servers.
257257+ Values close to zero indicate perfectly competitive markets (eg. many servers, with users
258258+ spread evenly), while values close to 10000 indicate highly concentrated monopolies (eg.
259259+ most users on a single server). In economics, values below 100 are considered
260260+ "Highly Competitive", below 1500 is "Unconcentrated", and above 2500 is
261261+ considered "Highly Concentrated".
262262+ </p>
263263+ <p>
264264+ This method of measuring centralization for Internet systems is described in the paper
265265+ <a href="https://doi.org/10.1145/3718958.3750492">"Formalizing Dependence of Web Infrastructure"
266266+ by Habib et al.</a>, which appeared in the <a href="https://conferences.sigcomm.org/sigcomm/2025/">ACM
267267+ SIGCOMM conference in 2025</a>. The authors motivate this measure by describing it as a special case
268268+ of the "Earth Mover Distance": the amount of "work" it would take to change one statistical distribution
269269+ into another. Here, the empirical distribution measured for the system's current deployment is
270270+ compared to an idealized fully-decentralized distribution.
271271+ </p>
272272+ </div>
273273+ </details>
274274+275275+ <details>
276276+ <summary>What is the Shannon Index?</summary>
277277+ <div class="panel">
278278+ <p>
279279+ The <a href="https://en.wikipedia.org/wiki/Diversity_index#Shannon_index">Shannon Index</a>
280280+ is an entropy-based measure used in ecological studies to measure population diversity.
281281+ It is computed as Shannon entropy using the natural log: the negative sum over all servers of the "market
282282+ share" times the log of the market share. Lower values indicate lower entropy (a high concentration of one species),
283283+ while higher values indicate a more even population. In this context,
284284+ the maximum value is the natural log of the number of servers.
285285+ </p>
286286+ <p>
287287+ Because the Shannon Index is logarithmic, it is more responsive than HHI to changes in the "smaller players":
288288+ participants that are already large do not change the index much when their size changes. Changes in the smaller
289289+ participants, on the other hand, are more noticeable in the computed index. Thus, it is a good way of looking
290290+ at systems that are undergoing change at the smaller end of the hosting scale.
291291+ </p>
292292+ </div>
293293+ </details>
294294+ </template>
260295 <script>
296296+ document.querySelectorAll('.insert-metrics-help').forEach(el => {
297297+ const tmpl = document.getElementById('about-metrics');
298298+ el.appendChild(tmpl.content.cloneNode(true));
299299+ });
300300+261301 var defaults = {
262302 min: 0,
263303 max: 10000,
···347387348388 document.getElementById("fediUpdated").textContent = data.lastUpdate;
349389 document.getElementById("atUpdated").textContent = data.lastUpdate;
390390+ document.getElementById("gitUpdated").textContent = data.lastUpdate;
391391+392392+ // Should come from file
393393+ document.getElementById("hostingUpdated").textContent = "10-31-2025";
350394351395 document.getElementById("fediServers").textContent = addCommas(data.fedi.servers);
352396 document.getElementById("atServers").textContent = addCommas(data.at.servers);