
Modern software development is cancer - xMajedz
http://www.dedoimedo.com/computers/software-development-cancer.html
======
Latty
I'm going to give the benefit of the doubt and say this article is designed to
be from the point of view of the user and to imply that you simply shouldn't
get carried away with new systems, because they don't provide _inherant_
value.

However, the author doesn't write that clearly (except maybe right at the
end), and instead comes across as "I don't get the value of this, so I'm going
to claim it has none." PulseAudio gave me a ton - individual volument control
for aplications, routing different devices to different applications easily,
routing audio over a network, etc... Likewise, most of the examples provide
some value. Everyone just has hatred for it because Ubuntu rolled it out too
early when it was still not very stable, and people still remember it as this
buggy problematic thing, even though it's been rock-solid for years, in my
experience.

The Firefox example is the most stupid - they are moving to a shared standard
with other browers precicely to get away from the issue of every browser
having their own standard.

To me, this just reads as another "Wah, things are changing and I want
everything to stay the same". Suck it up. Yes, often developers make or use
new things just because we like learning and exploring. That doesn't mean new
things can't do something it would be excessively hard to do in the old thing.
It's about weighing up the cost/reward.

Again, I'm probably being too hard on the article - it does kind of make this
point at the end, but in my opinion ends up making the point of "fear new!"
instead of the more nuanced point of "address the cost to your user of using
something new before using it" that I _think_ it's actually trying to make.

~~~
pzone
You're not being too hard on the article. The hatred for Wayland is especially
pointless. The author claims that Wayland "has nothing to do with the vast
industry out there" because servers don't run graphically, completely ignorant
of the embedded Linux market (where the "monitor + keyboard + mouse" X
paradigm is most broken) and other major driving forces behind Wayland.

Yes modern software libraries are inconvenient because they change a lot and
constantly break. But that's not a new thing, it's been a problem as long as
software libraries have existed.

~~~
cyberpunk
Off topic but I'm really not sure what wayland is supposed to give me that I
don't already have? Do you have some insights here?

Personally, my Linux laptop is finally rock solid graphically after a decade
of pain and the idea of replacing a stack that took so long to mature is
unappealing to me in the extreme.

~~~
Latty
From what I gather (and I'm no expert) the value of Wayland is that it is a
model that matches what we are actually doing with our systems now.

X is a giant system that we abuse a tiny portion of to use in a way no one
planned for it to get used - X was designed when the assumption was that you'd
be a thin client on the end of a mainframe, which clearly doesn't map well to
modern usage.

X, for example, allows any window to look at the contents of other windows.
Useful for you screenshot program, security flaw for most applications.

Backwards compatibility has obvious benefits, but at the same time, there
comes a point at which you are dragging around so much cruft no one is really
using any more it's better to throw it away. The author seems to think X isn't
beyond that line (or, as the article paints it - anything he uses is), but
from what I've seen, Wayland seems like a smart idea.

Also, there is a compatability layer which means that most things should just
work (except, as hinted at above, things like screenshot applications, which
is an intentional break as that should require more privilages).

~~~
cyberpunk
Well, I still don't get it... How I'm using my system now works perfectly,
finally, and I'm sure I probably fit into the 'modern usage' bracket (hidpi,
multiple monitors, USB-c projectors etc)...

That security improvement would be good, surely we can add this to X though?

Adding that bit of security isn't enough to sell me on replacing such an
entrenched bit of our daily lives -- for me at least..

We are stable and it's pretty and fast enough. Progress is always good, but it
has to bring something to the table other than a transparent replacement of
what we already have with new code. How many million hours has X run this
month?

I sound so uncool to myself here, I really like shiny new tech but fucking
with something so important for reasons that no one really seems to agree on
seems like a bad move to me.

Maybe someone else has some justification for is that we're missing and can
enlighten us?

~~~
Latty
Sure, but there is cost to maintaining X. If Wayland is smaller and can
achieve the same thing more effectively (more secure, faster, better features
for contained applications, etc...), then that is preferable.

Yes, there is a cost to you, as a user, in switching. The benefits of Wayland
don't really filter to you as a user in a perceivable way, but if it means
that the applications you use are developed more quickly and end up being more
efficient and secure, that's a benefit. The reality is that Wayland will be
something you use, eventually, because people will support it (because it's
better for them to target than X), and so eventually you will need it for
something you want to use.

That's why I call it a trade off. Right now, would I develop an application
only on Wayland? Probably not. In the future, that'll shift and eventually tip
- at some point the cost of developing on X will simply be that much higher it
won't be worth it.

I understand users being risk-adverse and not wanting to change, but the
argument of "if it ain't broke, don't fix it" has historically always lost in
the end. It's rare for a system to have no room for improvement, and X is
definitely not such a system.

As to, why not do it in X - because X _does_ want to be backwards compatible
and stable for it's users. Secuity that breaks fundamental capabilities
applications expect can't maintain that. Ripping out the cruft breaks existing
stuff. Wayland aims to replace or remove 99% of X, so why work from a basis
you are going to use essentially none of?

