DEV Community

Cover image for I'm the maintainer of Babel, ask me anything!
Henry
Henry

Posted on

I'm the maintainer of Babel, ask me anything!

Hello friends 👋! I'm Henry, an engineer on the Behance team at Adobe in NYC. I started with an interest in data visualization but then moved to tooling.

I luckily got an interview at Behance because of my contributions to JSCS. I helped to merge it with ESLint and along the way discovered Babel and learned about "compilers". Now I get to spend about 50% of my time working on Babel at work. I am looking forward to the time when projects are able to work on OSS part/full time though!

Recently I gave some talks on what it's like to be a maintainer, how Babel is more than just the code itself, and dealing with burnout and the community. I did post I was going to spend less time on it to focus on health, so hopefully some people/companies will step up!

I enjoy playing ping pong, board games like 7 wonders, video games (a lot of Mario Odyssey lately 😊)

Ask me about OSS (its myths, its community, and its relationship to community/faith) or about the nature of Babel: it's difficult role in the ecosystem trying to glue it all together: spec compliancy with TC39, code speed/size complaints, JS fatigue, and handling it all as a group of volunteers.

Oldest comments (67)

Collapse
 
ben profile image
Ben Halpern

When did you feel like you were ready to become the maintainer of a major project like Babel?

Collapse
 
hzoo profile image
Henry

This is a really good question Ben! The "were ready" part of the question is funny because I don't think I ever felt I was ready? I (and everyone else on the project, and probably a lot of other open source projects) didn't really have previous knowledge about compilers or ES6. It was mostly an interest in the project and it's vision that got me involved and staying involved. I don't think there are any hard qualifications to do it.. after Sebastian got burned out he gave me and some others access to the repo/publish rights and I was like woah I guess we have to just figure it out? I had never published my own npm package before or explored much of the codebase, but slowly (sometimes really slowly) you get used to it. Sometimes you have to kind of ignore the fact everyone is using it and complaining and all that, else yeah you might get depressed on the burden that's involved. I could probably write a lot for this question 😂 since I feel like I'm just rambling now.

I speak a bit on this in one of the talks I did: maybe

I basically thought that I realized I became a maintainer like maybe a year after I was already doing the role and all that? I remember Kent saying that if you want to be a maintainer of a project, just act and do the things that maintainers do. Of course that is a difficult thing to know, but you learn as you go. There aren't really a list of things to do (I wish someone would just tell me), but you just have to find out the things a project needs and what you are willing/wanting to commit to.

Dan had a good answer on this twitter.com/dan_abramov/status/787...

Collapse
 
andy profile image
Andy Zhao (he/him)

Since you've been and are so involved with OSS, what are some reflections you have on what contributing to OSS is like now compared to what it was like when you first started (with JSCS, for example)?

Collapse
 
hzoo profile image
Henry • Edited

I think you mean what it's like for someone new back then vs. now?

I only started around 2 years ago which isn't too long ago. I think there are definetely some differences but not sure on the whole if it's easier/better to contribute now than before. I don't think we really have a grasp/handle on how to make it sustainable to continue to grow new contributors?

There are a lot of new things like the interest in bots like github.com/probot/probot, twitter.com/greenkeeperio to handle some of the tasks and to lessen burden. Github has done a lot like the license changes: github.com/babel/babel/blob/master..., start of a community standard/guidlines, opensource.guide/, talking with maintainers and being more active. There is more of an emphasis on getting more people involved with things like the good first issue label and other things and people caring more about having a good readme/website/etc.

In the end it's just a lot of work to get plugged in and I know that. Not sure the best way to move forward other than better mentorship and then via that better docs/guides via that process which takes a lot of time/mental effort/scheduling. I'd like to do more of that but just not always in the best situation to do so unless it becomes part of your job. And even with that, you might not be able to help more than a handful of people (which is plenty), since even having a single extra maintainer/collaborator is a huge deal.

So the effort to grow new contributors is certainly welcome and we shouldn't stop doing it, but we should be cautious to make sure we don't burn out new contributors since that is happening all the time with old ones (I will admit some level of "burnout" is ok in the sense people should take breaks and are not obligated to do any of the work, and that sense of personal commitment may/may not cause that). Would love if we had a better grasp on how to make it sustainable as a consistent, healthy thing to take part in: not about getting stars, likes, medium posts, downloads, resume building, etc (all can be fine and fun) but doesn't satisfy in the long run. If you are feeling the burden, the overwhelming sense that you have to do it, we should provide help, guidance, etc.

And hope I don't sound like it's all bad at the moment. I started without any guidance and it ended up working out but it took forever to learn a lot of it on my own (and that's ok). Having a friend, class, club, meetup to do it with would probably make it more enjoyable and maybe projects should be doing more (I hesitate to say we should do more 😂) in that direction. And for me a lot of it is providing an environment where people can express better ideas instead of just submitting a PR to someone else's issue or fixing a basic thing. Problem is people have no context, names are hard, it seems like you have to know so much up front to be able to be in a position to contribute ideas? I really don't know where it's supposed to go either and would love if someone else could tell me. Right now it's just trying to find patterns and overall issues are learning (the hard way) of trying prioritize over just answering questions on twitter/slack over and over but actually moving things forward while helping people in the now as well. And all that should be documented too but then I'm just tired 😄. Another thing I want to continue doing (I'm not sure if this even works) is make it more fun like how we have the whole "guy fieri" meme, now the Babel song, etc. Of course that has to come naturally but I think it can bring in a lot of people who otherwise would be turned off by the nature of the project itself.

Collapse
 
andy profile image
Andy Zhao (he/him)

Thanks for the answer! I recently wrote about my first attempt at putting some fun in code in the dev.to codebase:

  def pound_it
    text_color_hex&.prepend("#") unless text_color_hex&.starts_with?("#")
    bg_color_hex&.prepend("#") unless bg_color_hex&.starts_with?("#")
  end
Collapse
 
tiffengineer profile image
tiff

Hi Henry! Thanks for doing the AMA.

How was the decision made to bundle Babel with Webpack instead of another build tool?

Collapse
 
hzoo profile image
Henry

Hey Tiffany!

Thanks for the question. So to clarify I don't think we have tied Babel to any particular build tool. Technically since Babel is split into various modules, you can create an integration with Babel with babel-core for various tools like testing (mocha, ava, jasmine, jest), or a bundler (webpack, browserify, etc).

It's probably since Webpack is the most popular bundler that we tend to use Babel and Webpack together a lot (and that's totally true). babel-loader is the thing most people are using for front-end development and it's used in a lot of other tools like create-react-app, etc. And yeah it's important for us to figure out how to integrate better, and I talk to Sean a lot about these kinds of things 🙂.

Collapse
 
andy profile image
Andy Zhao (he/him)

Thanks for doing the good work you do with Babel 🙇

Collapse
 
hzoo profile image
Henry

Thanks Andy 🙂!

Collapse
 
jess profile image
Jess Lee

Hey Henry! How do you maintain a healthy 50% time split on Babel and Behance? Do you..talk..about Babel at work with your colleagues?

Collapse
 
hzoo profile image
Henry

Hey Jess!

Yeah it's certainly not as easy as that sentence sounds but we try to make it work. I work with my boss to determine the kinds of issues I work on in my sprint just like with other work. Sometimes it's difficult in the day to day to split time, so it's not easy to literally do 50% on both every day, but maybe it's every other day or every other week depending on what we need. In the end it averages out to 50% though. Of course personally, I do admit I have a burden that I want to work on it full time despite having this opportunity but that's something I have to deal with, whether it's trying to push for that across the team/company or something else.

We try to have an attitude across the team that open source (and also things like technical debt, bug fixes, refactoring) should be argued for just the same as features. This means that open source shouldn't be like a "reward" for making a feature or something, but that it's vital to the success of our team/product all the same. This is kind of the attitude that Jon expresses in twitter.com/jkup/status/9098870661..., where open source is a part of the DNA of our team.

We encourage open source contributions: my coworker Kai is a core-team member on ESLint. Erin, Matt, and Yuriy have all contributed a lot to the Vue ecosystem, whether giving talks or writing docs, and coming up with testing strategies and more. Mike was a jQuery team member and recently had many multiple PRs to both npm/webpack to improve everyone's build performance significantly. I think we are willing to contribute back, make patches, and get involved if we have a problem/issue instead of just waiting around or complaining about.

So yes I talk about Babel at work a lot with my colleagues (maybe they might think too much). Not everyone is always as interested in it as me but I think they still like to listen and give feedback 🙂).

