- Windows 10 debloat tool reddit free
Looking for:
Windows 10 debloat tool reddit free.Github Mirror by NarabotWindows 10 debloat tool reddit free.Sycnex/Windows10Debloater
- Completely Debloat Windows 10 in - Ultimate Guide
Enve - Open-source 2D animation software. Wick Editor - A free and open-source tool for creating games, animations and everything in-between! Blender - Free and Open Source 3D creation suite. FreeCAD - An open-source parametric 3D modeler made primarily to design real-life objects of any size. MeshLab - The open source mesh processing system.
Sweet Home 3D - A free interior design application which helps you draw the plan of your house, arrange furniture on it and visit the results in 3D. F3D - A fast and minimalist 3D viewer. Others Graphviz - Open source graph visualization software.
Gephi - Gephi is the leading visualization and exploration software for all kinds of graphs and networks. LiveDraw - A tool allows you to draw on screen real-time. Storyboarder - Storyboarder makes it easy to visualize a story as fast you can draw stick figures. NormCap - OCR powered screen-capture tool to capture information instead of images. Colorpicker - A mininal but complete colorpicker desktop app. Avataaars generator - Simple generator React app for avataaars.
Personas by Draftbit - A delightful avatar generator by the folks at Draftbit. LibreWolf - A fork of Firefox, focused on privacy, security and freedom. Brave - A fast, private and secure web browser.
Chromium - The free and open-source project behind Google Chrome. Tor Browser - A web broswer that anonymizes your web traffic using the Tor network. Min - A fast, minimal browser that protects your privacy. Fast and lean. AdNauseam - Fight back against advertising surveillance. FastForward - FastForward automatically skips annoying link shorteners. LibRedirect - A web extension that redirects popular sites to alternative privacy-friendly frontends and backends. Violentmonkey - An open source userscript manager.
Automa - A chrome extension for automating your browser by connecting blocks. Omni - The all-in-one tool to supercharge your productivity keyboard. Dark Reader - Dark Reader analyzes web pages and aims to reduce eyestrain while browsing the web.
Bypass Paywalls - A web browser extension to help bypass paywalls for selected sites. Search by Image - A browser extension that makes effortless reverse image searches possible, and comes with support for more than 30 search engines. Marinara - A time management assistant for Chrome that follows the Pomodoro Technique.
Floccus - Sync your bookmarks privately across browsers. Gesturefy - A customizable Firefox mouse gesture add-on with a variety of different commands. BetterViewer - A replacement for the image viewing mode built into Firefox and Chrome-based web browsers. Tutanota - A secure email service. Delta Chat - Chat over e-mail. Mailspring - A beautiful, fast and fully open source mail client. AnonAddy - Anonymous Email Forwarding. SimpleLogin - Receive and send emails anonymously.
MailDrop - A quick, disposable email. Guerrilla Mail - A disposable email. IM Signal - A messaging app with an unexpected focus on privacy, combined with all the features expected from a modern IM app. Element - Secure and independent communication, connected via Matrix.
Session - An end-to-end encrypted messenger. Hamsket - Free messaging and emailing app that combines common web applications into one. Jitsi Meet - Free Jitsi Meet instance, provising state-of-the-art video conferencing. Revolt - User-first chat platform built with modern web technologies. PeerTube - A free, decentralized and federated video platform.
Glimesh - A next generation live streaming platform built by the community, for the community. Mastodon - Globally interconnected microblogging community. WriteFreely - A clean, simple publishing platform made for writers. Downloader Streamlink - A CLI utility which pipes video streams from various services into a video player.
You-Get - A tiny command-line utility to download media contents videos, audios, images from the Web. Lux - A fast and simple video downloader built with Go. Tartube - A GUI front-end for youtube-dl. Video Downloader - A video and channel downloader that supports websites.
YoutubeDownloader - An application that lets you download videos from YouTube. Transmission - A fast, easy, and free BitTorrent client. PicoTorrent - A tiny and minimal BitTorrent client. WebTorrent - The streaming torrent app. Free Download Manager - A powerful modern download accelerator and organizer. Motrix - A full-featured download manager.
FireDM - A good open-source internet download manager. JDownloader - A free, open-source download management tool. XDM - Powerfull download accelerator and video downloader. HakuNeko - A cross-platform downloader for manga and anime from various websites. Raven Reader - A open source desktop news reader with flexible settings to optimize your experience. Books Okular - A universal document viewer.
Sioyek - A PDF viewer designed for reading research papers and technical books. Koodo Reader - A modern ebook manager and reader. Libation - Audible audiobook manager. AudiobookSuite - A WPF application with the goal of providing an easy to use local audiobook library and player for modern Windows systems.
YACReader - Yet another comic reader. PDF Arranger - Small python-gtk application, which helps the user to merge or split pdf documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface.
ZLibrary - The world's largest ebook library. Sci-Hub - A shadow library website that provides free access to millions of research papers and books. Library Genesis - A file-sharing based shadow library website. Project Gutenberg - A library of over 60, free eBooks. Open Library - An open, editable library catalog. Internet Archive - A non-profit library of millions of free books, movies, software, music, websites, and more.
Mind Expanding Books - Books everyone should read! Books - Awesome Book Lists. Games itch. Playnite - An open source video game library manager and launcher with support for 3rd party libraries like Steam, GOG, Origin, Battle. RetroArch - A frontend for emulators, game engines and media players. Minetest - An open source voxel game engine. Warzone - A ground-breaking and innovative 3D real-time strategy game.
Widelands - A free, open source real-time strategy game with singleplayer campaigns and a multiplayer mode. Mindustry - A sandbox tower defense game written in Java. Wesnoth - An open source, turn-based strategy game with a high fantasy theme. Cataclysm: Dark Days Ahead - A turn-based survival game set in a post-apocalyptic world. Thrive - A free, open-source game about the evolution of life.
SuperTuxKart - A free kart racing game. Xonotic - An addictive, arena-style first person shooter with crisp movement and a wide array of weapons. FlightGear - An open-source flight simulator. Rigs of Rods - An open-source soft-body vehicle simulator. Endless Sky - A space exploration and combat game similar to Escape Velocity. Rhythm is just a click away! Lichess - The complete chess experience, play and compete with friends and others around the world.
OpenTDD - OpenTTD is a business simulation game in which players try to earn money by transporting passengers and freight via road, rail, water and air. File Management 7-Zip - A file archiver with a high compression ratio. NanaZip - The 7-Zip derivative intended for the modern Windows experience. PeaZip - A free file manager and file archiver. Files - A modern file manager.
Xplorer - A customizable, modern and cross-platform File Explorer. Double Commander - A free cross platform open source file manager with two panels side by side. Sigma File Manager - A free, open-source, quickly evolving, modern file manager app. Far Manager - A program for managing files and archives in Windows operating systems.
Czkawka - Multi functional app to find duplicates, empty folders, similar images etc. Video Duplicate Finder - A cross-platform software to find duplicated video and image files on hard disk based on similiarity.
Ant Renamer - A free program that makes easier the renaming of lots of files and folders by using specified settings. Pandoc - Universal markup converter. File Converter - A very simple tool which allows you to convert and compress one or several file s using the context menu of windows explorer. Convertio - Easy tool to convert files online. Backup and Sync Nextcloud - A suite of client-server software for creating and using file hosting services.
MEGA - A secure, user-controlled end-to-end encrypted cloud storage and communications service with 20 GB free storage space. Sync - A file storage and document collaboration platform. Tresorit - Tresorit is the ultra-secure place in the cloud to store, sync, and share files within your organization and with external partners.
Internxt Drive - A zero-knowledge cloud storage service based on best-in-class privacy and security. Rclone - A command-line program to sync files and directories to and from different cloud storage providers. Duplicati - Store securely encrypted backups in the cloud! Kopia - A simple, cross-platform tool for managing encrypted backups in the cloud. Duplicacy - A new generation cloud backup tool. Syncthing - A continuous file synchronization program.
Ludusavi - A tool for backing up your PC video game save data. Ultracopier - Ultracopier acts as a replacement for files copy dialogs. OpenSSH is a complete implementation of the SSH protocol version 2 for secure remote login, command execution and file transfer.
LANDrop - A cross-platform tool that you can use to conveniently transfer photos, videos, and other types of files to other devices on the same local network. Winpinator - Send and receive files across a local network. Flying Carpet - Wireless, encrypted file transfer over automatically configured ad hoc networking. OnionShare - An open source tool that lets you securely and anonymously share files, host websites, and chat with friends using the Tor network.
Magic Wormhole - Get things from one computer to another, safely. Tresorit Send - Send big files up to 5 GB securely. Send - Simple, private file sharing. Disroot Upload - Anonymous file sharing services with temporary storage. FileSend - Simple, encrypted file sharing. SwissTransfer - Send files up to 50 GB free of charge. Snapdrop - A Progressive Web App for local file sharing.
FilePizza - Peer-to-peer file transfers in your browser. Blaze - A P2P file sharing web app. Wormhole - Simple, private file sharing. Freenet - A peer-to-peer platform for censorship-resistant and privacy-respecting publishing and communication.
IPFS - A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. Productivity Office LibreOffice - A free and powerful office suite. Google Docs - Free online document editor. CryptPad - A collaboration suite that is end-to-end-encrypted and open-source. Grist - A modern relational spreadsheet. Sozi - A presentation tool for SVG documents. Note Taking Joplin - A free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks.
Standard Notes - A free, open-source, and completely encrypted notes app. Cryptee - A privacy focused, encrypted and secure documents, notes, files and photos service. SilentNotes - A simple note taking app which respects your privacy.
Simplenote - The simplest way to keep notes. Trilium Notes - A hierarchical note taking application with focus on building large personal knowledge bases. Logseq - A privacy-first, open-source platform for knowledge management and collaboration. Zettlr - A Markdown Editor for the 21st century. AppFlowy - An open-source alternative to Notion.
Foam - A personal knowledge management and sharing system for VSCode. Athens - An open-source knowledge graph that helps individuals and organizations solve complex problems by enabling them to capture, compose, and recombine ideas. Obsidian - A powerful knowledge base on top of a local folder of plain text Markdown files. Mini Diary - Simple and secure journal app. RedNotebook - A modern desktop journal.
Leaflet - POSP official notes application, written in flutter, beautiful, fast and secure. Microsoft Journal - A notetaking application that focuses on the inking experience. Writing Tools Manuskript - A open-source tool for writers.
KIT Scenarist - Simple and powerful application for writing screenplays. Markdown Editors MarkText - A simple and elegant markdown editor. Abricotine - Markdown editor with inline preview. PanWriter - Markdown editor with pandoc integration and paginated preview. StackEdit - In-browser Markdown editor.
Focalboard - An open source, self-hosted alternative to Trello, Notion, and Asana. Kanban Tasker - A simple personal kanban board. Time Tracking ActivityWatch - The best free and open-source automated time tracker.
Tockler - An application that tracks your time by monitoring your active window title and idle time. Nomie - Open-source mood and life tracking. Habitica - A habit tracker app which treats your goals like a Role Playing Game. Clipboard Managers Ditto - An extension to the standard windows clipboard. CopyQ - An advanced clipboard manager with powerful editing and scripting features.
Clipboard Canvas - A tool that helps you be productive, preview multiple files on Infinite Canvas, save storage space with smart Reference Files, and work uninterruptibly with Autopaste. File Search Everything - Locate files and folders by name instantly. EverythingToolbar - Everything integration for the Windows taskbar.
Orange - A cross-platform desktop application for searching local files. Cerebro - Open-source productivity booster with a brain. Pinpoint - Keystroke launcher and productivity tool. SystemTrayMenu - Browse and open your files easily.
Mind Mapping drawio-desktop - An open source technology stack for building diagramming applications. Heimer - A simple cross-platform mind map, diagram, and note-taking tool written in Qt. My Mind - A web application for creating and managing Mind maps. Wireflow - Flow chart collaboration app.
Automation espanso - A cross-platform Text Expander written in Rust. Beeftext - A text snippet tool for Windows. AutoHotkey - A free, open source macro-creation and automation software utility that allows users to automate repetitive tasks. Power Automate - Power Automate allows you to automate web and desktop applications on your Windows desktop by mimicking the user interface actions like clicks, and keyboard input. AutoActions - Application-based actions to change Windows settings display, audio or run any program or action.
Macro Deck - A open source software to use your smartphone, tablet or almost any touch screen device with a internet browser as a simple macro pad or even as an powerful automation solution for streaming, gaming, content creation and more.
Mouse Jiggler - A very simple piece of software whose sole function is to "fake" mouse input to Windows, and jiggle the mouse pointer back and forth. Shutdown Timer Classic - Pick a time and let your computer shutdown itself. Others Scribus - An open source desktop publishing software. TagSpaces - An offline, open source, document manager with tagging support. Knowledge Canvas - With Knowledge Canvas, you can import almost any digital resource and use it to build your own personal Knowledge Base.
Paperwork - Paperwork is a personal document manager. It manages scanned documents and PDFs. Datawrapper - An open source tool helping everyone to create simple, correct and embeddable charts in minutes.
RAWGraphs - An open web tool to create custom vector-based visualizations on top of the amazing d3. Reactive Resume - A free and open source resume builder. Resumake - A website for automatically generating elegant LaTeX resumes. Phone Link - Link your Android phone and PC to view and reply to text messages, make and receive calls, view your notifications, and more.
KDE Connect - Enabling communication between all your devices. DropPoint - Make drag-and-drop easier using DropPoint. Ambie - The best white noise app on Windows. LightBulb - An application that reduces eyestrain produced by staring at a computer screen when working late hours. Pomatez - An open-source Pomodoro timer application aimed for simplicity and productivity. Pomotroid - Simple and visually-pleasing Pomodoro timer. Stretchly - The break time reminder app. OpenStreetMap - A collaborative project to create a free editable map of the world.
Money - Personal Expense Manager. My Budget - Free, open source offline cross-platform budgeting solution built with Electron. Money Manager Ex - A free, open-source, cross-platform, easy-to-use personal finance software. GnuCash - A personal and small-business finance manager. KMyMoney - A cross-platform personal finance manager. Frappe Books - Free Desktop book-keeping software for small businesses and freelancers.
CryptoTracker - Simple yet powerful cryptocurrency portfolio tracker designed with simplicity and functionality in mind. Education LanguageTool - Checks your writing in more than 20 languages. Crow Translate - A simple and lightweight translator. DeepL Translator - A neural machine translation service.
Lingva Translate - Alternative front-end for Google Translate. Zotero - A free, easy-to-use tool to help you collect, organize, cite, and share your research sources. JabRef - An open-source, cross-platform citation and reference management tool.
Qiqqa - A free research and reference manager. GCompris - A high quality educational software suite. Scratch - With Scratch, you can program your own interactive stories, games, and animations. Stellarium - A free open source planetarium for your computer. Celestia - Real-time 3D visualization of space. Avogadro - An advanced molecular editor designed for cross-platform use in computational chemistry, molecular modeling, bioinformatics, materials science, and related areas.
Anki - Powerful, intelligent flash cards. Tabby - Simple timetable desktop app to track your school schedule. Orange Data Mining - A data mining and visualization toolbox for novice and expert alike. GeoGebra - Free digital tools for class activities, graphing, geometry, collaborative whiteboard and more.
Gramps - Research, organize and share your family tree with Gramps. Scilab - Open source software for numerical computation. GNU Octave - A programming language for scientific computing. ZoteroBib - ZoteroBib helps you build a bibliography instantly from any computer or device.
Khan Academy - A personalized learning resource for all ages. Coursera - Free and paid courses on a wide variety of subjects from scholastic to technical and more. Personalization Rainmeter - Desktop customization tool for Windows.
Lively Wallpaper - Free and open-source software that allows users to set animated desktop wallpapers and screensavers. SpaceEye - Make live satellite imagery your desktop background with SpaceEye.
Superpaper - A cross-platform multi monitor wallpaper manager. RoundedTB - Add margins, rounded corners and segments to your taskbars! TaskbarX - TaskbarX gives you control over the position of your taskbar icons.
TileIconifier - Creates tiles for most Windows 8. I should be able to take the result and use it anywhere in my existing code. However, if my direct dependency on LibraryX is a different version than transitive dependency on LibraryX through LibraryY, then it may not have the same functionality.
In trying to avoid a problem at compile-time, the package manager has introduced a huge potential problem at run-time. Yarn lets you reject multiple versions. Declarative dependency management.
Every Node project has a package. It gives you so much information at a glance, and it allows for reproducible builds with just one command. With pip you have to resort to hacky solutions like like pip freeze. It also doesn't solve circular dependencies. Luckily these days the Python world has Poetry, which exactly solves this issue, and might be even better than npm.
Unfortunately it's third party and adoption is a bit slow, but I use it for all my projects. In it made it very easy to share libraries which helped Node grow in popularity. But it got overtaken by Node pretty quickly.
Oh it was mocked back then too—mostly for the pre-npm 3 releases that didn't dedupe. Though it clearly worked well enough to be fantastically successful despite valid complaints about it.
Early npm would regularly create directory trees so deep Windows couldn't delete them, and I was just using it to pull down LESS and friends. Success has nothing to do with quality. It's a good story though. Why not? Klonoar 49 days ago root parent prev next [—]. Asynchronous, and Node being so HTTP-friendly - I cannot begin to explain the sheer number of regurgitated "build a webserver in Node" tutorials that got written up back in the day.
For whatever reason, you could have done this stuff in Rhino - for better or for worse - it's just that nobody ever took it as seriously. Not only could you, but some of us even did though it definitely was never, as you say, "taken seriously".
What made it super powerful and very node. My trivial, personal blog website is still running with this stack though I finally put it behind an nginx SSL terminator as I have been putting off upgrading Java and Bouncy Castle just couldn't keep up , and it gives me more warm fuzzies than v8 alternatives.
I'd only dabbled in Rhino back in the day so this is a neat little bit of history. Teleports me back to when this stuff felt fun I think it's due to the huge hype around chrome among developers back then. Each tab as separate process was huge. It also has built-in dev tool, and v8 being actually fast excites a lot of devs and drove them away from firefox. So when nodejs was released, a lot of people already know what v8 is and have positive impression of it, probably enough to nudge them to try nodejs.
On the other hand, I never heard of Rhino until now. When Node first came out, all of the hype around it was using the same language on the client and the server OR at least managing all of your frontend bits in a language independent of your server side language.
Doing it with Node was a stronger argument to at least save the frontend side of the house from having to find a way to do them with Java or ASP. During that time period, Java compile times were so slow that using PHP as a frontend that spoke to Java backends with SOAP services was really, really common just to avoid slowing everything on the frontend down with Java. For context, the thing preceding nodejs in the hype cycle was ruby on rails.
While many great things could be said about RoR, performance definitely is not one of them, especially in the early days. I love having to run a sentinel app that would restart your app on crashes. I forget the details but RoR was a deployment catastrophe. Around it was possible to write AJAX applications with xmlhttprequest using JavaScript to achieve no refresh apps in the browser. Ironically, the core feature for web apps in the browser to enable this existed thanks to Microsoft.
Brutally simple, efficient and likely part of what gave rise to so many JavaScript frameworks since people generally had to roll their own. The first major rush of users online was likely Facebook. Still it was possible to build a full ms office UI clone working in the browser, except it was powering your custom app.
Sometimes things are gaining popularity for a long time before they suddenly get discovered. This single call was a reason why jquery became so popular. What I enjoyed about this article was how it speaks to an internet generation of tech or users emerging every years, something I have long felt. Everyone starts somewhere, everyone is new to learning something and those experiences are worth sharing for new developers who do not quite have their compass in place yet.
It's not clear that writing tooling in Javascript has been a win. I do hope that we can get back to that "JS as compilation target" model eventually with WebAssembly.
Even with improvements like TypeScript slathered on top, it's not fun writing Javascript, the tooling sucks, and it's vastly less productive than better developer ecosystems. I don't remember the original Gmail having a rich editor in the compose view I've been trying to source some screenshots but can't seem to find any with the compose view , but I do remember it being pretty impressive for the time.
There definitely were a few libraries pushing the envelope back then. SproutCore for instance was around in and Apple built it's first version of MobileMe on it[1]. I believe it was Prototype.
Prototype also had Dojo[4] as healthy competition right from the start. I also remember YUI[5] and its offshot Ext. Most will also remember YUI[4] and its offshoot Ext. I mean, it existed. It was not really useful and few people even noticed it existed at all, but it did exist.
Netscape Web Server supported server-side JavaScript since the mid 90s. Rhino was a development intended to provide JavaScript support to Netscape's all-Java browser "Javagator" , because at the time Java was clearly The Future and we would all be running it on our desktops.
LiveWire's unpopularity and subsequent death was often attributed to its need for compiling and bundling steps, which seemed cumbersome to the JS devs at the time. This just reminded me of Sun HotJava, which was genuinely one of the worst pieces of software I have ever experienced. At my job, we were doing what is called "HTML over the wire" today by posting forms and using a frame as the target. In fact when I got to Google in late , I believe the only thing I could confirm using GWT seriously was some display ads admin tools.
GWT was awful. And not really used inside Google much. I wasn't on the gmail team but my understanding from friends that were is that the Java transpilation in Gmail is for the backend, to share model and business logic, not the frontend.
We also had Java Server Faces and. Four eras of practice: 1. DHTML scripts: individual scripts that provided functionality e. You grabbed the scripts, and wired them together on your pages to enhance your page. Hidden iframes and other techniques also used for server communications.
Bringing Ajax to all web developers, allowing them to enhance the pages delivered by their backend web server of choice PHP, RoR, etcetera. Pages use components designed for each framework. Starting to see more Single Page Apps, but no widespread usage of any framework on large numbers of sites.
Widespread usage of React in industry. There were plenty of early adopters for each technology, but as far as I recall, widespread usage follows the progression above.
And the above ignores plenty of important first innovators and minor steps for example, I used script. The first stunning example was back in which was Outlook Web Access on Internet Explorer 5: the first usage of XMLHttp and it was many years before anything else approached its sophistication as a mostly? I presume it had a proprietary component system, and IE5 was enhanced to make it work smoothly. Between 3 and 4 there were knockout and angular.
Also ember I think? And Backbone. I would class those as era 3. I think industry usage broadly follows the four steps I gave. The amazing thing is that everything was there back in , and OWA showed the way. AFAIK IE5 had all the features needed to deliver an SPA, albeit the techniques to reliably and performantly take advantage of IE took a long time to either discover or to percolate through the industry.
I personally recall IE5. The vast majority of web developers were glued to their particular choice of HTML backend, so industry adoption of front-end frameworks was hideously slow. React was when frontend JavaScript frameworks appeared to me to become really mainstream, rather than just early adopters era 3 of my list.
My own progression was script. My custom framework had major advantages for me over dojo better: performance, reliability, flexibility, improved UI, development speed. Each individual developer will have their own view of how the industry progressed, but this is how I perceived it as a generalisation.
This sums up the evolution properly, but one correction is that the component frameworks were there before jquery so 2 and 3 need to switch places. Perhaps consider what has happened since. Vinnl 49 days ago root parent next [—]. The front-end world has been relatively stable since then.
Sure, there have been experiments with other approaches Cycle. A bit of history revisionism, haha ExtJS, Ember, Angular, and Next are all "full-stack" frameworks and the all were released at very different times. By "full-stack" here I mean frameworks which handle both the frontend and backend simultaneously, in a seamless way.
When SSR was introduced in any framework, it was usually not used to its full potential to be able to accomplish the use cases I discuss in the post, like authentication, API endpoints, etc. It was just used to render the app on the server. It did not fundamentally change the DX of the framework. I honestly was pretty skeptical of these latest frameworks until I gave them a shot! It doesn't sound that revolutionary until you actually start using them, and things which were previously quite difficult become absolutely trivial.
I highly recommend trying them out some time. Tade0 49 days ago parent prev next [—]. Overall this division seems weird. SSR is neither a revolution, nor universally desirable. The real revolution is in what these next-generation frameworks like Svelte or SolidJS offer: small bundles combined with high performance achieved through eschewing virtual DOM in favour of precise changes in the DOM.
SSR has been around for ages. The very first "web frameworks" were pure SSR. The big leap forward from Solidjs and Svelte is that they do complex source-to-source compilation to avoid virtual dom diffing. Solidjs looks almost identical to react. Thats great because it means there's no bugs due to fiddly or forgotten DOM updating.
But the javascript executed by the browser doesn't need any of react's complexity. There's no heavy re-rendering of view trees, and no virtual dom to track. Unlike react, you don't need to apologize for mutating variables or re-render your entire page when you do.
So we can do away with redux and all of that. And it renders instantly. It took us a few years to get here, but I'm delighted by the direction UI code in the browser is headed. I hope these ideas make it into native applications.
Actually that's just a common misconception, which I believed too. The complex compile-time transforms enable almost no performance improvements. As a proof just take a look at the js-framework-benchmark table [0], my framework Voby [1] is faster than both in the benchmark despite having an API very similar to Solid and no requirement for a Babel transform or other compile-time transform though the basic React-like JSX transform is supported for convenience. If that weren't the case it wouldn't be possible to make something similar without a transform that's faster than both.
In fact Svelte is actually quite a bit slower than both Voby and Solid. It seems like a lot of these benchmarks are manipulating rows in a table? Are there any benchmarks that involve complex component trees with a lot of nesting? Very cool framework though, I'll have to look more into how it works someday. I'm not sure. Those transforms essentially just avoid you having to wrap some things in functions manually, and avoid some extra function calls.
Avoiding manual wrapping is a convenience feature and those extra function calls are not really that expensive or it wouldn't be possible for Voby to be faster than something optimized like Solid in the benchmark.
If you'd like to come up with a different sort of benchmark where you think Solid would shine I'd be happy to write an implementation of it with Voby and see what happens. Or you can just try that yourself, the API is fairly similar.
This optimization is not supported in Solid nor Svelte, and interestingly it's not a safe optimization that can be applied all the time, so it must be opt-in, but how are you supposed to tell to Solid or Svelte when it's safe to apply it if something like Voby's "template" function, which is also used for this, is abstracted away entirely from you? In some sense the transform actively goes against performance here.
I guess I feel like deep complex structures are where we would see significant differences between VDOM react and compiled svelte but I might be wrong, I'm not too familiar with the internals of either framework. The difference is that in Voby, if you explicitly opt into this, nodes are not deleted but kept in memory when going to an empty array, and new one are not created when going back to a non-empty array, those nodes kept in memory are repurposed.
As a rule of thumb if you don't have any API for explicitly opting into recycling it's not happening, it's not a safe optimization that can be applied all the time. Tade0 49 days ago root parent prev next [—].
Also let's not forget about something that hasn't been the case over a decade now: the stack is readable again. I've found bugs in my Svelte code just by looking at the stack. That's how the article delineates it too. The term "Full-stack Frameworks" for the fourth era is a bit confusing: what the article means is the battery-included wrappers for popular component libraries like Next. JQuery was used by a lot of people that didn't embrace javascript at all and tried to not use it e.
NET coders I feel like backbone deserves its own era as it seemed like all the cool kids would exclusively use that for a couple years.
Then Angular and a ton of others flooded the scene. It means that everyone tells their story, that they say the fair went well or not depending on how it went for them. Another comment talks about revisionism and, while I think it is a valid critique, I think it goes beyond that. The author's career starts in and that's all the reference they seem to use. But then Or, a better question -since anyone can write whatever they want, of course-, will this be, then, just some person's story or will it actually be representative or a larger reality?
Sadly, it feels like lately a lot of people seem intent in blurring that distinction. They seem to say "I may only have a limited view, but I'm going to present this as if this was the complete reality".
And this is what this article does, I'm afraid. The fact that there's is absolutely no mention at all of Dojo is telling. It's also quite telling that dismissing claim of "throw together some scripts for a few UI widgets, and call it a day", the quite absurd "everything was global", and the error of suggesting XHR came later -"As time went on and XHR was introduced and popularized"-.
I did run this article by some mentors who have been in the industry since the 90s before posting, as I wanted to make sure I didn't gloss over it entirely, but unfortunately it seems they didn't experience those either. And I think that's the core of the issue, even people who were around at that time do not remember all of these things. Ultimately, even those of us who are trying our best are going to miss details, and this is only going to get worse as we get further and further away from the beginning.
The most common thing you would do was include jQuery, throw together some scripts for a few UI widgets, and call it a day. As time went on and XHR was introduced and popularized, people started to put parts of their UI flow into a single page, especially for complex flows that required multiple back and forth interactions between the client and the server, but the majority of the app stayed firmly on the server.
This is what I was referring to. It may have not been intentional, but the way you comment and present it suggests a mistaken timeline. That's a good point, definitely not what I meant there. I think in my first draft I actually just said "JavaScript widgets" and when I updated it to jQuery I didn't update the rest of the paragraph. Thanks for pointing that out! Which then I used on many other projects was never a fan on jQuery - knockout.
That's basically 5 different eras for me, and I'm circling back to the top. All your frameworks are DOM abstractions, not Javascript abstraction, unless you are using Typescript or Reason or Turbo links on the server. You're still writing Javascript code with knockout and angular and co, you're just not using the DOM directly.
Talking about "vanilla javascript" in the context of these frameworks never made sense to me. We "didn't need jquery", or so someone said, but now it seems like we sure need all these frameworks somehow and people don't learn the DOM anymore. How is it any better than jQuery? TrickardRixx 49 days ago root parent next [—]. I'm not sure I understand your point here. These days I use htmx[0] wherever possible. Notably htmx is still javascript; I just don't have to write it. I just hate all the other methods of DOM manipulation that required me to write javascript.
So what is the difference in the distinction you're making? Frameworks like React and Vue allow me to define the UI as a function of state in a declarative way. The language happens to be JS. Please tell me how this can be done in vanilla JS without writing my own framework. I don't think it's possible. In my opinion they are not comparable, they both serve different goals. Thank you for the clarification. I definitely agree with you. Unfortunately for me, I still dislike using the declarative frameworks that happen to be in JS.
I don't think they are DOM abstraction, rather they are "update abstractions", as all the data binding, two way bindings, whatever way binding a future library might call it is there to observe X, update piece of html fragment Y with X. The vanilla JavaScript idea is to debloat application and unlayer complexity where its possible.
It doesn't offer the niceties, or feature parity of what frameworks do, but it allows me to be more explicit in the places where I'm going to use a framework. The people in my circles, didn't hate DOM manipulation. They just didn't understand it or care to , and jQuery answers where all over stackoverflow just use this library and this jQuery plugin call. I've seen JSX praised before, but in an alternate timeline where IE didn't dominate the entire world with a legacy PoS, maybe the E4X standard would have been implemented in all browsers.
Which would have been a pretty sweet deal, and another useful tool for the vanilla JavaScript camp. I really like the evolution of JS over the past two decades. I strongly believe the evolution of JS revolutionized the web in a positive way and significantly boosted innovation by lowering the costs for application development. For example, every corporate app these days is a web app, which is much easier to manager from an IT perspective than OS applications.
Shipping working code at scale has never been easier. In my relatively short career I've seen consumers and organizations adopt innovative new applications at an accelerating rate because of this. Is it perfect? Definitely not. JS is so easy that it also makes it easy to write bad code. Higher-level languages also consume a lot more resources. But in general I think JS has been revolutionary and the benefits far outweigh the costs from a functional perspective.
As for the article: jQuery receives to little praise imo. At the time it was truly revolutionary. Suddenly you could make your websites interactive with just a few lines of code, and it worked in every browser! This inspired an entire generation of web developers. Not arguing that you are wrong but I believe causality went other way around. Everyone started migrating to web applications so there was money in improving tooling.
So push to web applications revolutionized JS tooling. I don't think so. Angular and React are made by Google and Facebook. The V8 engine inspired NodeJS. Also there was this weird time period where every app suddenly had to be isomorphic, i. I think a lot of the initial work to deliver code at scale had to be done by Big Tech to accommodate their hypergrowth in the early s.
I wonder if I will ever use a JavaScript framework. If you have built a project that is public and benefits from using a framework, I would love to see it! If you aren't using a public framework and you use any JavaScript in your app then you are creating your own framework. Nothing wrong with that. The real value of public frameworks comes into play when you have more than one generation of developers working on your project.
It's much easier to onboard a new developer onto a react app than it is to get them to understand the weird bespoke nuances of the conventions you came up with while hacking on your site at 3am 5 years ago. This might hold true when the application in question does a lot of stuff covered by a framework.
For example if it does routing, then it is nice to have common ground on how routing is done. If the application mostly does custom stuff, not covered by the framework, then the framework might harm more due to the added complexity. That is why I proposed a discussion based on real life examples. The other thing is that frameworks change. You picked React for your example. A currently popular framework. Chances are, the next developer will not come on in 5 years, but in 15 years. And does not know anything about React.
Or about React as it is today. Then they might have a harder time understanding React than to understand a well written, minimalistic piece of Javascript. That doesn't seem likely to me at all. More likely in the next 6 months than in 15 years. Why are you planning for 15 years out? The company you are working for might not be around in 15 years. Code might not even be recognizable in 15 years.
All of our programs might be written by AI in 15 years. Optimizing for the short term makes way more sense to me. Hackbraten 48 days ago root parent next [—]. Human labor is expensive. The initial comment was not about software quality but about "the popular framework now might not be popular in the future" I don't see any contradiction between creating well written, time tested software and also choosing currently popular frameworks to work in.
If your React app is well written and stable and well tested, I see no reason it shouldn't be available in 15 years. And if you can't find React Developers to hire in 15 years to work on it, that's tough. Pay to have some trained.
One could argue that I can rewrite the framework-dependent parts. But rewrites cost money, too. I love new stuff but I still think that, depending on the app, it may make good economic sense to plan ahead for it to be useful after a decade or two. I'm not sure where you are getting 10, dependencies from. Hackbraten 42 days ago root parent next [—].
Good point. Infra code that over time, as your app grows, takes on more and more of the features of a framework. Donckele 49 days ago root parent prev next [—]. Your last paragraph is not a logical conclusion to your first two paragraph statements.
Once this gets a bit more complicated you have a bunch of state to keep track of and you have to make sure to re-render only the parts that have changed, and deref that parts that should be GCd.
I'll happily take on a reactive UI framework dep if I can avoid writing my own diff pipeline. Not endorsing react by any means though. I also started out without frameworks and still prefer to work that way. However, I have found them to come in handy when solo-ing projects that require: - transpiling JS back into the stone age for compatibility - accessibility - seamless localisation I have found I just can't keep track of all of these things as well as React does.
At the same time, I think React is a huge, dependency-laden mess, very difficult to learn because it's changed its mind on how to do things about x, so no responses to issues on SO apply to your version of React, Redux, React Router, etc , slow as hell and probably overkill for most projects Working with other people and agreeing on how to do things is hard.
I never use frameworks either. In fact the last site I published didn't have any Javascript at all it's just a static site so shouldn't need it yet that doesn't seem to stop most other sites from abusive amounts of JS. Sure, probably works, just don't complain about age discrimination when you bring up nonconsensus things that have been superseded, and the team isnt fond of that system design.
Hammershaft 49 days ago parent prev next [—]. There's a framework that always seems to get forgotten, but was there before Backbone, Angular and others: the Dojo Toolkit [1], released in , it had some goodies like built-in tooling that was hell to work with and modules in they were godsend! We chose it in my company in before the framework boom and it had served us well for a very long time. It's batteries included, has for example it has a very comprehensive i10n module, which was not usual at the time.
Also worth mentioning it was started among others by Alex Russell [2], a famous developer advocate at Google. Scarblac 49 days ago prev next [—]. For me, one of the biggest revolutions was Babel.
It made it possible for Javascript to change. Instead of being forced to write code that would run on all the supported browsers, with Babel we could actually use new features, and let it deal with translating them to stone age equivalents. That was huge. By the time I started writing frontend apps, there was a new generation of frameworks that had just started to reach maturity: Angular.
Prior to these, the state of the art had been libraries like jQuery and MooTools. Well, crap. Now I feel super old. I recently started using Cypress automation testing framework and was somewhat surprised to learn that it was using jQuery under the hood.
I assumed jQuery would have faded into complete disuse by now. For me was the year I stopped any frontend work at all. As I remember, things felt very easy and natural when all I had to do was output html using templates, write CSS and add some touches of javascript here and there, either using jquery or mootools. Maybe a websocket to display something coming from a process. Then there was backbone, history push state, more frameworks, client side rendering, meteor, and a lot of impressive stuff.
Very impressive stuff that felt needlessly complicated and made me procrastinate every time I tried to learn it. Nowadays, every time I look at a react codebase I feel certain emotions I can only describe as disgust. Maybe I have only seen bad codebases. I don't think you're alone. I felt the same way about overcomplexity until I had a few runs at working on already established complex frontend codebases.
What seemed to happen around onward is that the basic principles of the web were sort of simple, but then to do anything at a larger scale it got pretty crazy quite quickly, and so new architecture ideas came along to address that by people who were in the business of solving engineering type architecture problems.
For any site of inherently simple interactivity, it's always been as easy if not easier than it ever has, but now it's also more manageable if you know you're going to need to scale a certain way. It doesn't necessarily take all that much before you can start to see the reasoning.
For example, take a humble grid of products, each with their own add to wishlist button, and a profile preview button in the corner of the page that indicates how many things are on your wishlist. Pretty simple to handle, render the thumbnails with unique ids and make an XHR request that stores the data with your account. Update the wishlist total count however you would.
Now suppose though that each thumbnail in the grid can open a bigger preview dialog that has more images, a bigger description, and it's own add to wishlist button. You can click that button, and it does the same thing. You close the dialog, but now your grid item needs to reflect that it's already been added to the wishlist. These things get really tiresome to keep building, something that I'm sure isn't new to you if as you say, you've been in software a while.
Sorry for the book, I mostly wrote that to challenge myself to think it through, not to imply you couldn't think of how it would be necessary to componentize things. I'm not particularly fond of React more than Vue or anything, except for the fact that they both allow you to define UI as collections of functional state machines when it's necessary to do so.
On the contrary, I enjoy a good discussion! I do totally get the point of using a framework like React or Vue to manage state on a complex app.
I do purposefully call them apps, because websites are a more general term. Hand woven javascript UI, even if it was using an utility framework like mootools could get out of hand pretty easily. I recall things like extjs that were also popular. Following my own example, managing push state by hand was tricky. So I did buy in on the premise that an opinionated way of structuring help and more importantly state was necessary.
But I have been consistently failing to learn any new frontend tool ever since. This was not terrible professionally, since I mostly do what most refer to backend or systems. But still it is a bit frustrating not being able to follow along. Maybe it would be easier if this was 'it' when I started learning as sometimes it's difficult to forget and relearn. Maybe the pattern on these never 'clicked' or I was very unlucky to stumble unto bad examples. It's very easy to dismiss something one does not understand as unnecessary complex so I am still open minded about it.
The feeling of disgust when I see the many levels of inference, types and juggling state around for UX that I see as pretty basic persists, though. I like the result, I abhor the execution. So my impression from your post is that you are not being honest to us or to yourself about being open minded. I do not see why these are exclusive: When I read the code, I can't control feeling disgusted by what I see. Specially how every base starts with an opinionated and strong "this is how it's done" style, just to devolve into copypaste and hacks because someone didn't understand state, reductors, types, dispatchers, I've done this many times, using plain-old jQuery and server-side rendering, and it really isn't that hard.
The "conventional" way is to of course , render the preview s with classes or data attributes on the updatable elements s. For more complex things let's say you need to be able to insert a complicated, but slightly different, object in the wishlist, for example , you can render a template into the page, dup it on wishlist addition, and populate the variable data in any number of different ways.
You can even create JS objects that encapsulate this kind of logic e. No framework required. Now, I grant you that when you need to do this for many different kinds dynamic elements that all interact in different ways, or when you need to absolutely guarantee minimal re-rendering, you might want to jump to a framework.
But I still feel that most front-end people these days instinctively rule out simpler approaches that would work just fine, because they're prematurely optimizing. Or worse The thing that bothers me about React and other frameworks is the look of the code.
React components look like every other React component. One thing I like about serverside code is that a tree processor looks like a tree processor while a state machine looks like a state machine. I feel the OP. It is not about HTML alone. It is about the lack of understanding of the full picture. About the fact, that you cannot rationalize everything.
That everything is three layers away. The problem with the OP feeling and mine is that there are shoulders of giants. You either stand on them or not. If you are not, you start on much lower level of features ;.
Makes sense and I agree. For simple things I still do vanilla js. As soon as I need to re-use components or shared state between pages I go with sveltekit. Building front end apps has become more complex than it used to be 20 years ago to effectively output the same html.
Granted there is a level of interactivity that is different for the complexity, mostly I look forward to the grand complexities of todays frameworks to continue to simplicity and be approachable. As soon as you need to 1 render a list of widgets asynchronously, 2 update widget of without re-rendering the whole widget tree, you start to realize that these front-end frameworks have solved the problems that we used to spend hours writing fiddly and confusing jQuery functions to address.
No doubt. Still things get more complex before they get streamlined. Frameworks like svelte, vue, and even flutter to a degree feel different than react when putting together similar experiences in some cases. Same here, I went back to native desktop development, and nowadays I am mostly focused on backends in what concerns Web development.
NET frameworks. React is awesome, but there is a learning curve to using it well, moreso since hooks came out. Being able to define your view as a pure function based on your state is a very powerful. It was much the opposite for me.
I started building websites amaterishly from about , and professionally from about , and always hated how complicated and messy my code became any time I wanted to build rich functionality i. Not sure what you find 'disgusting' about a function that returns HTML; if anything it is more 'natural' than the templating and jQuery amalgamations of the past.
The whole concept of having both code and structure definitions in the same file is just flawed at its core. Like deliberately writing all your js in html script tags for some reason, except with functional-style syntax that just makes it look more cryptic to newcomers for no reason at all. I'm in love with the design of that website.
It's clean, there are subtle graphic changes such as the pixel art that changes when you toggle the light switch, a really fantastic job there one small remark, hovering over the pixel art on Chrome makes a scroll bar appear due to the transform. I want one. It's also proof that you can make a simple and pleasant experience with a JS framework, if you focus on the essentials, there's no need to boycott JS entirely in favour of the old web, these frameworks get rid of a lot of the boilerplate when starting from scratch.
In this example, navigation is fast and client side, but can fall back to SSR if JavaScript is disabled, fails to load or hasn't loaded yet. There is no heavy runtime with virtual DOM diffing. It renders on Cloudflare Workers close to the user wherever you are in the world, with zero vendor lock-in if you want to stick it on a VPS.
Comments
Post a Comment