ADVERTISEMENT

Threads and its enshi*ification

Published Jul 11, 2023 08:09 am
We all know that Twitter is almost dead and there is only one person to credit for that. We also know that there are two projects that attempt to provide an alternative: Mastodon & the rest of the fediverse, and Bluesky. Now there is another from none other than Meta, the makers of Facebook and Instagram, and it is called Threads. "Threads: an Instagram app" was released late this week and it immediately got millions of users, thanks to its Instagram account integration. Prior to launch, Threads was rumoured to be using ActivityPub, the protocol used by Mastodon and the rest of the fediverse. As of last check, Threads have more than 30 million sign-ups already - and that is without users from the EU, because they are banned there for privacy reasons (are you still surprised?). It is starting to look like a better Twitter alternative than Bluesky and Mastodon & the fediverse. Personally, I have been on the fediverse for quite sometime - from the main Mastodon.social instance to having an account on the University of the Philippines instance, in addition to my personal account on a paid service (yeah, I pay to support my instance admin instead of spinning up my own, which I can do anytime). In addition, I am also on Bluesky. So I am pretty much covered for my Twitter alternative. I still have my Twitter account, but mostly there hoping that it will be sold to someone better, who knows? Will I join Threads after ditching my Facebook and Instagram accounts because of Mark Zuckerberg? Let's see. The EU got it right by protecting its citizens from the privacy invasion from Meta. If that isn't a red flag for you, this iOS App Store App Privacy label might give more reasons NOT to download it. iOS App Store App Privacy Label of Threads: an Instagram App Currently, Threads do not have ads. Which is good, right? However, with the amount of personal information it is collecting from its users, which is no way different from the rest of Meta's assets, the temptation to monetize it through ads is there, and Zuckerberg will not be able to resist it. In fact, if the rumour is true, Zuckerberg and co are just waiting for the number of users to reach a billion before they turn on the enshittification process! Yep, DuckDuckGo "enshi\*ification" and you will understand this playbook used by most of these tech bros. My answer to the question on whether I will be on Threads or not is definitely a "NO". Wouldn't touch it! On my Mastodon accounts, I have turned it private and will screen any follow requests from Threads - sorry friends, you are better off using other fediverse applications. Whilst this may not guarantee that my posts won't be hoovered by Meta, at least I am not making it that easy. This, of course, is when Threads get ActivityPub support, as it is rumoured to have, but it is not currently implemented. So there you have it - Threads is definitely on its enshi\*ification path, regardless of its press release of supporting the ActivityPub protocol. Some will tell you to give Meta a chance, that maybe they'd be a better Twitter alternative, a better fediverse citizen, but personally, I simply do not trust Zuckerberg and his minions! Fool me once, right?!
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.