------
zaptheimpaler
Here is what i think is a more balanced view - software devs now have more
say/power because they are valuable/rare. More people are working on more
complex software, which means a dev background becomes more important to
effectively plan/manage it. They are using the power to direct resources to
things they care about that were neglected in the past - one of them is surely
software quality, because in a "product-driven" company, managers don't care
about technical debt and will whip you to work on a shitty codebase regardless
of how demotivating it is.

In many cases being more dev-driven has saved time and money for the business
in the long run. Even if that didnt happen sometimes, you know what, devs are
people too and given the chance to improve their working conditions, they did.
I'm personally pretty fucking happy about that.

~~~
xMajedz
i agree with you, but in the fact that fedora uses a experimental
software(wayland) is not user friendly

~~~
steinuil
Wayland works pretty well now, it's just lacking software support. And even
that's not much of a problem, because you can run X clients inside it with
XWayland.

It is not strictly "experimental software" at this point.

Also, Fedora is the "bleeding edge" distribution of Red Hat and is
purposefully usen as testing bed for new features, like in this case Wayland.

So if you're using Fedora and don't like Wayland, systemd and other such
"experimental software", maybe you should stop using Fedora.

(That's not to say I like Red Hat or what it is doing to the Linux community
by forcefully pushing whatever they want to be the default on every Linux
distro out there.)

~~~
fleg
Does Red Hat force Arch or Ubuntu to use systemd or Wayland?

------
nallerooth
> They will destroy the old framework, put in place a new and undefined one,
> 99% of all extensions will die, and even more people will abandon the
> browser, because add-ons are the chief reason why people stick with Firefox.

The WebExtension API is "undefined"?

