Don't get me wrong, I was a pretty loud critic. Right now I work on embedded ARM where most COM vendors are still - in 2015 - selling brand new kit which can barely run kernel 3.2, let alone 3.7 required for cgroups/systemd - most systemd fanatics try to tell me to compile from mainline kernel sources, which ignores the fact that these things are all one-of-a-kind once-off type systems where I'd have to port the shitty once-off BSP code which barely made it over the wall in the first place (which I have done - and took weeks on my last attempt, due to shitty quirky b0rked interrupts on the MMC interface for that board), not just "yolo, git pull && recompile dawg # to hell with re-certification and customer revalidation" that web hipsters seem to assume is the case.
But honestly, the technical committee in Debian were the ones we entrusted to make this kind of decision, so it's a meta-lesson in community participation. You can make all the RedHat conspiracies you want but at the end of the day the technical committee volunteers decided it was too much work (read: they didn't have the help like you or I around) to take on spinning a distro with the option to install without systemd.
So all I'm saying is that the Linux ecosystem is shit, but we have only ourselves to blame.
As someone who went to a relatively unknown university (internationally at least), I can also say that the only part of my degree that I simply had to accept with blind faith ("unless you've done maths post-grad, we don't have time to teach why all this is so and how it's derived") was much of two control systems theory subjects. The rest, I could usually derive from first principles. We certainly also studied semiconductors (Si, SiC, GaN - in conjuction with a quantum mechanics subject) such that we could model transistors and other elements from physical fundamentals: exploring different quite complex models and computational approaches, down to simplified formulae, when and which to use for convenience or accuracy.
I get the point you're trying to make, but I'd say most good engineering programmes are throwing up disclaimers in the course material whenver a "recipe" (as opposed to principles) is being taught due to lack of time. Good courses should provide caveats around such things, and make the students understand that they're applying something they don't understand. And hopefully also show what branches of knowledge a "faith item" is derived from so that students can explore on their own if they wish (I hope mose EEs are being taught how to teach themselves and know the limits of their own knowledge). In order to give the physical sciences and mathematics the depth that you would apparently approve of, it would squeeze out so much of the EE domain knowledge and analytical/process/systematics part of the discipline I'm not sure you'd be left with much other than an applied science degree.
I bought my 2009 X61s, a 12" thing, with 8GB RAM. That model was released in 2007. My X230, bought early 2012, has 16GB RAM. I don't know why this 12-13" form factor noadays has gone *backwards* back-to-7-years-ago specs... is it because "UltraBook" has to mean "one DIMM slot"? It's infuriating. Instead of replacing my X230 (the X240 only does 8GB RAM) when the screen broke, I bought parts to repair it. Which was probably for the best anyway (my X230 still does the job), but it's still weird I no longer have any replacement options for this apparently unicorn piece of hardware.
Why do I want 16GB? Because I really enjoy being able to reproduce all my work on this tiny little magical piece of machinery which fits in my backpack with no effort whatsoever. It's the *future*. I shouldn't have to accept mediocrity in the place of something that currently already works. I shouldn't have to stand up more resources at work and VPN in when I already have a working solution. I enjoy being able to work offline; working from flaky 3/4G isn't fun.
To be fair, I do actually do remote debugging in vim with vdebug, but I guess my vim is pretty blinged out. It's no VS of course. And perhaps I'm being ignorant about what it is you actually mean by multiple language support, the toolchains all do this with varying levels of success but I get that managing it can be painful (hence things like pootle).
Virtually my entire career of the last 8 years has been doing productivity software in *nix, so hearing about "THE major [foo]" seems a bit shrill. I did maintain a windows port for something at a previous company, though - Qt wasn't too bad, but again, not as painless as a greenfield app done in
For me, it's keyscript in crypttab which completely stopped my systems from booting. They're not keen to ever implement becase apparently shell scripts are intrinsically racy (for what it's worth my own keyscripts have a 10s timeout and fall-back to askpass if the crpyt token doesn't become available. I've never had one of my servers reach this time-out, the hardware config rarely ever changes). I wrote about some of the infinite permutations possible to support the use-case of just having a 4-line shell script, but it just seems that systemd is religiously opposed to shell scripts. Eventually, someone pointed out that I could pass keyscript args in the kernel boot parameters which seems to be a partially satisfactory solution for now.
For what it's worth, I do like the declarative nature of systemd for starting processes, socket activation etc. and I have migrated most of my stuff to systemd. It bothers me that debugging dependency issues is still so hard (ever tried "systemd-analyze dot"? the output is completely worthless as a debugging aid). Still, I am uneasy about the dogmatic anti-shellscript religion, I worry about the project's overall approach to security when simply accidentally running systemctl as a non-root user causes it to segfault, and it doesn't seem right that a change in pid1 should even remotely impact userland applications at all, let alone as deeply as systemd has.
At the end of the day, choice of default init system isn't going to make me switch from my favourite distro of the last 14 years (apart from a 2 year excursion to Ubuntu), but I think some of my own hostility toward systemd has been a result of the instantly dismissive remarks whenever I've tried to explain a problem I've had with it - by now I'm realizing that perhaps everybody is just too tired to tell the difference between a valid systemd complaint and yet another "get off my lawn" argument. In any case it's made me realize I should really diversify my tastes a little, currently playing with FreeBSD (again) and NixOS - that has to be a good thing.
I think he means that it's trivial in Gentoo to run arbitrary versions of any old library or dependency for the sake of a given application that is stuck in the past, not just package-pinning as we do in Debian-land. For example, I have an old gnuradio application that was written for gnuradio 3.6.x, but this was never shipped in any official release of Debian (it went gnuradio 3.5 in wheezy -> gnuradio 3.7 in jessie).
In gentoo it's trivial to have a specific old version of libfoo (and all the old, terribly specific versions of its huge pile of dependencies) installed along-side whatever passes for the current version of libfoo for the rest of your applications which aren't stuck in the past.
In Debian I had to re-build gnuradio from the 3.6 source, with much tweaking of the debian/control, debian/rules files and wading through debian-specific patchsets intended for gnuradio 3.5 or gnuradio 3.7, that don't apply to gnuradio 3.6. And all its dependencies. And suffer the fact that now all of the rest of my applications are forced to use gnuradio 3.6.
Other than being forced to type in 12 passphrases manually to decrypt each hard disk at every single goddamn boot, because custom keyscripts just "aren't the systemd way". Or spending hours figuring out why your Requires=network.target units inexplicably never start on boot, without a single shred of clue or evidence or event in any logs whatsoever, despite LogLevel=Debug and even though network.target clearly flashes by during boot and systemd-analyze clearly shows that it knows about this relationship with your unit and the service starts normally when you login and systemctl start manually. Or that tweaking your daemon args now requires a systemd daemon-reload as well as restart.
Yes, apart from all that, and the time saved now that admins will never have to see another freaky, alien shell script ever again because init systems were the only thing which used them, apart from all that... I'm hoping like hell systemd will hopefully one day buy me something other than more downtime.
Computers are useless. They can only give you answers. -- Pablo Picasso