30 Linux Kernel Developers in 30 Weeks: Paul Mundt

In this week's 30 Kernel Developers in 30 Weeks profile, we talk to Paul Mundt, who works on the SuperH architecture and core parts of the AMR-based SH/R-mobile platforms. He shares a variety of stories from his nearly 20 years of experience working on the kernel, including one that proves collaboration never sleeps, even when you do during an inter-contentinetal flight.  

Name

Paul Mundt

What role do you play in the community and/or what subsystem(s) do you work on?

I primarily look after the SuperH architecture (and by proxy, core parts of the ARM-based SH/R-Mobile platforms), but that tends to entail wearing quite a few different hats. In the past it was mostly an effort to keep generic code from breaking my platforms (a struggle that persists to this day), but as embedded gradually ceased being a second-class citizen in the kernel it's been much easier to focus time on repurposing existing infrastructure for additional use cases.

Outside of my architecture maintainer role, my time is mostly split between memory management (especially MMU-less systems, NUMA support, proliferation of large TLBs, etc.), clocks/general timekeeping, and IRQ management. Lately I've been working on making irqdomains more useful (particularly for the non-DT crowd) and extending clockevents to manage unused timer channels more effectively.

In the past I also looked after the framebuffer subsystem for a period of time, but that work has since changed hands as I was unable to give it the amount of time it needed for full-time maintenance.

Where do you get your paycheck?

Renesas Electronics

What part of the world do you live in? Why there?

Tokyo, Japan. I became disillusioned with Silicon Valley a long time ago and haven't seen any compelling reason to return. After country hopping for a bit, Japan has been home for more than six years and suits me pretty well. The fact that the bulk of the country is mountainous also provides me with more than enough avenues for keeping busy outside of work.

What are your favorite productivity tools for software development? What do you run on your desktop?

I suppose that would be a combination of fbcon, vim, and mutt. It's how I've always worked (albeit without fbcon in the pre-2.1 days). I've never been able to get any serious work done in a desktop environment, so I avoid them as much as possible. That being said, on the occasion that I need to browse a site that doesn't render in lynx, read some document that has been provided in a nonsensical format, or finding myself spending an inordinate amount of time with Japanese input, I'll grudgingly run fvwm2. Text has always been my preferred method of working.

How did you get involved in Linux kernel development?

I came to Linux pretty late, around 1996 or thereabouts. I started out fairly typically, a pile of random ISA cards where support was either lacking or completely broken. The first project was getting DMA working on a 3c501, or something like, that in some random 2.0 kernel. It was long ago enough that I don't remember the particulars, but it certainly wasn't pretty. When the framebuffer subsystem was merged in late 2.1.x I started spending time there and then gradually transitioned in to architecture work (MIPS at first, then SuperH via reverse engineering of the Dreamcast).

What keeps you interested in it?

The constant evolution. Evolving existing code to support new requirements while co-existing with the old. Being able to revisit a bit of code you wrote over a decade ago for dealing with a particular problem after finding out that you suddenly have a cleaner and more efficient way to deal with it (assuming you can remember what you were thinking), etc.

It's also interesting to see ways in which people are utilizing the kernel that you hadn't previously considered, particularly as it often provides you with a completely different viewpoint or direction for existing infrastructure.

What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?

You'll find that there a lot of people with interest in some very niche areas who can get quite territorial, which you can often manipulate for your own benefit: by posting a patch that both solves a particular problem while simultaneously offending their sensibilities sufficiently that they're immediately spurred in to action to solve it much more effectively for you.

I was working on a particular problem where I hit a limitation of the bitmap API where my desired bitmap size exceeded the number of bits, a case that had been crafted to trigger a bug with a helpful note that whoever hits it first gets to code it. I set about addressing this with a crude algorithm for tracking spanned longs (posthumously dubbed the Mundt multiword extension) while on a long-haul flight home from Seoul. As internet access was spotty at best, I spent more time napping and tending to my drink than actively monitoring the list traffic, but by the time we touched down the code had already been rewritten, optimized, and sent off to Linus for merging.

What's your advice for developers who want to get involved?

Don't get trapped in walled gardens.

The kernel and the people working on it have weathered many vendors with their own agendas and will continue to do so for the foreseeable future. Unless you particularly want to work for a given vendor, don't get distracted by the short term and get sucked in to a vendor tree because it happens to be easiest in terms of hardware availability (this also applies to industry forums that allege to have an interest in solving problems generically without attempting to engage with upstream during development). As many companies have overlapping interests for the kernel, kernel hackers are afforded a certain level of autonomy -- something that is not worth ceding for what will be another in a long line of abandoned initiatives in a few years time.

While the barrier to entry for supporting new hardware can be quite high, it's fairly straightforward to find an area that you're interested in and find things you are interested in changing. Ultimately it comes down to scratching an itch, which is something you are unlikely to experience with trivial or mechanical churn. You'll have more than enough help along the way, so long as you're willing to put in the effort and are attempting to make meaningful changes. Beyond that, everyone gets rebuffed from time to time regardless of whether they've been working on the kernel for 15 minutes or 15 years.

No kernel hacker that I can think of started out making whitespace or spelling changes, and that also seems unlikely to change. If you're trying to make a name for yourself in the kernel community, you ideally want it to be a positive one rather than a pejorative.

What do you listen to when you code?

It varies. I generally prefer quiet, but in an office environment that's not always possible, so anything that acts as a filter for more distracting background noise is fine.

What mailing list or IRC channel will people find you hanging out at? What conference(s)?

For mailing lists, the usual vger set. linux-kernel, linux-arch, and for issues pertaining to my architecture, linux-sh.

I generally avoid everything but kernel summit, but I'll usually give a talk once a year or so depending on what I happen to be working on. If I do make it to another conference, I usually skip the talks and stick with hallway discussions.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux for Developers: Jumpstart Your Linux Programming Skills (Developer's Library) by William "Bo" Rothwell English | 17 Apr. 2017 | ASIN: B06ZY85CPJ | 224 Pages | AZW3 | 5.37 MB Linux for Developers shows you how to start writing great code for Linux, whether you’re a Linux user with little or no coding experience, or an experienced Windows programmer. Leading IT trainer/author William “Bo” Rothwell begins with a clear and up-to-date review of modern open source software, including the licensing arrangements and tradeoffs all developers need to understand. He presents essential skills for both Linux command line and GUI environments, introducing text editors and other tools for efficient coding. Building on this knowledge, Rothwell introduces scripting tools such as Bash, Python, and Perl, as well as traditional object-oriented programming languages such as Java, C++, and C. Finally, he presents a full section on the powerful Git version control system, teaching skills you can use in Linux and many other environments. Access Linux systems, use GUIs, and work at the command line Learn how Linux organizes files and navigate its filesystem Use basic developer commands such as gzip and grep Edit programs with vi and vim, and explore alternative editors Perform basic sysadmin tasks that developers often need to handle Compare Linux languages to choose the best one for each task Write Bash scripts that interact with users or other shell features Program with Python and Perl: flow control, variables, and more Understand Linux features related to building C, C++, and Java programs Stay on top of complex projects with GIT revision control Work in GIT: staging, committing, branches, diffs, merges, and patches Manage local and remote GIT repositories This guide’s modular coverage helps you quickly access whatever information you need right now.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值