Hacker News new | past | comments | ask | show | jobs | submit login
Linux md maintainer, Shaohua Li, has died (spinics.net)
320 points by cmurf 3 months ago | hide | past | web | favorite | 42 comments



The post where he offered to step up as md maintainer: https://lkml.org/lkml/2016/1/4/455 and discussion about the change: http://www.linux-magazine.com/Issues/2016/186/Kernel-News

A very brief bio: https://raid.wiki.kernel.org/index.php/User:Shaohua_Li

Patches to Linux kernel while at Facebook: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...


Only 232 patches were submitted under the Facebook e-mail address (since 2015). He worked at Fusion I/O and Intel before that, encompassing a total of 576 commits:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...

Additionally there were 47 commits with his involvement in the pre-git era (starting Sep 2003):

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history...

Sad to see a prolific longtime contributor pass away.


md is multiple devices. It's a RAID implementation in Linux kernel available since kernel release 2.0. It allows you to create RAID level 0, 10, 4, 5 and 6. It has various optimizations like utilizing SSE and MMX instructions. It's a standard software RAID in Linux.


> It allows you to create RAID level 0, 10, 4, 5 and 6.

I'm pretty sure it supports RAID level 1 as well:

https://raid.wiki.kernel.org/index.php/RAID_setup#RAID-1

Or am I misunderstanding something?


It does. Also the less standard RAID10-over-three-devices (similar to the scheme called RAID1E by some hardware RAID controllers, though with more layout options than they usually supply).


At first I thought you were describing a 3-way mirror, then I looked into it, and that's a cleverly kinky idea.


I thought it was 'meta devices'? Hrm the docs don't actually say: https://raid.wiki.kernel.org/index.php/A_guide_to_mdadm


Here's a 2002 reference to mdadm being referred to as "multiple devices admin".

https://web.archive.org/web/20180211041128/www.linuxdevcente...


it does many things besides RAID, its more or less a generic "do things with abstracted block layers" tool these days.


The similarly named "dm" (device mapper) is a generic abstract block layer tool. md is still specifically a software raid implementation.


Condolences to Mr. Li's family.

Because it's a huge project with so many eyes on it, Linux's transition to the next generation of developers will probably be The textbook case on the viability of large human endeavours in general.


Condolences to Mr. Li's Family.

Mr. Li has had a good impact in this world, and his work will live on for a long time.

> Because it's a huge project with so many eyes on it, Linux's transition to the next generation of developers will probably be The textbook case on the viability of large human endeavours in general.

True. I agree with this statement.


Not trying to be a sarcastic jerk... any death is tragic and sad. Yet the Linux maintainers' average age is probably going up every year... so the community will have figure out a way to bring new blood in /and/ pass the reins.

The sub-systems will fall into obsolescence otherwise...


I fear for whoever replaces Linus the most, whether it be one person or a committee. If they don't hold the kernel up to his standards it just might not be the same. Worse yet will be if any given corporation gains control of Linux at which point, either through a fork or otherwise. Sadder yet is I'm less concerned about Microsoft supporting Linux than I would be Google.


If I could bet on this, I'd actually bet on Oracle taking the torch. Not because I think that's a good idea, just rather it'd unfortunately continue the trend (OpenOffice, MySQL, Java, etc) and everyone would bet against it, giving me a huge payoff when it happens. Fortunately, there's no way for them to "acquire" Linux, I believe.


They would need buy-in from all of the maintainers/contributors for that to happen. And there are a lot of them.

I'm seeing 2466 unique maintainers (curl -s 'https://raw.githubusercontent.com/torvalds/linux/master/MAIN... | grep -P "M:\t" | uniq | wc -l), and only 10 of them with @oracle.com emails. They're the 11th biggest contributor by company.


Jenkins, LibreOffice, MariaDB (and others) are doing just fine without Oracle.


Yes, but those are all forks. I was answering the question only, nothing more. If Oracle took on Linux (whatever that would mean), I have no doubt another fork would start as well.

edit: and this is a really contrived subject and example, because honestly, I can't think of how Oracle would take control of Linux anyway.


Illumos isn't, it has a couple companies propping it up but outside of that hardly anyone uses it.


I wouldn't be surprised to see a lot of software and sub-systems re-written, rather than maintained. systemd largely comes to mind; everyone seemed to be perfectly okay with init until systemd came along and vastly simplified the boot process. Now it's standard across virtually every mainstream distro. It's a similar story with Wayland vs. Xorg. How many network managers do we have now, too?

As new technologies arise, it's almost always easier to write something new, from scratch, than to muck about in legacy code (that you probably didn't even write in the first place). md is great and works exceptionally well, but it's only a matter of time before a newer, better, more well-supported software RAID is born and md goes the way of init and Xorg


> systemd

> simplified

I like systemd, but it never simplified anything, especially with the huge amount of dependencies. At most, it made things relatively uniform across Linux distros, but in the end of the day each distro has to maintain their own .service files anyway.

Lightweight and embedded Linux distros won't use systemd by default in the foreseeable future because it's anything but simple.


> it never simplified anything, especially with the huge amount of dependencies[...]

That's an odd way of looking at things. Ultimately it's software accomplishing task X. How are things simpler if instead of depending on other projects they'd have implemented those things on their own? Then you'd be carrying duplicate work.

> [...]but in the end of the day each distro has to maintain their own .service files anyway.

