top | item 25751853

Software That Sucks Less

198 points| jhallenworld | 5 years ago |suckless.org | reply

162 comments

order
[+] jezze|5 years ago|reply
I see a lot of people here complain about their toxic community. This was always the worst thing about suckless and it put a lot of people off about trying to engage and help out, including me. Luckily the most toxic of them all left a few years ago now and the mailing list is now a lot better compared to how it used to be. I'm not on irc anymore so dont know about the conversations happening there but I hope it also has become better. Its interesting how one persons bad influence can throw shade on an entire community. Most of them are really nice.
[+] nerdponx|5 years ago|reply
It's not just the toxic community. It's also the fact that their opinion of what "sucks less" is quite particular and not shared by many people.

Instead of acknowledging that they're engaged in an interesting, unusual, and important experiment, they just say that everything else sucks. The whole premise of the existence of the group is more or less that most software is written by and for inept rubes.

On the other hand, maybe their exclusionary attitude is what helps keep the interesting, unusual, and important experiment alive. I know a lot of people who really enjoy using dwm, st, dmenu, surf, etc. They are indeed good, non-sucky programs, if you don't mind writing some light-duty C code and recompiling to update your config. Who am I to judge? But you have to acknowledge that this is a very unusual definition of "sucking less".

[+] rektide|5 years ago|reply
The premise itself seems as mainstream as it comes: aggrieved and upset at the world. At least these people were/are trying to forge a better path, but to me, it mostly just seems like "the same thing but a bit smaller this time". The overall experience? Fairly close. A little better.

There was some cool 9p roots that were genuinely distinct, but it didn't seem to really take hold strongly across the community.

But yeah, there were allegedly some un-good community members too, and I'd fully believe the community itself has improved a lot.

[+] centimeter|5 years ago|reply
Creating good software inherently involves some form of exclusion; you need a strategy to exclude bad software. There are fundamentally two families of exclusion strategies that can be used: formal and informal. Formal exclusion is when you exclude bad software through formal constructions, like proof systems. This works great but is expensive. Informal exclusion is when you exclude bad software through social pressure. This works well and is cheap. Any organization that successfully leverages informal exclusion will inevitably be perceived as "toxic" in the modern jargon. If you've been in open source for a while I'm sure you can think of some examples.
[+] imiric|5 years ago|reply
Great tools and philosophy on software. I think their political views and whatever online drama they're involved in is hardly relevant to my enjoyment of their software.

st is my favorite terminal and surf my favorite web browser. It does take some effort to add the features you need and to keep them updated, but once everything is in place they're a joy to use.

The development on surf has stagnated in recent years, a few sites are unusable for me and the performance is terrible compared to mainstream browsers, but the simplicity and customization more than make up for it.

surf would make a great base to build a simple browser for the masses, if a competent C developer would polish some of these issues and added a more user friendly UI, while still staying true to the suckless philosophy. But so far unfortunately I haven't seen a particular fork pick up steam.

[+] boogies|5 years ago|reply
> a simple browser for the masses [with] more user friendly UI

I think you mean GNOME Web/Epiphany. They both use libwebkit2gtk (https://webkitgtk.org/) as a base (as does luakit, a fairly simple and customizable browser that I’ll probably switch to if/when Palemoon breaks Pentadactyl).

[+] leephillips|5 years ago|reply
I love their software and their attitude.

I’ve been using dwm for years and it’s the perfect window manager. Configuration by editing the header and recompiling makes sense when compilation takes under a second.

I’m not much of a C programmer, but I like that I can sort of understand their code. A window manager in 2000 lines means that if I wanted to I could understand how the whole thing works.

It’s all refreshing, and even, I would say, beautiful. I like that my environment uses very little memory, leaving my ram for actually doing things.

[+] asciimov|5 years ago|reply
I've been using both dwm and dmenu for about a year now. I enjoy them as they do their thing and get out of the way.
[+] stevefolta|5 years ago|reply
I switched to dwm a couple of weeks ago after using Ratpoison for years and years, and I'm super happy with it. It solves the things that bugged me about Ratpoison. The one feature I was missing was very easy to add myself (the equivalent of "set padding" in monocle mode).
[+] paedubucher|5 years ago|reply
I've been using dwm since 2010 and and still don't consider changing that. I use st at home (qterminal at work). dwm in combination with dmenu, slstatus, and slock runs fast on every machine with minimal resources and doesn't waste a pixel of your screen.
[+] MisterTea|5 years ago|reply
[+] jd3|5 years ago|reply
(not the OP of that site, but here are my 2¢)

I started really getting into computers and open source software around 2010/2011 and cat-v (I was first introduced to golang through uriel pereira's[0] proselytization) and suckless were both a pretty big inspiration to me at the time.

I used dwm/st for years, but have since transitioned back to using ctwm/xterm as I find them more approachable and easier to use/extend. xterm may be "bloated and unmaintainable" according to the suckless community[1], but it has low latency, a pretty simple config, solid UTF-8 support, and is installed by default in most X11 environments that I use (I need to bounce around Windows/macOS/*bsd a lot).

Personally, I think the biggest problem is that there is definitely a bit of ego involved in these respective communities. When I tried participating back in ~2011, rather than realizing I was an impressionable high schooler/teenage kid who could use a solid mentor to guide them through the fundamentals of X11/C/go/etc, I was instead basically laughed out of the irc channel which led me to never participate in their community again and instead just learn/work on projects on my own.

I am still aesthetically interested in a lot of the cat-v/suckless software, but the politics/drama/exclusivity/negativity of it all (particularly in the early 2010s) steered me away from ever really participating in their respective communities.

I am also less interested in tooling/ui/customization than I was back then, so I basically just tend to use whatever program gets the job done rather than obsessing over theory/purity/minimalism. I don't have a problem with those who do care about these things (I am not trying to criticize suckless as they do do a lot of great work), it's just no longer something I think about as much.

[0]: http://uriel.cat-v.org/

[1]: https://st.suckless.org/

http://cs.gettysburg.edu/~duncjo01/sites/berlinblue/

[+] snarfy|5 years ago|reply
A good friend introduced me to suckless many years ago. he tried contributing but was shut down at ever turn. They are a very closed group.
[+] rectang|5 years ago|reply
This appears to an insider rant against suckless. It starts off like so:

> clearing some things up re: cat-v

> [context: this was produced for a particular community. if this doesnt mean anything to you, dont worry]

> i am not within cat-v, i.e. “one of them” or a particular friend of anyone within it, but it was quite formative for me (on the technical side) from when i was about 14 years old, and i would like to provide the requisite context to view the whole ordeal charitably, and clear up some misconceptions suckless

> first of all, suckless are shitheels. fuck em six ways to sunday.

[+] musicale|5 years ago|reply
> they are cargo-cult idiots who do things like unironically create a linux distribution with static linking as a design goal and namesake

I've always wondered at the docker images that a) include their own shared libraries and b) typically only run a single process. Seems like static linking would be fine.

[+] kdtsh|5 years ago|reply
This is really a relief. I knew the two communities existed on a similar kind of plane, and was worried that cat-v and by extension 9front were just as bad as suckless. But I did not know how to interpret the connection between cat-v and 9front after finding out they were safe with that crossed-out swastika ... glad to hear that the harmful section of the website is effectively just dated.
[+] Kuinox|5 years ago|reply
Wonderful.

dwm, dmenu, and st.

Good naming is required to have code of good quality. These name are too short, they lack of clarity.

A good name is concise, give the point, and is pronoucable.

[+] KingMachiavelli|5 years ago|reply
I love the names:

dynamic window manager, dynamic menu, suckless terminal

The names are all very clear once you know the naming convention.

[+] paedubucher|5 years ago|reply
Is plan9 a good name for an operating system? It's named after (arguably) the worst movie ever. It's even bad as a trash movie. Is the code quality of plan9 bad?
[+] jolmg|5 years ago|reply
Some projects seem missing from the site. For example, this used to be the home of wmi[1] and wmii[2], the ancestors of i3.

There's quite a bit to see if one browses the site through the WaybackMachine.

I could've sworn it was also the home of i3 at one point, but I can't find it in the history, so maybe I'm mistaken about that. I also thought all 3 were started by the same author, but I'm not so sure anymore. EDIT: It was different people. Anselm R. Garbe started wmi and wmii, Michael Stapelberg started i3.

[1] https://web.archive.org/web/20090315090203/http://wmi.suckle...

[2] https://web.archive.org/web/20090315090203/http://wmii.suckl...

[+] tfolbrecht|5 years ago|reply
You’re probably thinking of dwm. Another great tiling window manager.
[+] LukeShu|5 years ago|reply
If i3 is descended from wmii, that's news to me.

wmii moved to Google Code[1] before becoming abandonware before Google Code shut down.

Nevertheless, I continue to use wmii as my daily driver (as it has been for just a few months shy of 10 years), but it's really starting to wear on me that bugs won't be fixed unless I fix them[2], which I no longer have the gumption to do.

[1] https://code.google.com/archive/p/wmii/

[2]: https://code.google.com/archive/p/wmii/issues/270 (when Google Code archived, a lot of users got weirdly anonymized? "Swift Bird" is me, apparently?)

[+] MayeulC|5 years ago|reply
I quite like suckless software, unfortunately it is very X-centric.

Not sure what their view on Wayland is?

[+] spijdar|5 years ago|reply
I can't speak for the group, but my guess is in practice they would dislike the Wayland ecosystem. A cursory google seems to show this too.

A lot of their tooling and favored software works by being as minimal as possible while doing its one primary purpose well. They dislike monoliths like systemd, pulseaudio, networkmanager etc. which do many tasks. The wayland protocol itself is fairly minimalist, which they seem to like, but to practically use it you end up requiring a monolith compositor/window server.

Further, Wayland fundamentally doesn't support running e.g. in a non-compositing mode, and requires more cruft to draw to the screen vs just using xlib.

At the end of the day, all the functionality that Xorg provided has to be served by something. And when you're not using one of the big boy software stacks like Gnome or KDE, that means re-implementing the wheel, or copying from another project like wlroots. I suspect they prefer the status quo in that Xorg is at least proven and fairly battle hardened software.

Just idly guessing, though.

[+] cptnapalm|5 years ago|reply
I tried running st on sparc64/OpenBSD. It compiled fine, but would instantly crash when run. I'm guessing it is an endian problem.
[+] jonatron|5 years ago|reply
Slock is the only one I use, but it's great.
[+] jhallenworld|5 years ago|reply
I recently found out about them for "tabbed" (in the tools project)- converts xterm into a tabbed terminal emulator.
[+] Barrin92|5 years ago|reply
the strange nazism aside which is bad enough I honestly think their programming philosophy sucks.

Why is it sensible to configure a software in C and having to recompile it every time I make a change? Patching software through diffs is error prone and you basically have to fiddle around with the order as to not accidentally mess up your entire program, it makes the software basically non-extensible in a sane way because there's no interface between extension and core code. The line number limits on code also incentivize spaghetti code. If you want software that sucks less you don't need fewer line numbers, you need good program structure and design.

[+] alex_smart|5 years ago|reply
Have you even taken a look at their source code? I have read plenty of open source projects and suckless's code is about as unspaghettilike as it gets. I find their approach to programming a beautiful contrast to the piles of garbage upon other piles of garbage style over-engineered approach I have seen elsewhere.
[+] raspyberr|5 years ago|reply
Well stuff like dwm and st should get reconfigured rarely so this doesn't matter. And it recompiles blazingly fast anyway.
[+] drhastings|5 years ago|reply
Have you tried it?

I've not experienced any of those problems while using dwm for the past several years.

Where I wasn't able to find an existing diff supporting my desired customizations I found the code easy to understand and extend myself.

Find me some spaghetti code in the codebase and your point might be a little more convincing to me.

[+] passivate|5 years ago|reply
I think you're pointing out procedural issues, but ultimately the proof is in the pudding. If what they're doing works for them, then its pretty hard to convince them otherwise. It would be easier to make your case if you could point out specifics.
[+] Spivak|5 years ago|reply
Yeah, I'm not really sure if DRYing yourself to death is a good approach to software development. Ansible is really really easy to hack on and it's ~1.2mil LOC which probably horrifies the suckless devs.
[+] _fq4v|5 years ago|reply
Nazism?
[+] boogies|5 years ago|reply
Strange arguable libel aside, you don’t have to compile your wm or terminal every time you make a change. There are awesomewm (and echinus and spectrwm and Qtile et al.), and xterm and GNOME Terminal and guake and konsole and xfce terminal and Terminator and Terminology and Tilda and Yakuake and rxvt et al., many al.: https://wiki.archlinux.org/index.php/List_of_applications/Ut....

Setting all those aside, you can configure any decent text editor to run `make` whenever you save, and I dare you to find any combination of patches for any single suckless software (except surf) that takes more than 1000 milliseconds to compile with tcc on a computer you use on a regular basis (should work for any normal desk/laptop from the past decade or two).

[+] _fq4v|5 years ago|reply
Runit is amazing, and a great replacement for standard init on embedded systems
[+] nrclark|5 years ago|reply
For the record, runit's code is in really bad shape.

It uses deprecated APIs, and also hasn't been updated from K&R C. There are a number of type warnings on 64-bit systems. The build system cannot be used for cross-compilation, and compiling/installing it is a disaster kind of generally.

Runit's licensing is all over the place, and its documentation is incomplete/inaccurate. It's been abandoned by its creator, as near as I can tell. I tried to get in touch with him a couple of years ago to offer some fixes, and got radio silence. There is no apparent way to contribute code to the project.

I've never used the busybox version, and so I can't speak to that one. But upstream runit has been a dead project for years, and badly needs to be forked by the distros that use it.

[+] arp242|5 years ago|reply
Yes, but it's not part of suckless.
[+] zamalek|5 years ago|reply
It boggles the mind that developers, who believe that software should be minimal and do one thing well, attach toxic political agendas to their software[1] for no good reason. From a pragmatic standpoint Nazism (and all forms of racism) is pointless expenditure of mental resources and over-complicates life in general; which seems to conflict pretty strongly with their claimed ethos for software.

[1]: https://twitter.com/kuschku/status/1156488420413362177

[+] paedubucher|5 years ago|reply
I smirked a bit when I saw that picture, because the camo trousers and the bald heads look a bit edgy in that context. But hiking with torches is nothing strange here, at least not in Switzerland. We often do this in the winter, for example when walking to a Christmas dinner together with all the employees from the company.
[+] eznzt|5 years ago|reply
Ever heard of codes of conduct?
[+] bitwize|5 years ago|reply
Actually it makes perfect sense.

In order to truly democratize access to computers, you must meet your users where they are. That means you have to put in a lot of hard work and abandon your academic elitist norms of "elegance" in favor of empathy. The real world is messy, your users have messy minds, so your software is going to be accordingly complex and messy. Embrace this. Your users will be better off for it.

Empathy is inimical to the Unix philosophy. "Do one thing and do it well" forces the user to cobble solutions together out of the tools they have lying around, and not all of them can do this. This causes stress. The empathetic programmer seeks to minimize stress by putting everything the user may wish to do within their reach, the unempathetic programmer just doesn't care. If you can't understand the system on its own terms, well, sucks to be you. This creates a hierarchy of haves and have-nots: power users, hackers, and the l33t who can engage with the system on its own terms, and "lusers" who cannot engage with it meaningfully at all, which suits the power users just fine -- that's the endgame of Unix-philosophy fundamentalism.

Nazism and fascism are political philosophies embraced by unempathetic people, so it's no surprise when a bunch of empathy-deficient Unix-philosophy hardliners also turn out to be Nazis.

[+] vlovich123|5 years ago|reply
The “do one thing and do it well ethos” is a UNIX academic philosophy, specifically around command line tools. Most software neither write code like that nor necessarily ascribe to such a philosophy.

I can both hate the ideology and accept the software as having utility for me (not that I think I’ve used any of it, but in principle I have no problem with people being fascinated by TempleOS even though I am against a lot of the things the author has stated he stands for).