Chris Heilmann promises big things in the open-source space
The Grit

Chris Heilmann promises big things in the open-source space

Juraj MihalikJuraj Mihalik

You’ve been using JavaScript since it came out, how would you compare the first version with what we use these days?

JavaScript has matured immensely and turned from a quick-fire invention in 10 days to become the dominating language of the web. In the beginning, it felt hacky and it was dependent on the environment. I knew a lot of Netscape specific JavaScript and other things that only Internet Explorer could do.

Early on the main skill-set was to know what browser messes up in what way and which hacky solution yields at least predictable results. This was a problem and whilst we got standards in the web space like the Document Object Model we never really embraced organization in the JavaScript world. The language allowed for a lot of flexibility, so we just did what worked, not necessarily what was readable, maintainable or worked well. This became a big mantra when libraries like jQuery came out. The goal was to write less to achieve more and not to know about the language or its implementation across browsers. Nowadays we’re in a middle ground. Most developers will use Angular, React or Vue to build applications but we also have a standards body for JavaScript.

The language is getting more complex and more organized as we learned from libraries what developers want. I’ve never been too much into using frameworks and libraries, except for YUI which I worked on. But they for sure were responsible for the growth of our market and the web. I love that JavaScript engines are open source, that developer tools are open source and that people have an active say in where the language is heading.

 The JavaScript Toolkit: Write Cleaner, Faster & Better Code

It moved from an inside job for browser makers and code theorists to an open discussion about the tech of the web. I am worried about abstractions and people building with thousands of packages they don’t understand and control. But this seems to be a natural progression, as we see the same in many other languages. I hope that we can maintain a nice middle ground where learning JavaScript isn’t hard and using it doesn’t require making you dependent on a certain stack or environment. But I have no delusions about this being the main use of JavaScript in the market.

Often the use of a technology describes its evolution better than well intentioned architectural ideas by those who maintain it. I like that JavaScript learns from other languages and Async JavaScript is something I consider a great step forward.

You worked as a Principal Developer Evangelist at Mozilla. What is your favorite project that you launched while being there?

Mozilla was a great time for me. It is an important part of our market and community and its history is an excellent example how open source can work out. I worked on quite a few products there but the one that really makes me happy are the MDN docs - formerly Mozilla Developer Network.

This is to me the number one resource to learn anything web related. It is an open project, it has contributors from every big player in the market and it outlived many others that tried to do the same. It wasn’t launched when I was there, but I was happy to help become what it is now. Firefox OS was the big move when I worked at Mozilla and it was a bold one. Mozilla recognized the threat of closed, native mobile environments towards the web and tried to use the fledgling HTML5 standard to build an operating system based on it. Whilst it wasn’t the success we wanted it to become and a big third player in the mobile space, I am pretty sure that the web would look different now without it. Things like Electron, Progressive Web Apps and Chrome OS learned a lot from it and its aggressive agenda lead to a lot of important new web standards.

The timing was off though, it seems. The hardware we created with partners for the OS wasn’t up to what people expected and some important apps like WhatsApp weren’t available for it. It was interesting to see the open web philosophy clash with the business model of the mobile web, where being closed and locking people in is the quick term win. Luckily there is some renaissance of it now in the form of KaiOS, as it was open and people can build upon it. Other open source players in the mobile world vanished with fewer results.

Mozilla is a company to go bold and big and you get support from it. I’m still looking forward to see what’s next for them. One thing I am proud of was starting a “make me a speaker” program in Mozilla, teaching others to present and share opportunities to speak at events. This grew into a full-fledged support network now for new and upcoming talent for the conference circuit. I am very happy about that. It launched a few good careers of people not like me.

Since 2015, you joined Microsoft. How did you end up here?

Kind of two words: Rey Bango.

For years, Microsoft was interested in what I do and they wanted to ramp up the work in the open source space and with the open web. The big problem was perception. Microsoft was not seen as a company with the heart in the right place when it comes to open source. This changed a lot when Rey Bango joined the company. He had a lot of street credit from his work with jQuery and on Ajaxian, the latter also being a place I contributed.