Sure, but e.g. on Debian /etc/systemd/system/sshd.service is 22 lines. The still-carried shellscript version is 162 lines, and that's before counting any of the per-distro shellscript libraries systemd removed the need for. That's a big reduction in complexity even if systemd didn't have any advantages over shellscript init, which it does.


> Sure, but e.g. on Debian /etc/systemd/system/sshd.service is 22 lines. The still-carried shellscript version is 162 lines, and that's before counting any of the per-distro shellscript libraries systemd removed the need for. That's a big reduction in complexity even if systemd didn't have any advantages over shellscript init, which it does.

And for that "simplicity" all you need is a daemon that depends on dbus, glibc and cgroups (IIRC), just to name a few - which makes it non-portable for anything that isn't Linux and non-usable for anything that doesn't want to depend on, say, glibc.

And if they got their way, dbus would have been shoved into the kernel (kdbus, bus1, or whatever they called it) - adding a bloated mess of an IPC mechanism into the kernel.

Simplicity. Right.


I think it's legitimate to complain about systemd not being portable, but it's odd to do so in terms of the non-portability not being "simple".

Imagine how much more complex systemd would be for even common things like "start this daemon and make sure neither it or any of its sub-processes collectively use more than 1GB of memory" would be if it had to run on z/OS, AIX, Solaris, OpenBSD, HP/UX, Windows, Mac OS X etc.

And let's be clear, systemd is perfectly usable for things that don't want to depend on glibc, for example it works just fine for starting Go programs, or your random C program you've linked to uClibc. What you can't do is not have a glibc on your system at all. Given how tiny glibc is in terms of modern hardware resources, if you can't have it on your system you probably weren't the target audience for systemd in the first place.


Worse still, some of the code in that daemon exists pretty much solely to replace functionality in that one shell script: the negated ConditionPathExists seems to be used only by sshd.service, with the non-negated version being used only to decide whether to launch getty. We've essentially replaced complexity in a shell script with complexity in an always-running process written in C.


The van Smoorenburg rc script for openssh server on Debian is only 162 lines because the Debian people responsible for it have as yet paid little attention to a development in Debian's van Smoorenburg port that happened back in 2014, in the middle of the Debian systemd Hoo-Hah.

The Debian people responsible for van Smoorenburg rc copied OpenRC and Mewburn rc, and shifted most of the mechanism of rc scripts out of being part of every individual rc script and into a common interpreter, /lib/init/init-d-script .

The rc script for opendnssec-signer (to pick just one example) in 2016 shrank to roughly one third of its prior size with this change. Mewburn rc scripts have been reaping this same benefit since 2000.

* https://sources.debian.org/src/opendnssec/1:1.4.6-6/debian/o...

* https://sources.debian.org/src/opendnssec/1:2.1.3-0.2/debian...

* https://unix.stackexchange.com/questions/480896/


Systemd simplified things the Mac way: by taking away control and building in a lot of smarts and vendor-supplied defaults.

So, less simple in terms of number of moving parts, but simpler in terms of how much you have to know to deal with it. As in all things, it's a tradeoff.


>...everyone seemed to be perfectly okay with init until systemd came along...

Everyone was definitely not OK with sysV init. That was the problem. The distros extended it in various incompatible and not very good ways. Regular sysV init was OK for what it did but hardly anyone used it that way. Systemd was not a rewrite of sysV; it was its own thing.

The question of how to do stuff in a Unix like OS is still very much open, making systemd did not magically make the question go away.


Indeed, although the thing that actually was "regular System V init" was partly replaced with a new service manager subsystem several years before Linux was even invented.

* https://news.ycombinator.com/item?id=18788974

The motivation for writing systemd, and what it was initially intended to replace, was upstart, the software that preceded systemd on both Ubuntu and Fedora. The idea that only van Smoorenburg init+rc and systemd existed is a common fallacy.

* http://uselessd.darknedgy.net/ProSystemdAntiSystemd/ (https://news.ycombinator.com/item?id=8488235)


systemd is a simplification of init? You couldn't have picked a wronger example. It's literally missing a NOT statement in the middle.


It simplifies our lives by absorbing complexity.

That is literally the point of software.


Our lives may be simpler, but the software isn't. Absorbing complexity is literally the opposite of simplification.


Totally. The complexity has to go somewhere.


That sounds like a recipe for disaster. Rewrites are incredibly hard, and these things tend to suffer from second-system effect.


i think this guy was pretty young, looks to be in his 30s or 40s


Although I never had a chance to interact with Shaohua Li, I'm glad there was someone else that could step in to maintain for awhile. It always sucks losing someone in the community and cancer sucks...

Most of the years I was a heavy user of md it seemed like Neil Brown was the only person working on it, so for every weird use case or if documentation was lacking I'd shoot him an email and he'd get back. I can only imagine how many other people were doing the same!


Giving open source software to the world is a great contribution to humanity. Thank you Shaohua Li.


I guess coding can kill pain, sometimes. Thank you Shaohua Li.


Here is another good article written by Shaohua's close friend Coly Li (who is the main bcache maintainer), a lot more details on the contributions (elegant code, performance patches, etc.) he has made to the Linux kernel, as well as how he helped many new contributors to step up and become core contributors for difference subsystems. Amazing.

R.I.P.

https://media.weibo.cn/article?id=2309404323330038621366


Rest in peace.


Software RAID for the masses was not an insignificant advance to society. I was always amazed at how easy and consistent it was.


Sad to hear the news. md was the first "RAID" I ever got experience using, back in 2011.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: