ADVERTISEMENT

Is it time to delete Firefox?

Published Feb 18, 2022 11:25 am

After announcing collaborating with Meta/Facebook on adtech on Firefox, it made me think twice about continuing to use Firefox and supporting it. I remember the time when Mozilla (https://www.zdnet.com/article/new-york-times-runs-firefox-ad/), and I got on board for Firefox 1.0!

Firefox was great when it was working, until it started deteriorating, performance-wise. It became a memory-hog, which made me ditch it for a "better" browser, *cough* Chrome *cough*. However, my loyalty to Firefox remained, as I continued to hope that one day it will get back on track. For a moment there, it did - performance improved significantly, which earned it another spot in my arsenal as the preferred second browser (Safari's first) on the Mac, but first on Linux.

Unfortunately, Mozilla continued to ruin it. How? Read (https://www.wired.com/story/firefox-mozilla-2022/). And with the Meta/Facebook collaboration, it is rapidly burning Firefox to the ground. :(

The search for the Linux browser and secondary browser for the Mac led me to two options. First was Vivaldi. Although it is not open-source, nor publicly funded, it shows a lot of promise, specially their stance on privacy. I defaulted to the Vivaldi simple interface (as you can get overwhelmed with its bells and whistles). However, when it was time to harden it, i.e., making it more privacy-preserving, it directed me to the Chrome Web Store to get uBlock Origin, among other add-ons. I missed that part that it was Chromium-based, like Brave and whatever it is Microsoft's browser is called. That did not sit very well. Immediately, I deleted Vivaldi (sorry, guys. can you shift to Gecko or WebKit please? And also add an iOS version).

The search for the Firefox replacement led me to LibreWolf, a no-frills, privacy-focused Firefox fork you can download on LibreWolf.net. Love that it has a separate Intel and Apple Silicon version (yeah, am sucker for not contaminating my M1 MBP with Intel binaries). Unfortunately, MacOS continued to pester me with pop-ups reminding me that LibreWolf may be malicious (it is not recognized by the Mac's verification and validation process). Got fed up and deleted it, too.

What is left? I can stick it out and just use Safari until DuckDuckGo release their desktop version. I can do that, but I try to separate some of the sites I go to from my main Safari site. As an example, accessing Lazada and MetroMart is done on a secondary browser, which has a VPN add-on, and never on my Safari. Good thing, though, that the fediverse presented me with (https://brainfucksec.github.io/hardening-firefox-2022). The site provides settings that you can customize to make sure that Mozilla's access to your data and telemetry is restricted. Why Mozilla is hiding these settings under about:config is beyond me (is this the effect of receiving funding from Google, and now working with Meta?), but I configured most of what was recommended. So, yes, am back on Firefox, but tweaked for privacy.

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.