Hacker News new | ask | show | jobs
by MuffinFlavored 974 days ago
Hot take (and sorry ahead of time): A bunch of open source developers drawing a line in the sand on which project they like to contribute to in a fragmented fashion instead of working together isn't great for the "end user".

Not that people should be forced to spend their time doing anything they don't want to do when it comes to free, volunteer open-source contributions. Just an interesting callout.

It's pretty clear why the gap is getting wider: too few people working on too many ways to skin the same cat.

2 comments

The gap is getting wider for a very specific reason: Wayland. Unlike X.org, it doesn't have a single reference implementation that virtually everybody is using. Furthermore it is under-specified so DEs are forced to implement their own proprietary solutions to common problems until Wayland comes along with a third "official" way of doing it several years layer. These two factors result in deteriorating compatibility between the different desktop environments.

It used to be that if you used Gnome but really liked some KDE applications or utilities, you could just use those KDE applications under Gnome and it was fine. People can and did mix and match whichever parts of the different desktop systems they liked the most. I remember when I first figured out that it worked this way as a teenager, it was absolutely magical. But now, thanks to those two properties of Wayland this interoperability is being ruined. Application developers are burdened to support one, the other, or write even more code to support both. In their pursuit of simplicity, Wayland designers burdened application designers with this complexity.

Why do there have to be so many different:

C libraries

shells

window managers / desktop environments

package managers

Think of the global man hours wasted achieving basically the same thing slightly different ways

Why are there so many different kinds of cars, houses, razors, cereals, fruit, music, phones!

Think of all the time we would save if we would save if we drove to work in our Yugos, listening to bubblegum pop on our zunes before sitting down at our DOS workstations to write cobol!

You can't just pick a set of present day winners in the marketplace of ideas and pretend you can wave a wand and relocate all the labor that went into what you now think are the best things and make them even better. We arrived at our present day through an open marketplace where people were free to branch off and create and the resulting ideas cross fertilized. If you go back far enough all of the things you now regard as best in class were at some point an upstart which according to your priorities would be dismissed in favor improving something that by now is extinct because as things progressed it was deemed too inferior to continue improving.

In fact best being pretty subjective and its highly unlikely that most would even agree at any point in time which ought to be worked on and which abandoned and its entirely likely that if you convinced someone not to work on option B or C their labor isn't magically added to A. You may have noticed that individual projects have a certain vision on how their project is going to progress and B and C exist specifically because their vision differs from A. Deprived of the outlet of making B those developers might take on more commercial work or they might go fishing.

It's likely that an ecosystem that believed in your perspective to be impoverished by lack of choice but its unlikely for what you imagine the winners to be enriched. In fact many of them might not even exist.

> Why do there have to be so many different: [...]

Different shells/etc exist because people have different preferences. If all of these options didn't exist, then more people would be stuck with software that misaligned with their preferences.

> global man hours wasted

It's not effort wasted if the people who made all these things felt fulfilled in doing it; their effort was only wasted if they don't value their own work. There's no opportunity-cost to consider unless you think these people would have otherwise been devoting their manpower to some other FOSS project instead instead, which is a bad assumption. Somebody who wants to write a new shell does not necessarily have any interest in writing something else instead. Community FOSS development isn't like commercial software development, volunteer developers aren't "human resources" that get assigned to work on things that don't interest them. If for instance the fish shell didn't exist because it's technically redundant with bash, there's no reason to think that manpower would have gone to another FOSS project instead; the developers might instead have chosen to spend their time fly fishing.

If somebody's hobby was building model ships instead of unix shells and they built a model of the Titanic, would you say their manpower was wasted because thousands of other people have built similar models before? That's not really a reasonable way of criticizing hobby projects.

> Think of the global man hours wasted achieving basically the same thing slightly different ways

Like when Richard Stallman forked e's source code and built the little-known editor emacs.

Or when Linus Torvalds rewrote UNIX as a useless free kernel without tech support, documentation or mandatory subscription fees.

Or when Chris Lattner wrote his own scrappy C compiler and redundant intermediate language just to be cool and edgy.

Fuck it, why do we have technology at all? Why doesn't the government just tell us all what to do, think of the global man hours we could save with that!

These stories are weird, as they were all heavily driven by code licensing, which isn't at all (afaik... maybe I'm wrong and this is the back room reason we are all being forced in this direction) the story with Wayland.
Correct.

There is no evolution without mutation.

Most specifically the design of Wayland was designed in such a way as to actually create this situation by not having a functional reference implementation or capable libraries for individual environments for the first decade of development.