<article>
Sun 12 Jan 2025
I fucking hate installing things
No I dont want to install another LSP server and no I dont want to
install the plugin for said LSP server to interact with my third party
LSP plugin because the built in solution is so “““minimal”“” that you
need to install 5 different libraries out of a pool of about 100 to
match its functionality despite them doing almost exactly the same
thing. No i dont want to install another library, or install the
legacy_foo_wizz_bah
from PyPi because the users will
complaining it doesn’t work on python 3.3000 because they removed it
from the language core, because they though nobody was using it. And No
i dont want to install another is_odd
for the shitty
program Im ever gonna use once.
I fucking HATE dependencies and I HATE installing them
An ideal environment should have generally everything I need and want without having to INSTALL anything. ANYTHING. At some point in the past this was a sought after feature, python largely got popular cause of the extensive standard library and win32 had everything you need to create a Windows applications, however times are changing. One could argue that this was because was because of the lack of an omnipresent fast internet to every devices, however I posit that this is due to a shift in software philosophy.
I suspect most people already know the problems with installing random plugins/dependencies so lets speed-run it instead! Security issues arise because installing a github project with 3 stars from 3 years ago will have muh vulnerabilities, In the off chance your plugin(s) are still being updated your at this whims of the authors update cycle, with them introducing compatibility issues, unwanted features, etc etc. And oh theres like a 0.1% chance of them installing AIDS onto your computer with every update because of malice or in protest of the $CURRENT_THING.
Plugins
For the purposes of the article, Plugins are extensions to already built programs, and is interchangeable with addons, dependencies and whatever else. Dependencies needed to start the program are largely another topic, however a programming languages standard library is a matter of software extensibility, and a good one should eliminated most program dependencies outside of the language runtime.
Pidgin plugin page Kate plugin page Claws mail plugin screen (an arguably more primitive one because you load plugins using .so files from a directory in /usr lol, luckily the arch people included it) Other notable examples include notepad++
Notice something about these plugin pages?
YES! They’re already
populated!
I didnt have to install these plugins, they came with the
application1. Of course I installed them through
my package manager so this may be subject to availability
your specific distro but to my knowledge these plugins are included in
most installs, so unless your packager manager is an ass or using Debian
you too should get these too. Additionally these plugins are
really useful, like I can now use claws mail as my RSS
reader thanks to the RSSyl plugin included by default.
The history plugin, of pidgin included by default
massively improves QOL when using pidgin as it shows you last
“conversation” you had with the person in the chat window so you can
remember what you were talking about, however the program has many more
issues that no amount of plugins can fix.
Many modern applications have plugin support, but neglect to actually bother bundling anything, relying on dubious “community plugins” or even first party proprietary plugins masquerading as “community plugins”, (Im looking at you VSCode). You have to go to a website, or if especially spicy, a webview in the application, download the first of six results for the thing you need, then you use it and it turns out to be a slow buggy mess and the comments are telling you to use $x instead and then you go use that but the it doesn’t have the feature you need uuuGGGGGGHHHHHHHH! I do not need this kind of decision paralysis in my text editor!
Im not apposed to plugins/dependencies/addons (whatever you want to call it). In-fact they are an excellent technical solution to allowing out of band feature updates or even allowing power users to extend the application any way they please. Im not apposed to community plugins either, because every person is different and features that seem small to the author can be big to others, and If big enough a plugin can be created. Another common case is where a plugin provides a features thats “out of scope” from the original application, like the aforementioned RSSyl plugin, community plugins can resolve situations like this.
However as a UX decision, its a piss poor idea (see the problems paragraph), particularly when the plugins main source is from the internet. The ideal solution to software extensibility are featured plugins built up over the years that are bundled with the program. Programs that use this model get plugins that are wayyy better than they aught to be in my experience, reducing plugin duplication from people complaining, increasing the quality of the code footprint and arguably providing a wider set of features.
It may seem like a small difference, downloading from the internet vs loading it from a directory in /usr, especially in an always-online world we live in however it is a major difference, because internet things introduce internet problems™. Competition, the need for safer (slower) scripting languages to implement plugins in and poor software philosophy are largely internet problems that persist even after you turn off auto-update. It sets different expectations and draws a different crowd, one that largely produces worse experiences.
Minimalism as a protocol
Wayland is a new display server for Linux, unlike it predecessor X11, its implementation was fairly full-featured (at least for the 80s), Wayland has the explicit aim of being minimalist. This result in a this, a fragmented “ecosystem” competing protocols in different states of completion and compatibility with major desktop environments, all providing basic features such as screen sharing, screen tearing and display scaling. Apparently the work is almost done after 10 long years, despite still having plenty issues. A fractured ecosystem of “protocols” to provide basic features and interrop is not a good tactic to software extensibility2.
This is the new default neovim LSP system, and this is what a default config will get you. To get more out of it, like a fancier dropdown or those little triangles in your gutter you have to install other shit, compare this to CoC, which despite being an objectively subpar piece of software powered by nodejs and NPM extensions, provides all the little nicities out of the box, renaming, documentation popups, it’ll even suggest filepaths to you when you start typing one out (something ive never been able to replicate with nvim lsp). Upon further research it seems to be that neovim in newer versions now provides many of those features, such as renaming, gutter warning, etc etc, so my view on this matter may be a little antiquated, however considerable lua is still needed, still creating a place for the dozens of wrapper plugins and quick start guides. And before you say that Vim and Neovim are supposed to be “minimalist”, no, that is part of the problem…
Minimalism
Minimalism does not imply a lack of extensibility and bloat does not exclude feature bundling. In the above example of applications that bundled out of band features as plugins are literally 0% impacted by any amount of plugins, as they are only loaded when the user chooses to do so. Its only as bloated or lean as you call for, and is arguably less bloated than “everything and the kitchen sink” type applications, or using multiple applications that can be done in one3, like using your email to do RSS too. This is in exception to of course to disk space.
However even “minimalist” applications are usually quite feature-rich, for example newsboat is arguably the most fully featured RSS reader out there, supporting dynamic filters, keybinds to any command you want, categories, etc etc, yet it ranks top in “minimalist applications”. And command line programs (at least on a unix system) are infinitely extensible and feature rich with the use of pipes, awk or just “add more flags bro nobody’s gonna notice (looking at you ffmpeg)”. It seems evident that smartest “minimalist applications” particularly TUI and CLI ones just expose us to a different kind of bloat, importantly one that doesn’t consume more RAM, one that dare i say is useful, which is what people really care about when talking about minimalist applications. Vim is not that smart, perhaps emacs is, but not Vim and neovim, and thus still subject to many of these criticisms.
Conclusion
This articles a bit of a mess of ideas that probably needs expanding on, but its really a result of PURE UNBRIDED RAGEEEEEE from trying to use python’s cgi module which they just got rid of, and then trying to use Perl’s cgi module which you also install, however Ive been feeling this for a while. Really this is part of a larger cultural push? people want lightweight editors like VSCode instead of a full IDE after all. I think in we’ve lost something in seeing the “Software as final”. This is most evident in video games where every game is either early access, live service or need an emergency day 1 patch, then another year of patches just to make it work.
KISS, An idiot admires complexity and even worse is better has been the mantra of software programming for what like the past 40+ years? However with the rise of the AI-junior programmer who doesn’t know anything and rapidly declining code quality, were already starting to see the glimpses of a new philosophy. Elegance over simplicity or better is better, because the worse isn’t made by programmers anymore.
Most of the plugins in the above screenshots are community plugins (plugins made by individuals who aren’t the creator)↩︎
A lot of the problems are also caused by the core protocols stringent security architecture and the loss of separation between display manager, compositor and window manager.↩︎
This is a dangerous argument to make that should only be enjoyed in moderation, and how we ended up with Chrome doing your email, documents and taxes.↩︎