When in 2012 Rey and me shot a video series on Firefox and IE wanting to hear from developers and working with the open web, I had so much fun, I started thinking differently about Microsoft and what it tries to do. When two years later, I positively talked about their efforts and where I see the company in the grand scheme of things, this made a few people listen and Rey got more freedom and budget to grow his team.

I got in with Aaron Gustafson, another person I worked with a lot and admired for a long time. It was the right time for me. I found that in Mozilla, I preached to the choir and reached the same people. I wanted to meet the developers that aren’t convinced about the open web, I wanted to reach those people who stick with IE as nothing better “is needed”. And that we did.

It was exciting to see Microsoft open more and more, and I am happy that I was there at the right place and time. I was a pain to hire, as I didn’t want to move and preferred to work from home. I was the only remote person in the whole team. The practical upshot is that with Rey and others persevering this helped in general with people joining who weren’t the usual suspects.

When you joined Microsoft, you came to refresh their “browser activities” and form a team that was responsible for them. Tell us about the obstacles you faced during the process.

The groundwork was already done. The company was committed to building a new browser from scratch and become much more open about it. So they needed a team like Rey, Aaron and me to multiply messages and help reaching communities that traditionally wouldn’t listen to what Microsoft has to say.

The big obstacle for us wasn’t the company, but its history. It is easy to attack a large and old company (in IT terms) like Microsoft and keep repeating sins of the past as a reason not to listen to them. The only way to battle this was to be humble, and let deeds speak instead of words. We rolled out a brand new browser based on open standards and in a truly transparent way.

The excitement in the engineering team was intoxicating. We didn’t just throw out a new browser, we explained the why and how. We created open communication channels and allowed people even to file bug with a tweet in a certain format. It was a great way to rejuvenate the team and get people excited working on something new. This also lead to more and more products being more open to feedback and being created in the open. Visual Studio Code is a great example. It was great rolling out the new browser, but from the get-go it felt like a shame to me that it would only be available on Windows 10, and not other platforms. The big push was to get people to upgrade to Windows 10 from older, legacy systems and a brand new and better browser was to be the carrot for people to do so.

This is an important point, we need systems to get upgraded. But often in the enterprise space this means upgrading thousands of computers, and that’s a daunting task. It is also tricky to get developers excited about your browser when they need to use a third party service or a virtual machine to test it. This wasn’t as smooth as I wanted it to be. Yet, I am incredibly impressed by how Edge came to be and how it impacted the company culture as a whole to be more open to feedback and to build what people want rather than what we hope people like.

How would you describe the journey of Internet Explorer and the last years of its life before being deprecated?

As an open web geek who excitedly tries out new technology all the time this is painful, but it is a fact. I think it is high time we faced some realities that we are in a service delivery capacity as web developers. Some outdated and in our view terrible environments are here to stay and no promise from our side will make a change.

People who use IE these days are people who have to or don’t even care what a browser is. We always say that users have a choice, but we forget that for a lot of people out there going to the office, turning on the machine, doing the tasks you are given and going home is more important than knowing what kind of API to use to rotate a rectangle on the screen. Often the path to get a company to move away from IE is to move them from an old version of Windows to a newer one. And this is where the sweet spot lies for me. IE was a good browser in the end and a stable one. It isn’t fancy, it isn’t innovative but it does the job.

When you work with enterprise users you learn that day to day usage like printing things, reading and filling in PDF documents and other mundane tasks are high on the priority list. I like talking to users like that. It shows me that a big part a browser needs to play is to enable people to do what they need to with the least fuss possible. It feels like being able to breathe after chasing our own tail as innovators of the web trying to find the next cool thing to get overly excited about.

That said, I want the browser to move away and make space for Edge or any other evergreen browser. It has done its job, it’s time to go into retirement and enjoy whatever old browsers enjoy doing.

It’s been 4 years since the initial release of Microsoft Edge. What do you think about its journey?

Right now everything is new again. I work on the new Edge that is based on the Chromium engine and works across platforms (I am writing this on my Mac using the Canary build of the browser). The reason is that we wanted to bring the functionality of Edge everywhere other Microsoft Products like Office run: Windows, legacy Windows, Macs, Android, iOS and others. This wasn’t possible with the first edition of Edge as it was written specifically for Windows 10.

Since then we realized that it is important to disconnect the browser from the OS - something I’ve always advocated for - as browsers need to update much more frequently. We’re currently in beta phase and we’re rolling out the new browser to developers and enterprise customers. We hope soon to have it out for everyone out there. I really enjoy this change. A browser to me is not the rendering engine. It is the user experience.

How people can surf with it, do their job. How developers can develop with it and get insights into how their software behaves. How we make it easier for people to consume the web with reader modes and read aloud features. How we protect end users from malware and tracking and ensure that they can use the web without giving up their privacy.

That way, contributing to the Chromium project makes much more sense than writing a competitive engine that has a lot less use. Whatever improvements and features we put into old Edge we can now donate to a system that is used in various browsers, in environments like Electron and other app containers. Since we announced the change we've made over a thousand contributions to the project and a lot of them are based on needs of end users we discovered in Edge.

For example, keyboard access to everything in the browser, localization of developer tools, smooth scrolling by not using the main thread for scrolling and many more. Developers have chosen to support the Chromium engine predominantly, so it just makes sense to have a few large and strong players contributing to it. This is the power of open source.

Microsoft is on the rise of contributing to open-source projects. The acquisition of GitHub is another hint that Microsoft takes open-source seriously. What do you think about large corporations contributing to open-source?

If we want open source to have an impact, of course large corporations need to embrace it. Linux became a big success by being the server infrastructure of choice and not through desktop end users. With scale come a lot of new and interesting challenges.

In Microsoft, I am still blown away by how much the company embraces the ideas of open source. It is not OSS for the sake of OSS, but to see where we can contribute back in the most and how our needs and those of our users can improve the usefulness of the open source product. The big win story here is Visual Studio Code. I am a huge fan of this product as it married the lightweightness of a simple editor with the functionality of an IDE. I always avoided IDEs as they seemed to much work to me to get to know their interface. With VSCode, I have a simple editor that gives me insight on how my code works, what mistakes I make while I am coding and allows me to stay in one context whilst working instead of jumping back and forth between editor, browser and terminal.

There is much more to come from Microsoft in the open source space, and we’re ramping up to be a good contributor and partner instead of calling all the shots. The Github acquisition was something I was really happy about. I love GitHub, and a lot of my own projects are dependent on it. They managed to show that version control can be fun and a social experience rather than a dire two way communication with a cryptic file system. But they were a startup and thus in the hamster wheel of having to prove themselves to investors all the time. With the acquisition I think GitHub has an opportunity to focus on what’s best for the community and to scale their service to the needs of many customers.

Say a few years ago I’d have asked a German bank to use GitHub for their development needs. They’d be worried to give their data to a US based startup. As a Microsoft acquisition, GitHub becomes much more reliable and interesting to them. From what I see is that the main win for Microsoft is to keep GitHub as it is and not try to change it, but learn from their success.

Most of the products I work on use GitHub, many with open repos. Look at LinkedIn, this was another acquisition that is left to its own devices and does a good job that way. The old prejudice of Microsoft as a takeover company that will crush its acquisitions is getting tiring. The world has changed and learning from smaller, more nimble companies is much more valuable.

Speaking of GitHub, besides the Visual Studio IDE, Microsoft now “owns” Visual Studio Code and Atom editors. They even share a framework that powers them — Electron. Are you using any of these?

I work on VSCode and I used to work with Atom. I also used Adobe Brackets before, which was a comparable experience. I have no insight what happens with Atom, but from what I gather, they are happy to exist side-by-side. Developers are happy to use what makes them effective, why take that away from anybody? VSCode to me is unstoppable at the moment and it is exciting to see so many community contributions.

I use it myself, I use it to teach and I use it to explain code to people. The benefit of having an Electron based editor is that you can debug in it, run a terminal in the same interface and even communicate with the browser running in the background. It is a boon to my productivity and setting up linting and automatic testing rules makes me a much better developer than I used to be.

Electron filled a massive need - a way to build rich desktop applications using web technologies, thus re-using code in both the web and on Desktop. We had a lot of those solutions come and go and often their weight was the issue.