Collapse
 
jess profile image
Jess Lee

Wow, that's awesome. Sounds like you have a really great team!

Collapse
 
peter profile image
Peter Kim Frank

Hi Henry, can you expand on OSS and how you view it's relationship to community and faith?

Thanks for everything you do! 🙌🏽

Collapse
 
hzoo profile image
Henry

Definitely want to answer this one! Getting lunch now though 😁

Collapse
 
andy profile image
Andy Zhao (he/him)

ATL to NYC seems like a big change; any particular things you like about NYC now that you've been here for a while? And anything you miss about ATL?

Collapse
 
hzoo profile image
Henry

Yeah haha, I honestly didn't know anything about NYC before moving over (other than media/movies), and don't remember the last time I visited before that. It was pretty surprising to everyone I knew since I'm someone who seems like I would just stay in the same place?

I've never really liked driving that much/traffic so I appreciate being able to walk most places in NYC (other than that it's super cool at the moment 😛), and taking the subway if I have to. I'm lucky to live pretty close to work and various things as well so that kind of convenience is great. I like that there's a nice JS community here: various meetups (like BrooklynJS which I went to a lot when I first moved), tight-knit church community, and a lot of things to do/eat.

I was in the suburbs near ATL, so really that just means missing peace/quiet, having actual space, etc but I try to visit every so often 🙂.

Collapse
 
tiffengineer profile image
tiff

Every time I talk to my mom about moving to NY, she tells me it is "too fast" for me. I live in Pittsburgh currently, which is similar in size and scope to ATL. How are you adjusting to life in the Big Apple? Is it really, "fast" and if so, how do you cope with the pace?

Thread Thread
 
ben profile image
Ben Halpern

I'm from Halifax, Nova Scotia, Canada, which isn't unlike Pitt or ATL in these ways and I definitely had an adjustment period when I got here. And you never really adjust fully, but you can learn to embrace the different areas of New York and how the city isn't homogeneously "fast". There are lots of personalities to the areas.

But it's not easy and coping with the city can be a challenge for everyone here at some point.

Thread Thread
 
tiffengineer profile image
tiff

Thanks for the reply @ben . I am very hyper-aware, so it sounds like a BIG adjustment would need to be made.

Thread Thread
 
hzoo profile image
Henry • Edited

Yeah I don't really feel like a "New Yorker" yet, and personally feel comfortable with that 😄, I walk pretty slow, don't rush to things, try to just look around and maybe act like a tourist. I think @ben makes a point in that NYC has many parts to it (I didn't even understand any of the boroughs before. Definitely can give off an impression of being fast-paced, with everyone "doing" something and always having plans, but I try to keep myself open and not plan too methodically. Maybe I haven't put too much emphasis on the location I'm in? I think finding a consistent, welcoming community is super important to me especially in a big city/new place so that's the first thing I had looked into after moving. As much as the culture/pace is moving all of us, it's important to think about what keeps us going forward, and for me patience is a big part of "doing" as counter-intuitive as it can feel.

Collapse
 
bmaxhacks profile image
bmax

Hi Henry!

Do you enjoy working with me?

Collapse
 
hzoo profile image
Henry

good question..

Collapse
 
hzoo profile image
Henry • Edited

haha Brandon sits across from me, and is a great engineer! Sometimes to be honest you can be a bit weird but I really appreciate you 🤗

Collapse
 
ben profile image
Ben Halpern

What's your relationship with the huge companies using Babel?

Collapse
 
hzoo profile image
Henry • Edited

Really good question as well. Most of the relationship is just that they use the project. Not everyone posts at our users page: babeljs.io/users/.

TL;DR is that they consume it but no one is really helping drive it forward. People will step up in certain areas here and there but ultimately the coordination/vision effort is all on us. It's hard to push things when we are the volunteer led effort though, although I have to be ok with that since it's been that way since the beginning, (Babel is 3 years old: babeljs.io/blog/2017/10/05/babel-t...).

And engineers that work at those companies might know who were are on the team and I might have contact with them from conferences/etc. Most people aren't always asking for feature x/y or even in the issues. They might be one-off DM's on twitter/slack but in the day to day we don't have too much contact with that many companies, and it's really mostly a volunteer thing. No one is really pushing for anything on our roadmap so it's mostly just us trying to figure out what exactly we need for the community (it can be a lot 😂, I really don't know either).