1\. [https://developer.mozilla.org/en-US/Add-
ons/WebExtensions](https://developer.mozilla.org/en-US/Add-ons/WebExtensions)
2\.
[https://developer.chrome.com/extensions/api_index](https://developer.chrome.com/extensions/api_index)
3\. [https://arewewebextensionsyet.com/](https://arewewebextensionsyet.com/)

To name a few sources.

------
mrbrowning
Alain Ducasse recommends allowing a hot take fresh off the pan to cool for
half as long as it's been cooked, so I guess I'll open this back up in about
two and a half minutes.

------
pjc50
Not a fan of the "X is cancer" framing.

The valid point buried in all this is that software seems to have a shark-like
nature; it's either moving forward or "dead". There is a lot of change for the
sake of change, and everyone who's got comfortable in a niche _really hates_
forced change.

This is understandable in paid software when you only get paid for new
features. It's less obvious in Free software unless you really do consider
reputation-as-currency.

------
bruce_one
In a similar vein to "focus on one db and truly exploid its features" (vs an
orm); I think targeting a systemd-aimed architecture/deployment can actually
be quite neat and powerful.

(I don't use it on desktop, but server based it can be quite neat (imo/ime)
:-) )

Being that, for some situations, I truly do believe systemd is better than old
school init (I think similar for s6/runit/etc too (ie they're better than
sysvinit))

------
JdeBP
That supposed block diagram of systemd is taken from the Wikipedia article on
systemd, where for the past two and a bit years there has been an explanation
that _it is not a block diagram of systemd_.

------
replete
Calling out some obvious real world issues there, but also kinda shitting all
over some good ideas and innovations that have improved things, like
containers.

A better title would be "The Mother Of All Moans"

Zzzzz

------
Digit-Al
Does anyone else find it ironic that the author finishes with "I'm paying, I'm
the boss" when all of his examples apart from Windows are free?

------
hatsunearu
Why is he ripping on tabs on top? Seems like a bizarre point to make in an
otherwise sound argument.

~~~
Boothroid
Yeah would've been better to at least understand why these are supposed to be
so awful.

------
Boothroid
This articulates a lot of what I've felt in recent years.

Here's this syntactically ugly new feature that allows you to save a few lines
of code and obfuscates meaning from lesser mortals!

Hey let's dispense with those tired old curly brackets and use indentation
instead!

Let's make a simple scripting language, and then extend it so that it becomes
as complex and indecipherable as C++!

Hey wouldn't it be a great idea to have a server that runs JavaScript!

Try staying up to date when you have to work with a complex suite that tries
to run everywhere and jumps on every passing bandwagon. You will then
understand why the 'stuff changes, suck it up' argument isn't always valid. At
times these days I try to get something done and discover the tools I have at
my disposal are just poorly written crap on top of incompatible crap on top of
indecipherable crap.

No I don't want to use your stupid Jupyter notebook! Just give me the frigging
source and a readme!

So much stupid and unnecessary complication. I wish I'd just learnt C.

~~~
jhall1468
I don't understand your point at all. Python has been around since the early
90s, and it's purpose was to make development faster. That has a tangible
benefit to consumers: Applications get developed significantly faster. C is
powerful, it's also incredibly slow to prototype with.

> Hey wouldn't it be a great idea to have a server that runs JavaScript!

Who cares?

> So much stupid and unnecessary complication. I wish I'd just learnt C.

Oh the irony...

~~~
Boothroid
Change for changes' sake is partly what frustrates me. Indents are such a
stupid idea IMHO. What was wrong with curly braces?! Certainly Python sticks
out in this regard. I also think Python has evolved beyond its initial premise
to the point where it has acquired many of the features it was trying to
escape from at its inception. When I see all the ugly cruft in the average
large Python app/library I start to question.

As a developer I care about these things when they pollute my work with their
crappiness.. Be that in concept or execution.

I'm well aware of C's limitations. My point is that the types of environments
in which C prevails are perhaps a little less prone to the latest trendy fad.

~~~
Nadya
Do you indent your code when you use braces?

    
    
        this {
            foo: bar;
        }
    

If so - how is scanning for {} any different than scanning for indentation
level?

    
    
        this 
            foo: bar;
    

You'd have a valid point if you wrote code as thus:

    
    
        this {
        foo: bar;
        }
    

or

    
    
        this 
        {
        foo: bar;
        }
    

If you're using indentation and curly braces - one of the two isn't
_necessary_. In my opinion, indentation alone is more scannable for code
blocks than curly braces alone. If I were to drop one - it would be curly
braces.

I don't find Python all that difficult to read - and I primarily deal with
Javascript and C#.

~~~
Boothroid
I prefer the last.

Partly it's not being able to just drop a brace in the right place to make
something compile when hacking that bothers me - ohh no, in Python you have to
make sure every damn block is aligned correctly.. For a quick and dirty
scripting language it sure is pedantic!

------
hubert123
Regarding systemd: I guess I like the systemctl commandline interface, I wasnt
around for the alternatives. (if there were any?) I like that part of systemd.
I like the fairly easy to write service files. I'm not sure how it relates to
booting an OS though.

Regarding programming languages: I think we absolutely need better programming
languages, they are all still a joke to me. Rust sounded like the perfect
language but then we all know what happened, same as c++. Personally I'm
always surprised when somebody makes a new language and doesn't include a
debugger or intellisense. It must be only me but it just shows a general
disrespect or unawareness for me, the user you want to attract. You actually
expect me to be productive with your language without them? C'mon.

> Essentially, people who write code are just glorified digital welders

Yep, that's actually what I think as well. Most programmers just don't think
about the higher end goal, usability in the greater context of the OS or
interaction design, simplicity, or even whether alternatives exist. They just
see a job to do and they do it - often badly actually.

Honestly, it's not just about software development though but that's what I
know best. E.g the first Apple iPhone comes to mind: Finally a product that
was truly just _good_. In basically every single way, designed for the user.
It was beautiful. Github comes to mind, it just worked. Immediately and it
solved a need. Before we had sourceforge. Facebook was similar in my opinion,
although the situation is more complex there.

> What should have been done - whip the developers into submission, force them
> to create a backward-compatible framework that supports everything, and make
> backend changes that do not affect the user in any way. That's how product-
> driven development is done

Haha, somebody speaks from experience. Yeah that's actually how it is done in
enterprise development in my limited experience. You just have to be backwards
compatible, end of story. Don't care how it's done, just do it.

> Why did smartphones succeed? Because they allowed a common person to do the
> same things they did on the PC cheaper and faster

Yep, and also because it allowed the common person to be connected while not
having to sit hunched over at a PC. The internet and the PC are clearly great
things but people want to live their lives _and_ be connected. With
smartphones they get to have both. Personally I will never agree with these
weird "wow look at how sad all those people are, staring at their
smartphones". I remind myself of the pictures of people in the 1900s where
everyone at the train station was hunched over their newspapers.

~~~
pitaj
> then we all know what happened

What happened?

~~~
spdionis
I think the parent implied that it got quite complex, like c++, and he doesn't
like the complexity.

------
simooooo
Any other opinions on the systems debacle?

~~~
SFJulie
Yes.

Why we do web?

Because lazy sysadmins blocked all but http.

But we still need to communicate.

Let's do udp like streams on top of tcp.

And may be we need to open firewalls still to make A&B communicate without
going through a Central stuff C to have no SPOF.

Let's invent STUN a way to trick firewalls into opening an incoming
transmission behing a FW.

Our security seems broken.

Indeed.

What do we do?

We put more broken stuff on the web like JWT/OAUTH.

And the STUN bite into your security?

Either ignore it or use a «DPI» proxy.

But it breaks the purpose of secured communications and still does not solves
the problem, and breaks TLS.

Wait we have IPSEC in IPv6, no matter that cryptographically it is considered
weak, it is by default in windows, PS4, and we have open source server... that
are buggy as hell with root rights.

Maybe PGP, SSH, roll your won crypto?

Good idea, no users know how to use them correctly, devops included...

And what about the multiplication of passwords and credentials?

Let's use broken application with root rights and bugs to serve as a wallet
that has a good UI, or an good enough application no one can use because of
the restrictions?

Money is based on trust. The real harm that can happen to IT is to lose the
trust of the customers, hence its value.

