David Humphrey is a developer, open source expert, and professor at Seneca College’s School of Information and Communications Technology. Since 2004, David and Mozilla have involved hundreds of students in research projects related to Firefox and the web — building cutting-edge web technology and providing real-world experience. This includes participating in the creation of new web standards for audio and gaming technologies, implementing existing standards like subtitles for web video, and developing new web technologies for interactivity, animation, and web literacy. David is also a founding member of Seneca College’s Centre for the Development of Open Technology and a regular speaker at conferences and technology gatherings on topics associated with open source practices.
- @humphd on Twitter
- @humphd on GitHub
- David’s blog, Bread & Circuits
- Seneca Professor David Humphrey recognized for decade-long work with Mozilla
- 2014 NSERC Synergy Awards for Innovation
I’m wondering if you could start with an overview of your work.
I teach computer programming and software engineering at Seneca College. I do research there, mostly related to the web. I’ve been working with Mozilla on research projects and teaching and so on, since 2004. In that time I’ve done so many different things.
Essentially, they all have a similar pattern, which is I’ve taught students how to get involved in open source through Mozilla. I use Mozilla as a large example project. Every year it’s different, but we’ll be working on some project for Mozilla, a feature in Firefox, or a new thing that the foundation wants, or whatever.
Typically, that has spun out into research projects. After the course is done, and most of the students are finished with it, some of the students continue on with me.
We have a lab, the Center for Development of Open Technology, or CDOT, where we continue that work. It will go on sometimes for a year, sometimes for two years, to finish that piece of whatever it is that we’re doing. That kind of cycle has repeated for more than a decade.
Can you think of a specific time, an anecdote, when you felt a sense of success in this work?
Lots of them. Sometimes it has felt like success when we’ve done something that will ship to all the users of Firefox. Success will feel like scale sometimes, and it will be big. We’ve had that experience quite a few times. Work that we’ve done has led to web standards emerging or changing. When I see Microsoft or Apple implementing something that we helped design there’s a sense that we pushed the industry, we did something.
Sometimes success will feel like a really small thing. I’ll have a particular student who I’m working with, who has had a crazy life getting to that point, and here they are able to participate in this huge network of professionals and creative people. To them, their life has just changed tracks. That story has repeated a lot of times for me as well.
Some of my students have gone on and worked at Mozilla, they’ve worked at other companies, or they’ve been involved interesting projects. It’s leveled them up in a way that they weren’t anticipating, that I wasn’t anticipating. Success has also felt like being able to do it over and over again — my work is always taking students who don’t know this stuff to a point where they know it. Then I start again.
Typically in an engineering shop or in a computer company the idea is that you train up your employees and they get better and better. There’s this myth, at least, that they would get better, and better, and better — and then you would have this unbelievable team. In an educational context, it’s never like that. I’m always working with people at the same level. As soon as they get good, I lose them. Then we do it again.
Success for me has also felt like being able to reproduce. Being able to have that work again, and again, and again. That cyclical nature of it. I guess I would say it’s because of relationships, as opposed to some magical thing, but it’s worked.
Those are a few examples of how success looks different, and has looked different, and felt different over the years.
I’m curious as to whether or not you’ve adjusted your pedagogy. It seems that doing this over and over again, you might start tweaking it. Are there any overarching themes, or big changes that you’ve made, to the way you teach?
For sure. Every time I’ve done it I’ve had to change it. I remember the very first time I taught the course, the students had to compile Firefox from source code — as the very first thing that they did. There really wasn’t good documentation on that, and there were a lot of issues with it.
By the time they were done — because of having 40 people all working on the documentation — they had fixed it, and it was like, “Here’s how to do it,” and it was really clean for a beginner. It meant that I couldn’t use that as my example — the thing that I did — for the next group of students.
We were not only helping those students to understand how to do something, but the state of Mozilla would change as a result of us being in there. It wasn’t like we were third-party observers who had no effect on the community. Our effect grew and grew.
As a result of that, and as a result of being more engaged with people in the community and different areas of it, every time I do it it’s completely different. I never know, from time to time, what it’s going to look like, which is terrifying on the one hand, because I can’t reuse materials. It means that I have to be willing to work on process, as opposed to product.
I can’t compare from one year to a next what they do, because it looks so different. It’s very challenging. Many of my colleagues don’t want to do it. I’ve tried to get other people to do it. It’s chaotic, as you would expect, and a lot of people don’t enjoy that chaos.
Students don’t mind it, though. They already feel like so many of the courses they’re in are over their head or new. They don’t have that same fear, I think, of things being different, and big, and hard.
Unlike other professors, you can’t just set your curriculum and then just tweak it occasionally. You’ve got to start anew each year.
A number of times, Mozilla, as well as other schools, have wanted me to give them my curriculum. But there isn’t a set of notes that I have. There are certain touchstone things that I’ll do with them.
For example, one thing that’s changed over the years, is that GitHub has appeared and become the de facto way that everyone does open source, including Mozilla. That’s now a big part of what I teach — how to participate in collaborative projects and get on GitHub.
Things like that emerge, but there isn’t a textbook, there isn’t a set of notes. Even if I produced one — I’ve actually produced a few because Mozilla has asked me to for different professors — it wouldn’t be satisfactory in an ongoing way, because the communities, the products, the priorities all shift. You aren’t relevant unless you’re right in there working on whatever it is the community is working on.
It’s almost as if you need to be teaching your approach, rather than step one, step two, step three.
Yeah, you’re right. That’s a good way of putting it.
This is an example of a challenge. What are some other examples of challenges that you face in your work?
Most people don’t put undergrads in this kind of a context. This would typically be done with graduates. That is challenging because lots of the students aren’t ready to do it — in all different ways. I’ve had really good and really bad experiences putting students into a professional context.
Things have changed more now, too. The culture of tolerance around people making mistakes in social media, or in different things… Despite the rhetoric around students being digital natives and so on, my experience is that they’re very sheltered on the web.
They’ve grown up in a particular area of it. They haven’t necessarily experienced it in all of the ways that something like Mozilla would use it, or that community, or how diverse that community is. It can go really well when students get it. It can be really a challenge if they don’t.
I’m not just teaching “Here’s a programming skill you need.” or “Here’s how to use this Git command.” That’s relatively easy and well-documented. But what are the subtle ways that you participate in evolving something?
You have to be able to interpret cues — over the web, or over a bug report, or a few lines in a review, or an email — Why isn’t this person responding to me? What does that mean? What’s normal? How long it should take?
We take the students out of the playground, as it were, and put them into a bike lane. That’s the analogy I often use. I try and set up a bike lane, so we’re on the same road that Mozilla’s on, but we’re off to the side. We’re going a bit slower. There’s a bit of a barrier that’s protecting us from traffic, but they’re still out there with them, and good things can happen and bad things can happen.
Both things are happening at the same time.
What I hear you talking about is soft skills — interpersonal skills — which are super important as these kids go out into the workforce. How do you approach helping them get attuned to all of the cues? That’s what seems like would be very difficult to convey. Is it just a lot of discussion?
I tend to use a lot of examples. I try and use examples that are happening right now. Inevitably there is an example of it going well, and going badly, on the web at any given moment. It doesn’t have to be in a Mozilla context. It could be in any other open source project or any other part of the open web.
We’ll look at it. I’ll bring it up and say, “Here’s what’s happening today,” and we discuss what’s happening there, why it’s happening. We look at the kinds of things that evolved to create that situation — or at least the visible pieces that led to it.
I think most teachers don’t want to leave the safety of the classroom, or the safety of the curriculum, for that very reason. But, if you’re willing to do it, the possibility for them to learn what you call “soft skills” — but the most important skills in my view — are just multiplied tremendously.
Something the size of Mozilla and all of the different people, and all of the different tensions and different things that are going on… I don’t want to cast it as a negative thing, but it’s like any other social soup. You have all sorts of this happening. I constantly have the perfect conditions to observe just about anything out in the wild with my students.
I also try and use myself as an example. I will go into scenarios and I will work on something, or I’ll go and get my code reviewed, and I’ll show them what happens to me. It helps for me to disarm myself and say, “Here’s what it looks like to have negative feedback on something I wrote.” Or, “And this is what they mean by it. And this is how you would interpret it.”
Because often it’s very terse, or it’s something that is so common within the context of how Mozilla operates and the way that things get reviewed. But outside of that context it’s easy to wonder, “Why is this person saying this isn’t good enough?” Or, “What does that mean about me as a person?” Or, “How do I get this person to respond at all? How do I subtly nudge this person?” Or, “How do I talk to somebody else to try and push that along?”
All of those sorts of things. There isn’t a right answer to any of this, because if there was people would be doing it well. In Mozilla, in general, everybody is trying to make the best of it, and I’m trying to show them that it’s real, that it exists, and that they can navigate it and participate within that system.
Turning now to the broadest issue in the Mozilla universe. What, for you, is the open internet?
I think that, for me, it’s the fact that you don’t have to have gone to the right school, you don’t have to live in the right place, you don’t have to have permission in order to be involved in this global community of people doing interesting work.
There was a time when the narrative was you’re born in a small town, or you’re born wherever, and you need to just get out of it. You need to go to New York, or you need to go to wherever. The open internet doesn’t work like that.
I’m talking to you right now from the middle of nowhere in Ontario. In farm country. And that’s fine. That’s the power of the open internet — you can be anywhere and participate. But, more significantly, you can do it without needing permission.
All of the stuff that I do with Mozilla, I don’t have permission to do most of it. I just walk in and do it because the door is open — and I have taken full advantage of that fact. I couldn’t do that with many other companies.
I can’t go and sit in on meetings at a bank and say “Don’t worry. We’ll just be at the back of the room here. Carry on as you were.” That doesn’t work, but it does work in the context of the web.
Can you tell me how this has been important for you, this openness?
It’s meant that I myself can make changes. As I said to you — watching, shaping it, and that my students can also make changes. So it’s possible for us to participate in something that would otherwise just look like a thing that you could be a fan of, but in this case you can be one of those people.
Getting more specific about Mozilla. How did you get involved with them and what has that been like?
I was working on a research project at Seneca and we needed to show off the capabilities of a piece of hardware. We needed some piece of software we could modify that would let this company demonstrate what it was doing in order to take its patents further. We decided to use a web browser, because a web browser is essentially every piece of software if we get that right.
We knew that Firefox was open source. We all used it. This was in 2004, but none of us knew what we were doing, or how you would ever accomplish what we wanted. I went to Mozilla’s website — mozilla.org — and there was an email address — email@example.com — and it said “If you want to work with us email this email address.” And so I did.
The guy that responded to me at the time would go on to become the CEO; that was John Lilly. I think he was in Japan at the time. He bounced me off to some of the people who worked in Toronto: Mike Shaver, Mike Beltzner. Long time people in the project. They said, “Yeah, we’ll come meet with you.”
I had grant money. I thought I’ll just hire Mozilla people to come for a day and educate us. They came and said, “You don’t need to pay us. We’ll help you because we think this work is interesting.” I think that set the stage for how I’ve worked from then on. If you’re doing interesting work people are definitely willing to work with you.
That has been the model that we’ve followed since then. As a result of that, we built really good relationships, which is the most important thing. Those guys became friends, still are, and we just kept working on things. Once we’d get done one thing, one of them would say, “It’d be cool if you could do such and such. Do you guys want to try and fix this?”
My involvement with the Mozilla Foundation came not too long after. At that time the foundation was one guy, maybe two. Mark Surman wasn’t there yet, or Chris Lawrence, or any of those guys. They decided that they wanted to support me in my educational work. They liked that I was bringing new people in and producing this culture of education around contributing to Firefox.
This was before there was a lot of that in other open-source projects. Now a lot of people have recognized the value of having beginners, of educating people on how you would get started. It wasn’t a very common thing then. We formed close connections. That’s how I started working on projects both with the Corporation and the Foundation.
Since then I’ve done tonnes of stuff with Mark and lots of software projects within the Foundation when they didn’t have the software team that they needed for building things.
How has this involvement affected your own life and work?
It’s been my professional focus since then. I have taught and worked on this incessantly. I’ve been able to travel the world. I’ve been able to meet all sorts of interesting people. I’ve been able to get involved.
Most recently we won a Governor General’s Award in Canada for the research work we did. We received national recognition from NSERC and the government. NSERC is the major funder of research for science and engineering in Canada. The federal government gives out grants to universities and colleges to work on science and technology through NSERC. So we’ve been able to get all sorts of grants through the government to work on these sorts of things as research.
It’s really completely changed the course of what I was doing. It’s been tremendously positive.
Can you tell me about a time where Mozilla didn’t meet your expectations, or about experiences that were less than good?
I’ve had lots of those. I guess you would expect that in a relationship that this long.
One of the main goals of StoryEngine is to create a feedback loop, specifically for the Mozilla Foundation. I’m wondering if that helps you narrow it down. What are some directions you could suggest, or things that you’ve seen that could be better?
Well, I would say that there is a tension within Mozilla in general — and with the Foundation in particular — around doing things at scale versus doing things at the level of the individual. How should you both target your work and measure your work? Should you be affecting the lives of a million children on the web? Should you be running an after school program for six people? Those types of things.
The problem I’ve had is that the line moves all the time, even while you’re deep within building a project. Suddenly, it needs to be an educational thing. No, it’s not an educational thing, it needs to be for professionals. No, it’s not for professionals, it needs to showcase something about the web. It’s often really unclear. I don’t know if it’s an identity crisis or that’s part of the identity — that it’s a chameleon. I’m unsure.
That has been something that I’ve had to deal with a lot, and so it’s meant changing priorities and pivots in terms of the kinds of things you’re working on.
Canceling things that are successful in order to start other things, but then canceling those too and starting other things. It’s like there’s a desire to start again. “Let’s begin anew, and if we do it again, we’ll get it right this time. We’ll really nail it.”
Yet Mozilla is also really well known for long term stability on building something like Firefox, which is the same code that’s been going on for the longest time and it just gets better, and better, and better. That can be missing from the way that some of the stuff will happen around the Foundation.
I find that hard, because the cycles of how I work are typically a year or two years. It can often be hard for them to hold their attention on something for a year or two. Almost impossible, I find.
There needs to be something new, something exciting. We have to arrive with a new vision. That kind of desire for refreshing themselves makes it hard to do quality work over a long period of time. It’s definitely hard to educate people, to bring people in. Those are some examples of things that I think are a challenge.
Do you think that these stories we’re collecting might be useful to you, if at all?
I haven yet read any of the stories. But, going back to some of the challenges I was just talking about, for myself — and for Mozilla — to understand who their community really is, having those border lines drawn for them and being able to say, “OK, this is the space that we occupy,” would be useful.
It would help understand who is actually there — the people that are actually there working hard within the space — as opposed to this ideal user, or community member, or story-boarding something — a person that doesn’t really exist and that they’re trying to acquire them somehow.
It would be useful to understand who else is like me out there. I’m definitely aware of some of it, but not aware of most of it because I’m focused on doing my own bit of what am working on.
FEATURED PHOTO: Natural Sciences and Engineering Research Council of Canada