Electron isn’t to be used for everything and I think that often a Progressive Web App makes more sense. But for things like Slack, Spotify and VSCode it is a wonderful solution. Electron is basically a browser running in a framework that gives full access to the device. This is excellent, but it also means that when the browser part isn’t updated and patched, it becomes an inviting security attack vector. We need to make it easier to keep Electron based apps up to date and secure and we're really excited to be able to contribute to that work by improving the underlying platform.

Prediction wise I can assume that Electron has a great place for high-end applications based on web technology, but with the evergreen web-views of operating systems getting smaller, faster and better all the time, the promise of Progressive Web Apps as web sites, mobile apps and desktop apps is also no future dream any longer. The great thing is that all share the same components, so by improving browsers and their interaction with the OS, we will also ensure faster and less memory hungry Electron apps.

There are several Machine Learning projects, and research groups that focus on automatic code generation, locating and fixing bugs automatically, etc. Do you see this becoming the next big thing anytime soon?

This, to me is very much the next big thing. We use a lot of code and we write a lot of code. So much, that it becomes harder for humans to own and understand it. It makes total sense to let machines who don’t tire and get bored help us with optimizing and understanding that code.

We are well on the way toward this future. When I see what we do with code bundlers and build processes, we already let the machines take over to a large degree and I am looking forward to a world where a drawing or an idea gets turned into highly optimized code without us having to write it. Computers, to me, are there to do boring things we shouldn’t do. Anything repetitive and boring makes people do mistakes. We should be further ahead by now than celebrating a command line as the main interface between programmer and device. I’ve given a talk about that subject called “Sacrificing the Golden Calf of Coding” which has a lot of points about that subject.

Suffice to say, machine learning and AI is all about automating away non-needed labour, and I think it would be arrogant of us to assume that our work as developers is beyond that when many other crafts are much more worried about being replaced. I’d love to have tools to do the 90% of products that end users want, and thus get much more time to come up with 10% products that people don’t know yet that they want but could benefit from.

Do you have any tips on coming up with dev team code standards and maintaining them at all times? How can product managers educate their team in this matter?

Best practices to me are found, not dictated. Learning from mistakes, celebrating successes and analyzing what lead to them is a great way to extract code standards. Instead of telling people to use them, it is much easier to write snippets, provide linting settings, pretty print options and other settings and configurations in the tools the team uses.

I found it hardly ever to be sensible to try to change how people work when they don’t want to. It is important what ends up how in the code repository and how easy it is to understand for the next maintainer. And we have a lot of ways to convert code to an agreed common style on push. That’s where hooks in GitHub and integration of VSCode is magic. What I learned over the years is also that demanding a code standard without explaining the benefits is what leads to problems.

Sometimes and optimization looks excellent, but isn’t worth inconveniencing the developers. Automating what can be automated and making it easier for people to write in a certain way are goals that yield a lot of good results in a short time. Getting a whole team to agree to a “best practice” that doesn’t look it makes much of a difference is a waste of time. Often you will get new hires come in with preconceptions on how things should be and how what you do right now isn’t right. Instead of shutting them up and forcing integration this, to me, is always a good opportunity to make them prove their point and explain it to the team in a presentation/brown bag. This yielded insights and often brings up a good compromise.

What’s an interesting or fun fact about yourself we wouldn’t find on your social media?

I’ve once been a dog in a radio commercial. I love dogs, but I wasn’t a very good one.

What do you like to do when you’re not working?

I am a HUGE books and movie nerd. I love reading and watching movies, the making of and the director’s commentary. I also enjoy cycling, but not the “go up the mountain” type but the weaving around big cities type. Lately I also try to concentrate on being more with the bits of my family that are left - getting old is scary.

Where is the best place for people to connect with you online?

Twitter as @codepo8 is the best and most immediate, just ask for a DM if you want to discuss things, not for public consumption. I also run my blog, and all my other online channels are linked from there. Also, feel free to check out my Skillshare classes. I'm looking forward to see what I can help with.

Want to stay in touch with Chris? Find him on Twitter, GitHub, or check his website.

Did you like this article? Spread the word!

What is Avocode?

It’s an all-in-one tool for teams that want to code and collaborate on UI design files 2x faster.