So Adobe: I work at Behance so I have somewhat of a relationship there, I think companies still aren't really putting in the resources there because they might not see the benefits given past history etc. When I gave talks earlier I had a lot of employees tell me they didn't know I worked there (and I mentioned in another thread people think Babel is a Facebook project when it's always been a community project, although Sebastian did work on it at Facebook for sure).

Google: talk to them a lot since although they might use it for their own stuff, they'll use it for OSS projects like github.com/GoogleChrome/workbox, and their users will probably be using Babel. I think browser vendors have a good incentive to make sure Babel is well supported because a lot of the code being sent to the browser is going to be compiled with Babel (so things like code output/speed should be important).

Recently github.com/jridgewell on the AMP team joined as a collaborator team and has been contributing a lot of PRs, and they also donated to the project. Justin has recently joined to represent us at TC39 as well. There's an issue with being an "invited guest" if you don't work at a "TC39" member company so that has honestly been an issue for being able to go.

Facebook: they hired Sebastian to work/make Babel 6, both Yuriy and Amjad made/worked on babel-minify (babili before), and the Flow/React teams help with JSX/Flow PRs sometimes. They recently donated $1k a month to the project which is a nice gesture: twitter.com/left_pad/status/923696... but we still don't have enough for 1 person to be full time atm.

Microsoft/LinkedIn: had some help/contact with the Ember team, like twitter.com/rwjblue, twitter.com/nathanhammond who helped with setting up Babel meetings, and a lot more. We recently collaborated with the TypeScript team to at @babel/preset-typescript after making sure they would help with the PRs and helping keep them in sync (we try to do the same with Flow).

There's a lot of other companies like Airbnb, Netflix, etc too.

Point is that I can recall times we might of talked and stuff but don't really have any sort of regular communication with that many folks or do calls/meetings.

Collapse
 
ben profile image
Ben Halpern

How is "Babel" pronounced?

Collapse
 
hzoo profile image
Henry

Lol this is always the best question haha. So many great conversations about it: twitter.com/sarah_edo/status/82434..., etc.

I pronounce it "babble" myself, but don't really care if you say "bay-bel" 😊. It's probably just where you grew up/located

Collapse
 
tiffengineer profile image
tiff

It's definitely "babble". Unless of course you're Wes Bos. 😄

Thread Thread
 
ben profile image
Ben Halpern

Am I allowed to pronounce it like "bubble"?

Thread Thread
 
tiffengineer profile image
tiff

😂😂

Thread Thread
 
hzoo profile image
Henry
Thread Thread
 
andy profile image
Andy Zhao (he/him)

"Bubble" is a JavaScript compiler.

🤔🤔🤔

Thread Thread
 
jess profile image
Jess Lee

@wesbos you got a shoutout!

Thread Thread
 
wesbos profile image
Wes Bos

lol I can't not call it baebull

Thread Thread
 
rhymes profile image
rhymes • Edited

I've always pronounced it as if it were a French word: translate.google.com/#fr/it/Babel

(hit play on the french side)

ahhahahha :D