Software minimalism

What is your stance on software minimalism? How far do you go? Where do you draw the line from too "autistic" or too "blackbox"? I see quite a few people here dislike systemd because it is a complex system that you can't easily replace with something else if your software is tightly coupled. Not trying to make another systemd thread, we already had too many. But this kind of mentality had me thinking more about how much do I control and own my system and I have been flirting with idea of using OpenBSD since it is easier (less complex and less moving) target to master the ins and outs of the system.

Other urls found in this thread:

linux.die.net/man/1/write
twitter.com/AnonBabble

For me personally, I have been mind wrecking with this topic for months and can't decide what exactly do I want.
I love the idea of slowly mastering a non-moving language like C99 and have enough knowledge and realistic opportunity to have actual control over the software I use (from the kernel up to the userspace). Even though in most situations it is best not to create "legacy debt" with your own modifications, but the ability to do so if needed is a major advantage.
I understand where suckless/cat-v people are coming from, but I don't particularly think that doing this way is 100% pragmatic in our current situation.
For example, web browsers are constant moving target and so complex even corporations are having hard time following the standards.
So personally I like the functionality of the web browser since it is important tool in my life and I am ready to make some compromises and rather focus on other tools where software simplicity can more realistically be achieved. Since crying about it 24/7 doesn't help me in any way.

Esentially what I am saying is that, I am OK with making compromises and using Firefox instead of Lynx and use it as a blackbox solution, since it is unrealistic for me to invest so much time and effort, while at the same expecting same level up functionality.
At the same time, I believe that software like text editor, file navigators/managers, shells, image viewers, music players, calculators, torrent clients, irc clients, etc etc should NOT be as complex and can easily be developed and used in more "suckless" way.
But I can't decide where to draw the line. I am interested in hearing your opinions.
sorry for double post and bumping my own thread

Constantly moving software can be improved by niche forks that improve upon simple concepts of a gigantic, monolithic program and offer that service without change. For example, stripping out everything from a browser that doesn't pertain to browsing (email clients, "cloud" services e.t.c.) and offering a simple HTML/CSS rendering engine with page layout and page functionality (realized via a scripting language) provided by a sort of maintainer not necessarily related to the website itself. My example can be useful to people who want to use specific websites with less load and a simplified design, with somewhat improved security being a bonus.

The problem with the browser example is that it's targeted toward an absolute majority of people. With how fast new frameworks appear and with the amount of things websites want to do on your machine rising constantly, going for minimalism is a bad business move since the majority doesn't care.

The less demand for change there is for a piece of software, the more you can afford to minimalze it. So system stuff on an OS mainly used by system administrators and tinkerers/enthusiasts does feel comfy. Suckless just takes it to the most autistic extreme.

Also, from what I understand, the main gripe with systemd, aside from trying to bring their incompetence to kernel level, is that you can't simply turn off a service that annoys you. You technically can, but upon doing so you will find out that its functions run even deeper and now multiple annoying workarounds need to be in place for everything to work.

Functionality > Minimalism
Fish is the best shell there's no point in even talking about bloat.

I define Bloat as additional functionality that I don't need. So minimalism is essentially the lack of bloat. So if Bash vanilla features are not good enough for me, then I wouldn't define Fish as bloated because I need/want those features. But that is a subjective. But with those features comes extra complexity in code so in order to use it you must be OK with someone else maintaining that shit for you and if they quit you must be OK to start looking for alternative because nobody wants to touch the code with the 10 foot pole.

The point of making code concise is to prevent and eliminate bugs efficiently. Complexity in software introduces too many variables of what kind of input is to be expected and accepted.
An easy example is writing a function in any language. If you write a function, and you only want it to add two numbers, do you add complexity to that function so if the result is greater than X that it should open a file and write to disk?
It would be better to return the value from the function and then handle the next step in the program flow outside of the function rather than in it.

Alternative is to define what is good enough for you and settle for less if possible. Get familiar with the code base and when shit hits the fan you put your big boy pants on and start hacking on the code.

I like it as minimal it can get without it going into negative usefulness territory like suckless.

What would suckless version of that look like?

Pick one of the fine, suckless approved applications:

write.
linux.die.net/man/1/write

Working on large projects like that don't require you to have a complete mastery of the language that they're writen in. Obviously you have to be knowledgable, but for the most part understanding and learning the apis is what you need to do to be able to understand the codebase.

You usually do require close to mastery for large projects. Linux, for example, has a considerable amount of C magic in day to day code. If you've worked on large C projects before you'll be fine as you'll have been exposed to all the common idioms by other names, but a neophyte is going to pause every time they hit something like container_of().

Max size for my kernel is 5MB

I don't understand why suckless is hated so much, I never thought it would wibble anyone's wobbles to a significant degree. Why can't some people find solace in reading then writing instead of requiring gtk+ to be shoved down their throats, and more importantly, how can we prevent this useless and bloated behaviour?

Yeah, suckless is pretty great, even considered joining their email list but I don't feel I could contribute a lot. dwm and dmenu are really useful, have been using them for a few years and not a single complaint.

Suckless is embarrassing cringe to anyone skilled in software development. At some stage of development programmers might be attracted to it, but you look like mall goths to everyone else.

Suckless is just silly: bloat is measured by a project's loc, minimalism to the point of inconvenience (no config file, everything is hard-coded, recompile to change keybindings), and projects that are despite their lack of features are less performant than the "bloated" alternatives (dmenu vs xfce's or lxde's launchers).
Overall elitist attitude with nothing to show for it.

"Right Thing" minimalism, having a program that already covers everything it is supposed to do in a concise way, is very beautiful. "Right Thing" solutions are not always minimal because not everything has a minimal solution.

"New Jersey school" worse is better "minimalism" sucks and leads to constant bloat and cycles of replacement programs, but they also keep the old bloat around for "compatibility" which means the bloat never gets thrown away. The bloatware mawk uses 117768 bytes, larger than GW-BASIC and Turbo Pascal 3 put together, and I don't use it. awk is like a tumor on my computer. Removing it would do too much damage because I don't know what uses it. I don't use awk because it sucks and there are other programs that do the same thing but better.

Blackbox is too autistic, I use Openbox