"Not because this is some democracy and people would vote on it and there's a clear winner, but because these things really happen on their own: a 'successor' isn't somebody who gets anointed as such, they end up just doing the work and making themselves one that way," Torvalds told iTWire during an interview this week.
As usual, he offered views on a wide range of topics, among them the way he has coped with life during the pandemic and also about his life in a country which is split along partisan lines.
He was interviewed by email. His answers are, as usual, given in full.
iTWire: First to the pandemic. Has it affected your work patterns in any way?
There were some changes to things _around_ work, since I generally travel for conferences or for other meetings a couple of times a year. Those have obviously gone away. I did do one virtual Q&A (aka "fireside chat") conference event, but honestly, I'm not a huge fan of the format – all the stress about public speaking, and without any of the actual human contact or the break from my normal work patterns.
And obviously it's resulted in other changes and stress (two of my three kids were in some of the most affected parts of the US in the spring: New York and New Orleans), and my youngest is at college which isn't optimal these days.
But kernel development itself? No real change.
Since the 25th anniversary of your release of the kernel, what is the biggest Linux development that has taken place?
We very seldom have big earthshaking changes any more, because our whole process is actually geared away from that. With the very regular release schedule every 8-9 weeks or so, everything is geared up to making changes incremental and non-disruptive.
We do end up having a lot of development (an average release these days is somewhere around twelve thousand commits by around 1500 different people), but even the big "change something fundamental" development ends up being done in incremental and gradual ways. Which means that for bigger features, it always takes more than a single release, because there's often a lot of preparatory groundwork for then switching things over to a new model.
So it's really hard to point to any particular "big thing". There's just a lot of them, and they are all designed to not stand out too much, because the #1 rule of kernel development is "don't break user workflows".
The 25th anniversary was around Linux 4.8, and four years later we're now at 5.9. I personally feel like one the bigger changes is perhaps how arm64 support has really grown up, but seriously, I took a look at the stats, and the diff between those two releases is simply pretty big:
- 74,821 files changed
- 12,168,162 insertions(+)
- 4,775,484 deletions(-)
(that's actually more files changed than we have files in the current archive – because files have been added, removed and moved).
So there's just a ton of work, and what you feel is the biggest change probably depends most on what part of the kernel you end up being most interested in.
This merge window (for 5.10) we had a fundamental change to how we do user mode accesses, and while it wasn't a "big" change in number of lines of code, part of the reason for that was exactly that the groundwork had already been laid for it over the last few releases. And the main reason I happen to feel it's big is just that it changed something that had been around since 1991.
That kind of does illustrate one interesting point about Linux kernel development: it's still very much about some core fundamental things. In every release, the bulk of development tends to be about drivers and new hardware enablement etc, but we still do core development to things that have been around for decades.
And what is the development that you would love to see but that still proves elusive (if there is such a thing)?
I really don't feel like we have a lot of big gaping holes in kernel development. We have tons of tooling, lots of developers, and the process seems to work.
Oh, there are lots of things I could wish for – more direct involvement in the mainline development process of some of the bigger users might be the big one. But even that has actually improved. Most of the distributions are actually using very close to baseline stable kernels, and even Android — that used to be quite far removed — has been getting closer to mainline over the years.
And there's a lot of things that would be different in a perfect world, but a lot of them are outside the control of the kernel. I still wish that distributions and user space would also take up the
same "don't break user workflow" rules that the kernel has, and there would be more cross-distribution compatibility, but admittedly that has been getting (slightly) better too.
But on the whole, I feel like things are working well.
Now that you have crossed the half-century mark, have you ever thought of naming a successor and sitting back and savouring what you have achieved? Or would you prefer that that came about naturally?
I don't think I'll ever be in the situation where I need to really "name" a successor – it will be fairly clear who it is. Not because this is some democracy and people would vote on it and there's a clear winner, but because these things really happen on their own: a "successor" isn't somebody who gets anointed as such, they end up just doing the work and making themselves one that way. There's always been a few people around who are clearly just people who get relied on a lot. These are people who have been around for years, often decades, and people know them and know how they work and trust them.
That whole "they've been around for a long time, walk the walk, and people trust them" is I think _my_ main achievement. Honestly, a lot of being a maintainer is less about being some special person, and mostly about being reliable and responsible and basically always there – so that people know they can trust them.
Yeah, yeah, you need to actually be good at what you do too, but part of that comes with having done it for a long while too. And I still don't see what I'd do if I weren't a kernel developer – I like to think I'd be sipping margaritas on a beach somewhere, but even with scuba diving I'd probably get bored pretty quickly if I didn't have anything else to do...
Do you derive any satisfaction from the fact that Microsoft is so dependent on Linux for its revenue these days?
For revenue? No. I don't care about that part. But the fact that it's used inside Microsoft (and thanks to WSL, outside of MS too, of course), obviously is part of that original "World Domination" plan of mine. MWhahahahaa.
Or is that too much of a juvenile thing for you to even give it a thought?
But seriously, I've always wanted Linux to be just _useful_. I think that should always be the #1 concern of any software project – things like beauty in design etc should always be secondary, and you should never let your personal hang-ups about how to do something keep your project from just being useful in as many circumstances and places as possible.
And for that reason, I find projects like WSL and Linux on Azure to be very good signs. Not only because I think it's a lot healthier than the relationship we _used_ to have with Microsoft 10+ years ago, but simply because I think having Linux in many different areas ends up making it a better kernel too.
Just as an example: we're seeing improvements in cifs (the Windows file server part in the kernel) that come from WSL adding improved support for Linux special files in their filesystem.
There are often those kinds of things where use in one area ends up then causing improvements in (related) areas. And that is not in any way Microsoft-specific, of course. The fact that SGI back in the days worked on Linux for supercomputers is how our current superior SMP support came to be. Which is why I always like seeing Linux used in a wide variety of different ways and in different circumstances – it just results in a better and more well-rounded system.
What is your opinion about newer programming languages like Golang and Rust?
Well, I'm not personally a user, and not involved with them, but while I think C is a lovely language, I also know and understand its downsides. I certainly don't think it's appropriate everywhere, and even inside the kernel — which is pretty much what C was _designed_ for — we're slowly moving towards doing parts in other languages. Rust being the presumptive other language (assembler, of course, has always been around, but that's a "when there are no other choices" thing, not a real choice).
That said, in the kernel we've also worked on using not just C, but an extended version of it, and we have a lot of automated tools to handle some of the downsides of C. Lots of extended sanity checking, both statically and dynamically. So it's not like C is going away, or being replaced.
Encryption has come under attack a great deal ever since the Apple-FBI stoush in 2016 over gaining access to an iPhone belonging to a known terrorist. Now governments are trying to get companies to break encryption, using the excuse that it facilitates terrorism and child sexual abuse. Do you have an opinion on this campaign and its implications?
I don't really end up worrying about some of the crazier anti-encryption laws, the same way I don't worry about governments trying to overturn the theory of relativity because they don't like the limitations of the speed of light.
Because it is what it is, and strong encryption is not some kind of genie that you can force back into the bottle. Backdoors just aren't possible solutions.
And I also think some of the discussion on the Internet has been the usual over-hyped worries by people who love to talk about how the sky is falling. Yes, there's the usual unsurprising "septuagenarian politician has no idea about technology or how encryption works, and seriously discusses completely ludicrous ideas", and you can make headlines about that, but what else is new?
I also happen to believe that laws forcing people to unencrypt things aren't necessarily wrong. If you _are_ suspected of hiding crimes behind encryption, refusing to unencrypt things should have
consequences. That's no different from the classic case of Al Capone being jailed for tax evasion rather than his "real" crimes. Maybe you can't break the encryption, but you can still catch the problem cases on those kinds of grounds.
So there are sane middle grounds, but people seem to always get hung up about the crazy extreme cases. It probably makes good copy, but that doesn't make it relevant.
You appear to have coped very well with the row over a code of conduct. Has this had any effect on aspects of your life apart from your interactions with people on the LKML?
Aside from being painful at the time, I actually think it ended up being a good experience.
I still occasionally use language that people react to, because old habits die hard, and it's not like I always catch myself. Sometimes I think something scathing is funny that others then react negatively to. But one thing that came out of it was that (a) I _do_ try to be more careful and (b) I occasionally get emails saying "you shouldn't have phrased it that way", and I think both of them are actually good things.
Did it change my life in other ways? I don't know. I doubt it made a big difference. But I _am_ trying to be more careful in my communication (which is obviously what I do a lot of), and I am
perhaps more aware of it simply because of that.
There have been some reports wherein people claim that more individuals would be drawn to kernel development if the communications were done in a so-called friendlier medium aka HTML email. Your comments?
I think that was one of those one-off comments that were blown out entirely out of proportion.
But the thing is, people actually do use other mediums than email. I _personally_ don't happen to do that, but it's always been the case that other developers have had other means of communication too. A couple of decades ago, it was IRC (internet relay chat – I doubt the young 'uns even know of that) and for all I know there are still holdouts. But people have mentioned using Telegram and Discord to chat about things. Some people just want that kind of direct interactivity.
But then email ends up being the lingua franca that everybody can use in the end. That doesn't mean that it's the _only_ one.
As to the actual HTML email itself, it turns out that for a lot of mailing lists, that's the single cheapest and simplest way to get rid of a lot of spam. So there's a very real technical reason for that.
Finally, with the US presidential poll being so close, I have a query I would rather avoid: what's your take on the state of the (US) nation?
Oh, Christ. You shouldn't have gotten me started.
I have found the last four years of US politics to be very, very depressing. I honestly don't know what I'll do if [US President Donald] Trump wins a second term – which happily looks very unlikely right now, one week before the election (I don't know when the interview is going out, this may sound very optimistic and naive by then).
Trump is a narcissistic, racist, nepotistic disaster, and he seems entirely unable to not lie constantly. He's a shit-stain on humanity, and he has surrounded himself with other people who are equally bad.
Or worse, because the ones that are smart seem to actually do it _knowingly_. What a sad state of affairs.
I remember growing up in Finland, and seeing US politics partly through the local papers, but also through sources like Jay Leno (on Sky TV? I forget). It made me feel like Finnish politics were boring.
Oh, how I now long for boring.
Here's to hoping that in a week, we'll have some good news. And yes, I've already voted. And if this goes out before the election, and there are any Americans out there reading it: go out and vote against that corrupt and nasty piece of human garbage, and all the people who embraced and empowered him.