Software is complicated. The world is complicated. The tools we use to interact with the world are complicated. We are complicated. Though it’s generally good to get rid of inessential complexity, getting rid of essential complexity is counterproductive, and this is not something I see addressed by the suckless methodology.
I use fvwm, which is a relatively simple X window manager (if a bit more complicated/flexible than dwm), and screen, which is a composable (and, again, relatively simple) terminal multiplexer. I also use linux, which is an enormous monolith. Ditto zfs, zsh, gcc, clang, firefox…
Then again, for some purposes I use tcc, lynx, fat
I do not see a huge amount of intrinsic value in my tools being simply made. They might be better if they had been written that way from the start, but that doesn’t matter very much. The question I ask is, what value do these tools bring to me now? Even if all my tools were simple and composable (as per the suckless philosophy), the computing environment would still be too complex for me to hack on all of it. Insofar as I do find my tools inadequate, it’s generally easier to configure the more complicated ones than to modify the simple ones. I use tcc because it has good compile times. But I also use gcc because, inside of all the inessential and redundant complexity, there are high-quality diagnostics and optimizations. That is essential complexity. You can’t hack tcc to add that (I actually took a look at tcc internals to see what that would take. It would require a big re-architecture.) That doesn’t mean gcc is well-made, but it does mean that, as a user, I derive value from gcc that I don’t from the hobbyist compilers.
Minimalism is definitely something we should try to instill in the software we create. But that doesn’t mean we should attempt to use software because it’s minimalistic, nor that we should shy away from (essential) complexity in the software we write.
To expand on that, we don’t all have the same abilities. That’s why accessibility is important, though it adds complexity. So I get frustrated whenever I see a developer write their own simple, lean GUI toolkit because mainstream GUIs are too bloated. These simple, lean toolkits invariably don’t support their host platforms’ accessibility APIs, meaning that they can’t be used by blind people with screen readers, or people with mobility impairments who require alternate input methods. That’s why, whenever I encounter a thread about such a toolkit, I bring up the lack of accessibility support and plead with developers to not use that toolkit in any application that might be required in someone’s job or education, unless the task itself inherently requires sight and keyboard or mouse input. Unfortunately, this problem is big enough that I can’t solve it by casually sending patches on nights and weekends; I wouldn’t even know which project to start with.
To be sure, mainstream software does have some accidental complexity, which translates to bloat. But not all of the complexity is bloat. Accessibility is one instance of necessary complexity. For many applications, internationalization is another.
To be sure, mainstream software does have some accidental complexity, which translates to bloat. But not all of the complexity is bloat.
Indeed. I think it is unfair to say GNOME (or KDE) are bloated, suckless is lean and has fewer bugs, GNOME is doing it all wrong. They have vastly different target audiences. GNOME addresses a general audience, it is an environment that one could install on a non-techie’s desktop and they [sw]hould be able to manage themselves. This means deep integrated support for power management, disk/network mounts, setting up networking/VPNs, accessibility, fingerprint login, a uniform look & feel between applications, notifications, easy management of various display setups, integration of file dialogs with sandboxing (portals), graphical printer configuration, etc. You cannot ask this audience to compile a C file to do their configuration. Supporting such a wide variety of deep integrations just make the problem vastly more complex. You need a lot of communicating parts (IPC), a framework for configuration, etc.
While I primarily used simple window managers (primarily WindowMaker and fluxbox) ~2 decades ago. I have made the conscious choice to use desktop environments (GNOME in my case), to save a large amount of time around managing VPNs, displays, etc. I am pretty happy with GNOME’s default settings and barely change anything (and the few extensions that I add are defined declarative with Nix).
I can fully understand why someone would go the Sway, i3, dwm, etc. path. But I think we should avoid calling one or the other approach inferior.
You can install XFCE on the laptop of a general audience too, though. It’s much less bloated than GNOME or KDE but it has all the things you talk about, as far as I am aware.
The problem with GNOME is not that it’s bloated with features or functionality but that the way in which it is implemented makes it incredibly slow, sloppy and.. bloated. There’s really no other word for it. It uses enormous resources, it runs a million background processes and daemons doing unknowable things, it doesn’t work at all on older laptops, it requires systemd, etc.
There’s nothing inherently ‘bloated’ about floating window managers or accessibility. What’s bloated is how they’ve gone about all of it.
You can install XFCE on the laptop of a general audience too, though.
Can’t say, I haven’t used Xfce in years. For me the most important missing feature would be Wayland support, which drastically simplifies mixed DPI support.
The problem with GNOME is not that it’s bloated with features or functionality but that the way in which it is implemented makes it incredibly slow, sloppy and.. bloated.
I use a fairly modest Intel NUC as may daily driver and GNOME is very fast, I never encounter any slowless. Our daughter has a baseline Intel NUC that cost ~120 Euro excluding RAM and SSD, same story, I never saw any delays in GNOME.
It uses enormous resources,
My current GNOME session, which has been running for several days is using 400MB RAM with a HiDPI screen, which is merely a blip compared to Firefox with several tabs open. Won’t be a problem with a machine >= 2GB RAM. Oh, and gnome-shell and mutter have its own Wayland compositor, so that 400MB RAM includes more or less what would be the overhead of X11 itself on Xfce or whatever.
Can’t say, I haven’t used Xfce in years. For me the most important missing feature would be Wayland support, which drastically simplifies mixed DPI support.
Wayland seems to me like a big step in the wrong direction, optimised for DEs that are going to implement everything themselves anyway, but horrible for the ecosystem of small window managers because they need to become much bigger and cover a much bigger range of functionality. I believe ddevault’s wlroots stuff helps here but surely doesn’t fix everything. At least initially, every Wayland compositor needed to implement things like screenshots themselves.
It’s not clear to me why the problems with X couldn’t have been solved without moving huge amounts of functionality into the compositor.
I use a fairly modest Intel NUC as may daily driver and GNOME is very fast, I never encounter any slowless. Our daughter has a baseline Intel NUC that cost ~120 Euro excluding RAM and SSD, same story, I never saw any delays in GNOME.
My current GNOME session, which has been running for several days is using 400MB RAM with a HiDPI screen, which is merely a blip compared to Firefox with several tabs open. Won’t be a problem with a machine >= 2GB RAM. Oh, and gnome-shell and mutter have its own Wayland compositor, so that 400MB RAM includes more or less what would be the overhead of X11 itself on Xfce or whatever.
I’ve tried using GNOME vs XFCE on older laptops and the battery drain on GNOME was much higher than on XFCE, and GNOME always had this lagginess and clunkiness that XFCE didn’t have. I don’t know why, it just seems to.
I don’t see why desktop environments shouldn’t be able to run fine on 10-year-old laptops. People shouldn’t need to update their computers with gigabytes upon gigabytes of RAM to run basic stuff like web browsers and desktop environments.
Wayland seems to me like a big step in the wrong direction,
Well at least not every process can read my keystrokes or do screen grabs anymore, without resorting to nested X servers and whatnot.
Including all of GNOME’s dependencies?
My whole user session currently has 71 processes, which includes the 11 processes that Firefox creates, a bunch of terminals, mosh, gpg-agent, scdaemon, Xwayland for those legacy X11 applications, etc.
Again, on my system GNOME is never the problem, it is fast and takes a reasonably amount of memory. Moreover, most processes that it spawns have descriptive names such as gsd-power (there are very few processes where I don’t know from first sight what it’d do).
The problems are the browser, which takes more memory per tab than GNOME itself for some web sites, the Slack client which again takes more than a whole desktop environment and gets terrible latencies over time, Skype, etc. Unfortunately, I need those programs for work. (Though at least for Slack there is Discord, which is a nice and fast Qt application.)
Indeed; I have come to feel a little uncomfortable with some of advocates of “the suckless philosophy” (Christine excluded, of course) for the reasons you mention. I wrote up my thoughts on the matter a while ago and have become more gun-shy of even the use of the term “bloat” since then.
I downvoted your comment as ‘troll’ because I don’t think I’ve ever seen a better example of someone assuming bad faith in the discourse on this website ever. There are good arguments for the use of some of the software commonly described as ‘bloated’. They do not include that everyone that advocates for non-bloated is just a neo-Nazi that wants to subjugate women. These bogeymen probably exist somewhere but they’re not arguing on lobsters they’re on Stormfront or something.
Rather than opening yourself up to the possibility of actually being wrong about something by having a proper discussion around a thorny technical issue on which there are no right answers, you just dismiss anyone that favours simple software as being alt-right men who have had stockholm syndrome because of suffering through tools with bad user interfaces.
I’m not going to go into the details of why your post is filled with incorrect ideas and offensive stereotypes for the same reason none of us would go into detail explaining why a racist is wrong: they’re not going to respond in good faith, and I’m sure you won’t respond in good faith either.
The irony that you end your bad faith post with a snide aside dismissing a genuine concern raised as just an ‘unfounded assertion’ that’s ‘made in bad faith’.
They do not include that everyone that advocates for non-bloated is just a neo-Nazi that wants to subjugate women
From my post:
While I think this is a big part of the impetus for the more virulent misogynists and “alt-right” members, it’s not the whole picture.
The other aspect is the one that I think is more important to talk about, because it’s less obviously wrong, more subtle, and much more widespread.
So no, that’s not my assertion; I’m just saying that places that harbour those sorts of people – I’m thinking more of 4chan than Lobsters here – also tend to be places that are most vocal opponents of “bloat”. The rest of what I wrote about there is a more subtle cognitive bias that doesn’t assume ill will on behalf of the minimalism proponents, just a very human sort of loss aversion.
But sure, I’m also a troll that wrote my thoughts down more than a year ago and didn’t link them anywhere until now for the sole purpose of offending Lobsters.
The sibling comment put it very well, but it is missing some data that puts things into perspective
You write:
both of those organization are also frequently seen railing against “political correctness” and “SJWs”,
What is it about the seemingly-reasonable desire for software to not be “bloated” that seems to have this correlation with anti-social-justice view points?
You are going to see this correlation to anti-PC and anti “Social Justice” in just about any group you care to look at, because the vast majority of people reject PC and the capital-letter Social Justice of the SJWs.
a full 80 percent believe that “political correctness is a problem in our country.”
80%. That’s about as close to unanimous you’re going to get on any issue.
Heck, if xkcd is to be believed, that’s more than “feel positively about kittens” and only 1 point below “enjoy apple pie’
And no, this isn’t “old white men” either, subtitle: Youth isn’t a good proxy for support of political correctness, and race isn’t either.
Even young people are uncomfortable with it, including 74 percent ages 24 to 29, and 79 percent under age 24. On this particular issue, the woke are in a clear minority across all ages.
Race? Nope.
Whites are ever so slightly less likely than average to believe that political correctness is a problem in the country: 79 percent of them share this sentiment. Instead, it is Asians (82 percent), Hispanics (87 percent), and American Indians (88 percent) who are most likely to oppose political correctness.
In fact:
Progressive activists are the only group that strongly backs political correctness: Only 30 percent see it as a problem. [..] progressive activists are much more likely to be rich, highly educated—and white.
That’s a very good point! I will think about that.
My immediate thoughts on that would be:
I’m not American, I wonder what those numbers would look like in my country?
I wonder what those numbers would be like if you asked people about more granular, actionable topics, instead of blanket “political correctness” or “social justice”. I will definitely admit that there are many that just like to use those concepts as cudgels against people they don’t like, so they absolutely have pretty negative connotations. However, I wonder what the numbers would look like if asked, for example, “people should be addressed in they manner of their choosing”?
In any case, in my above-linked diatribe, it really was the latter half that I was more interested in, wondering what the other reasons are for people to promote that “minimalist” code aesthetic.
The other aspect is the one that I think is more important to talk about, because it’s less obviously wrong, more subtle, and much more widespread.
Why people promote non-bloated code aesthetic: as a counter to the overwhelming trends in our industry? Wirth’s Law: Software gets slower faster than hardware gets faster.
Or Alan Kay:
A twentieth century problem is that technology has become too “easy”. When it was hard to do anything whether good or bad, enough time was taken so that the result was usually good. Now we can make things almost trivially, especially in software, but most of the designs are trivial as well. This is inverse vandalism: the making of things because you can. Couple this to even less sophisticated buyers and you have generated an exploitation marketplace similar to that set up for teenagers. A counter to this is to generate enormous dissatisfaction with one’s designs using the entire history of human art as a standard and goal. Then the trick is to decouple the dissatisfaction from self worth—otherwise it is either too depressing or one stops too soon with trivial results.
Thank you for writing that up; it’s something I’ve felt myself for a while but never really put into words.
I’ve been thinking about some of the things Bryan Cantrill has said about values in software projects — fore example, “minimalism” and “usefulness” are both positive things, and anytime a project can choose both, it should. But if the project must choose between them, its values (or rather, the values of its maintainers, and hence the values of its community) determine which direction it chooses.
Minimalism is a positive thing, but when I read about suckless I get the impression they regard it as a moral imperative that everyone should follow, not just a personal choice. I think it’s that unwillingness to engage with other view-points of view that really pushes me away.
I think it’s that unwillingness to engage with other view-points of view that really pushes me away.
Exactly, it’s the moralizing around the issues of minimalism vs “bloat” that bother me. Really, if they just said “featureful” vs “minimalist” and used less value-laden terminology, I think it would be a lot less contentious.
You recasting it as only minimalism vs. featurefulness is not accurate, they say that minimalism is a way they feel they can achieve higher quality.
And I wouldn’t agree with your recasting either. Most software is horrendously bloated, even if it is not particularly featureful, and the bloat appears to increase superlinearly with features.
A “small” example: Xerox PARC in the 70s had their “Interim Dynabooks”, the Altos, with a version of what we now call “personal computing”. WIMP interface, word-processing, e-mail, networking, laser-printers, IDE. 20KLOC. One of today’s incarnations of “personal computing” is MS Office. This does more. Lots more. Let’s say it’s 100 times better at “personal computing”, which I personally find generous. However, it is in the vicinity of 400MLOC, which 20,000 times more code. That’s a lot of code. In fact the increase in code bulk s 200x the increase in “better personal computing”. In other words, what’s 99.5% of the code doing?
And for a craftsman, the quality of their work should be something that its a value to aspire to.
Your thoughts on the matter sound very much like a rehash of the age-old vi vs emacs debate to me, put in more modern and somewhat more overtly political terms with appeals to humane interfaces instead of everything-but-the-kitchen-sink (upon which someone made a kitchen-sink package) and as such seems to run on the same circuits as that discussion did - and does, with a whole host of Electron-based editors thrown in. By now I’d assume someone has proven vi vs emacs to be NP-hard and as such unsolvable, only approximated.
There’s nothing inherent to accessibility that makes software bloated. People are sick of incidental, inessential complexity or complexity that exists only to allow minute configuration options that would be better offered in a different way (like composing with other tools). That’s the complexity that is being railed again.
I think exactly because all those things are complex you want to avoid adding more complexity on top, causing more headaches and less understanding.
Also there are some non-inherent benefits of simple software. It usually takes good understanding of a subject to create something simple. One can see that when programming, first solving some problem, maybe making a prototype usually leads to being able to flesh out the mental picture and once that is more clear allows for a pass where things can be - sometimes significantly - simplified.
Of course depending on the complexity of a problem there is bound to be limits to how simple a solution can be, but I think simplicity of software is not some fixed value of lines of code or something along that, but that the presented solution is simple in regards to the problem you face.
Metrics, such as lines of code an be indicators, especially when comparing multiple solutions to the same problem, but it does not necessarily mean a solution is also easy to comprehend.
The problem at hand I think is also usually not “software of category X”, but a set of goals that one wants to achieve. That’s something that sometimes is very much missing in software projects resulting in them implementing everything a developer feels like adding on a given day. While I don’t think there’s something wrong with this a set of goals can help ensuring to keep in mind what your goals are and thereby keeping the direction in which a project is heading focused, by making it easier to see when something is out of scope or might only be related to the topic, but doesn’t really fit the project for other reasons.
Another benefit here is that simplicity then usually allows for reaching maturity faster. If goals are clearly defined and there’s a limit to what you want to achieve you can go over to get rid of bugs and rough edges earlier, then when you are busy implementing features bringing new bugs and rough edges. Now of course that doesn’t mean that you will actually use that time for this, after all adding a new feature usually feels more fun, but you could.
So in short: I think essential complexity is not something that goes against complexity. After all people writing minimalist software don’t completely abstain from writing software and one could argue that every line of code and every bit of logic adds complexity.
That one actually solves an avoidable problem: the insane diversity of hardware interfaces. While diverse hardware interfaces might be needed for exploration at first, there comes a point where we more or less understand the goals of limitation of said hardware, and can settle on a fixed, relatively simple interface. Imagine a world where you’d have one graphics driver, one printer driver, one webcam driver, one spinning hard drive driver, one SSD driver, one network card driver…
That would simplify things quite a bit. To the point that maybe we’d be less willing to tolerate sprawling complexity at every level.
I believe he’s contrasting linux against (e.g.) a microkernel. Microkernels tend to be much simpler (inside the kernel), and to allow for more composable drivers.
Part of me feels like there may a certain level of cognitive dissonance going on when I see someone advocating wasm/rust/nixos vs suckless in the same blog.
The other part of me feels cross pollination of ideas is really important and I like the open mindedness of the author.
I’ve been using dwm off and on since college, it’s just the thing I’m the most used to. I started using dwm out of necessity because my laptop didn’t have enough ram to do much of anything without a super-minimal setup. It’s also part of how I got really good with C. I sometimes wish I could find that old dwm config somewhere, but I’ve accepted that it’s probably gone at this point.
The cross-pollination of ideas is basically the driving force behind my blog and a lot of my open source work in general. I want to inspire people to explore things at levels they may not have thought about going into.
Also a nice side advantage of using NixOS is that I can trivially make a bootable .iso of my dwm+emacs+luakit+cabytcini setup for people to experiment with in a VM. DM me if you want a link to the .iso.
Thanks for your writing. I think there are things to learn from both the Nix idea of managing complexity well and the very different “well, what if we didn’t need all that complex crap” approach of suckless. I’m glad to see writing about both.
I’ve been using dwm and st for some time now, but honestly, I see no point if you do not want to micro-manage your own environment.
How many projects from the past, from the era before package management are still used commonly? I can’t come up with a single example. Dwm exploded quite recently (in UNIX-like history perspective) and it depends on Xlib which IMHO destroys entire claim of minimalism. C is not a ‘hackable’ language and having a set of patches just, in my view, leads to a mess of management, compatibility etc. I’d much rather uses either a WM written in a language that is much more open to code is config system (i.e. xmonad, stumpwm) or just resign from thinking about my tiling WM setup and move to spectrwm, i3, and others.
On the other hand st… Well, it is really good terminal emulator for how terminal emulators are used these days, but please, if you package it, package it at least with Xresources and scrolling patches. A one groups radical opinion cannot determine terrible user experience from the standard way of installation.
package it at least with Xresources and scrolling patches. A one groups radical opinion cannot determine terrible user experience from the standard way of installation.
The entire point of st is that it doesn’t do scrolling: that’s what a terminal multiplexer is for. What next, add tabs?
Actually I think a terminal emulator with scrolling and tabs is a better alternative to stacking a terminal emulator and a terminal multiplexer. The reason is that with the former, you have a separate terminal emulator for each tab, and it natively supports scrolling. With the latter, you’re stacking two terminal emulators, because the multiplexer has to do its own interpretation of VT100 escape sequences to maintain its model of what should be on the screen. Stacking two terminal emulators strikes me as more complex.
I do not like when I open a piece of software it does not contain basic functionality. That’s that. A task of good terminal emulator is to replace the mess that xterm is. For cases like scratchpad term scrollback is very useful.
Then, if you agree with suckless philosophy anyway, you would not use the packaged version anyway.
I mean, there’s (presumably) a tension there; email is pretty basic but I don’t need my terminal emulator to embed its own email client.
If you’re using tmux anyways, it’s already got scrollback, subtabs etc; having those things implemented at two layers results in super confusing behavior when EG they both try to scroll.
That’s interesting. I do agree with you that it’s a useful feature to have, in a vacuum. When all I want to do is just run some commands in a terminal, having scrollback in my terminal emulator is the simplest and easiest way of having scrollback.
But when you get into doing some more advanced stuff, having all the functionality implemented everywhere starts to get really annoying. For example, when you have vim open in a tmux window in a terminal emulator that has scrollback and tabs inside swaywm, you have about a million ways to do something like tabs/panes.
Vim itself supports tabs and splits and obviously scrolling too, then tmux supports tabs and splits and scrolling, then the terminal emulator also supports tabs and scrolling and often splits too, then the window manger also supports tabs and of course “splits” in the form of tiling two windows on a single monitor. I haven’t seen scrolling in a window manager but I’m sure it exists somewhere, I guess a ‘zooming’ feature that supports windows larger than your monitor resolution counts. It becomes a dance of modifier keys and prefixes and escaping prefixes with other prefixes and just a total fucking nightmare. I’ve even had the situation of that with an extra layer of tmux in there for when I’ve run ssh in tmux into a computer where I have connected to tmux, meaning I’m using ^B for one tmux prefix and ^A for another, or I’m using ^B^B to escape the prefix for the inner tmux, total madness I tell you.
So yeah I’m not super happy with using tmux for scrollback really, but I don’t want my terminal emulator to do it either.
When you analyse that layering and repetition of functionality, it turns out there’s deficiencies all the way up and down the stack. swaywm has tab containers because it’s useful to have multiple unrelated programmes inside a single set of tabs. And of course it has ‘splits’ in the form of being a tiling window manager, because sometimes you want multiple unrelated programmes to share a monitor. So why have the same functionality lower down as well? Why does tmux need splits. Well because you can use it in the terminal where there’s no display server, of course. So maybe the issue is actually that the virtual console doesn’t have tabs or splits. Yet it does kind of have tabs in the form of TTY1, TTY2, etc. But no splits.
Then of course there’s the issue of vim tabs and splits. Well vim has tabs and splits because they can share information and control in a way that separate vim instances running in a higher level tabbed or split interface can’t. But that’s a vim limitation. Emacs supports client/server functionality where you can have multiple instances of Emacs that are clients of an Emacs server process, and I think that NeoVim might support that too?
Ideally what I would want is to actually use something like tmux but split apart into the useful components: something to do the tabbing and splits (a window manager for terminal emulators), something to do the scrollback and something to do the persistence across logouts, as they’re all separate functionality. And if my editor supported client/server, then on a TTY I could use the tabs/splits part of tmux, the scrollback inside of that, with separate editor client instances inside those splits, while in my window manager I could use terminal emulator windows that run editor client instances, split and tabbed using my window manager.
I’ve a somewhat similar setup but have been looking for something like redshift/f.lux without all of the dependencies. It should automatically transition between temperatures, gradually, based on time of the day (not a sharp transition at a set start and end time) and should do this throughout the year without requiring to be told that sunrise/sunset times have changed. So I wrote this: https://github.com/amir/sctd
The is the simple sct command from Ted Unangst. I use that as a cronjob every 30 minutes to change the color, using a ratio based on the current time offset compared to 2:00 pm (value randomly chisen by me). The closer I get to 2 pm, the closer the color is to 6500 (no red). The minimum value is set to 3500, which can be seen at 2:00 am. I can get you the script if needed.
While suckless as a way to build software is definitely interesting (and a lot of the benefits of suckless come from disregarding edge cases, internationalization and accessibility), I’d argue that suckless as a project is something one should handle really carefully.
They’re doing literal torch hikes through southern Germany at their conferences, fighting online against “cultural marxism”, and their mail server has the hostname “Wolfsschanze” (see: https://twitter.com/pid_eins/status/1113738766471057408)
I recommend reading this thread (with a suckless.org developer with enabled hat speaking officially) and looking at this photo from one of their conferences.
The topic pops up here and there, and one should always consider that Lennart Poettering used this bait to easily escape from a discussion about his software that I personally think should take place. Suckless is not directly a coherent group and more of a group of like-minded individuals, so I’m careful to speak “for” the project even though I’m first chair of the legal entity suckless.org e.V..
What I can say is that we are probably one of the very very few software projects left that do not politicize. We have members from all political spectrums, but make it work, because we only discuss software and nothing else. Those disagreeing with us or unaccustomed to non-political software projects try to put us into a corner, but it makes no sense when it is used to disregard the suckless philosophy itself, which is non-political.
Torch hikes are nothing unusual in Germany and there was no political intent behind it. Though I do understand now that it might send a different message worldwide, I expect more cultural sensibility from every observer before “calling us out” for allegedly re-enacting nazism or celebrating a Charlottesville march, which is a ridiculous assessment.
One should always consider that Lennart Poettering used this bait to easily escape from a discussion about his software that I personally think should take place.
Perhaps, but I don’t think calling out getting emails from a wolfsschanze host is that unreasonable to be honest; as I mentioned in my other post I’m not going to attach far-fetched conclusions to it but I do find it in pretty bad taste. At any rate, to ask it plainly, what’s the deal that?
There is no such thing as “non-political”, because we live in a society with power imbalances. Therefore not taking an explicit political stance, translates to implicitly supporting the status quo, whatever that status quo is in a given society at a given time. You’ll find that people in underrepresented demographics will largely avoid your project as a result, regardless of the political views among members of your project.
If supporting the status quo is what you intend to do, then that is one thing. But please stop presenting it as “non-political”, because that is simply not the reality of it. It only looks non-political if you yourself are in a position where the status quo benefits you. Which I am also - so this is not a personal accusation, to be clear. But it is something you need to be aware of.
not taking an explicit political stance, translates to implicitly supporting the status quo
No no no, I cannot agree with that. Let’s take an example. I’m working on a crypto library, that on many aspects is very close to the Suckless ideals: it’s in C, it’s small, it’s easy to integrate into other projects… One of the motivations for it was to fight unnecessary complexity. A fairly political goal if you ask me: if software becomes as simple as I think it can (and should) be, the changes could be felt throughout the global economy itself.
My project also has an implicit endorsement of the status quo: it is written in English, and I have no intention to translate the documentation, or even the web site to other languages. Not even French, my native language. Sorry, you need to learn English to use my project. That’s kind of an implicit endorsement of US hegemony. Not that I’m very happy about that, but not fighting that fight does make me reinforce the ubiquity of the English language.
But there’s no way my project can have a stance on everything. Its stance on many many subjects is really neutral. It does not fight nor reinforce the status quo. Veganism? Patriarchy? White supremacy? I hardly have a community to speak of, there’s just not enough people to warrant something like a code of conduct. That does not mean my project implicitly rejects vegan transgender black women. In fact, I do hope they’ll feel as welcome as anyone else. And right now, I believe being nice to whoever contacts me is enough.
I couldn’t have put it better, thanks for sharing your thoughts. I always like to consider the example of Chemistry: In the 19th and 20th century, German scientists were leading in chemistry and most papers were published in German. Chemistry students were more or less forced to learn German to understand these papers, and German became the lingua franca of Chemistry, which has changed to English though.
In computer science, English is the lingua franca. I don’t think it’s exclusionary to only offer software documentation and code comments in English.
That is a good point and I understand what you mean with that. For our conferences, we actually offer those who are unable to attend due to financial reasons to pay their travel expenses and accomodation for them, which was greatly appreciated especially by younger programmers who often don’t have the means to fund such a travel.
Apart from income differences, that might be a deciding factor being unable to attend a conference and meeting like-minded people, I see no other factors that might hinder someone from joining us. You basically only need an internet connection and a computer. The computer doesn’t even need to be that fast, unlike if you, for instance, intended to work with deep learning software.
And if you still criticize the conferences for being exclusionary in some way: Most communication takes place on a mailing list and IRC, many people use pseudonyms. Factors like race, country of residence, gender are thus irrelevant and even non-determinable, if you choose to, and the development on mailing lists and IRC is the main way development happens and there’s no need to do anything else to partake or make submissions.
So, again, I know what you mean, but suckless is not an example for a project supported by the status quo. Most people disregard suckless as too extreme in terms of software philosophy and conclude that we would also be extreme in other areas of life, but suckless, for me, is software zen, and everyone is welcome to adopt this philosophy.
Factors like race, country of residence, gender are thus irrelevant and even non-determinable, if you choose to, and the development on mailing lists and IRC is the main way development happens and there’s no need to do anything else to partake or make submissions.
This is a common point of view among those in privileged demographics. However, it is also a misunderstanding of how underrepresented people in demographics actually choose where to hang around and contribute, and why.
Imagine for a moment that you are someone in a demographic who’s frequently a target of harassment. The exact demographic doesn’t matter much - maybe you’re black, or you’re a woman, or you’re transsexual, or whatever else. But for the sake of the example, imagine that you are a woman.
Now, there are two different communities for you to choose from:
A community that says “we don’t police member’s politics, this is purely a tech project”.
A community that says “we actively welcome women”.
Where are you going to feel safer? In the second community - because there, it’s clear that if someone finds out you’re a woman, them harassing you over it isn’t going to be tolerated and the harasser is going to be thrown out.
In the first community, you just kind of have to stay quiet about your identity, have everyone assume that you’re a guy, and hope that no-one finds out the truth. If they do - maybe there’s some persistent stalker following you around and posting about you in every community you join - you can basically predict ahead of time that harassment and other discriminatory behaviour is not going to be acted upon, because “people’s own politics are not policed”.
In a way, there are parallels here to how gay people are “tolerated” in many countries. It’s “fine so long as you don’t bother me with it”, which effectively means that you cannot speak about it publicly or have a public relationship with someone of the same sex, because then the cover falls away and you are no longer “okay”, because your identity can no longer be ignored. Harassment (and often violence) promptly follows.
“Don’t ask, don’t tell” policies like this don’t make for healthy, diverse environments. They make for environments in which the status quo is preserved, and where the only way to be vaguely safe as a minority is to never tell anyone that you don’t fit into that status quo. This is not inclusive, and it absolutely does support the status quo. Those who fall outside of it will silently move on to healthier communities.
I would like it if “who you are doesn’t matter, it’s about the project” were the reality, I really would. But that just isn’t how things work by default in a society with power imbalances, and the only way to get there is by actively enforcing it - and that means taking a political stance, one that disavows discriminatory behaviour and harassment.
Now, there are two different communities for you to choose from:
A community that says “we don’t police member’s politics, this is purely a tech project”.
A community that says “we actively welcome women”.
Where are you going to feel safer?
I don’t know how the suckless community is, but I am convinced that, if I had a dime for every company, group or project that claimed to “actively welcome women” or “promote equal opportunity for everyone” or “have a zero tolerance” towards discrimination, sexual harassment or any other one of the multitude of abhorrent behaviours that plague our industry – and then turned out to be cesspools of prejudice and discrimination, I would be so outrageously rich that even thinking about it is embarrassing.
(FWIW, in addition to witnessing it enough times that it’s part of why I seriously contemplated switching careers at one point, I have some first-hand experience with some of that: my most useful skill, career-wise, has been an impeccable accent. Slightly Irish-sounding (which lots of folks in the US seem to fetishize for some reason), which I developed purely by accident (I’m from nowhere near Ireland, I’ve never been there, and I am not a native English speaker) and is extremely embarrassing every time I’m talking to someone who has a real Irish accent. I certainly had it easier than my black or hispanic colleagues – most Western managers of various importance in the corporate hierarchy could immediately identify them as worthy of contempt, whereas in my case it could take weeks before they realized I’m not a white expat, just some Eastern European programmer.
Edit: in case anyone’s wondering – the reason why I can be so light-hearted about it is that, for better or for worse, this experience has been largely confined to the workplace, after-work drinks, conferences and the like. I got to live with it for like 40 hours a week at most, and never really got a taste of it before well into adulthood. I always had alternatives and always had refuge – I could always put up with it on my own terms, which most people can’t)
Coming from a culture whose closet is not devoid of skeletons in this department, either, I certainly agree that the mere act of not discussing race, or gender, or ethnicity is in itself a privilege that not everyone has. And that it’s up to every one of us to actively fight discrimination, and to make the world safer and more inclusive for those whose voices are silenced by intolerance. But I don’t think it’s reasonable to ask people to integrate that in every single thing they do. Even activists don’t fight the good fight 24/7, I don’t think it’s unreasonable that some people choose to do it only to a limited extent, or in a possibly misguided way, as part of their hobby project.
I might’ve been a bit unclear. A don’t-ask-don’t-tell approach can be taken by members, if they prefer (many communities don’t provide that luxury and e.g. require clear-name-contributions), but doesn’t have to be. We just don’t care about genders or other aspects other than your coding skills. I see that you have a different opinion on this, which is cool, but the suckless philosophy does not extend beyond software aspects and I personally (not speaking for the group) don’t see a reason to extend that.
A community that says “we don’t police member’s politics, this is purely a tech project”.
A community that says “we actively welcome women”.
The two may not be mutually exclusive. Although there’s certainly a huge overlap, there’s a difference between advocating the revocation of women’s right to vote, and actually harassing women in a particular group, be it an open source project or a chess club.
A president of a chess club, or a maintainer of an open source project, can hardly be expected to be aware of the political views of the members, no matter how extreme. He could pry, but that would be uncomfortable for many people, and ultimately exclusionary. We could do it anyway, and define the range of acceptable political opinions, and exclude the outliers. We could exclude traditionalists, or we could exclude gay marriage supporters. We could exclude white supremacists, or we could exclude black panthers sympathisers.
In my opinion this would be neither ideal nor possible. As long as people stay courteous and focus on working towards whatever common goal the group has, we could actually have, say, gay and homophobic people working together. So we probably want to define a range of acceptable behaviours instead. For instance, revealing your sexual preferences is generally acceptable (unless maybe you’re too loud about this), and revealing your contempt for people who don’t share that preference is generally not.
That’s what codes of conduct ultimately do: they don’t talk about the politics one might have outside of the group, they define a range of acceptable behaviours within the group. Yes, that range will tend to filter out people with some particular political opinions. Few white supremacists will follow a black maintainer. But I would think real hard before I make that filter explicit.
I’ve seen it done, and it’s not pretty. I’ve heard of someone being disinvited from some conference because of their political beliefs, even though they (allegedly) never let them seep through or ever behaved inappropriately. I have also heard of someone being fired over their sexual practices (at the behest of SJW, ironically). And at the same time, some people who seem to engage in genuinely harmful behaviour (such as straight up sexual harassment) are not excluded. My suspicion? Enforcement goes after the easy targets, instead of going after the important ones.
we could actually have, say, gay and homophobic people working together.
Honestly, this free speech absolutism is whack and that’s why I’m out.
You don’t know what the fuck you’re allowing. I do - you’re allowing someone who literally spreads hate to walk into work, meekly get some shit done, then go home to post on the internet how trans people are all pedophiles and should be killed.
Fact is, you can’t divorce your life from politics because where many of us stand, all minorities, live under the continuous threat that we’ll be murdered, denied service, beaten and reviled all because some free speech absolutist like you envisions a future where racists and their victims can work side by side.
My community just had their 12th death. Death because people like you continually give deference to allow our killers to bask in their hate speech until one of them spots us and brutally kills us.
You enable this. I’m so happy (not) to be the sacrificial lamb for your perverse ideology.
we could actually have, say, gay and homophobic people working together.
Honestly, this free speech absolutism is whack and that’s why I’m out.
Who said anything about free speech? I never said hate speech should be allowed. Actually, I do believe we free speech should have limits (though I’m not sure exactly what those should be), and people who cross those limits should be punished.
The question is who should punish them, and how. Forums can (and most probably should) ban hate speech however they can. Police and Judges could intervene whenever appropriate. The worst offenders could be sent to jail.
Wholesale ostracism though? Exclusion from all groups, not just wherever they spread their filth? That’s a death sentence: no job, no home, no shelter. Are you prepared to follow through all the way? (Not a rhetorical question: sometimes, killing your enemy is the right thing to do. But this question is so fraught with self serving cognitive biases that one must be very careful about it.)
Then there are false positives. The guy who was fired over his sexuality? He practised BDSM. One way of putting it is that he liked to whip bound women. When he was outed, there was an SJW outcry about him being some twisted archetype of patriarchy that should be removed from any public position.
I don’t know the guy, I haven’t investigated, so I cannot presume. I’m not even certain this story is even true. But I guess this may have been a huge misunderstanding. See, done properly, BDSM is very careful about safe words, physical and psychological safety… everyone is supposed to enjoy this, including (perhaps even primarily) the bound and gagged “victim”. Being a good dom typically requires empathy and respect for their sub. Pretty far from the simplistic image of the misogynistic man taking pleasure from the suffering of women.
Going back to gays and homophobic working together, that probably requires that they are mutually unaware of their position. It’s when they do become aware of their position that we have a problem, and the group may have to make a choice. My first step would be something like “you don’t like them being gay? deal with it or get the fuck out”. If it’s just gay people being uncomfortable, we may need to know why. If it’s because the other dude displayed an homophobic attitude within the group, that’s pretty obvious grounds for exclusion. If it’s because gay people learned of his views outside the group, this is more delicate, and I honestly have no right answer.
The problem is made even harder because actual bullying, embarrassment, and other inappropriate behaviour within a group, are often hard to see for anyone but the victim. Hence the temptation to rely on more visible, but less reliable, external signs.
For instance, let’s imagine: religious people and atheists working together in the same group. One atheist have written in their blog about how religion is stupid, unfounded, and how religious people are either critically misinformed, or just plain delude themselves. Oh and by the way if there is a God, it’s morals are highly questionable at best. So there we go: no personal insult, but a harsh criticism and a good dose of blasphemy.
Should we exclude this atheist from a chess club because some religious people in that club feel uncomfortable being next to someone who has written a blasphemous pamphlet? Should we exclude the religious people from the club because wearing a cross, a star, or a scarf makes the atheist uncomfortable? Depending on who you ask, you’ll have very different answers.
On the other hand, I don’t think it’s realistic to expect every project to look in depth at difficult social problems and form some sort of consensus on how to best deal with it.
You’ll find that people in underrepresented demographics will largely avoid your project as a result
On the other hand, I don’t think it’s realistic to expect every project to look in depth at difficult social problems and form some sort of consensus on how to best deal with it.
I think that’s entirely reasonable. This is pretty much the basis of community management in general. It doesn’t even need to be done by the core developers, but someone in the community needs to do it, if you want a healthy community.
Why would that be the case?
Because they know that their safety is not assured in communities that refuse to take an active stance against bigotry of various kinds. I’ve gone into more detail about this in this other subthread.
Because they know that their safety is not assured in communities that refuse to take an active stance against bigotry of various kinds.
But there is a difference between belief and action. If someone is actually doing something bad within the project then obviously that’s an issue. If someone just believes something you disagree with (whether you label it bigoted or not) then refusing to work with them in a non-political atmosphere just makes you seem like a bit of a dick, IMO.
There’s no such thing as “non-political” software projects because any political actor can decide that the way your software project run things is bad and should be made to change. And if you resist this, you find yourself in a political conflict, even if you didn’t want to be.
Why would you care what a political actor thinks about your free software project? Do you mean an actual national politician? Why would they be concerned with a free software project?
No, anyone trying to argue that a software project should change their practices for political reasons is a political actor with respect to software, not just national politicians. Tech industry activists are political actors. joepie91 in this thread is a political actor. I’m a political actor too, for trying to prevent other political actors from carrying out their will.
Calling people toxic, I think, is the wrong approach. What matters is how people behave in the context of the community. I couldn’t care less about their private political/social/other endeavours as long as it doesn’t affect their actions within the community.
I don’t know why there is such a push to politicize software projects, from the inside and outside. It may make something look more homogenous on the outside, but I believe it mostly creates social stress and shifts the focus on issues that shouldn’t be a problem in the first place. But this is just my opinion, and I don’t think there’s a true or false answer to that. It heavily depends on your Weltanschauung.
I’m sorry, my first approach was a bit antagonistic and too political because I tried to keep my questions short.
People sometimes express their political ideologies in behavioural ways, which might cause exclusion and secularity in the communities that they take part in. I haven’t been much in contact with the suckless community, although I have used and I respect the software and the philosophy, but I have seen communities suffer this. I have no prejudice, but toxic (extreme, hateful) ideologies do lead to toxic behaviour, especially in like-minded groups where it can be cultured. This is why people feel the need to keep them from spreading to their own group.
Have you noticed any exclusive or secular behaviour in the suckless communities that you take part in? If yes, what have you been doing to counter it?
Have you noticed any exclusive or secular behaviour in the suckless communities that you take part in? If yes, what have you been doing to counter it?
No, I’ve never seen such secular behaviour like that. The conferences we organize have always been very harmonic and there was never such a push or even a culturation. Thanks though for elaborating what you meant, and I have to say that I’ve seen this problem occuring within other communities. I am and will be very careful that this won’t happen within our community.
I was subscribed to the suckless mailing list for a long time (though no longer, simply out of disinterest), and never had the impression I was dealing with a group of extremists (other than a rather extreme take on software). I don’t recall any political discussion off-hand, and would certainly have unsubscribed if people started ranting about “cultural Marxism” and the like.
I read the Lobsters thread you linked and there are many things I personally don’t agree with, but I also find it’s a lot more nuanced than what you’re suggesting (specifically, there was a lot of confusion what was even intended with “Cultural Marxism”). I saw that on HN you (or someone else?) linked to an old tweet of yours that screenshotted just the initial “Cultural Marxism” mention of FRIGN, and I think that’s unfairly out of context. That’s not a defence of the contents if his posts, only a defence of treating people with fairly and with kindness.
I find putting the picture of the torches next to literal Nazis and the “Unite the Right” rally incredibly tasteless and offensive. Note the suckless event happened before the Charlottesville march (not that it really matters).[edit: incorrect, see follow-up]. I’ve done torch hikes – they’re actually used to celebrate the end of Nazi occupation in my home town every year and participated regularly. I’ve also done them with scouts just for the fun of it. Maybe some day someone will dig up a picture of that too and put it next to a bunch of Nazis to prove a point… I’m very disappointed anyone would try to make a point like that, here or elsewhere. This part of your post in particular is really bad in many ways IMHO; it’s really not acceptable to just sling around grave insinuations like that based on a friggin’ contextless photo of what is almost certainly just a harmless social event.
The mail server belongs to an individual (@FRIGN here). I agree it’s in very bad taste, offensive, and that Poettering was completely right in calling that out, but it’s hardly proof that “they’re a bunch of Nazis”. I find the jump from “edgy hostname” to “literal neo-Nazis” a bit of a leap.
I doubted for a long time if I should post this reply as it has the potential to spark a long heated discussion, but I find public casual comparisons to Nazis in particular serious enough to warrant something of a rebuttal.
Note the suckless event happened before the Charlottesville march (not that it really matters).
I just want to comment on this one factual point, according to the suckless website this event happened in September 2017, just a couple of weeks after Charlottesville.
I do think the proximity in time to the Unite the Right rally is important, especially given the insistence that they were just enacting a German cultural practice.
Oops, I checked the website and I misread that date as being on “2017-01-03”, instead of “2017-09-(01-03)”. How silly 😅🤦♂️
I’m not sure it matters all that much though; it still seems incredibly tenuous at best. This happened on the other side of the world and I’m not sure if the entire world should tip-toe around sensitive topics in the United States. Were these people even aware of Charlottesville? And to what degree? Me, personally, I mostly stopped following US news since the 2016 election as I find it emotionally draining and serving little purpose as it’s not in my power to do something about anyway.
Either way, I’d sure like to see some more evidence exactly because I take it serious: you just don’t go around insinuating people of such serious things with such slim “surely it can’t be coincidence…” type of stuff.
I was at the torch hike and hadn’t even heard of the Charlottesville marches then. When I heard the accusation that we in some way celebrated it, which would make no sense in the context of a software conference, I first had to look up what they were.
The thing is, Americans tend to overestimate the importance of domestic events like the Charlottesville marches and think that nothing happens in the whole world and, e.g., we Germans are just sitting at home and waiting for something to happen in the USA to witness it.
The truth, and I think everyone would agree that this also makes much more sense, is that torch hikes are perfectly normal in Germany. I have an understanding for this cultural misunderstanding, and I’ve been guilty of those, as well, but it doesn’t help when one continues to spread this nonsense that this torch hike was some political event every time suckless is discussed here.
To give an example for how normal torch hikes in Germany are, there is a so-called Sommertagszug in the Kurpfalz which also involves torch hikes at night. They are also offered by tourist organizations, e.g. Breitbach Klamm.
As an American, thanks for sharing your perspective. It makes me wonder if the Internet, and particularly social media, make it too easy to carelessly make connections between things that should remain disconnected. Maybe Facebook’s stated mission of making the world more connected (whether or not that’s their real mission) isn’t a totally good thing.
It definitely comes at a cost. Still, as I could see from my own experience, after a few years one gets more careful with culture-relative judgements. There are still many things Americans do that I don’t quite understand or find interesting.
To give an example, I found out a few years ago that the German “mhm” (i.e. the expression to acknowledge you are listening to someone while he speaks) is often interpreted by Americans as a “huh?”. You could imagine how much confusion that caused.
Cultural differences are valuable, though, and I would not want to miss them, even if they become troublesome. I can imagine an American coming to Germany to experience a torch hike and liking it.
To give an example, I found out a few years ago that the German “mhm” (i.e. the expression to acknowledge you are listening to someone while he speaks) is often interpreted by Americans as a “huh?”. You could imagine how much confusion that caused.
I have never in my life seen or heard “mhm” interpreted as “huh?”, and while I’m just one American and this is anecdotal I’ve lived in three fairly distinct regions of the USA.
Going on a torchlit hike at night sounds fun to me in the abstract, and also like the sort of activity that could hardly be unique to any one place, time, or culture. For ages before the invention of electric flashlights, how else were human beings supposed to light their way when walking around at night, wherever in the world they happened to be? I was unaware that some people associated the practice of going on torchlit hikes with specifically the NSDAP (or maybe just going on a torchlit hike while being an ethnic German??) until I saw people mentioning it in the context of suckless. Even if it’s true that the historical Nazis practiced torchlit hikes (which I assume is true, because I think it would be very easy for any group in human history to do so), I don’t think that confers any obligation on people alive today to refrain from it, any more so than Adolf Hitler’s famous vegetarianism confers any obligation on people today not to be vegetarians.
I agree. I’m pretty well read on the topic, including having read Shirer’s “Rise and Fall of the Third Reich,” and I hadn’t heard about the association between torchlit hikes and Nazis before it was brought up in the context of suckless either. If I’m actually educated on the topic and still didn’t know about it, how could I really expect others to know about the association?
Personally, a torchlit hike sounds like a blast to me. If the opportunity presented itself to me, I would absolutely participate.
I agree with others in this thread that people are generally way too quick to bring up Nazi associations. I like to think I’m not naive about it either, since there are trolls and Nazis online that like to play these kinds of games. But I personally expect some pretty firm evidence before I’m willing to entertain Nazi accusations seriously. It’s a pretty serious thing to say.
As an engineer child of social scientists, I’ve concluded that mental models like that are basically what you get when you take an engineering approach to social systems to its logical conclusion without considering people as, well, people. You end up with very efficient, streamlined, rational systems that place no value upon the people who are crushed in the process. It’s a simple, effective solution to the very complicated problem of human society, and it makes the complicated problem simple by saying “the people on the losing side don’t matter”. You can see this approach working efficiently and effectively all throughout human history, usually in the form of mass graves.
Everything should be made as simple as possible, but no simpler.
Because I can’t be sure which comment you’re replying to (AFAIK there’s no “parent” link for comments here), can you please clarify what you mean by “mental models like that”?
Sorry, I was talking about mental models such as the ones described by this comment: https://lobste.rs/s/nf3xgg/i_am_leaving_llvm#c_01mpwm . Essentially “we are not going to worry about equity and equality because it is irrelevant to the problem we are actually trying to solve”. Works fine when the problem you are trying to solve is “design a machine that does a particular thing well”, but ignores lots of ugly externalities when it comes down to the social structures and organizations of the people actually doing the design. Like unfettered free-market capitalism, it sounds ideal in theory and that makes it an appealing position. But my observation has been that it works great for the people already powerful enough or lucky enough to be unaffected by those externalities, and does not actually make the world a better place for anyone else.
The other top hit I got when googling was a torchlit tourist hike through Partnach Gorge in Garmisch-Partenkirchen. I’ve been to that gorge (not by torchlight) and it’s pretty cool!
I used to follow this line too, but eventually I recognized that this kind of an approach tries to pre-sort people into good and bad groups based on keywords and superficial attributes, for what appears to mainly be fear. The first time I heard about the “torch march”-incident, I was negatively surprised, to put it lightly. But listening to @FRIGN, and giving him the benefit of the doubt, I don’t think that the accusations were right. I too use suckless tools, and didn’t stop after the first time I found out, since 1. I never noticed any of this before 2. it didn’t change anything. I’m going to disagree with him on points like “SJW madness”, but I won’t reduce him to that point.
This is the behaviour I’d expect a primitive AI to produce, not people who can interpret nuance and weight the validity of various interpretations against one another.
cabytcini is a program I created for myself as part of my goal to get more familiar with Rust. As of the time of this post being written, it uses only 11 megabytes of ram and is configured using a config file located at ~/.config/cabytcini/gaftercu’a.toml. It scrapes data from the API server I use for my wall-mounted clock to show me the weather in Montreal. I’ve been meaning to write more about it, but it’s currently only documented in Lojban.
High RAM usage, uses a config file, and fits perfectly into a dwm setup! :D See that’s the thing, I don’t think anyone in the suckless community has a problem with people using the tools they like. They might not approve of using a Rust programme that loads a config file to get weather, might not want to use it themselves, but the tools are all written to interoperate using standard or extremely simple non-standard formats. The dwm status bar is just the title of the root window. You can set it using xsetroot or any other way you can set the title of a window. So you can use dwmstatus or cabytcini or whatever it’s really entirely up to you and I think that’s great. It’s definitely not true of some desktop environment communities, where there’s little or no effort to support using anything except the built in standard Gnome/KDE tools for something.
Please don’t take it as a criticism of the Rust programme. All I was trying to point out is how easy it is to write programmes to interoperate with suckless software. Of all software communities it’s the one I hear the most the story ‘I had this little problem so I just wrote a programme to solve it’ which is where I think computing should be.
While I like “simple” tools, and I share the appreciation of simplicity of the author, I don’t think having to maintain a C language patch tree to configure my window manager qualifies as simple - it means it lacks features that I need, and a clear extensible interface.
Given the article is well written, though, I decided to read up a bit on dwm, and right in the “differences” section of the homepage I found:
“Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.”
I don’t know if that sentence wanted to be tongue-in-cheek, but that sentence turned me away.
Anecdotally, I do actually have binary packages of my dwm setup built by CI, pushed to a binary cache and then that cached package is what my tower (and another machine of mine) install and use. It’s pretty nice.
That seems like the most reasonable thing to do, but indeed it’s not simple :)
Out of curiosity, how do you manage the patches? You keep everything in a git repository and rebase upon upstream whenever there is an update, or you use some tool for managing patches on upstream like quilt?
I have my own fork of dwm here and just manually apply patches when I want new behavior. Sometimes I need to apply them manually (like with the patch file split against the source code of dwm), but I only end up learning more about my window manager by doing this. This also ends up working great with my NUR repo because I can just re-run the update versions of software script and it will bump the config here. When I commit this to the repo, Travis will pre-build the package and push it to cachix. Then when I rebuild the configuration on my desktop with sudo nixos-rebuild switch, the new version of dwm will be pulled from my package repo and the binary built in CI will be pulled from cachix. This gives me all the advantages of building things from source and having binary packages.
Software is complicated. The world is complicated. The tools we use to interact with the world are complicated. We are complicated. Though it’s generally good to get rid of inessential complexity, getting rid of essential complexity is counterproductive, and this is not something I see addressed by the suckless methodology.
I use fvwm, which is a relatively simple X window manager (if a bit more complicated/flexible than dwm), and screen, which is a composable (and, again, relatively simple) terminal multiplexer. I also use linux, which is an enormous monolith. Ditto zfs, zsh, gcc, clang, firefox…
Then again, for some purposes I use tcc, lynx, fat
I do not see a huge amount of intrinsic value in my tools being simply made. They might be better if they had been written that way from the start, but that doesn’t matter very much. The question I ask is, what value do these tools bring to me now? Even if all my tools were simple and composable (as per the suckless philosophy), the computing environment would still be too complex for me to hack on all of it. Insofar as I do find my tools inadequate, it’s generally easier to configure the more complicated ones than to modify the simple ones. I use tcc because it has good compile times. But I also use gcc because, inside of all the inessential and redundant complexity, there are high-quality diagnostics and optimizations. That is essential complexity. You can’t hack tcc to add that (I actually took a look at tcc internals to see what that would take. It would require a big re-architecture.) That doesn’t mean gcc is well-made, but it does mean that, as a user, I derive value from gcc that I don’t from the hobbyist compilers.
Minimalism is definitely something we should try to instill in the software we create. But that doesn’t mean we should attempt to use software because it’s minimalistic, nor that we should shy away from (essential) complexity in the software we write.
To expand on that, we don’t all have the same abilities. That’s why accessibility is important, though it adds complexity. So I get frustrated whenever I see a developer write their own simple, lean GUI toolkit because mainstream GUIs are too bloated. These simple, lean toolkits invariably don’t support their host platforms’ accessibility APIs, meaning that they can’t be used by blind people with screen readers, or people with mobility impairments who require alternate input methods. That’s why, whenever I encounter a thread about such a toolkit, I bring up the lack of accessibility support and plead with developers to not use that toolkit in any application that might be required in someone’s job or education, unless the task itself inherently requires sight and keyboard or mouse input. Unfortunately, this problem is big enough that I can’t solve it by casually sending patches on nights and weekends; I wouldn’t even know which project to start with.
To be sure, mainstream software does have some accidental complexity, which translates to bloat. But not all of the complexity is bloat. Accessibility is one instance of necessary complexity. For many applications, internationalization is another.
Indeed. I think it is unfair to say GNOME (or KDE) are bloated, suckless is lean and has fewer bugs, GNOME is doing it all wrong. They have vastly different target audiences. GNOME addresses a general audience, it is an environment that one could install on a non-techie’s desktop and they [sw]hould be able to manage themselves. This means deep integrated support for power management, disk/network mounts, setting up networking/VPNs, accessibility, fingerprint login, a uniform look & feel between applications, notifications, easy management of various display setups, integration of file dialogs with sandboxing (portals), graphical printer configuration, etc. You cannot ask this audience to compile a C file to do their configuration. Supporting such a wide variety of deep integrations just make the problem vastly more complex. You need a lot of communicating parts (IPC), a framework for configuration, etc.
While I primarily used simple window managers (primarily WindowMaker and fluxbox) ~2 decades ago. I have made the conscious choice to use desktop environments (GNOME in my case), to save a large amount of time around managing VPNs, displays, etc. I am pretty happy with GNOME’s default settings and barely change anything (and the few extensions that I add are defined declarative with Nix).
I can fully understand why someone would go the Sway, i3, dwm, etc. path. But I think we should avoid calling one or the other approach inferior.
You can install XFCE on the laptop of a general audience too, though. It’s much less bloated than GNOME or KDE but it has all the things you talk about, as far as I am aware.
The problem with GNOME is not that it’s bloated with features or functionality but that the way in which it is implemented makes it incredibly slow, sloppy and.. bloated. There’s really no other word for it. It uses enormous resources, it runs a million background processes and daemons doing unknowable things, it doesn’t work at all on older laptops, it requires systemd, etc.
There’s nothing inherently ‘bloated’ about floating window managers or accessibility. What’s bloated is how they’ve gone about all of it.
Can’t say, I haven’t used Xfce in years. For me the most important missing feature would be Wayland support, which drastically simplifies mixed DPI support.
I use a fairly modest Intel NUC as may daily driver and GNOME is very fast, I never encounter any slowless. Our daughter has a baseline Intel NUC that cost ~120 Euro excluding RAM and SSD, same story, I never saw any delays in GNOME.
My current GNOME session, which has been running for several days is using 400MB RAM with a HiDPI screen, which is merely a blip compared to Firefox with several tabs open. Won’t be a problem with a machine >= 2GB RAM. Oh, and gnome-shell and mutter have its own Wayland compositor, so that 400MB RAM includes more or less what would be the overhead of X11 itself on Xfce or whatever.
~30 on my machine. yay
Wayland seems to me like a big step in the wrong direction, optimised for DEs that are going to implement everything themselves anyway, but horrible for the ecosystem of small window managers because they need to become much bigger and cover a much bigger range of functionality. I believe ddevault’s wlroots stuff helps here but surely doesn’t fix everything. At least initially, every Wayland compositor needed to implement things like screenshots themselves.
It’s not clear to me why the problems with X couldn’t have been solved without moving huge amounts of functionality into the compositor.
I’ve tried using GNOME vs XFCE on older laptops and the battery drain on GNOME was much higher than on XFCE, and GNOME always had this lagginess and clunkiness that XFCE didn’t have. I don’t know why, it just seems to.
I don’t see why desktop environments shouldn’t be able to run fine on 10-year-old laptops. People shouldn’t need to update their computers with gigabytes upon gigabytes of RAM to run basic stuff like web browsers and desktop environments.
Including all of GNOME’s dependencies?
Well at least not every process can read my keystrokes or do screen grabs anymore, without resorting to nested X servers and whatnot.
My whole user session currently has 71 processes, which includes the 11 processes that Firefox creates, a bunch of terminals, mosh, gpg-agent, scdaemon, Xwayland for those legacy X11 applications, etc.
Again, on my system GNOME is never the problem, it is fast and takes a reasonably amount of memory. Moreover, most processes that it spawns have descriptive names such as
gsd-power
(there are very few processes where I don’t know from first sight what it’d do).The problems are the browser, which takes more memory per tab than GNOME itself for some web sites, the Slack client which again takes more than a whole desktop environment and gets terrible latencies over time, Skype, etc. Unfortunately, I need those programs for work. (Though at least for Slack there is Discord, which is a nice and fast Qt application.)
Indeed; I have come to feel a little uncomfortable with some of advocates of “the suckless philosophy” (Christine excluded, of course) for the reasons you mention. I wrote up my thoughts on the matter a while ago and have become more gun-shy of even the use of the term “bloat” since then.
I downvoted your comment as ‘troll’ because I don’t think I’ve ever seen a better example of someone assuming bad faith in the discourse on this website ever. There are good arguments for the use of some of the software commonly described as ‘bloated’. They do not include that everyone that advocates for non-bloated is just a neo-Nazi that wants to subjugate women. These bogeymen probably exist somewhere but they’re not arguing on lobsters they’re on Stormfront or something.
Rather than opening yourself up to the possibility of actually being wrong about something by having a proper discussion around a thorny technical issue on which there are no right answers, you just dismiss anyone that favours simple software as being alt-right men who have had stockholm syndrome because of suffering through tools with bad user interfaces.
I’m not going to go into the details of why your post is filled with incorrect ideas and offensive stereotypes for the same reason none of us would go into detail explaining why a racist is wrong: they’re not going to respond in good faith, and I’m sure you won’t respond in good faith either.
The irony that you end your bad faith post with a snide aside dismissing a genuine concern raised as just an ‘unfounded assertion’ that’s ‘made in bad faith’.
From my post:
So no, that’s not my assertion; I’m just saying that places that harbour those sorts of people – I’m thinking more of 4chan than Lobsters here – also tend to be places that are most vocal opponents of “bloat”. The rest of what I wrote about there is a more subtle cognitive bias that doesn’t assume ill will on behalf of the minimalism proponents, just a very human sort of loss aversion.
But sure, I’m also a troll that wrote my thoughts down more than a year ago and didn’t link them anywhere until now for the sole purpose of offending Lobsters.
The sibling comment put it very well, but it is missing some data that puts things into perspective
You write:
You are going to see this correlation to anti-PC and anti “Social Justice” in just about any group you care to look at, because the vast majority of people reject PC and the capital-letter Social Justice of the SJWs.
Americans Strongly Dislike PC Culture (The Atlantic)
80%. That’s about as close to unanimous you’re going to get on any issue.
Heck, if xkcd is to be believed, that’s more than “feel positively about kittens” and only 1 point below “enjoy apple pie’
And no, this isn’t “old white men” either, subtitle: Youth isn’t a good proxy for support of political correctness, and race isn’t either.
Race? Nope.
In fact:
That’s a very good point! I will think about that.
My immediate thoughts on that would be:
I’m not American, I wonder what those numbers would look like in my country?
I wonder what those numbers would be like if you asked people about more granular, actionable topics, instead of blanket “political correctness” or “social justice”. I will definitely admit that there are many that just like to use those concepts as cudgels against people they don’t like, so they absolutely have pretty negative connotations. However, I wonder what the numbers would look like if asked, for example, “people should be addressed in they manner of their choosing”?
In any case, in my above-linked diatribe, it really was the latter half that I was more interested in, wondering what the other reasons are for people to promote that “minimalist” code aesthetic.
I am not American either, but lived in the US for close to a decade. As far as I know, other countries are similar:
UK:
New polling suggests Britain is “less PC” than Trump’s America
Germany:
Political Correctness und Sprachtabus “gehen der Mehrheit auf die Nerven”.
Why people promote non-bloated code aesthetic: as a counter to the overwhelming trends in our industry? Wirth’s Law: Software gets slower faster than hardware gets faster.
Or Alan Kay:
The Early History of Smalltalk
Thank you for writing that up; it’s something I’ve felt myself for a while but never really put into words.
I’ve been thinking about some of the things Bryan Cantrill has said about values in software projects — fore example, “minimalism” and “usefulness” are both positive things, and anytime a project can choose both, it should. But if the project must choose between them, its values (or rather, the values of its maintainers, and hence the values of its community) determine which direction it chooses.
Minimalism is a positive thing, but when I read about suckless I get the impression they regard it as a moral imperative that everyone should follow, not just a personal choice. I think it’s that unwillingness to engage with other view-points of view that really pushes me away.
Thanks, I appreciate that!
Exactly, it’s the moralizing around the issues of minimalism vs “bloat” that bother me. Really, if they just said “featureful” vs “minimalist” and used less value-laden terminology, I think it would be a lot less contentious.
It’s not like they came up with the term software bloat.
Software Bloat
You recasting it as only minimalism vs. featurefulness is not accurate, they say that minimalism is a way they feel they can achieve higher quality.
And I wouldn’t agree with your recasting either. Most software is horrendously bloated, even if it is not particularly featureful, and the bloat appears to increase superlinearly with features.
A “small” example: Xerox PARC in the 70s had their “Interim Dynabooks”, the Altos, with a version of what we now call “personal computing”. WIMP interface, word-processing, e-mail, networking, laser-printers, IDE. 20KLOC. One of today’s incarnations of “personal computing” is MS Office. This does more. Lots more. Let’s say it’s 100 times better at “personal computing”, which I personally find generous. However, it is in the vicinity of 400MLOC, which 20,000 times more code. That’s a lot of code. In fact the increase in code bulk s 200x the increase in “better personal computing”. In other words, what’s 99.5% of the code doing?
And for a craftsman, the quality of their work should be something that its a value to aspire to.
Workmanship Software Craftmanship
Now you may disagree with that, but I find it not just defensible but commendable.
Your thoughts on the matter sound very much like a rehash of the age-old vi vs emacs debate to me, put in more modern and somewhat more overtly political terms with appeals to humane interfaces instead of everything-but-the-kitchen-sink (upon which someone made a kitchen-sink package) and as such seems to run on the same circuits as that discussion did - and does, with a whole host of Electron-based editors thrown in. By now I’d assume someone has proven vi vs emacs to be NP-hard and as such unsolvable, only approximated.
(By the way, vi. Non-bloated interfaces)
There’s nothing inherent to accessibility that makes software bloated. People are sick of incidental, inessential complexity or complexity that exists only to allow minute configuration options that would be better offered in a different way (like composing with other tools). That’s the complexity that is being railed again.
I think exactly because all those things are complex you want to avoid adding more complexity on top, causing more headaches and less understanding.
Also there are some non-inherent benefits of simple software. It usually takes good understanding of a subject to create something simple. One can see that when programming, first solving some problem, maybe making a prototype usually leads to being able to flesh out the mental picture and once that is more clear allows for a pass where things can be - sometimes significantly - simplified.
Of course depending on the complexity of a problem there is bound to be limits to how simple a solution can be, but I think simplicity of software is not some fixed value of lines of code or something along that, but that the presented solution is simple in regards to the problem you face.
Metrics, such as lines of code an be indicators, especially when comparing multiple solutions to the same problem, but it does not necessarily mean a solution is also easy to comprehend.
The problem at hand I think is also usually not “software of category X”, but a set of goals that one wants to achieve. That’s something that sometimes is very much missing in software projects resulting in them implementing everything a developer feels like adding on a given day. While I don’t think there’s something wrong with this a set of goals can help ensuring to keep in mind what your goals are and thereby keeping the direction in which a project is heading focused, by making it easier to see when something is out of scope or might only be related to the topic, but doesn’t really fit the project for other reasons.
Another benefit here is that simplicity then usually allows for reaching maturity faster. If goals are clearly defined and there’s a limit to what you want to achieve you can go over to get rid of bugs and rough edges earlier, then when you are busy implementing features bringing new bugs and rough edges. Now of course that doesn’t mean that you will actually use that time for this, after all adding a new feature usually feels more fun, but you could.
So in short: I think essential complexity is not something that goes against complexity. After all people writing minimalist software don’t completely abstain from writing software and one could argue that every line of code and every bit of logic adds complexity.
That one actually solves an avoidable problem: the insane diversity of hardware interfaces. While diverse hardware interfaces might be needed for exploration at first, there comes a point where we more or less understand the goals of limitation of said hardware, and can settle on a fixed, relatively simple interface. Imagine a world where you’d have one graphics driver, one printer driver, one webcam driver, one spinning hard drive driver, one SSD driver, one network card driver…
That would simplify things quite a bit. To the point that maybe we’d be less willing to tolerate sprawling complexity at every level.
I believe he’s contrasting linux against (e.g.) a microkernel. Microkernels tend to be much simpler (inside the kernel), and to allow for more composable drivers.
Part of me feels like there may a certain level of cognitive dissonance going on when I see someone advocating wasm/rust/nixos vs suckless in the same blog.
The other part of me feels cross pollination of ideas is really important and I like the open mindedness of the author.
I’ve been using dwm off and on since college, it’s just the thing I’m the most used to. I started using dwm out of necessity because my laptop didn’t have enough ram to do much of anything without a super-minimal setup. It’s also part of how I got really good with C. I sometimes wish I could find that old dwm config somewhere, but I’ve accepted that it’s probably gone at this point.
The cross-pollination of ideas is basically the driving force behind my blog and a lot of my open source work in general. I want to inspire people to explore things at levels they may not have thought about going into.
Also a nice side advantage of using NixOS is that I can trivially make a bootable .iso of my dwm+emacs+luakit+cabytcini setup for people to experiment with in a VM. DM me if you want a link to the .iso.
Thanks for your writing. I think there are things to learn from both the Nix idea of managing complexity well and the very different “well, what if we didn’t need all that complex crap” approach of suckless. I’m glad to see writing about both.
I try :) Let me know if you have any ideas for topics I should cover, I’m starting to run out of blogpost ideas.
I’ve been using dwm and st for some time now, but honestly, I see no point if you do not want to micro-manage your own environment.
How many projects from the past, from the era before package management are still used commonly? I can’t come up with a single example. Dwm exploded quite recently (in UNIX-like history perspective) and it depends on Xlib which IMHO destroys entire claim of minimalism. C is not a ‘hackable’ language and having a set of patches just, in my view, leads to a mess of management, compatibility etc. I’d much rather uses either a WM written in a language that is much more open to code is config system (i.e. xmonad, stumpwm) or just resign from thinking about my tiling WM setup and move to spectrwm, i3, and others.
On the other hand st… Well, it is really good terminal emulator for how terminal emulators are used these days, but please, if you package it, package it at least with Xresources and scrolling patches. A one groups radical opinion cannot determine terrible user experience from the standard way of installation.
The entire point of st is that it doesn’t do scrolling: that’s what a terminal multiplexer is for. What next, add tabs?
Actually I think a terminal emulator with scrolling and tabs is a better alternative to stacking a terminal emulator and a terminal multiplexer. The reason is that with the former, you have a separate terminal emulator for each tab, and it natively supports scrolling. With the latter, you’re stacking two terminal emulators, because the multiplexer has to do its own interpretation of VT100 escape sequences to maintain its model of what should be on the screen. Stacking two terminal emulators strikes me as more complex.
I do not like when I open a piece of software it does not contain basic functionality. That’s that. A task of good terminal emulator is to replace the mess that xterm is. For cases like scratchpad term scrollback is very useful.
Then, if you agree with suckless philosophy anyway, you would not use the packaged version anyway.
I mean, there’s (presumably) a tension there; email is pretty basic but I don’t need my terminal emulator to embed its own email client.
If you’re using tmux anyways, it’s already got scrollback, subtabs etc; having those things implemented at two layers results in super confusing behavior when EG they both try to scroll.
That’s interesting. I do agree with you that it’s a useful feature to have, in a vacuum. When all I want to do is just run some commands in a terminal, having scrollback in my terminal emulator is the simplest and easiest way of having scrollback.
But when you get into doing some more advanced stuff, having all the functionality implemented everywhere starts to get really annoying. For example, when you have vim open in a tmux window in a terminal emulator that has scrollback and tabs inside swaywm, you have about a million ways to do something like tabs/panes.
Vim itself supports tabs and splits and obviously scrolling too, then tmux supports tabs and splits and scrolling, then the terminal emulator also supports tabs and scrolling and often splits too, then the window manger also supports tabs and of course “splits” in the form of tiling two windows on a single monitor. I haven’t seen scrolling in a window manager but I’m sure it exists somewhere, I guess a ‘zooming’ feature that supports windows larger than your monitor resolution counts. It becomes a dance of modifier keys and prefixes and escaping prefixes with other prefixes and just a total fucking nightmare. I’ve even had the situation of that with an extra layer of tmux in there for when I’ve run ssh in tmux into a computer where I have connected to tmux, meaning I’m using ^B for one tmux prefix and ^A for another, or I’m using ^B^B to escape the prefix for the inner tmux, total madness I tell you.
So yeah I’m not super happy with using tmux for scrollback really, but I don’t want my terminal emulator to do it either.
When you analyse that layering and repetition of functionality, it turns out there’s deficiencies all the way up and down the stack.
swaywm
has tab containers because it’s useful to have multiple unrelated programmes inside a single set of tabs. And of course it has ‘splits’ in the form of being a tiling window manager, because sometimes you want multiple unrelated programmes to share a monitor. So why have the same functionality lower down as well? Why does tmux need splits. Well because you can use it in the terminal where there’s no display server, of course. So maybe the issue is actually that the virtual console doesn’t have tabs or splits. Yet it does kind of have tabs in the form of TTY1, TTY2, etc. But no splits.Then of course there’s the issue of vim tabs and splits. Well vim has tabs and splits because they can share information and control in a way that separate vim instances running in a higher level tabbed or split interface can’t. But that’s a vim limitation. Emacs supports client/server functionality where you can have multiple instances of Emacs that are clients of an Emacs server process, and I think that NeoVim might support that too?
Ideally what I would want is to actually use something like
tmux
but split apart into the useful components: something to do the tabbing and splits (a window manager for terminal emulators), something to do the scrollback and something to do the persistence across logouts, as they’re all separate functionality. And if my editor supported client/server, then on a TTY I could use the tabs/splits part of tmux, the scrollback inside of that, with separate editor client instances inside those splits, while in my window manager I could use terminal emulator windows that run editor client instances, split and tabbed using my window manager.I feel like this line would make good flavour text in a hacking game ;)
I’ve a somewhat similar setup but have been looking for something like redshift/f.lux without all of the dependencies. It should automatically transition between temperatures, gradually, based on time of the day (not a sharp transition at a set start and end time) and should do this throughout the year without requiring to be told that sunrise/sunset times have changed. So I wrote this: https://github.com/amir/sctd
And I simply put the following in my
.xinitrc
:I am going to try this out. Thanks!
The is the simple
sct
command from Ted Unangst. I use that as a cronjob every 30 minutes to change the color, using a ratio based on the current time offset compared to 2:00 pm (value randomly chisen by me). The closer I get to 2 pm, the closer the color is to 6500 (no red). The minimum value is set to 3500, which can be seen at 2:00 am. I can get you the script if needed.While suckless as a way to build software is definitely interesting (and a lot of the benefits of suckless come from disregarding edge cases, internationalization and accessibility), I’d argue that suckless as a project is something one should handle really carefully.
They’re doing literal torch hikes through southern Germany at their conferences, fighting online against “cultural marxism”, and their mail server has the hostname “Wolfsschanze” (see: https://twitter.com/pid_eins/status/1113738766471057408)
I recommend reading this thread (with a suckless.org developer with enabled hat speaking officially) and looking at this photo from one of their conferences.
The topic pops up here and there, and one should always consider that Lennart Poettering used this bait to easily escape from a discussion about his software that I personally think should take place. Suckless is not directly a coherent group and more of a group of like-minded individuals, so I’m careful to speak “for” the project even though I’m first chair of the legal entity suckless.org e.V..
What I can say is that we are probably one of the very very few software projects left that do not politicize. We have members from all political spectrums, but make it work, because we only discuss software and nothing else. Those disagreeing with us or unaccustomed to non-political software projects try to put us into a corner, but it makes no sense when it is used to disregard the suckless philosophy itself, which is non-political.
Torch hikes are nothing unusual in Germany and there was no political intent behind it. Though I do understand now that it might send a different message worldwide, I expect more cultural sensibility from every observer before “calling us out” for allegedly re-enacting nazism or celebrating a Charlottesville march, which is a ridiculous assessment.
Perhaps, but I don’t think calling out getting emails from a wolfsschanze host is that unreasonable to be honest; as I mentioned in my other post I’m not going to attach far-fetched conclusions to it but I do find it in pretty bad taste. At any rate, to ask it plainly, what’s the deal that?
There is no such thing as “non-political”, because we live in a society with power imbalances. Therefore not taking an explicit political stance, translates to implicitly supporting the status quo, whatever that status quo is in a given society at a given time. You’ll find that people in underrepresented demographics will largely avoid your project as a result, regardless of the political views among members of your project.
If supporting the status quo is what you intend to do, then that is one thing. But please stop presenting it as “non-political”, because that is simply not the reality of it. It only looks non-political if you yourself are in a position where the status quo benefits you. Which I am also - so this is not a personal accusation, to be clear. But it is something you need to be aware of.
No no no, I cannot agree with that. Let’s take an example. I’m working on a crypto library, that on many aspects is very close to the Suckless ideals: it’s in C, it’s small, it’s easy to integrate into other projects… One of the motivations for it was to fight unnecessary complexity. A fairly political goal if you ask me: if software becomes as simple as I think it can (and should) be, the changes could be felt throughout the global economy itself.
My project also has an implicit endorsement of the status quo: it is written in English, and I have no intention to translate the documentation, or even the web site to other languages. Not even French, my native language. Sorry, you need to learn English to use my project. That’s kind of an implicit endorsement of US hegemony. Not that I’m very happy about that, but not fighting that fight does make me reinforce the ubiquity of the English language.
But there’s no way my project can have a stance on everything. Its stance on many many subjects is really neutral. It does not fight nor reinforce the status quo. Veganism? Patriarchy? White supremacy? I hardly have a community to speak of, there’s just not enough people to warrant something like a code of conduct. That does not mean my project implicitly rejects vegan transgender black women. In fact, I do hope they’ll feel as welcome as anyone else. And right now, I believe being nice to whoever contacts me is enough.
I couldn’t have put it better, thanks for sharing your thoughts. I always like to consider the example of Chemistry: In the 19th and 20th century, German scientists were leading in chemistry and most papers were published in German. Chemistry students were more or less forced to learn German to understand these papers, and German became the lingua franca of Chemistry, which has changed to English though.
In computer science, English is the lingua franca. I don’t think it’s exclusionary to only offer software documentation and code comments in English.
That is a good point and I understand what you mean with that. For our conferences, we actually offer those who are unable to attend due to financial reasons to pay their travel expenses and accomodation for them, which was greatly appreciated especially by younger programmers who often don’t have the means to fund such a travel.
Apart from income differences, that might be a deciding factor being unable to attend a conference and meeting like-minded people, I see no other factors that might hinder someone from joining us. You basically only need an internet connection and a computer. The computer doesn’t even need to be that fast, unlike if you, for instance, intended to work with deep learning software.
And if you still criticize the conferences for being exclusionary in some way: Most communication takes place on a mailing list and IRC, many people use pseudonyms. Factors like race, country of residence, gender are thus irrelevant and even non-determinable, if you choose to, and the development on mailing lists and IRC is the main way development happens and there’s no need to do anything else to partake or make submissions.
So, again, I know what you mean, but suckless is not an example for a project supported by the status quo. Most people disregard suckless as too extreme in terms of software philosophy and conclude that we would also be extreme in other areas of life, but suckless, for me, is software zen, and everyone is welcome to adopt this philosophy.
This is a common point of view among those in privileged demographics. However, it is also a misunderstanding of how underrepresented people in demographics actually choose where to hang around and contribute, and why.
Imagine for a moment that you are someone in a demographic who’s frequently a target of harassment. The exact demographic doesn’t matter much - maybe you’re black, or you’re a woman, or you’re transsexual, or whatever else. But for the sake of the example, imagine that you are a woman.
Now, there are two different communities for you to choose from:
Where are you going to feel safer? In the second community - because there, it’s clear that if someone finds out you’re a woman, them harassing you over it isn’t going to be tolerated and the harasser is going to be thrown out.
In the first community, you just kind of have to stay quiet about your identity, have everyone assume that you’re a guy, and hope that no-one finds out the truth. If they do - maybe there’s some persistent stalker following you around and posting about you in every community you join - you can basically predict ahead of time that harassment and other discriminatory behaviour is not going to be acted upon, because “people’s own politics are not policed”.
In a way, there are parallels here to how gay people are “tolerated” in many countries. It’s “fine so long as you don’t bother me with it”, which effectively means that you cannot speak about it publicly or have a public relationship with someone of the same sex, because then the cover falls away and you are no longer “okay”, because your identity can no longer be ignored. Harassment (and often violence) promptly follows.
“Don’t ask, don’t tell” policies like this don’t make for healthy, diverse environments. They make for environments in which the status quo is preserved, and where the only way to be vaguely safe as a minority is to never tell anyone that you don’t fit into that status quo. This is not inclusive, and it absolutely does support the status quo. Those who fall outside of it will silently move on to healthier communities.
I would like it if “who you are doesn’t matter, it’s about the project” were the reality, I really would. But that just isn’t how things work by default in a society with power imbalances, and the only way to get there is by actively enforcing it - and that means taking a political stance, one that disavows discriminatory behaviour and harassment.
I don’t know how the suckless community is, but I am convinced that, if I had a dime for every company, group or project that claimed to “actively welcome women” or “promote equal opportunity for everyone” or “have a zero tolerance” towards discrimination, sexual harassment or any other one of the multitude of abhorrent behaviours that plague our industry – and then turned out to be cesspools of prejudice and discrimination, I would be so outrageously rich that even thinking about it is embarrassing.
(FWIW, in addition to witnessing it enough times that it’s part of why I seriously contemplated switching careers at one point, I have some first-hand experience with some of that: my most useful skill, career-wise, has been an impeccable accent. Slightly Irish-sounding (which lots of folks in the US seem to fetishize for some reason), which I developed purely by accident (I’m from nowhere near Ireland, I’ve never been there, and I am not a native English speaker) and is extremely embarrassing every time I’m talking to someone who has a real Irish accent. I certainly had it easier than my black or hispanic colleagues – most Western managers of various importance in the corporate hierarchy could immediately identify them as worthy of contempt, whereas in my case it could take weeks before they realized I’m not a white expat, just some Eastern European programmer.
Edit: in case anyone’s wondering – the reason why I can be so light-hearted about it is that, for better or for worse, this experience has been largely confined to the workplace, after-work drinks, conferences and the like. I got to live with it for like 40 hours a week at most, and never really got a taste of it before well into adulthood. I always had alternatives and always had refuge – I could always put up with it on my own terms, which most people can’t)
Coming from a culture whose closet is not devoid of skeletons in this department, either, I certainly agree that the mere act of not discussing race, or gender, or ethnicity is in itself a privilege that not everyone has. And that it’s up to every one of us to actively fight discrimination, and to make the world safer and more inclusive for those whose voices are silenced by intolerance. But I don’t think it’s reasonable to ask people to integrate that in every single thing they do. Even activists don’t fight the good fight 24/7, I don’t think it’s unreasonable that some people choose to do it only to a limited extent, or in a possibly misguided way, as part of their hobby project.
I might’ve been a bit unclear. A don’t-ask-don’t-tell approach can be taken by members, if they prefer (many communities don’t provide that luxury and e.g. require clear-name-contributions), but doesn’t have to be. We just don’t care about genders or other aspects other than your coding skills. I see that you have a different opinion on this, which is cool, but the suckless philosophy does not extend beyond software aspects and I personally (not speaking for the group) don’t see a reason to extend that.
The two may not be mutually exclusive. Although there’s certainly a huge overlap, there’s a difference between advocating the revocation of women’s right to vote, and actually harassing women in a particular group, be it an open source project or a chess club.
A president of a chess club, or a maintainer of an open source project, can hardly be expected to be aware of the political views of the members, no matter how extreme. He could pry, but that would be uncomfortable for many people, and ultimately exclusionary. We could do it anyway, and define the range of acceptable political opinions, and exclude the outliers. We could exclude traditionalists, or we could exclude gay marriage supporters. We could exclude white supremacists, or we could exclude black panthers sympathisers.
In my opinion this would be neither ideal nor possible. As long as people stay courteous and focus on working towards whatever common goal the group has, we could actually have, say, gay and homophobic people working together. So we probably want to define a range of acceptable behaviours instead. For instance, revealing your sexual preferences is generally acceptable (unless maybe you’re too loud about this), and revealing your contempt for people who don’t share that preference is generally not.
That’s what codes of conduct ultimately do: they don’t talk about the politics one might have outside of the group, they define a range of acceptable behaviours within the group. Yes, that range will tend to filter out people with some particular political opinions. Few white supremacists will follow a black maintainer. But I would think real hard before I make that filter explicit.
I’ve seen it done, and it’s not pretty. I’ve heard of someone being disinvited from some conference because of their political beliefs, even though they (allegedly) never let them seep through or ever behaved inappropriately. I have also heard of someone being fired over their sexual practices (at the behest of SJW, ironically). And at the same time, some people who seem to engage in genuinely harmful behaviour (such as straight up sexual harassment) are not excluded. My suspicion? Enforcement goes after the easy targets, instead of going after the important ones.
Honestly, this free speech absolutism is whack and that’s why I’m out.
You don’t know what the fuck you’re allowing. I do - you’re allowing someone who literally spreads hate to walk into work, meekly get some shit done, then go home to post on the internet how trans people are all pedophiles and should be killed.
Fact is, you can’t divorce your life from politics because where many of us stand, all minorities, live under the continuous threat that we’ll be murdered, denied service, beaten and reviled all because some free speech absolutist like you envisions a future where racists and their victims can work side by side.
My community just had their 12th death. Death because people like you continually give deference to allow our killers to bask in their hate speech until one of them spots us and brutally kills us.
You enable this. I’m so happy (not) to be the sacrificial lamb for your perverse ideology.
Who said anything about free speech? I never said hate speech should be allowed. Actually, I do believe we free speech should have limits (though I’m not sure exactly what those should be), and people who cross those limits should be punished.
The question is who should punish them, and how. Forums can (and most probably should) ban hate speech however they can. Police and Judges could intervene whenever appropriate. The worst offenders could be sent to jail.
Wholesale ostracism though? Exclusion from all groups, not just wherever they spread their filth? That’s a death sentence: no job, no home, no shelter. Are you prepared to follow through all the way? (Not a rhetorical question: sometimes, killing your enemy is the right thing to do. But this question is so fraught with self serving cognitive biases that one must be very careful about it.)
Then there are false positives. The guy who was fired over his sexuality? He practised BDSM. One way of putting it is that he liked to whip bound women. When he was outed, there was an SJW outcry about him being some twisted archetype of patriarchy that should be removed from any public position.
I don’t know the guy, I haven’t investigated, so I cannot presume. I’m not even certain this story is even true. But I guess this may have been a huge misunderstanding. See, done properly, BDSM is very careful about safe words, physical and psychological safety… everyone is supposed to enjoy this, including (perhaps even primarily) the bound and gagged “victim”. Being a good dom typically requires empathy and respect for their sub. Pretty far from the simplistic image of the misogynistic man taking pleasure from the suffering of women.
Going back to gays and homophobic working together, that probably requires that they are mutually unaware of their position. It’s when they do become aware of their position that we have a problem, and the group may have to make a choice. My first step would be something like “you don’t like them being gay? deal with it or get the fuck out”. If it’s just gay people being uncomfortable, we may need to know why. If it’s because the other dude displayed an homophobic attitude within the group, that’s pretty obvious grounds for exclusion. If it’s because gay people learned of his views outside the group, this is more delicate, and I honestly have no right answer.
The problem is made even harder because actual bullying, embarrassment, and other inappropriate behaviour within a group, are often hard to see for anyone but the victim. Hence the temptation to rely on more visible, but less reliable, external signs.
For instance, let’s imagine: religious people and atheists working together in the same group. One atheist have written in their blog about how religion is stupid, unfounded, and how religious people are either critically misinformed, or just plain delude themselves. Oh and by the way if there is a God, it’s morals are highly questionable at best. So there we go: no personal insult, but a harsh criticism and a good dose of blasphemy.
Should we exclude this atheist from a chess club because some religious people in that club feel uncomfortable being next to someone who has written a blasphemous pamphlet? Should we exclude the religious people from the club because wearing a cross, a star, or a scarf makes the atheist uncomfortable? Depending on who you ask, you’ll have very different answers.
On the other hand, I don’t think it’s realistic to expect every project to look in depth at difficult social problems and form some sort of consensus on how to best deal with it.
Why would that be the case?
I think that’s entirely reasonable. This is pretty much the basis of community management in general. It doesn’t even need to be done by the core developers, but someone in the community needs to do it, if you want a healthy community.
Because they know that their safety is not assured in communities that refuse to take an active stance against bigotry of various kinds. I’ve gone into more detail about this in this other subthread.
But there is a difference between belief and action. If someone is actually doing something bad within the project then obviously that’s an issue. If someone just believes something you disagree with (whether you label it bigoted or not) then refusing to work with them in a non-political atmosphere just makes you seem like a bit of a dick, IMO.
There’s no such thing as “non-political” software projects because any political actor can decide that the way your software project run things is bad and should be made to change. And if you resist this, you find yourself in a political conflict, even if you didn’t want to be.
Why would you care what a political actor thinks about your free software project? Do you mean an actual national politician? Why would they be concerned with a free software project?
No, anyone trying to argue that a software project should change their practices for political reasons is a political actor with respect to software, not just national politicians. Tech industry activists are political actors. joepie91 in this thread is a political actor. I’m a political actor too, for trying to prevent other political actors from carrying out their will.
What are you doing to keep this kind of toxic behaviour from forming inside of the suckless communities you participate in?
You have not denied that these people exist in your community. How are they not a problem for you?
Calling people toxic, I think, is the wrong approach. What matters is how people behave in the context of the community. I couldn’t care less about their private political/social/other endeavours as long as it doesn’t affect their actions within the community.
I don’t know why there is such a push to politicize software projects, from the inside and outside. It may make something look more homogenous on the outside, but I believe it mostly creates social stress and shifts the focus on issues that shouldn’t be a problem in the first place. But this is just my opinion, and I don’t think there’s a true or false answer to that. It heavily depends on your Weltanschauung.
I’m sorry, my first approach was a bit antagonistic and too political because I tried to keep my questions short.
People sometimes express their political ideologies in behavioural ways, which might cause exclusion and secularity in the communities that they take part in. I haven’t been much in contact with the suckless community, although I have used and I respect the software and the philosophy, but I have seen communities suffer this. I have no prejudice, but toxic (extreme, hateful) ideologies do lead to toxic behaviour, especially in like-minded groups where it can be cultured. This is why people feel the need to keep them from spreading to their own group.
Have you noticed any exclusive or secular behaviour in the suckless communities that you take part in? If yes, what have you been doing to counter it?
No, I’ve never seen such secular behaviour like that. The conferences we organize have always been very harmonic and there was never such a push or even a culturation. Thanks though for elaborating what you meant, and I have to say that I’ve seen this problem occuring within other communities. I am and will be very careful that this won’t happen within our community.
I was subscribed to the suckless mailing list for a long time (though no longer, simply out of disinterest), and never had the impression I was dealing with a group of extremists (other than a rather extreme take on software). I don’t recall any political discussion off-hand, and would certainly have unsubscribed if people started ranting about “cultural Marxism” and the like.
I read the Lobsters thread you linked and there are many things I personally don’t agree with, but I also find it’s a lot more nuanced than what you’re suggesting (specifically, there was a lot of confusion what was even intended with “Cultural Marxism”). I saw that on HN you (or someone else?) linked to an old tweet of yours that screenshotted just the initial “Cultural Marxism” mention of FRIGN, and I think that’s unfairly out of context. That’s not a defence of the contents if his posts, only a defence of treating people with fairly and with kindness.
I find putting the picture of the torches next to literal Nazis and the “Unite the Right” rally incredibly tasteless and offensive.
Note the suckless event happened before the Charlottesville march (not that it really matters).[edit: incorrect, see follow-up]. I’ve done torch hikes – they’re actually used to celebrate the end of Nazi occupation in my home town every year and participated regularly. I’ve also done them with scouts just for the fun of it. Maybe some day someone will dig up a picture of that too and put it next to a bunch of Nazis to prove a point… I’m very disappointed anyone would try to make a point like that, here or elsewhere. This part of your post in particular is really bad in many ways IMHO; it’s really not acceptable to just sling around grave insinuations like that based on a friggin’ contextless photo of what is almost certainly just a harmless social event.The mail server belongs to an individual (@FRIGN here). I agree it’s in very bad taste, offensive, and that Poettering was completely right in calling that out, but it’s hardly proof that “they’re a bunch of Nazis”. I find the jump from “edgy hostname” to “literal neo-Nazis” a bit of a leap.
I doubted for a long time if I should post this reply as it has the potential to spark a long heated discussion, but I find public casual comparisons to Nazis in particular serious enough to warrant something of a rebuttal.
I just want to comment on this one factual point, according to the suckless website this event happened in September 2017, just a couple of weeks after Charlottesville.
https://suckless.org/conferences/2017/
I do think the proximity in time to the Unite the Right rally is important, especially given the insistence that they were just enacting a German cultural practice.
Oops, I checked the website and I misread that date as being on “2017-01-03”, instead of “2017-09-(01-03)”. How silly 😅🤦♂️
I’m not sure it matters all that much though; it still seems incredibly tenuous at best. This happened on the other side of the world and I’m not sure if the entire world should tip-toe around sensitive topics in the United States. Were these people even aware of Charlottesville? And to what degree? Me, personally, I mostly stopped following US news since the 2016 election as I find it emotionally draining and serving little purpose as it’s not in my power to do something about anyway.
Either way, I’d sure like to see some more evidence exactly because I take it serious: you just don’t go around insinuating people of such serious things with such slim “surely it can’t be coincidence…” type of stuff.
I was at the torch hike and hadn’t even heard of the Charlottesville marches then. When I heard the accusation that we in some way celebrated it, which would make no sense in the context of a software conference, I first had to look up what they were.
The thing is, Americans tend to overestimate the importance of domestic events like the Charlottesville marches and think that nothing happens in the whole world and, e.g., we Germans are just sitting at home and waiting for something to happen in the USA to witness it.
The truth, and I think everyone would agree that this also makes much more sense, is that torch hikes are perfectly normal in Germany. I have an understanding for this cultural misunderstanding, and I’ve been guilty of those, as well, but it doesn’t help when one continues to spread this nonsense that this torch hike was some political event every time suckless is discussed here.
To give an example for how normal torch hikes in Germany are, there is a so-called Sommertagszug in the Kurpfalz which also involves torch hikes at night. They are also offered by tourist organizations, e.g. Breitbach Klamm.
What’s with the mail server host name though? Do you think that’s fine?
It bothers me that he is actively ignoring this question and by saying nothing, he is saying enough.
As an American, thanks for sharing your perspective. It makes me wonder if the Internet, and particularly social media, make it too easy to carelessly make connections between things that should remain disconnected. Maybe Facebook’s stated mission of making the world more connected (whether or not that’s their real mission) isn’t a totally good thing.
It definitely comes at a cost. Still, as I could see from my own experience, after a few years one gets more careful with culture-relative judgements. There are still many things Americans do that I don’t quite understand or find interesting.
To give an example, I found out a few years ago that the German “mhm” (i.e. the expression to acknowledge you are listening to someone while he speaks) is often interpreted by Americans as a “huh?”. You could imagine how much confusion that caused.
Cultural differences are valuable, though, and I would not want to miss them, even if they become troublesome. I can imagine an American coming to Germany to experience a torch hike and liking it.
I have never in my life seen or heard “mhm” interpreted as “huh?”, and while I’m just one American and this is anecdotal I’ve lived in three fairly distinct regions of the USA.
German “mhm” is very distinctly different to American “mhm”. I wouldn’t know how to describe it in words, though.
It’s it very distinct from the British “mhm”?
Going on a torchlit hike at night sounds fun to me in the abstract, and also like the sort of activity that could hardly be unique to any one place, time, or culture. For ages before the invention of electric flashlights, how else were human beings supposed to light their way when walking around at night, wherever in the world they happened to be? I was unaware that some people associated the practice of going on torchlit hikes with specifically the NSDAP (or maybe just going on a torchlit hike while being an ethnic German??) until I saw people mentioning it in the context of suckless. Even if it’s true that the historical Nazis practiced torchlit hikes (which I assume is true, because I think it would be very easy for any group in human history to do so), I don’t think that confers any obligation on people alive today to refrain from it, any more so than Adolf Hitler’s famous vegetarianism confers any obligation on people today not to be vegetarians.
I agree. I’m pretty well read on the topic, including having read Shirer’s “Rise and Fall of the Third Reich,” and I hadn’t heard about the association between torchlit hikes and Nazis before it was brought up in the context of suckless either. If I’m actually educated on the topic and still didn’t know about it, how could I really expect others to know about the association?
Personally, a torchlit hike sounds like a blast to me. If the opportunity presented itself to me, I would absolutely participate.
I agree with others in this thread that people are generally way too quick to bring up Nazi associations. I like to think I’m not naive about it either, since there are trolls and Nazis online that like to play these kinds of games. But I personally expect some pretty firm evidence before I’m willing to entertain Nazi accusations seriously. It’s a pretty serious thing to say.
As an engineer child of social scientists, I’ve concluded that mental models like that are basically what you get when you take an engineering approach to social systems to its logical conclusion without considering people as, well, people. You end up with very efficient, streamlined, rational systems that place no value upon the people who are crushed in the process. It’s a simple, effective solution to the very complicated problem of human society, and it makes the complicated problem simple by saying “the people on the losing side don’t matter”. You can see this approach working efficiently and effectively all throughout human history, usually in the form of mass graves.
Everything should be made as simple as possible, but no simpler.
Because I can’t be sure which comment you’re replying to (AFAIK there’s no “parent” link for comments here), can you please clarify what you mean by “mental models like that”?
Sorry, I was talking about mental models such as the ones described by this comment: https://lobste.rs/s/nf3xgg/i_am_leaving_llvm#c_01mpwm . Essentially “we are not going to worry about equity and equality because it is irrelevant to the problem we are actually trying to solve”. Works fine when the problem you are trying to solve is “design a machine that does a particular thing well”, but ignores lots of ugly externalities when it comes down to the social structures and organizations of the people actually doing the design. Like unfettered free-market capitalism, it sounds ideal in theory and that makes it an appealing position. But my observation has been that it works great for the people already powerful enough or lucky enough to be unaffected by those externalities, and does not actually make the world a better place for anyone else.
Extremes are rarely good. There should not be an aura of aggressivity around any project.
I have no idea what holding torches might mean in this context. Could you explain, or provide links?
It looks like one of those things Nazis ruin for everyone - https://www.theatlantic.com/politics/archive/2017/08/why-they-parade-by-torchlight/537459/. Whether that is intentional on the part of the suckless folks, is not clear to me.
The other top hit I got when googling was a torchlit tourist hike through Partnach Gorge in Garmisch-Partenkirchen. I’ve been to that gorge (not by torchlight) and it’s pretty cool!
[Comment removed by author]
I used to follow this line too, but eventually I recognized that this kind of an approach tries to pre-sort people into good and bad groups based on keywords and superficial attributes, for what appears to mainly be fear. The first time I heard about the “torch march”-incident, I was negatively surprised, to put it lightly. But listening to @FRIGN, and giving him the benefit of the doubt, I don’t think that the accusations were right. I too use suckless tools, and didn’t stop after the first time I found out, since 1. I never noticed any of this before 2. it didn’t change anything. I’m going to disagree with him on points like “SJW madness”, but I won’t reduce him to that point.
This is the behaviour I’d expect a primitive AI to produce, not people who can interpret nuance and weight the validity of various interpretations against one another.
Please refrain from off-topic and inflammatory strawpersons.
High RAM usage, uses a config file, and fits perfectly into a dwm setup! :D See that’s the thing, I don’t think anyone in the suckless community has a problem with people using the tools they like. They might not approve of using a Rust programme that loads a config file to get weather, might not want to use it themselves, but the tools are all written to interoperate using standard or extremely simple non-standard formats. The dwm status bar is just the title of the root window. You can set it using
xsetroot
or any other way you can set the title of a window. So you can use dwmstatus or cabytcini or whatever it’s really entirely up to you and I think that’s great. It’s definitely not true of some desktop environment communities, where there’s little or no effort to support using anything except the built in standard Gnome/KDE tools for something.Yeah, my rust program was written for these reasons:
I use a config file because I don’t want the API endpoints revealed to the public. My build definitions of all of my Nix packages are open source too.
Please don’t take it as a criticism of the Rust programme. All I was trying to point out is how easy it is to write programmes to interoperate with suckless software. Of all software communities it’s the one I hear the most the story ‘I had this little problem so I just wrote a programme to solve it’ which is where I think computing should be.
Ah okay, I misunderstood. Sorry.
apart from everything else, this made me realise that i really need to learn my way around gdb. never even knew about the
set var
function.I learned about
set var
just then too! It was one of those lightbulb moments for sure.There’s a [patches][dwmpatches] thing in there that looks like it should be a link but didn’t render as such.
Yikes, thanks for catching that. Fixed in https://github.com/Xe/site/commit/9be1ac7b46967971d5aac4b511a1319f24a944bc and it should roll out soon.
While I like “simple” tools, and I share the appreciation of simplicity of the author, I don’t think having to maintain a C language patch tree to configure my window manager qualifies as simple - it means it lacks features that I need, and a clear extensible interface.
Given the article is well written, though, I decided to read up a bit on dwm, and right in the “differences” section of the homepage I found: “Because dwm is customized through editing its source code, it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.”
I don’t know if that sentence wanted to be tongue-in-cheek, but that sentence turned me away.
Anecdotally, I do actually have binary packages of my dwm setup built by CI, pushed to a binary cache and then that cached package is what my tower (and another machine of mine) install and use. It’s pretty nice.
That seems like the most reasonable thing to do, but indeed it’s not simple :)
Out of curiosity, how do you manage the patches? You keep everything in a git repository and rebase upon upstream whenever there is an update, or you use some tool for managing patches on upstream like quilt?
I have my own fork of dwm here and just manually apply patches when I want new behavior. Sometimes I need to apply them manually (like with the patch file split against the source code of dwm), but I only end up learning more about my window manager by doing this. This also ends up working great with my NUR repo because I can just re-run the update versions of software script and it will bump the config here. When I commit this to the repo, Travis will pre-build the package and push it to cachix. Then when I rebuild the configuration on my desktop with
sudo nixos-rebuild switch
, the new version of dwm will be pulled from my package repo and the binary built in CI will be pulled from cachix. This gives me all the advantages of building things from source and having binary packages.